Core/Creatures: Implemented CREATURE_STATIC_FLAG_5_NO_LEAVECOMBAT_STATE_RESTORE

This commit is contained in:
Shauren authored and Ovahlord committed 2025-03-15 07:02:51 +01:00
1 parent e130290f83
commit 8c7b6f2bcf
3 files changed
+9 -1

No files matched your search

+1
View File
@@ -304,6 +304,7 @@ bool CreatureAI::_EnterEvadeMode(EvadeReason /*why*/)
return false; return false;
} }
if (me->IsStateRestoredOnEvade())
me->RemoveAurasOnEvade(); me->RemoveAurasOnEvade();
me->CombatStop(true); me->CombatStop(true);
@@ -170,6 +170,9 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
bool IsInEvadeMode() const { return HasUnitState(UNIT_STATE_EVADE); } bool IsInEvadeMode() const { return HasUnitState(UNIT_STATE_EVADE); }
bool IsEvadingAttacks() const { return IsInEvadeMode() || CanNotReachTarget(); } bool IsEvadingAttacks() const { return IsInEvadeMode() || CanNotReachTarget(); }
bool IsStateRestoredOnEvade() const { return !HasFlag(CREATURE_STATIC_FLAG_5_NO_LEAVECOMBAT_STATE_RESTORE); }
void SetRestoreStateOnEvade(bool restoreOnEvade) { _staticFlags.ApplyFlag(CREATURE_STATIC_FLAG_5_NO_LEAVECOMBAT_STATE_RESTORE, !restoreOnEvade); }
bool AIM_Destroy(); bool AIM_Destroy();
bool AIM_Create(CreatureAI* ai = nullptr); bool AIM_Create(CreatureAI* ai = nullptr);
bool AIM_Initialize(CreatureAI* ai = nullptr); bool AIM_Initialize(CreatureAI* ai = nullptr);
@@ -80,15 +80,19 @@ template<>
void HomeMovementGenerator<Creature>::DoFinalize(Creature* owner) void HomeMovementGenerator<Creature>::DoFinalize(Creature* owner)
{ {
if (_arrived) if (_arrived)
{
if (owner->IsStateRestoredOnEvade())
{ {
owner->ClearUnitState(UNIT_STATE_EVADE); owner->ClearUnitState(UNIT_STATE_EVADE);
owner->SetWalk(true); owner->SetWalk(true);
owner->InitializeMovementCapabilities(); owner->InitializeMovementCapabilities();
owner->SetSpawnHealth();
owner->LoadCreaturesAddon(); owner->LoadCreaturesAddon();
if (owner->IsVehicle()) if (owner->IsVehicle())
owner->GetVehicleKit()->Reset(true); owner->GetVehicleKit()->Reset(true);
}
owner->AI()->JustReachedHome(); owner->AI()->JustReachedHome();
owner->SetSpawnHealth();
} }
} }