diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-01-01 12:34:42 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-01-01 12:34:42 +0100 |
| commit | 645b41ebb9bcec74a588b77ae690f144a87a1904 (patch) | |
| tree | 5f69ca2bdd862c0f9fd5f5efd946eff726bf20c8 /src/server/game/Entities/Player | |
| parent | 2764441eb00042bd1ae697e0a4a81f3020a5c538 (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.cpp | 37 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 6 |
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]; |
