diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellAuras.cpp | 21 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 14 | ||||
-rw-r--r-- | src/game/SpellMgr.cpp | 4 |
3 files changed, 38 insertions, 1 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 19d4b43bb38..124fdd9543b 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2346,6 +2346,27 @@ void AuraEffect::HandleAuraDummy(bool apply, bool Real, bool changeAmount) if(caster) caster->CastSpell(caster,13138,true,NULL,this); return; + case 28832: // Mark of Korth'azz + case 28833: // Mark of Blaumeux + case 28834: // Mark of Rivendare + case 28835: // Mark of Zeliek + { + int8 stack = GetParentAura()->GetStackAmount(); + int32 damage; + switch(stack) + { + case 1: return; + case 2: damage = 500; break; + case 3: damage = 1000; break; + case 4: damage = 1500; break; + case 5: damage = 4000; break; + case 6: damage = 12000; break; + default:damage = 20000 + 1000 * (stack - 7); break; + } + if(caster) + caster->CastCustomSpell(28836, SPELLVALUE_BASE_POINT0, damage, m_target); + return; + } case 34026: // kill command { Unit * pet = m_target->GetGuardianPet(); diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 47ef23ad855..c28e992adde 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -337,6 +337,17 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) switch(m_spellInfo->Id) // better way to check unknown { + // Positive/Negative Charge + case 28062: + case 39090: + case 28085: + case 39093: + if(m_triggeredByAuraSpell && unitTarget->HasAura(m_triggeredByAuraSpell->Id)) + { + damage = 0; + m_caster->CastSpell(m_caster, (m_spellInfo->Id == 28062 || m_spellInfo->Id == 39090) ? 29659 : 29660, true); + } + break; // percent from health with min case 25599: // Thundercrash { @@ -1011,6 +1022,9 @@ void Spell::EffectDummy(uint32 i) m_caster->CastSpell(unitTarget,29294,true); return; } + // Polarity Shift + case 28089: spell_id = roll_chance_i(50) ? 28059 : 28084; break; + case 39096: spell_id = roll_chance_i(50) ? 39088 : 39091; break; case 29200: // Purify Helboar Meat { if( m_caster->GetTypeId() != TYPEID_PLAYER ) diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 5de2f843c87..4c83d286620 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -3198,7 +3198,9 @@ void SpellMgr::LoadSpellCustomAttr() case 45150: // Meteor Slash mSpellCustomAttr[i] |= SPELL_ATTR_CU_SHARE_DAMAGE; break; - case 27820: + case 27820: // Mana Detonation + case 28062: case 39090: // Positive/Negative Charge + case 28085: case 39093: mSpellCustomAttr[i] |= SPELL_ATTR_CU_EXCLUDE_SELF; break; case 44978: case 45001: case 45002: // Wild Magic |