fix(Core/SmartScripts): Fixed SMART_EVENT_FRIENDLY_HEALTH_PCT event. (#15579)

Fixes #15515
This commit is contained in:
UltraNix
2023-04-02 20:34:01 +02:00
committed by GitHub
parent 713d823062
commit b42075f849
@@ -3905,7 +3905,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
if (!me || !me->IsEngaged()) if (!me || !me->IsEngaged())
return; return;
ObjectVector targets; Unit* unitTarget = nullptr;
switch (e.GetTargetType()) switch (e.GetTargetType())
{ {
case SMART_TARGET_CREATURE_RANGE: case SMART_TARGET_CREATURE_RANGE:
@@ -3916,8 +3916,8 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
case SMART_TARGET_PLAYER_RANGE: case SMART_TARGET_PLAYER_RANGE:
case SMART_TARGET_PLAYER_DISTANCE: case SMART_TARGET_PLAYER_DISTANCE:
{ {
if (targets.empty()) ObjectVector targets;
return; GetTargets(targets, e);
for (WorldObject* target : targets) for (WorldObject* target : targets)
{ {
if (IsUnit(target) && me->IsFriendlyTo(target->ToUnit()) && target->ToUnit()->IsAlive() && target->ToUnit()->IsInCombat()) if (IsUnit(target) && me->IsFriendlyTo(target->ToUnit()) && target->ToUnit()->IsAlive() && target->ToUnit()->IsInCombat())
@@ -3928,7 +3928,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
continue; continue;
} }
target = target->ToUnit(); unitTarget = target->ToUnit();
break; break;
} }
} }
@@ -3937,16 +3937,16 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
} }
case SMART_TARGET_SELF: case SMART_TARGET_SELF:
case SMART_TARGET_ACTION_INVOKER: case SMART_TARGET_ACTION_INVOKER:
DoSelectLowestHpPercentFriendly((float)e.event.friendlyHealthPct.radius, e.event.friendlyHealthPct.minHpPct, e.event.friendlyHealthPct.maxHpPct); unitTarget = DoSelectLowestHpPercentFriendly((float)e.event.friendlyHealthPct.radius, e.event.friendlyHealthPct.minHpPct, e.event.friendlyHealthPct.maxHpPct);
break; break;
default: default:
return; return;
} }
if (targets.empty()) if (!unitTarget)
return; return;
ProcessTimedAction(e, e.event.friendlyHealthPct.repeatMin, e.event.friendlyHealthPct.repeatMax); ProcessTimedAction(e, e.event.friendlyHealthPct.repeatMin, e.event.friendlyHealthPct.repeatMax, unitTarget);
break; break;
} }
case SMART_EVENT_DISTANCE_CREATURE: case SMART_EVENT_DISTANCE_CREATURE: