mirror of
https://github.com/EQEmu/Server.git
synced 2026-04-12 18:12:43 +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());
|
worldserver.RequestTellQueue(GetName());
|
||||||
|
|
||||||
entity_list.ScanCloseMobs(close_mobs, this);
|
entity_list.ScanCloseMobs(close_mobs, this, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// connecting opcode handlers
|
// connecting opcode handlers
|
||||||
|
|||||||
@ -2694,7 +2694,11 @@ void EntityList::RemoveAuraFromMobs(Mob *aura)
|
|||||||
* @param close_mobs
|
* @param close_mobs
|
||||||
* @param scanning_mob
|
* @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);
|
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());
|
float distance = DistanceSquared(scanning_mob->GetPosition(), mob->GetPosition());
|
||||||
if (distance <= scan_range) {
|
if (distance <= scan_range) {
|
||||||
close_mobs.insert(std::pair<uint16, Mob *>(mob->GetID(), mob));
|
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) {
|
else if (mob->GetAggroRange() >= scan_range) {
|
||||||
close_mobs.insert(std::pair<uint16, Mob *>(mob->GetID(), mob));
|
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 RefreshAutoXTargets(Client *c);
|
||||||
void RefreshClientXTargets(Client *c);
|
void RefreshClientXTargets(Client *c);
|
||||||
void SendAlternateAdvancementStats();
|
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);
|
void GetTrapInfo(Client* client);
|
||||||
bool IsTrapGroupSpawned(uint32 trap_id, uint8 group);
|
bool IsTrapGroupSpawned(uint32 trap_id, uint8 group);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user