diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index a58688cd2..36590cbac 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -271,8 +271,7 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) } } - if (GetPlayer()->m_lastFallTime >= movementInfo.fallTime || GetPlayer()->m_lastFallZ <=movementInfo.z || recv_data.GetOpcode() == MSG_MOVE_FALL_LAND) - GetPlayer()->SetFallInformation(movementInfo.fallTime, movementInfo.z); + GetPlayer()->UpdateFallInformationIfNeed(movementInfo,MSG_MOVE_FALL_LAND); if(GetPlayer()->isMovingOrTurning()) GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH); diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 9c064c82d..5768c8cea 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -459,6 +459,9 @@ Player::Player (WorldSession *session): Unit(), m_achievementMgr(this) m_declinedname = NULL; m_runes = NULL; + + m_lastFallTime = 0; + m_lastFallZ = 0; } Player::~Player () @@ -20210,3 +20213,9 @@ void Player::UpdateKnownCurrencies(uint32 itemId, bool apply) RemoveFlag64(PLAYER_FIELD_KNOWN_CURRENCIES,(1LL << (ctEntry->BitIndex-1))); } } + +void Player::UpdateFallInformationIfNeed( MovementInfo const& minfo,uint16 opcode ) +{ + if (m_lastFallTime >= minfo.fallTime || m_lastFallZ <=minfo.z || opcode == MSG_MOVE_FALL_LAND) + SetFallInformation(minfo.fallTime, minfo.z); +} diff --git a/src/game/Player.h b/src/game/Player.h index 964b6fdce..541d925d1 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1942,8 +1942,7 @@ class MANGOS_DLL_SPEC Player : public Unit /*** VARIOUS SYSTEMS ***/ /*********************************************************/ MovementInfo m_movementInfo; - uint32 m_lastFallTime; - float m_lastFallZ; + void UpdateFallInformationIfNeed(MovementInfo const& minfo,uint16 opcode); Unit *m_mover; void SetFallInformation(uint32 time, float z) { @@ -2185,10 +2184,6 @@ class MANGOS_DLL_SPEC Player : public Unit void StopMirrorTimer(MirrorTimerType Type); void HandleDrowning(uint32 time_diff); int32 getMaxTimer(MirrorTimerType timer); - int32 m_MirrorTimer[MAX_TIMERS]; - uint8 m_MirrorTimerFlags; - uint8 m_MirrorTimerFlagsLast; - bool m_isInWater; /*********************************************************/ /*** HONOR SYSTEM ***/ @@ -2353,6 +2348,14 @@ class MANGOS_DLL_SPEC Player : public Unit GridReference m_gridRef; MapReference m_mapRef; + + uint32 m_lastFallTime; + float m_lastFallZ; + + int32 m_MirrorTimer[MAX_TIMERS]; + uint8 m_MirrorTimerFlags; + uint8 m_MirrorTimerFlagsLast; + bool m_isInWater; }; void AddItemsSetItem(Player*player,Item *item); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index b36b39c7a..5c9fb82e7 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7528" + #define REVISION_NR "7529" #endif // __REVISION_NR_H__