aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp62
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp237
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
+}