Core/Creature: temporary summons are now dynamic flagged (oversight in dynspawn). This fixes issues with vehicle kit resets breaking AI.

Port From (https://github.com/TrinityCore/TrinityCore/commit/22b754c9e22cfdd9dab998ca45e6724b62760f78)
This commit is contained in:
hondacrx
2020-08-24 19:13:15 -04:00
parent a27c86a385
commit 35c13d69ca
3 changed files with 15 additions and 24 deletions
+9 -3
View File
@@ -213,7 +213,12 @@ namespace Game.Entities
SaveRespawnTime(0, false);
}
AddObjectToRemoveList();
TempSummon summon = ToTempSummon();
if (summon != null)
summon.UnSummon();
else
AddObjectToRemoveList();
}
}
@@ -416,10 +421,11 @@ namespace Game.Entities
{
if (IsAIEnabled && triggerJustAppeared && m_deathState == DeathState.Alive)
{
triggerJustAppeared = false;
GetAI().JustAppeared();
if (m_respawnCompatibilityMode && VehicleKit != null)
VehicleKit.Reset();
triggerJustAppeared = false;
GetAI().JustAppeared();
}
UpdateMovementFlags();
+4 -19
View File
@@ -52,9 +52,11 @@ namespace Game.Entities
UnSummon();
return;
}
switch (m_type)
{
case TempSummonType.ManualDespawn:
case TempSummonType.DeadDespawn:
break;
case TempSummonType.TimedDespawn:
{
@@ -102,27 +104,17 @@ namespace Game.Entities
case TempSummonType.CorpseDespawn:
{
// if m_deathState is DEAD, CORPSE was skipped
if (m_deathState == DeathState.Corpse || m_deathState == DeathState.Dead)
if (m_deathState == DeathState.Corpse)
{
UnSummon();
return;
}
break;
}
case TempSummonType.DeadDespawn:
{
if (m_deathState == DeathState.Dead)
{
UnSummon();
return;
}
break;
}
case TempSummonType.TimedOrCorpseDespawn:
{
// if m_deathState is DEAD, CORPSE was skipped
if (m_deathState == DeathState.Corpse || m_deathState == DeathState.Dead)
if (m_deathState == DeathState.Corpse)
{
UnSummon();
return;
@@ -144,13 +136,6 @@ namespace Game.Entities
}
case TempSummonType.TimedOrDeadDespawn:
{
// if m_deathState is DEAD, CORPSE was skipped
if (m_deathState == DeathState.Dead)
{
UnSummon();
return;
}
if (!IsInCombat() && IsAlive())
{
if (m_timer <= diff)
+2 -2
View File
@@ -3901,7 +3901,7 @@ namespace Game.Maps
}
}
TempSummon summon = null;
TempSummon summon;
switch (mask)
{
case UnitTypeMask.Summon:
@@ -3923,7 +3923,7 @@ namespace Game.Maps
return null;
}
if (!summon.Create(GenerateLowGuid(HighGuid.Creature), this, entry, pos, null, vehId))
if (!summon.Create(GenerateLowGuid(HighGuid.Creature), this, entry, pos, null, vehId, true))
return null;
// Set the summon to the summoner's phase