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/Unit | |
| parent | 2764441eb00042bd1ae697e0a4a81f3020a5c538 (diff) | |
Core/Units: Sync ProcessTerrainStatusUpdate code with master branch
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 13 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 4 |
2 files changed, 9 insertions, 8 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 278087e4890..2f4678c5367 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3194,25 +3194,26 @@ bool Unit::IsUnderWater() const void Unit::ProcessPositionDataChanged(PositionFullTerrainStatus const& data) { + ZLiquidStatus oldLiquidStatus = GetLiquidStatus(); WorldObject::ProcessPositionDataChanged(data); - ProcessTerrainStatusUpdate(data.liquidStatus, data.liquidInfo); + ProcessTerrainStatusUpdate(oldLiquidStatus, data.liquidInfo); } -void Unit::ProcessTerrainStatusUpdate(ZLiquidStatus status, Optional<LiquidData> const& liquidData) +void Unit::ProcessTerrainStatusUpdate(ZLiquidStatus /*oldLiquidStatus*/, Optional<LiquidData> const& newLiquidData) { - if (IsFlying() || (!IsControlledByPlayer())) + if (!IsControlledByPlayer()) return; // remove appropriate auras if we are swimming/not swimming respectively - if (status & MAP_LIQUID_STATUS_SWIMMING) + if (IsInWater()) RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_NOT_ABOVEWATER); else RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_NOT_UNDERWATER); // liquid aura handling LiquidTypeEntry const* curLiquid = nullptr; - if ((status & MAP_LIQUID_STATUS_SWIMMING) && liquidData) - curLiquid = sLiquidTypeStore.LookupEntry(liquidData->entry); + if (IsInWater() && newLiquidData) + curLiquid = sLiquidTypeStore.LookupEntry(newLiquidData->entry); if (curLiquid != _lastLiquid) { if (_lastLiquid && _lastLiquid->SpellID) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 07f46b6a7c7..795c631358e 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1118,7 +1118,7 @@ class TC_GAME_API Unit : public WorldObject bool isTargetableForAttack(bool checkFakeDeath = true) const; - virtual bool IsInWater() const; + bool IsInWater() const; bool IsUnderWater() const; bool isInAccessiblePlaceFor(Creature const* c) const; @@ -1833,7 +1833,7 @@ class TC_GAME_API Unit : public WorldObject void DisableSpline(); void ProcessPositionDataChanged(PositionFullTerrainStatus const& data) override; - virtual void ProcessTerrainStatusUpdate(ZLiquidStatus status, Optional<LiquidData> const& liquidData); + virtual void ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional<LiquidData> const& newLiquidData); // notifiers virtual void AtEnterCombat() { } |
