Core/Auras: Implement SPELL_AURA_FORCE_BREATH_BAR

Port From (https://github.com/TrinityCore/TrinityCore/commit/6c01f761b2c00d9ea8d44f2856c7a82cadb9bbfc)
This commit is contained in:
hondacrx
2022-05-23 17:14:23 -04:00
parent 63f17d776a
commit d780b46dca
3 changed files with 23 additions and 21 deletions
+5 -16
View File
@@ -792,44 +792,33 @@ namespace Game.Entities
// process liquid auras using generic unit code
base.ProcessTerrainStatusUpdate(oldLiquidStatus, newLiquidData);
m_MirrorTimerFlags &= ~(PlayerUnderwaterState.InWater | PlayerUnderwaterState.InLava | PlayerUnderwaterState.InSlime | PlayerUnderwaterState.InDarkWater);
// player specific logic for mirror timers
if (GetLiquidStatus() != 0 && newLiquidData != null)
{
// Breath bar state (under water in any liquid type)
if (newLiquidData.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.AllLiquids))
{
if (GetLiquidStatus().HasAnyFlag(ZLiquidStatus.UnderWater))
m_MirrorTimerFlags |= PlayerUnderwaterState.InWater;
else
m_MirrorTimerFlags &= ~PlayerUnderwaterState.InWater;
}
// Fatigue bar state (if not on flight path or transport)
if (newLiquidData.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.DarkWater) && !IsInFlight() && !GetTransport())
m_MirrorTimerFlags |= PlayerUnderwaterState.InDarkWater;
else
m_MirrorTimerFlags &= ~PlayerUnderwaterState.InDarkWater;
// Lava state (any contact)
if (newLiquidData.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.Magma))
{
if (GetLiquidStatus().HasAnyFlag(ZLiquidStatus.InContact))
m_MirrorTimerFlags |= PlayerUnderwaterState.InLava;
else
m_MirrorTimerFlags &= ~PlayerUnderwaterState.InLava;
}
// Slime state (any contact)
if (newLiquidData.type_flags.HasAnyFlag(LiquidHeaderTypeFlags.Slime))
{
if (GetLiquidStatus().HasAnyFlag(ZLiquidStatus.InContact))
m_MirrorTimerFlags |= PlayerUnderwaterState.InSlime;
else
m_MirrorTimerFlags &= ~PlayerUnderwaterState.InSlime;
}
}
else
m_MirrorTimerFlags &= ~(PlayerUnderwaterState.InWater | PlayerUnderwaterState.InLava | PlayerUnderwaterState.InSlime | PlayerUnderwaterState.InDarkWater);
if (HasAuraType(AuraType.ForceBeathBar))
m_MirrorTimerFlags |= PlayerUnderwaterState.InWater;
}
}
}