aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorModoX <moardox@gmail.com>2021-10-05 22:50:40 +0200
committerGitHub <noreply@github.com>2021-10-05 22:50:40 +0200
commit45b4910c96d4f706a02944f9777190ef9a499fd0 (patch)
treea466134d0838ce6cfe0f17d540f427da72de55fe
parent00dd4629bd6c8de4466925bb4a3d2a0e82e4f004 (diff)
Scripts/Spells: Core/Spells: Fixed Consecration damage, implemented Hammer of the Righteous, partly implemented Consecrated Ground talent (#27005)
-rw-r--r--sql/updates/world/master/2021_10_05_04_world_pala_consecration.sql11
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp95
2 files changed, 106 insertions, 0 deletions
diff --git a/sql/updates/world/master/2021_10_05_04_world_pala_consecration.sql b/sql/updates/world/master/2021_10_05_04_world_pala_consecration.sql
new file mode 100644
index 00000000000..4623f92c283
--- /dev/null
+++ b/sql/updates/world/master/2021_10_05_04_world_pala_consecration.sql
@@ -0,0 +1,11 @@
+--
+UPDATE `areatrigger_template` SET `ScriptName`='areatrigger_pal_consecration', `VerifiedBuild`=40120 WHERE `Id`=9228;
+
+DELETE FROM `areatrigger_create_properties` WHERE `Id`=4488;
+INSERT INTO `areatrigger_create_properties` (`Id`,`AreaTriggerId`,`MoveCurveId`,`ScaleCurveId`,`MorphCurveId`,`FacingCurveId`,`AnimId`,`AnimKitId`,`DecalPropertiesId`,`TimeToTarget`,`TimeToTargetScale`,`Shape`,`ShapeData0`,`ShapeData1`,`ShapeData2`,`ShapeData3`,`ShapeData4`,`ShapeData5`,`VerifiedBuild`) VALUES
+(4488,9228,0,0,0,0,0,0,0,0,12000,0,8,8,0,0,0,0,40120); -- SpellId : 26573
+
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pal_consecration','spell_pal_hammer_of_the_righteous');
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(26573,'spell_pal_consecration'),
+(53595,'spell_pal_hammer_of_the_righteous');
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp
index fbcbe3d0db5..d6e7c02f53a 100644
--- a/src/server/scripts/Spells/spell_paladin.cpp
+++ b/src/server/scripts/Spells/spell_paladin.cpp
@@ -22,6 +22,8 @@
*/
#include "ScriptMgr.h"
+#include "AreaTrigger.h"
+#include "AreaTriggerAI.h"
#include "DB2Stores.h"
#include "Group.h"
#include "Player.h"
@@ -44,6 +46,11 @@ enum PaladinSpells
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN = 37881,
SPELL_PALADIN_BLINDING_LIGHT_EFFECT = 105421,
SPELL_PALADIN_CONCENTRACTION_AURA = 19746,
+ SPELL_PALADIN_CONSECRATED_GROUND_PASSIVE = 204054,
+ SPELL_PALADIN_CONSECRATED_GROUND_SLOW = 204242,
+ SPELL_PALADIN_CONSECRATION = 26573,
+ SPELL_PALADIN_CONSECRATION_DAMAGE = 81297,
+ SPELL_PALADIN_CONSECRATION_PROTECTION_AURA = 188370,
SPELL_PALADIN_DIVINE_PURPOSE_PROC = 90174,
SPELL_PALADIN_DIVINE_STEED_HUMAN = 221883,
SPELL_PALADIN_DIVINE_STEED_DWARF = 276111,
@@ -62,6 +69,7 @@ enum PaladinSpells
SPELL_PALADIN_FORBEARANCE = 25771,
SPELL_PALADIN_GUARDIAN_OF_ANCIENT_KINGS = 86659,
SPELL_PALADIN_HAMMER_OF_JUSTICE = 853,
+ SPELL_PALADIN_HAMMER_OF_THE_RIGHTEOUS_AOE = 88263,
SPELL_PALADIN_HAND_OF_SACRIFICE = 6940,
SPELL_PALADIN_HOLY_MENDING = 64891,
SPELL_PALADIN_HOLY_POWER_ARMOR = 28790,
@@ -281,6 +289,64 @@ class spell_pal_blinding_light : public SpellScript
}
};
+// 26573 - Consecration
+class spell_pal_consecration : public AuraScript
+{
+ PrepareAuraScript(spell_pal_consecration);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo
+ ({
+ SPELL_PALADIN_CONSECRATION_DAMAGE,
+ // validate for areatrigger_pal_consecration
+ SPELL_PALADIN_CONSECRATION_PROTECTION_AURA,
+ SPELL_PALADIN_CONSECRATED_GROUND_PASSIVE,
+ SPELL_PALADIN_CONSECRATED_GROUND_SLOW
+ });
+ }
+
+ void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
+ {
+ if (AreaTrigger* at = GetTarget()->GetAreaTrigger(SPELL_PALADIN_CONSECRATION))
+ GetTarget()->CastSpell(at->GetPosition(), SPELL_PALADIN_CONSECRATION_DAMAGE);
+ }
+
+ void Register() override
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_pal_consecration::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
+ }
+};
+
+// 26573 - Consecration
+// 9228 - AreaTriggerId
+struct areatrigger_pal_consecration : AreaTriggerAI
+{
+ areatrigger_pal_consecration(AreaTrigger* areatrigger) : AreaTriggerAI(areatrigger) { }
+
+ void OnUnitEnter(Unit* unit) override
+ {
+ if (Unit* caster = at->GetCaster())
+ {
+ // 243597 is also being cast as protection, but CreateObject is not sent, either serverside areatrigger for this aura or unused - also no visual is seen
+ if (unit == caster && caster->IsPlayer() && caster->ToPlayer()->GetPrimarySpecialization() == TALENT_SPEC_PALADIN_PROTECTION)
+ caster->CastSpell(caster, SPELL_PALADIN_CONSECRATION_PROTECTION_AURA);
+
+ if (caster->IsValidAttackTarget(unit))
+ if (caster->HasAura(SPELL_PALADIN_CONSECRATED_GROUND_PASSIVE))
+ caster->CastSpell(unit, SPELL_PALADIN_CONSECRATED_GROUND_SLOW);
+ }
+ }
+
+ void OnUnitExit(Unit* unit) override
+ {
+ if (at->GetCasterGuid() == unit->GetGUID())
+ unit->RemoveAurasDueToSpell(SPELL_PALADIN_CONSECRATION_PROTECTION_AURA, at->GetCasterGuid());
+
+ unit->RemoveAurasDueToSpell(SPELL_PALADIN_CONSECRATED_GROUND_SLOW, at->GetCasterGuid());
+ }
+};
+
// 196926 - Crusader Might
class spell_pal_crusader_might : public AuraScript
{
@@ -522,6 +588,32 @@ class spell_pal_glyph_of_holy_light : public SpellScript
}
};
+// 53595 - Hammer of the Righteous
+struct spell_pal_hammer_of_the_righteous : public SpellScript
+{
+ PrepareSpellScript(spell_pal_hammer_of_the_righteous);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo
+ ({
+ SPELL_PALADIN_CONSECRATION_PROTECTION_AURA,
+ SPELL_PALADIN_HAMMER_OF_THE_RIGHTEOUS_AOE
+ });
+ }
+
+ void HandleAoEHit(SpellEffIndex /*effIndex*/)
+ {
+ if (GetCaster()->HasAura(SPELL_PALADIN_CONSECRATION_PROTECTION_AURA))
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_PALADIN_HAMMER_OF_THE_RIGHTEOUS_AOE);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_pal_hammer_of_the_righteous::HandleAoEHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ }
+};
+
// 6940 - Hand of Sacrifice
class spell_pal_hand_of_sacrifice : public SpellScriptLoader
{
@@ -1099,6 +1191,8 @@ void AddSC_paladin_spell_scripts()
RegisterSpellScript(spell_pal_blessing_of_protection);
RegisterSpellScript(spell_pal_blinding_light);
RegisterAuraScript(spell_pal_crusader_might);
+ RegisterAuraScript(spell_pal_consecration);
+ RegisterAreaTriggerAI(areatrigger_pal_consecration);
RegisterSpellScript(spell_pal_divine_shield);
RegisterSpellScript(spell_pal_divine_steed);
RegisterSpellScript(spell_pal_divine_storm);
@@ -1106,6 +1200,7 @@ void AddSC_paladin_spell_scripts()
RegisterSpellScript(spell_pal_glyph_of_holy_light);
new spell_pal_grand_crusader();
new spell_pal_hand_of_sacrifice();
+ RegisterSpellScript(spell_pal_hammer_of_the_righteous);
RegisterSpellScript(spell_pal_moment_of_glory);
RegisterSpellScript(spell_pal_judgement);
RegisterSpellScript(spell_pal_holy_shock);