aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSubv <s.v.h21@hotmail.com>2012-08-17 18:06:29 -0500
committerSubv <s.v.h21@hotmail.com>2012-08-17 18:06:29 -0500
commit40cfb0fa85f346aec5a4b7c679bc631c2baac55f (patch)
treeb339ba4f2bdc22b7fb268b38667bb34e97231723 /src
parentd278fc725fe3e1e3517f7e6eeeeba22f225d40dc (diff)
Core/Spells: Implemented the haste modifying auras.
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp10
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp2
-rwxr-xr-xsrc/server/game/Spells/Auras/SpellAuraDefines.h6
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp8
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);