aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp6
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp18
2 files changed, 21 insertions, 3 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index caeac1c73ea..7c3dfed4e2a 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -10757,6 +10757,12 @@ float Unit::ApplyEffectModifiers(SpellInfo const* spellProto, uint8 effect_index
case 2:
modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_EFFECT3, value);
break;
+ case 3:
+ modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_EFFECT4, value);
+ break;
+ case 4:
+ modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_EFFECT5, value);
+ break;
}
}
return value;
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index f7a87dddebe..dd90e10f7bb 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -924,6 +924,8 @@ void AuraEffect::ApplySpellMod(Unit* target, bool apply)
case SPELLMOD_EFFECT1:
case SPELLMOD_EFFECT2:
case SPELLMOD_EFFECT3:
+ case SPELLMOD_EFFECT4:
+ case SPELLMOD_EFFECT5:
{
ObjectGuid guid = target->GetGUID();
Unit::AuraApplicationMap & auras = target->GetAppliedAuras();
@@ -936,7 +938,7 @@ void AuraEffect::ApplySpellMod(Unit* target, bool apply)
{
if (GetMiscValue() == SPELLMOD_ALL_EFFECTS)
{
- for (uint8 i = 0; i<MAX_SPELL_EFFECTS; ++i)
+ for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
if (AuraEffect* aurEff = aura->GetEffect(i))
aurEff->RecalculateAmount();
@@ -952,9 +954,19 @@ void AuraEffect::ApplySpellMod(Unit* target, bool apply)
if (AuraEffect* aurEff = aura->GetEffect(1))
aurEff->RecalculateAmount();
}
- else //if (modOp == SPELLMOD_EFFECT3)
+ else if (GetMiscValue() == SPELLMOD_EFFECT3)
{
- if (AuraEffect* aurEff = aura->GetEffect(2))
+ if (AuraEffect* aurEff = aura->GetEffect(2))
+ aurEff->RecalculateAmount();
+ }
+ else if (GetMiscValue() == SPELLMOD_EFFECT4)
+ {
+ if (AuraEffect* aurEff = aura->GetEffect(3))
+ aurEff->RecalculateAmount();
+ }
+ else if (GetMiscValue() == SPELLMOD_EFFECT5)
+ {
+ if (AuraEffect* aurEff = aura->GetEffect(4))
aurEff->RecalculateAmount();
}
}