aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Player
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-01-01 12:34:42 +0100
committerShauren <shauren.trinity@gmail.com>2022-01-01 12:34:42 +0100
commit645b41ebb9bcec74a588b77ae690f144a87a1904 (patch)
tree5f69ca2bdd862c0f9fd5f5efd946eff726bf20c8 /src/server/game/Entities/Player
parent2764441eb00042bd1ae697e0a4a81f3020a5c538 (diff)
Core/Units: Sync ProcessTerrainStatusUpdate code with master branch
Diffstat (limited to 'src/server/game/Entities/Player')
-rw-r--r--src/server/game/Entities/Player/Player.cpp37
-rw-r--r--src/server/game/Entities/Player/Player.h6
2 files changed, 11 insertions, 32 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index bd4e771a74e..8c3fcafaf83 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -260,7 +260,6 @@ Player::Player(WorldSession* session): Unit(true)
m_MirrorTimerFlags = UNDERWATER_NONE;
m_MirrorTimerFlagsLast = UNDERWATER_NONE;
- m_isInWater = false;
m_hostileReferenceCheckTimer = 0;
m_drunkTimer = 0;
m_deathTimer = 0;
@@ -2339,22 +2338,6 @@ GameObject* Player::GetGameObjectIfCanInteractWith(ObjectGuid const& guid, Gameo
return go;
}
-void Player::SetInWater(bool apply)
-{
- if (m_isInWater == apply)
- return;
-
- //define player in water by opcodes
- //move player's guid into HateOfflineList of those mobs
- //which can't swim and move guid back into ThreatList when
- //on surface.
- /// @todo exist also swimming mobs, and function must be symmetric to enter/leave water
- m_isInWater = apply;
-
- // remove auras that need water/land
- RemoveAurasWithInterruptFlags(apply ? AURA_INTERRUPT_FLAG_NOT_ABOVEWATER : AURA_INTERRUPT_FLAG_NOT_UNDERWATER);
-}
-
bool Player::IsInAreaTriggerRadius(AreaTriggerEntry const* trigger) const
{
if (!trigger || GetMapId() != trigger->ContinentID)
@@ -24299,42 +24282,42 @@ void Player::SetOriginalGroup(Group* group, int8 subgroup)
}
}
-void Player::ProcessTerrainStatusUpdate(ZLiquidStatus status, Optional<LiquidData> const& liquidData)
+void Player::ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional<LiquidData> const& newLiquidData)
{
// process liquid auras using generic unit code
- Unit::ProcessTerrainStatusUpdate(status, liquidData);
+ Unit::ProcessTerrainStatusUpdate(oldLiquidStatus, newLiquidData);
// player specific logic for mirror timers
- if (status && liquidData)
+ if (GetLiquidStatus() && newLiquidData)
{
// Breath bar state (under water in any liquid type)
- if (liquidData->type_flags & MAP_ALL_LIQUIDS)
+ if (newLiquidData->type_flags & MAP_ALL_LIQUIDS)
{
- if (status & LIQUID_MAP_UNDER_WATER)
+ if (GetLiquidStatus() & LIQUID_MAP_UNDER_WATER)
m_MirrorTimerFlags |= UNDERWATER_INWATER;
else
m_MirrorTimerFlags &= ~UNDERWATER_INWATER;
}
// Fatigue bar state (if not on flight path or transport)
- if ((liquidData->type_flags & MAP_LIQUID_TYPE_DARK_WATER) && !IsInFlight() && !GetTransport())
+ if ((newLiquidData->type_flags & MAP_LIQUID_TYPE_DARK_WATER) && !IsInFlight() && !GetTransport())
m_MirrorTimerFlags |= UNDERWATER_INDARKWATER;
else
m_MirrorTimerFlags &= ~UNDERWATER_INDARKWATER;
// Lava state (any contact)
- if (liquidData->type_flags & MAP_LIQUID_TYPE_MAGMA)
+ if (newLiquidData->type_flags & MAP_LIQUID_TYPE_MAGMA)
{
- if (status & MAP_LIQUID_STATUS_IN_CONTACT)
+ if (GetLiquidStatus() & MAP_LIQUID_STATUS_IN_CONTACT)
m_MirrorTimerFlags |= UNDERWATER_INLAVA;
else
m_MirrorTimerFlags &= ~UNDERWATER_INLAVA;
}
// Slime state (any contact)
- if (liquidData->type_flags & MAP_LIQUID_TYPE_SLIME)
+ if (newLiquidData->type_flags & MAP_LIQUID_TYPE_SLIME)
{
- if (status & MAP_LIQUID_STATUS_IN_CONTACT)
+ if (GetLiquidStatus() & MAP_LIQUID_STATUS_IN_CONTACT)
m_MirrorTimerFlags |= UNDERWATER_INSLIME;
else
m_MirrorTimerFlags &= ~UNDERWATER_INSLIME;
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 695dfbb69da..b5ddaca836c 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -916,9 +916,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
bool IsImmunedToSpellEffect(SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, WorldObject const* caster) const override;
- void SetInWater(bool apply);
-
- bool IsInWater() const override { return m_isInWater; }
bool IsFalling() { return GetPositionZ() < m_lastFallZ; }
bool IsInAreaTriggerRadius(AreaTriggerEntry const* trigger) const;
@@ -1689,7 +1686,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
bool UpdatePosition(float x, float y, float z, float orientation, bool teleport = false) override;
bool UpdatePosition(Position const& pos, bool teleport = false) override { return UpdatePosition(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teleport); }
- void ProcessTerrainStatusUpdate(ZLiquidStatus status, Optional<LiquidData> const& liquidData) override;
+ void ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional<LiquidData> const& newLiquidData) override;
void AtExitCombat() override;
void SendMessageToSet(WorldPacket const* data, bool self) const override { SendMessageToSetInRange(data, GetVisibilityRange(), self); }
@@ -2475,7 +2472,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
int32 m_MirrorTimer[MAX_TIMERS];
uint8 m_MirrorTimerFlags;
uint8 m_MirrorTimerFlagsLast;
- bool m_isInWater;
// Rune type / Rune timer
uint32 m_runeGraceCooldown[MAX_RUNES];