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:
@@ -213,7 +213,12 @@ namespace Game.Entities
|
|||||||
|
|
||||||
SaveRespawnTime(0, false);
|
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)
|
if (IsAIEnabled && triggerJustAppeared && m_deathState == DeathState.Alive)
|
||||||
{
|
{
|
||||||
triggerJustAppeared = false;
|
|
||||||
GetAI().JustAppeared();
|
|
||||||
if (m_respawnCompatibilityMode && VehicleKit != null)
|
if (m_respawnCompatibilityMode && VehicleKit != null)
|
||||||
VehicleKit.Reset();
|
VehicleKit.Reset();
|
||||||
|
|
||||||
|
triggerJustAppeared = false;
|
||||||
|
GetAI().JustAppeared();
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateMovementFlags();
|
UpdateMovementFlags();
|
||||||
|
|||||||
@@ -52,9 +52,11 @@ namespace Game.Entities
|
|||||||
UnSummon();
|
UnSummon();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (m_type)
|
switch (m_type)
|
||||||
{
|
{
|
||||||
case TempSummonType.ManualDespawn:
|
case TempSummonType.ManualDespawn:
|
||||||
|
case TempSummonType.DeadDespawn:
|
||||||
break;
|
break;
|
||||||
case TempSummonType.TimedDespawn:
|
case TempSummonType.TimedDespawn:
|
||||||
{
|
{
|
||||||
@@ -102,27 +104,17 @@ namespace Game.Entities
|
|||||||
case TempSummonType.CorpseDespawn:
|
case TempSummonType.CorpseDespawn:
|
||||||
{
|
{
|
||||||
// if m_deathState is DEAD, CORPSE was skipped
|
// if m_deathState is DEAD, CORPSE was skipped
|
||||||
if (m_deathState == DeathState.Corpse || m_deathState == DeathState.Dead)
|
if (m_deathState == DeathState.Corpse)
|
||||||
{
|
{
|
||||||
UnSummon();
|
UnSummon();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TempSummonType.DeadDespawn:
|
|
||||||
{
|
|
||||||
if (m_deathState == DeathState.Dead)
|
|
||||||
{
|
|
||||||
UnSummon();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TempSummonType.TimedOrCorpseDespawn:
|
case TempSummonType.TimedOrCorpseDespawn:
|
||||||
{
|
{
|
||||||
// if m_deathState is DEAD, CORPSE was skipped
|
if (m_deathState == DeathState.Corpse)
|
||||||
if (m_deathState == DeathState.Corpse || m_deathState == DeathState.Dead)
|
|
||||||
{
|
{
|
||||||
UnSummon();
|
UnSummon();
|
||||||
return;
|
return;
|
||||||
@@ -144,13 +136,6 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
case TempSummonType.TimedOrDeadDespawn:
|
case TempSummonType.TimedOrDeadDespawn:
|
||||||
{
|
{
|
||||||
// if m_deathState is DEAD, CORPSE was skipped
|
|
||||||
if (m_deathState == DeathState.Dead)
|
|
||||||
{
|
|
||||||
UnSummon();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!IsInCombat() && IsAlive())
|
if (!IsInCombat() && IsAlive())
|
||||||
{
|
{
|
||||||
if (m_timer <= diff)
|
if (m_timer <= diff)
|
||||||
|
|||||||
@@ -3901,7 +3901,7 @@ namespace Game.Maps
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TempSummon summon = null;
|
TempSummon summon;
|
||||||
switch (mask)
|
switch (mask)
|
||||||
{
|
{
|
||||||
case UnitTypeMask.Summon:
|
case UnitTypeMask.Summon:
|
||||||
@@ -3923,7 +3923,7 @@ namespace Game.Maps
|
|||||||
return null;
|
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;
|
return null;
|
||||||
|
|
||||||
// Set the summon to the summoner's phase
|
// Set the summon to the summoner's phase
|
||||||
|
|||||||
Reference in New Issue
Block a user