Core/GameObject: Fix an edge case where GOs might never respawn after being manually despawned.
Port From (https://github.com/TrinityCore/TrinityCore/commit/eb7a8584e227b7cbd68c051c044f08c47019586b)
This commit is contained in:
@@ -435,7 +435,10 @@ namespace Game.Entities
|
|||||||
if (m_despawnDelay > diff)
|
if (m_despawnDelay > diff)
|
||||||
m_despawnDelay -= diff;
|
m_despawnDelay -= diff;
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
m_despawnDelay = 0;
|
||||||
DespawnOrUnsummon(TimeSpan.FromMilliseconds(0), m_despawnRespawnTime);
|
DespawnOrUnsummon(TimeSpan.FromMilliseconds(0), m_despawnRespawnTime);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (m_lootState)
|
switch (m_lootState)
|
||||||
@@ -896,9 +899,11 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uint respawnDelay = (uint)((forceRespawnTime > TimeSpan.Zero) ? forceRespawnTime.TotalSeconds : m_respawnDelayTime);
|
if (m_goData != null)
|
||||||
if (m_goData != null && respawnDelay != 0)
|
{
|
||||||
|
uint respawnDelay = (uint)((forceRespawnTime > TimeSpan.Zero) ? forceRespawnTime.TotalSeconds : m_respawnDelayTime);
|
||||||
SaveRespawnTime(respawnDelay);
|
SaveRespawnTime(respawnDelay);
|
||||||
|
}
|
||||||
Delete();
|
Delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user