From 24eba2359a66e9b897baac6662fb94f7d64ff94e Mon Sep 17 00:00:00 2001 From: Tuxity Date: Sat, 29 Dec 2012 11:48:38 +0100 Subject: Core/Stats: Fix haste display in character panel --- src/server/game/Entities/Unit/Unit.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/server') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 86fd8d2f39c..7df33ceb2d8 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -14089,11 +14089,27 @@ void Unit::ApplyAttackTimePercentMod(WeaponAttackType att, float val, bool apply { ApplyPercentModFloatVar(m_modAttackSpeedPct[att], val, !apply); ApplyPercentModFloatValue(UNIT_FIELD_BASEATTACKTIME+att, val, !apply); + + if (GetTypeId() == TYPEID_PLAYER) + { + if (att == BASE_ATTACK) + ApplyPercentModFloatValue(PLAYER_FIELD_MOD_HASTE, val, !apply); + else if (att == RANGED_ATTACK) + ApplyPercentModFloatValue(PLAYER_FIELD_MOD_RANGED_HASTE, val, !apply); + } } else { ApplyPercentModFloatVar(m_modAttackSpeedPct[att], -val, apply); ApplyPercentModFloatValue(UNIT_FIELD_BASEATTACKTIME+att, -val, apply); + + if (GetTypeId() == TYPEID_PLAYER) + { + if (att == BASE_ATTACK) + ApplyPercentModFloatValue(PLAYER_FIELD_MOD_HASTE, -val, apply); + else if (att == RANGED_ATTACK) + ApplyPercentModFloatValue(PLAYER_FIELD_MOD_RANGED_HASTE, -val, apply); + } } m_attackTimer[att] = uint32(GetAttackTime(att) * m_modAttackSpeedPct[att] * remainingTimePct); } @@ -14101,9 +14117,15 @@ void Unit::ApplyAttackTimePercentMod(WeaponAttackType att, float val, bool apply void Unit::ApplyCastTimePercentMod(float val, bool apply) { if (val > 0) + { ApplyPercentModFloatValue(UNIT_MOD_CAST_SPEED, val, !apply); + ApplyPercentModFloatValue(UNIT_MOD_CAST_HASTE, val, !apply); + } else + { ApplyPercentModFloatValue(UNIT_MOD_CAST_SPEED, -val, apply); + ApplyPercentModFloatValue(UNIT_MOD_CAST_HASTE, -val, apply); + } } uint32 Unit::GetCastingTimeForBonus(SpellInfo const* spellProto, DamageEffectType damagetype, uint32 CastingTime) const -- cgit v1.2.3