Core/Spells: Fix infinite loop
Port From (https://github.com/TrinityCore/TrinityCore/commit/e6e73b7b13ddc48f98f46d1af13a95b9cf67cccd)
This commit is contained in:
@@ -847,10 +847,14 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
if (_lastLiquid != null && _lastLiquid.SpellID != 0)
|
if (_lastLiquid != null && _lastLiquid.SpellID != 0)
|
||||||
RemoveAurasDueToSpell(_lastLiquid.SpellID);
|
RemoveAurasDueToSpell(_lastLiquid.SpellID);
|
||||||
|
|
||||||
Player player = GetCharmerOrOwnerPlayerOrPlayerItself();
|
Player player = GetCharmerOrOwnerPlayerOrPlayerItself();
|
||||||
|
|
||||||
|
// Set _lastLiquid before casting liquid spell to avoid infinite loops
|
||||||
|
_lastLiquid = curLiquid;
|
||||||
|
|
||||||
if (curLiquid != null && curLiquid.SpellID != 0 && (!player || !player.IsGameMaster()))
|
if (curLiquid != null && curLiquid.SpellID != 0 && (!player || !player.IsGameMaster()))
|
||||||
CastSpell(this, curLiquid.SpellID, true);
|
CastSpell(this, curLiquid.SpellID, true);
|
||||||
_lastLiquid = curLiquid;
|
|
||||||
|
|
||||||
// mount capability depends on liquid state change
|
// mount capability depends on liquid state change
|
||||||
UpdateMountCapability();
|
UpdateMountCapability();
|
||||||
|
|||||||
@@ -3174,7 +3174,10 @@ namespace Game.Spells
|
|||||||
if (spellInfo != null && spellInfo.IconFileDataId == 134230)
|
if (spellInfo != null && spellInfo.IconFileDataId == 134230)
|
||||||
{
|
{
|
||||||
Log.outDebug(LogFilter.Spells, "Statue {0} is unsummoned in spell {1} finish", unitCaster.GetGUID().ToString(), m_spellInfo.Id);
|
Log.outDebug(LogFilter.Spells, "Statue {0} is unsummoned in spell {1} finish", unitCaster.GetGUID().ToString(), m_spellInfo.Id);
|
||||||
unitCaster.SetDeathState(DeathState.JustDied);
|
// Avoid infinite loops with setDeathState(JUST_DIED) being called over and over
|
||||||
|
// It might make sense to do this check in Unit::setDeathState() and all overloaded functions
|
||||||
|
if (unitCaster.GetDeathState() != DeathState.JustDied)
|
||||||
|
unitCaster.SetDeathState(DeathState.JustDied);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user