From 9f8e51ff41e0e39547e33c37e36fa837272e55f5 Mon Sep 17 00:00:00 2001 From: arrai Date: Wed, 10 Dec 2008 16:01:29 +0100 Subject: [PATCH] [6891] small performance fix for previous commit --- src/game/MovementHandler.cpp | 14 +++++++++----- src/game/Player.h | 3 ++- src/shared/revision_nr.h | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index 10f8c315b..f94718906 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -291,12 +291,13 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) if (recv_data.GetOpcode() == MSG_MOVE_FALL_LAND && !GetPlayer()->isInFlight()) { // calculate total z distance of the fall - float z_diff = GetPlayer()->m_fallMovementInfo.z - movementInfo.z; + float z_diff = GetPlayer()->m_lastFallZ - movementInfo.z; sLog.outDebug("zDiff = %f", z_diff); Player *target = GetPlayer(); - //Players with Feather Fall or physical immunity (charges used) are ignored - if (!target->isDead() && !target->isGameMaster() && + //Players with low fall distance, Feather Fall or physical immunity (charges used) are ignored + // 14.57 can be calculated by resolving damageperc formular below to 0 + if (z_diff >= 14.57f && !target->isDead() && !target->isGameMaster() && !target->HasAuraType(SPELL_AURA_HOVER) && !target->HasAuraType(SPELL_AURA_FEATHER_FALL) && !target->HasAuraType(SPELL_AURA_FLY) && !target->IsImmunedToDamage(SPELL_SCHOOL_MASK_NORMAL,true) ) { @@ -361,8 +362,11 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) GetPlayer()->SetPosition(movementInfo.x, movementInfo.y, movementInfo.z, movementInfo.o); GetPlayer()->m_movementInfo = movementInfo; - if (GetPlayer()->m_fallMovementInfo.fallTime >= movementInfo.fallTime || GetPlayer()->m_fallMovementInfo.z <=movementInfo.z) - GetPlayer()->m_fallMovementInfo = movementInfo; + if (GetPlayer()->m_lastFallTime >= movementInfo.fallTime || GetPlayer()->m_lastFallZ <=movementInfo.z) + { + GetPlayer()->m_lastFallTime = movementInfo.fallTime; + GetPlayer()->m_lastFallZ= movementInfo.z; + } if(GetPlayer()->isMovingOrTurning()) GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH); diff --git a/src/game/Player.h b/src/game/Player.h index 635a7ad76..a6915fbf4 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1910,7 +1910,8 @@ class MANGOS_DLL_SPEC Player : public Unit /*** VARIOUS SYSTEMS ***/ /*********************************************************/ MovementInfo m_movementInfo; - MovementInfo m_fallMovementInfo; + uint32 m_lastFallTime; + float m_lastFallZ; bool isMoving() const { return HasUnitMovementFlag(movementFlagsMask); } bool isMovingOrTurning() const { return HasUnitMovementFlag(movementOrTurningFlagsMask); } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 18a39532e..27a2b558c 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 "6890" + #define REVISION_NR "6891" #endif // __REVISION_NR_H__