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 | |
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
-rw-r--r-- | sql/scripts/world_scripts_full.sql | 32 | ||||
-rw-r--r-- | sql/updates/9122_world_spell_script_names.sql | 7 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 62 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_paladin.cpp | 237 |
4 files changed, 256 insertions, 82 deletions
diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index be1e89608a7..bcadf247174 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -1647,18 +1647,21 @@ update creature_template set AIName='TurretAI',scriptname='' where entry=33139; update creature_template set ScriptName='boss_kologarn' where entry=32930; update creature_template set scriptname="boss_flame_leviathan_safety_container" where entry=33218; -DELETE FROM spell_script_names WHERE spell_id=11958 AND ScriptName='spell_mage_cold_snap'; -DELETE FROM spell_script_names WHERE spell_id=32826 AND ScriptName='spell_mage_polymorph_visual'; -DELETE FROM spell_script_names WHERE spell_id=31687 AND ScriptName='spell_mage_summon_water_elemental'; -DELETE FROM spell_script_names WHERE spell_id=-47540 AND ScriptName='spell_pri_penance'; -DELETE FROM spell_script_names WHERE spell_id=31231 AND ScriptName='spell_rog_cheat_death'; -DELETE FROM spell_script_names WHERE spell_id=51662 AND ScriptName='spell_rog_hunger_for_blood'; -DELETE FROM spell_script_names WHERE spell_id=14185 AND ScriptName='spell_rog_preparation'; -DELETE FROM spell_script_names WHERE spell_id=5938 AND ScriptName='spell_rog_shiv'; -DELETE FROM spell_script_names WHERE spell_id=53271 AND ScriptName='spell_hun_masters_call'; -DELETE FROM spell_script_names WHERE spell_id=53478 AND ScriptName='spell_hun_last_stand_pet'; -DELETE FROM spell_script_names WHERE spell_id=23989 AND ScriptName='spell_hun_readiness'; -INSERT INTO spell_script_names (spell_id, ScriptName) VALUES +DELETE FROM `spell_script_names` WHERE `spell_id`=11958 AND `ScriptName`='spell_mage_cold_snap'; +DELETE FROM `spell_script_names` WHERE `spell_id`=32826 AND `ScriptName`='spell_mage_polymorph_visual'; +DELETE FROM `spell_script_names` WHERE `spell_id`=31687 AND `ScriptName`='spell_mage_summon_water_elemental'; +DELETE FROM `spell_script_names` WHERE `spell_id`=-47540 AND `ScriptName`='spell_pri_penance'; +DELETE FROM `spell_script_names` WHERE `spell_id`=31231 AND `ScriptName`='spell_rog_cheat_death'; +DELETE FROM `spell_script_names` WHERE `spell_id`=51662 AND `ScriptName`='spell_rog_hunger_for_blood'; +DELETE FROM `spell_script_names` WHERE `spell_id`=14185 AND `ScriptName`='spell_rog_preparation'; +DELETE FROM `spell_script_names` WHERE `spell_id`=5938 AND `ScriptName`='spell_rog_shiv'; +DELETE FROM `spell_script_names` WHERE `spell_id`=53271 AND `ScriptName`='spell_hun_masters_call'; +DELETE FROM `spell_script_names` WHERE `spell_id`=53478 AND `ScriptName`='spell_hun_last_stand_pet'; +DELETE FROM `spell_script_names` WHERE `spell_id`=23989 AND `ScriptName`='spell_hun_readiness'; +DELETE FROM `spell_script_names` WHERE `spell_id`=37877 AND `ScriptName`='spell_pal_blessing_of_faith'; +DELETE FROM `spell_script_names` WHERE `spell_id`=-20473 AND `ScriptName`='spell_pal_holy_shock'; +DELETE FROM `spell_script_names` WHERE `spell_id`=20425 AND `ScriptName`='spell_pal_judgement_of_command'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (11958,'spell_mage_cold_snap'), (32826,'spell_mage_polymorph_visual'), (31687,'spell_mage_summon_water_elemental'), @@ -1669,4 +1672,7 @@ INSERT INTO spell_script_names (spell_id, ScriptName) VALUES (5938,'spell_rog_shiv'), (53271,'spell_hun_masters_call'), (53478,'spell_hun_last_stand_pet'), -(23989,'spell_hun_readiness'); +(23989,'spell_hun_readiness'), +(37877,'spell_pal_blessing_of_faith'), +(-20473,'spell_pal_holy_shock'), +(20425,'spell_pal_judgement_of_command'); diff --git a/sql/updates/9122_world_spell_script_names.sql b/sql/updates/9122_world_spell_script_names.sql new file mode 100644 index 00000000000..068b1c34815 --- /dev/null +++ b/sql/updates/9122_world_spell_script_names.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_script_names` WHERE `spell_id`=37877 AND `ScriptName`='spell_pal_blessing_of_faith'; +DELETE FROM `spell_script_names` WHERE `spell_id`=-20473 AND `ScriptName`='spell_pal_holy_shock'; +DELETE FROM `spell_script_names` WHERE `spell_id`=20425 AND `ScriptName`='spell_pal_judgement_of_command'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(37877,'spell_pal_blessing_of_faith'), +(-20473,'spell_pal_holy_shock'), +(20425,'spell_pal_judgement_of_command'); 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 +} |