fix(Core/SmartScripts): Fixed SMART_EVENT_FRIENDLY_HEALTH_PCT event. (#15579)
Fixes #15515
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user