aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2018-08-22 22:21:47 +0200
committerShauren <shauren.trinity@gmail.com>2021-10-22 23:17:41 +0200
commit6b8329f6af801dae065a15322f07b95e83ed34fc (patch)
tree45a670c519c32802cc65349a699e063df1c62892 /src
parentfff5a32a13ae896ecd4288838f6678ce484f7e23 (diff)
Core/Creature: Some adjustments to Creature::CallForHelp. Now works even if the Creature hasn't selected a victim yet.
(cherry picked from commit 79f0e55dcbe4a978363b4216188dd45e77512d1c)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp9
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 4139aa517bb..95d207f230b 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -2487,10 +2487,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);
}