aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXanvial <xanvial@gmail.com>2013-01-23 05:26:51 +0700
committerXanvial <xanvial@gmail.com>2013-01-23 05:26:51 +0700
commite360f8747002e858c0a85945ff1b1c1e3cba1fc3 (patch)
tree9998139ae827c5ba11718aac5e9b7e5d7e564085
parent08dfdf4a9da5514ad00cf353ba0609d92d745a48 (diff)
Scripts/Paladin: Templar's Verdict
-rw-r--r--sql/updates/world/2013_01_22_01_world_spell_script_names_434.sql4
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp73
2 files changed, 76 insertions, 1 deletions
diff --git a/sql/updates/world/2013_01_22_01_world_spell_script_names_434.sql b/sql/updates/world/2013_01_22_01_world_spell_script_names_434.sql
new file mode 100644
index 00000000000..cc74d504e94
--- /dev/null
+++ b/sql/updates/world/2013_01_22_01_world_spell_script_names_434.sql
@@ -0,0 +1,4 @@
+-- 85256 - Templar's Verdict
+DELETE FROM `spell_script_names` WHERE `spell_id`=85256;
+INSERT INTO `spell_script_names` VALUES
+(85256,'spell_pal_templar_s_verdict');
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp
index 47592630a11..7625ed548ac 100644
--- a/src/server/scripts/Spells/spell_paladin.cpp
+++ b/src/server/scripts/Spells/spell_paladin.cpp
@@ -50,7 +50,9 @@ enum PaladinSpells
SPELL_PALADIN_IMMUNE_SHIELD_MARKER = 61988,
SPELL_PALADIN_HAND_OF_SACRIFICE = 6940,
- SPELL_PALADIN_DIVINE_SACRIFICE = 64205
+ SPELL_PALADIN_DIVINE_SACRIFICE = 64205,
+
+ SPELL_PALADIN_DIVINE_PURPOSE_PROC = 90174
};
// 31850 - Ardent Defender
@@ -719,6 +721,74 @@ class spell_pal_sacred_shield : public SpellScriptLoader
}
};
+// 85256 - Templar's Verdict
+/// Updated 4.3.4
+class spell_pal_templar_s_verdict : public SpellScriptLoader
+{
+ public:
+ spell_pal_templar_s_verdict() : SpellScriptLoader("spell_pal_templar_s_verdict") { }
+
+ class spell_pal_templar_s_verdict_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_pal_templar_s_verdict_SpellScript);
+
+ bool Validate (SpellInfo const* /*spellEntry*/)
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_PURPOSE_PROC))
+ return false;
+
+ return true;
+ }
+
+ bool Load()
+ {
+ if (GetCaster()->GetTypeId() != TYPEID_PLAYER)
+ return false;
+
+ if (GetCaster()->ToPlayer()->getClass() != CLASS_PALADIN)
+ return false;
+
+ return true;
+ }
+
+ void ChangeDamage(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ int32 damage = GetHitDamage();
+
+ if (caster->HasAura(SPELL_PALADIN_DIVINE_PURPOSE_PROC))
+ damage *= 7.5; // 7.5*30% = 225%
+ else
+ {
+ switch (caster->GetPower(POWER_HOLY_POWER))
+ {
+ case 0: // 1 Holy Power
+ damage = damage;
+ break;
+ case 1: // 2 Holy Power
+ damage *= 3; // 3*30 = 90%
+ break;
+ case 2: // 3 Holy Power
+ damage *= 7.5; // 7.5*30% = 225%
+ break;
+ }
+ }
+
+ SetHitDamage(damage);
+ }
+
+ void Register()
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_pal_templar_s_verdict_SpellScript::ChangeDamage, EFFECT_0, SPELL_EFFECT_WEAPON_PERCENT_DAMAGE);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_pal_templar_s_verdict_SpellScript();
+ }
+};
+
void AddSC_paladin_spell_scripts()
{
//new spell_pal_ardent_defender();
@@ -733,4 +803,5 @@ void AddSC_paladin_spell_scripts()
new spell_pal_lay_on_hands();
new spell_pal_righteous_defense();
new spell_pal_sacred_shield();
+ new spell_pal_templar_s_verdict();
}