Core/Combat: Properly unset engagement flag on death.

Port From (https://github.com/TrinityCore/TrinityCore/commit/6b1ca0ca128425677043d36a147a019f6d2ac6e6)
This commit is contained in:
hondacrx
2022-01-02 12:32:11 -05:00
parent c7224deafe
commit f954046c4c
3 changed files with 10 additions and 4 deletions
+6
View File
@@ -244,6 +244,12 @@ namespace Game.AI
if (!IsEngaged()) if (!IsEngaged())
return false; return false;
if (!me.IsAlive())
{
EngagementOver();
return false;
}
if (!me.HasReactState(ReactStates.Passive)) if (!me.HasReactState(ReactStates.Passive))
{ {
Unit victim = me.SelectVictim(); Unit victim = me.SelectVictim();
+4 -2
View File
@@ -502,6 +502,9 @@ namespace Game.Entities
if (m_deathState != DeathState.Corpse) if (m_deathState != DeathState.Corpse)
break; break;
if (IsEngaged())
AIUpdateTick(diff);
if (m_groupLootTimer != 0 && !lootingGroupLowGUID.IsEmpty()) if (m_groupLootTimer != 0 && !lootingGroupLowGUID.IsEmpty())
{ {
if (m_groupLootTimer <= diff) if (m_groupLootTimer <= diff)
@@ -583,7 +586,6 @@ namespace Game.Entities
} }
} }
// do not allow the AI to be changed during update
AIUpdateTick(diff); AIUpdateTick(diff);
if (!IsAlive()) if (!IsAlive())
@@ -1087,7 +1089,7 @@ namespace Game.Entities
base.AtDisengage(); base.AtDisengage();
ClearUnitState(UnitState.AttackPlayer); ClearUnitState(UnitState.AttackPlayer);
if (HasDynamicFlag(UnitDynFlags.Tapped)) if (IsAlive() && HasDynamicFlag(UnitDynFlags.Tapped))
SetDynamicFlags((UnitDynFlags)GetCreatureTemplate().DynamicFlags); SetDynamicFlags((UnitDynFlags)GetCreatureTemplate().DynamicFlags);
if (IsPet() || IsGuardian()) // update pets' speed for catchup OOC speed if (IsPet() || IsGuardian()) // update pets' speed for catchup OOC speed
-2
View File
@@ -858,8 +858,6 @@ namespace Game.Entities
if (!creature.IsPet()) if (!creature.IsPet())
{ {
creature.GetThreatManager().ClearAllThreat();
// must be after setDeathState which resets dynamic flags // must be after setDeathState which resets dynamic flags
if (!creature.loot.IsLooted()) if (!creature.loot.IsLooted())
creature.AddDynamicFlag(UnitDynFlags.Lootable); creature.AddDynamicFlag(UnitDynFlags.Lootable);