diff options
author | silinoron <none@none> | 2010-07-31 10:46:33 -0700 |
---|---|---|
committer | silinoron <none@none> | 2010-07-31 10:46:33 -0700 |
commit | 9d93ebc8b7d92a7e48b45f7bc52c9f14d90d46a9 (patch) | |
tree | 6059a8fe9d419876809181d872f89d31bd86aad4 /src | |
parent | c49ac64d947f83e85c157b8bb20e823ec2843bed (diff) |
Move SPELLFAMILY_PALADIN dummy spell effects for Holy Shock, Blessing of Faith, and Judgement of Command to spell scripts.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 62 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_paladin.cpp | 237 |
2 files changed, 230 insertions, 69 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index a4cbdc1a81a..4dd3d267809 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1682,53 +1682,9 @@ void Spell::EffectDummy(uint32 i) m_caster->CastCustomSpell(unitTarget, 54171, &dmg, 0, 0, true); return; } - switch(m_spellInfo->SpellIconID) - { - case 156: // Holy Shock - { - if (!unitTarget) - return; - - int hurt = 0; - int heal = 0; - - switch(m_spellInfo->Id) - { - case 20473: hurt = 25912; heal = 25914; break; - case 20929: hurt = 25911; heal = 25913; break; - case 20930: hurt = 25902; heal = 25903; break; - case 27174: hurt = 27176; heal = 27175; break; - case 33072: hurt = 33073; heal = 33074; break; - case 48824: hurt = 48822; heal = 48820; break; - case 48825: hurt = 48823; heal = 48821; break; - default: - sLog.outError("Spell::EffectDummy: Spell %u not handled in HS",m_spellInfo->Id); - return; - } - - if (m_caster->IsFriendlyTo(unitTarget)) - m_caster->CastSpell(unitTarget, heal, true, 0); - else - m_caster->CastSpell(unitTarget, hurt, true, 0); - - return; - } - } switch(m_spellInfo->Id) { - case 20425: // Judgement of command - { - if (!unitTarget) - return; - - SpellEntry const* spell_proto = sSpellStore.LookupEntry(damage); - if (!spell_proto) - return; - - m_caster->CastSpell(unitTarget, spell_proto, true, NULL); - return; - } case 31789: // Righteous Defense (step 1) { // Clear targets for eff 1 @@ -1750,24 +1706,6 @@ void Spell::EffectDummy(uint32 i) // now let next effect cast spell at each target. return; } - case 37877: // Blessing of Faith - { - if (!unitTarget) - return; - - uint32 spell_id = 0; - switch(unitTarget->getClass()) - { - case CLASS_DRUID: spell_id = 37878; break; - case CLASS_PALADIN: spell_id = 37879; break; - case CLASS_PRIEST: spell_id = 37880; break; - case CLASS_SHAMAN: spell_id = 37881; break; - default: return; // ignore for not healing classes - } - - m_caster->CastSpell(m_caster, spell_id, true); - return; - } } break; case SPELLFAMILY_SHAMAN: diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 24141205e76..7f81f568676 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -16,21 +16,244 @@ */ /* - * Scripts for spells with SPELLFAMILY_SHAMAN and SPELLFAMILY_GENERIC spells used by paladin players. + * Scripts for spells with SPELLFAMILY_PALADIN and SPELLFAMILY_GENERIC spells used by paladin players. * Ordered alphabetically using scriptname. * Scriptnames of files in this file should be prefixed with "spell_pal_". */ #include "ScriptPCH.h" +enum PaladinSpells +{ + PALADIN_SPELL_HOLY_SHOCK_R1 = 20473, + PALADIN_SPELL_HOLY_SHOCK_R1_DAMAGE = 25912, + PALADIN_SPELL_HOLY_SHOCK_R1_HEALING = 25914, + PALADIN_SPELL_HOLY_SHOCK_R2 = 20929, + PALADIN_SPELL_HOLY_SHOCK_R2_DAMAGE = 25911, + PALADIN_SPELL_HOLY_SHOCK_R2_HEALING = 25913, + PALADIN_SPELL_HOLY_SHOCK_R3 = 20930, + PALADIN_SPELL_HOLY_SHOCK_R3_DAMAGE = 25902, + PALADIN_SPELL_HOLY_SHOCK_R3_HEALING = 25903, + PALADIN_SPELL_HOLY_SHOCK_R4 = 27174, + PALADIN_SPELL_HOLY_SHOCK_R4_DAMAGE = 27176, + PALADIN_SPELL_HOLY_SHOCK_R4_HEALING = 27175, + PALADIN_SPELL_HOLY_SHOCK_R5 = 33072, + PALADIN_SPELL_HOLY_SHOCK_R5_DAMAGE = 33073, + PALADIN_SPELL_HOLY_SHOCK_R5_HEALING = 33074, + PALADIN_SPELL_HOLY_SHOCK_R6 = 48824, + PALADIN_SPELL_HOLY_SHOCK_R6_DAMAGE = 48822, + PALADIN_SPELL_HOLY_SHOCK_R6_HEALING = 48820, + PALADIN_SPELL_HOLY_SHOCK_R7 = 48825, + PALADIN_SPELL_HOLY_SHOCK_R7_DAMAGE = 48823, + PALADIN_SPELL_HOLY_SHOCK_R7_HEALING = 48821, + + SPELL_BLESSING_OF_LOWER_CITY_DRUID = 37878, + SPELL_BLESSING_OF_LOWER_CITY_PALADIN = 37879, + SPELL_BLESSING_OF_LOWER_CITY_PRIEST = 37880, + SPELL_BLESSING_OF_LOWER_CITY_SHAMAN = 37881, +}; + +class spell_pal_blessing_of_faith_SpellScript : public SpellScript +{ + bool Validate(SpellEntry const * spellEntry) + { + if (!sSpellStore.LookupEntry(SPELL_BLESSING_OF_LOWER_CITY_DRUID)) + return false; + if (!sSpellStore.LookupEntry(SPELL_BLESSING_OF_LOWER_CITY_PALADIN)) + return false; + if (!sSpellStore.LookupEntry(SPELL_BLESSING_OF_LOWER_CITY_PRIEST)) + return false; + if (!sSpellStore.LookupEntry(SPELL_BLESSING_OF_LOWER_CITY_SHAMAN)) + return false; + return true; + } + + void HandleDummy(SpellEffIndex effIndex) + { + if (Unit *unitTarget = GetHitUnit()) + { + uint32 spell_id = 0; + switch(unitTarget->getClass()) + { + case CLASS_DRUID: spell_id = SPELL_BLESSING_OF_LOWER_CITY_DRUID; break; + case CLASS_PALADIN: spell_id = SPELL_BLESSING_OF_LOWER_CITY_PALADIN; break; + case CLASS_PRIEST: spell_id = SPELL_BLESSING_OF_LOWER_CITY_PRIEST; break; + case CLASS_SHAMAN: spell_id = SPELL_BLESSING_OF_LOWER_CITY_SHAMAN; break; + default: return; // ignore for non-healing classes + } + + GetCaster()->CastSpell(GetCaster(), spell_id, true); + } + } + + void Register() + { + // add dummy effect spell handler to Blessing of Faith + EffectHandlers += EffectHandlerFn(spell_pal_blessing_of_faith_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +SpellScript * GetSpellScript_spell_pal_blessing_of_faith() +{ + return new spell_pal_blessing_of_faith_SpellScript(); +} + +class spell_pal_holy_shock_SpellScript : public SpellScript +{ + bool Validate(SpellEntry const * spellEntry) + { + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R1)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R1_DAMAGE)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R1_HEALING)) + return false; + + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R2)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R2_DAMAGE)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R2_HEALING)) + return false; + + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R3)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R3_DAMAGE)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R3_HEALING)) + return false; + + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R4)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R4_DAMAGE)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R4_HEALING)) + return false; + + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R5)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R5_DAMAGE)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R5_HEALING)) + return false; + + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R6)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R6_DAMAGE)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R6_HEALING)) + return false; + + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R7)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R7_DAMAGE)) + return false; + if (!sSpellStore.LookupEntry(PALADIN_SPELL_HOLY_SHOCK_R7_HEALING)) + return false; + + return true; + } + + void HandleDummy(SpellEffIndex effIndex) + { + if (Unit *unitTarget = GetHitUnit()) + { + Unit *caster = GetCaster(); + + int hurt = 0; + int heal = 0; + + switch(GetSpellInfo()->Id) + { + case PALADIN_SPELL_HOLY_SHOCK_R1: + hurt = PALADIN_SPELL_HOLY_SHOCK_R1_DAMAGE; + heal = PALADIN_SPELL_HOLY_SHOCK_R1_HEALING; + break; + case PALADIN_SPELL_HOLY_SHOCK_R2: + hurt = PALADIN_SPELL_HOLY_SHOCK_R2_DAMAGE; + heal = PALADIN_SPELL_HOLY_SHOCK_R2_HEALING; + break; + case PALADIN_SPELL_HOLY_SHOCK_R3: + hurt = PALADIN_SPELL_HOLY_SHOCK_R3_DAMAGE; + heal = PALADIN_SPELL_HOLY_SHOCK_R3_HEALING; + break; + case PALADIN_SPELL_HOLY_SHOCK_R4: + hurt = PALADIN_SPELL_HOLY_SHOCK_R4_DAMAGE; + heal = PALADIN_SPELL_HOLY_SHOCK_R4_HEALING; + break; + case PALADIN_SPELL_HOLY_SHOCK_R5: + hurt = PALADIN_SPELL_HOLY_SHOCK_R5_DAMAGE; + heal = PALADIN_SPELL_HOLY_SHOCK_R5_HEALING; + break; + case PALADIN_SPELL_HOLY_SHOCK_R6: + hurt = PALADIN_SPELL_HOLY_SHOCK_R6_DAMAGE; + heal = PALADIN_SPELL_HOLY_SHOCK_R6_HEALING; + break; + case PALADIN_SPELL_HOLY_SHOCK_R7: + hurt = PALADIN_SPELL_HOLY_SHOCK_R7_DAMAGE; + heal = PALADIN_SPELL_HOLY_SHOCK_R7_HEALING; + break; + default: + sLog.outError("spell_pal_holy_shock_SpellScript::HandleDummy: Spell %u not handled in HS",GetSpellInfo()->Id); + return; + } + + if (caster->IsFriendlyTo(unitTarget)) + caster->CastSpell(unitTarget, heal, true, 0); + else + caster->CastSpell(unitTarget, hurt, true, 0); + } + } + + void Register() + { + // add dummy effect spell handler to Holy Shock + EffectHandlers += EffectHandlerFn(spell_pal_holy_shock_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +SpellScript * GetSpellScript_spell_pal_holy_shock() +{ + return new spell_pal_holy_shock_SpellScript(); +} + +class spell_pal_judgement_of_command_SpellScript : public SpellScript +{ + void HandleDummy(SpellEffIndex effIndex) + { + if (Unit *unitTarget = GetHitUnit()) + if (SpellEntry const* spell_proto = sSpellStore.LookupEntry(GetEffectValue())) + GetCaster()->CastSpell(unitTarget, spell_proto, true, NULL); + } + + void Register() + { + // add dummy effect spell handler to Judgement of Command + EffectHandlers += EffectHandlerFn(spell_pal_judgement_of_command_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +SpellScript * GetSpellScript_spell_pal_judgement_of_command() +{ + return new spell_pal_judgement_of_command_SpellScript(); +} + void AddSC_paladin_spell_scripts() { - //Script *newscript; + Script *newscript; + + newscript = new Script; + newscript->Name = "spell_pal_blessing_of_faith"; + newscript->GetSpellScript = &GetSpellScript_spell_pal_blessing_of_faith; + newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "spell_pal_holy_shock"; + newscript->GetSpellScript = &GetSpellScript_spell_pal_holy_shock; + newscript->RegisterSelf(); - /* newscript = new Script; - newscript->Name = "spell_pal_"; - newscript->GetSpellScript = &GetSpellScript_spell_pal_; + newscript->Name = "spell_pal_judgement_of_command"; + newscript->GetSpellScript = &GetSpellScript_spell_pal_judgement_of_command; newscript->RegisterSelf(); - */ -}
\ No newline at end of file +} |