diff options
author | Treeston <treeston.mmoc@gmail.com> | 2018-08-22 22:21:47 +0200 |
---|---|---|
committer | Treeston <treeston.mmoc@gmail.com> | 2018-08-22 22:21:47 +0200 |
commit | 79f0e55dcbe4a978363b4216188dd45e77512d1c (patch) | |
tree | 50a0efece8d9bdcfa72515d073c40ec4c54a765a | |
parent | c00a2efb21356eb4105cb7db9112c708762d9191 (diff) |
Core/Creature: Some adjustments to Creature::CallForHelp. Now works even if the Creature hasn't selected a victim yet.
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index bd1bd4009a0..cc5d2ddef56 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2316,10 +2316,15 @@ void Creature::CallAssistance() void Creature::CallForHelp(float radius) { - if (radius <= 0.0f || !GetVictim() || IsPet() || IsCharmed()) + if (radius <= 0.0f || !IsEngaged() || IsPet() || IsCharmed()) return; - Trinity::CallOfHelpCreatureInRangeDo u_do(this, GetVictim(), radius); + Unit* target = GetThreatManager().GetCurrentVictim(); + if (!target) + target = GetThreatManager().GetAnyTarget(); + ASSERT(target, "Creature %u (%s) is engaged without threat list", GetEntry(), GetName().c_str()); + + Trinity::CallOfHelpCreatureInRangeDo u_do(this, target, radius); Trinity::CreatureWorker<Trinity::CallOfHelpCreatureInRangeDo> worker(this, u_do); Cell::VisitGridObjects(this, worker, radius); } |