diff options
author | Subv <s.v.h21@hotmail.com> | 2012-08-17 18:06:29 -0500 |
---|---|---|
committer | Subv <s.v.h21@hotmail.com> | 2012-08-17 18:06:29 -0500 |
commit | 40cfb0fa85f346aec5a4b7c679bc631c2baac55f (patch) | |
tree | b339ba4f2bdc22b7fb268b38667bb34e97231723 /src | |
parent | d278fc725fe3e1e3517f7e6eeeeba22f225d40dc (diff) |
Core/Spells: Implemented the haste modifying auras.
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 10 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Spells/Auras/SpellAuraDefines.h | 6 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 8 |
4 files changed, 13 insertions, 13 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index ebaddea3b32..947c8dab2c9 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -23803,13 +23803,9 @@ uint32 Player::GetRuneBaseCooldown(uint8 index) hastePct = GetRatingBonusValue(CR_HASTE_MELEE); // ... and some auras. - AuraEffectList const& meleeHasteAura = GetAuraEffectsByType(SPELL_AURA_MOD_MELEE_HASTE); - for (AuraEffectList::const_iterator i = meleeHasteAura.begin();i != meleeHasteAura.end(); ++i) - hastePct += (*i)->GetAmount(); - - AuraEffectList const& meleeHasteAura2 = GetAuraEffectsByType(SPELL_AURA_319); - for (AuraEffectList::const_iterator i = meleeHasteAura2.begin();i != meleeHasteAura2.end(); ++i) - hastePct += (*i)->GetAmount(); + hastePct += GetTotalAuraModifier(SPELL_AURA_MOD_MELEE_HASTE); + hastePct += GetTotalAuraModifier(SPELL_AURA_MOD_MELEE_HASTE_2); + hastePct += GetTotalAuraModifier(SPELL_AURA_MOD_MELEE_HASTE_3); cooldown *= 1.0f - (hastePct / 100.0f); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 25cac647666..7bb796cdb37 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -13549,6 +13549,7 @@ bool InitTriggerAuraData() isTriggerAura[SPELL_AURA_MOD_MECHANIC_RESISTANCE] = true; isTriggerAura[SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS] = true; isTriggerAura[SPELL_AURA_MOD_MELEE_HASTE] = true; + isTriggerAura[SPELL_AURA_MOD_MELEE_HASTE_3] = true; isTriggerAura[SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE] = true; isTriggerAura[SPELL_AURA_RAID_PROC_FROM_CHARGE] = true; isTriggerAura[SPELL_AURA_RAID_PROC_FROM_CHARGE_WITH_VALUE] = true; @@ -13825,6 +13826,7 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u takeCharges = true; break; case SPELL_AURA_MOD_MELEE_HASTE: + case SPELL_AURA_MOD_MELEE_HASTE_3: { sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "ProcDamageAndSpell: casting spell id %u (triggered by %s haste aura of spell %u)", spellInfo->Id, (isVictim?"a victim's":"an attacker's"), triggeredByAura->GetId()); if (HandleHasteAuraProc(target, damage, triggeredByAura, procSpell, procFlag, procExtra, cooldown)) diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index c261636e5b6..4be9f7c807b 100755 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -276,7 +276,7 @@ enum AuraType SPELL_AURA_214 = 214, SPELL_AURA_ARENA_PREPARATION = 215, SPELL_AURA_HASTE_SPELLS = 216, - SPELL_AURA_MOD_MELEE_HASTE_2 = 217, // NYI + SPELL_AURA_MOD_MELEE_HASTE_2 = 217, SPELL_AURA_HASTE_RANGED = 218, SPELL_AURA_MOD_MANA_REGEN_FROM_STAT = 219, SPELL_AURA_MOD_RATING_FROM_STAT = 220, @@ -378,7 +378,7 @@ enum AuraType SPELL_AURA_PERIODIC_HASTE = 316, SPELL_AURA_MOD_SPELL_POWER_PCT = 317, SPELL_AURA_MASTERY = 318, - SPELL_AURA_319 = 319, // (melee?) attack speed + SPELL_AURA_MOD_MELEE_HASTE_3 = 319, SPELL_AURA_MOD_RANGED_ATTACK_SPEED = 320, // NYI SPELL_AURA_321 = 321, SPELL_AURA_INTERFERE_TARGETTING = 322, // NYI @@ -401,7 +401,7 @@ enum AuraType SPELL_AURA_INCREASE_SKILL_GAIN_CHANCE = 339, // NYI SPELL_AURA_340 = 340, SPELL_AURA_341 = 341, // cooldown decrease - SPELL_AURA_MOD_TIME_BETWEEN_ATTACKS = 342, // (attack speed) NYI + SPELL_AURA_MOD_MELEE_RANGED_HASTE_2 = 342, SPELL_AURA_343 = 343, SPELL_AURA_MOD_AUTOATTACK_DAMAGE = 344, SPELL_AURA_BYPASS_ARMOR_FOR_CASTER = 345, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 38afbc28417..3698e91e280 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -270,7 +270,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //214 Tamed Pet Passive &AuraEffect::HandleArenaPreparation, //215 SPELL_AURA_ARENA_PREPARATION &AuraEffect::HandleModCastingSpeed, //216 SPELL_AURA_HASTE_SPELLS - &AuraEffect::HandleNULL, //217 69106 - killing spree helper - unknown use + &AuraEffect::HandleModMeleeSpeedPct, //217 SPELL_AURA_MOD_MELEE_HASTE_2 &AuraEffect::HandleAuraModRangedHaste, //218 SPELL_AURA_HASTE_RANGED &AuraEffect::HandleModManaRegen, //219 SPELL_AURA_MOD_MANA_REGEN_FROM_STAT &AuraEffect::HandleModRatingFromStat, //220 SPELL_AURA_MOD_RATING_FROM_STAT @@ -372,7 +372,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNoImmediateEffect, //316 SPELL_AURA_PERIODIC_HASTE implemented in AuraEffect::CalculatePeriodic &AuraEffect::HandleNULL, //317 SPELL_AURA_MOD_SPELL_POWER_PCT &AuraEffect::HandleNULL, //318 SPELL_AURA_MASTERY - &AuraEffect::HandleNULL, //319 SPELL_AURA_319 + &AuraEffect::HandleModMeleeSpeedPct, //319 SPELL_AURA_MOD_MELEE_HASTE_3 &AuraEffect::HandleNULL, //320 SPELL_AURA_MOD_RANGED_ATTACK_SPEED &AuraEffect::HandleNULL, //321 SPELL_AURA_321 &AuraEffect::HandleNULL, //322 SPELL_AURA_INTERFERE_TARGETTING @@ -395,7 +395,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //339 SPELL_AURA_INCREASE_SKILL_GAIN_CHANCE &AuraEffect::HandleNULL, //340 SPELL_AURA_340 &AuraEffect::HandleNULL, //341 SPELL_AURA_341 - &AuraEffect::HandleNULL, //342 SPELL_AURA_MOD_TIME_BETWEEN_ATTACKS + &AuraEffect::HandleModMeleeRangedSpeedPct, //342 SPELL_AURA_MOD_MELEE_RANGED_HASTE_2 &AuraEffect::HandleNULL, //343 SPELL_AURA_343 &AuraEffect::HandleNULL, //344 SPELL_AURA_MOD_AUTOATTACK_DAMAGE &AuraEffect::HandleNULL, //345 SPELL_AURA_BYPASS_ARMOR_FOR_CASTER @@ -4473,6 +4473,7 @@ void AuraEffect::HandleModMeleeRangedSpeedPct(AuraApplication const* aurApp, uin if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) return; + //! ToDo: Haste auras with the same handler _CAN'T_ stack together Unit* target = aurApp->GetTarget(); target->ApplyAttackTimePercentMod(BASE_ATTACK, (float)GetAmount(), apply); @@ -4509,6 +4510,7 @@ void AuraEffect::HandleModMeleeSpeedPct(AuraApplication const* aurApp, uint8 mod if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) return; + //! ToDo: Haste auras with the same handler _CAN'T_ stack together Unit* target = aurApp->GetTarget(); target->ApplyAttackTimePercentMod(BASE_ATTACK, (float)GetAmount(), apply); |