mirror of
https://github.com/EQEmu/Server.git
synced 2026-01-03 06:23:53 +00:00
Fix issue where when a client first enters a zone, a mob may not be aware of their distance to a client immediately so when the client does their scan we also add ourselves to their lists
This commit is contained in:
parent
e11868eb65
commit
f32126faac
@ -916,7 +916,7 @@ void Client::CompleteConnect()
|
||||
|
||||
worldserver.RequestTellQueue(GetName());
|
||||
|
||||
entity_list.ScanCloseMobs(close_mobs, this);
|
||||
entity_list.ScanCloseMobs(close_mobs, this, true);
|
||||
}
|
||||
|
||||
// connecting opcode handlers
|
||||
|
||||
@ -2694,7 +2694,11 @@ void EntityList::RemoveAuraFromMobs(Mob *aura)
|
||||
* @param close_mobs
|
||||
* @param scanning_mob
|
||||
*/
|
||||
void EntityList::ScanCloseMobs(std::unordered_map<uint16, Mob *> &close_mobs, Mob *scanning_mob)
|
||||
void EntityList::ScanCloseMobs(
|
||||
std::unordered_map<uint16, Mob *> &close_mobs,
|
||||
Mob *scanning_mob,
|
||||
bool add_self_to_other_lists
|
||||
)
|
||||
{
|
||||
float scan_range = RuleI(Range, MobCloseScanDistance) * RuleI(Range, MobCloseScanDistance);
|
||||
|
||||
@ -2714,9 +2718,17 @@ void EntityList::ScanCloseMobs(std::unordered_map<uint16, Mob *> &close_mobs, Mo
|
||||
float distance = DistanceSquared(scanning_mob->GetPosition(), mob->GetPosition());
|
||||
if (distance <= scan_range) {
|
||||
close_mobs.insert(std::pair<uint16, Mob *>(mob->GetID(), mob));
|
||||
|
||||
if (add_self_to_other_lists) {
|
||||
mob->close_mobs.insert(std::pair<uint16, Mob *>(scanning_mob->GetID(), scanning_mob));
|
||||
}
|
||||
}
|
||||
else if (mob->GetAggroRange() >= scan_range) {
|
||||
close_mobs.insert(std::pair<uint16, Mob *>(mob->GetID(), mob));
|
||||
|
||||
if (add_self_to_other_lists) {
|
||||
mob->close_mobs.insert(std::pair<uint16, Mob *>(scanning_mob->GetID(), scanning_mob));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -523,7 +523,11 @@ public:
|
||||
void RefreshAutoXTargets(Client *c);
|
||||
void RefreshClientXTargets(Client *c);
|
||||
void SendAlternateAdvancementStats();
|
||||
void ScanCloseMobs(std::unordered_map<uint16, Mob *> &close_mobs, Mob *scanning_mob);
|
||||
void ScanCloseMobs(
|
||||
std::unordered_map<uint16, Mob *> &close_mobs,
|
||||
Mob *scanning_mob,
|
||||
bool add_self_to_other_lists = false
|
||||
);
|
||||
|
||||
void GetTrapInfo(Client* client);
|
||||
bool IsTrapGroupSpawned(uint32 trap_id, uint8 group);
|
||||
@ -582,7 +586,7 @@ private:
|
||||
|
||||
bool Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, float iRange, uint32 iSpellTypes); // TODO: Evaluate this closesly in hopes to eliminate
|
||||
void ShowSpawnWindow(Client* client, int Distance, bool NamedOnly); // TODO: Implement ShowSpawnWindow in the bot class but it needs entity list stuff
|
||||
|
||||
|
||||
void ScanCloseClientMobs(std::unordered_map<uint16, Mob*>& close_mobs, Mob* scanning_mob);
|
||||
private:
|
||||
std::list<Bot*> bot_list;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user