From 6f6b6534bfa3da6fc26929544bb429f2607ea385 Mon Sep 17 00:00:00 2001 From: Treeston Date: Wed, 22 Aug 2018 22:21:47 +0200 Subject: [PATCH] Core/Creature: Some adjustments to Creature::CallForHelp. Now works even if the Creature hasn't selected a victim yet. --- src/server/game/Entities/Creature/Creature.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index c542d8213df..5be755928ec 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2334,10 +2334,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 worker(this, u_do); Cell::VisitGridObjects(this, worker, radius); }