aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2022-06-09 20:43:13 +0300
committerShauren <shauren.trinity@gmail.com>2022-06-10 19:28:04 +0200
commitfcc08ffb223602f19610bd87d25d32bdf34ca589 (patch)
tree1d2169547d7bc76ef9a2a275342eb82dbf2a2471 /src
parent2e0afa7bca3b6de10eacbcc082193d2c67050f88 (diff)
Scripts/Quest: Rework 'The Perfect Dissemblance' (12260) & 'A Fall From Grace' (12274) & Bombard the Ballistae (12232) & Without a Prayer (12254) (#28013)
Closes #26750 (cherry picked from commit ee9e4ac33e354f14f18efbbad8bf52e2e33e3003)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp
index a19fb4ac088..00645b16f8b 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -746,6 +746,139 @@ class spell_dragonblight_high_executor_branding_iron : public SpellScript
}
};
+/*######
+## Quest 12260: The Perfect Dissemblance
+######*/
+
+enum ThePerfectDissemblance
+{
+ SPELL_BANSHEES_MAGIC_MIRROR = 48648
+};
+
+// 48692 - The Perfect Dissemblance: Quest Completion Script
+class spell_dragonblight_cancel_banshees_magic_mirror : public SpellScript
+{
+ PrepareSpellScript(spell_dragonblight_cancel_banshees_magic_mirror);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_BANSHEES_MAGIC_MIRROR });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->RemoveAurasDueToSpell(SPELL_BANSHEES_MAGIC_MIRROR);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_dragonblight_cancel_banshees_magic_mirror::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 12274: A Fall From Grace
+######*/
+
+enum AFallFromGrace
+{
+ SPELL_PRIEST_IMAGE_FEMALE = 48761,
+ SPELL_PRIEST_IMAGE_MALE = 48763
+};
+
+// 48762 - A Fall from Grace: Scarlet Raven Priest Image - Master
+class spell_dragonblight_scarlet_raven_priest_image_master : public SpellScript
+{
+ PrepareSpellScript(spell_dragonblight_scarlet_raven_priest_image_master);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_IMAGE_FEMALE, SPELL_PRIEST_IMAGE_MALE });
+ }
+
+ void HandleAfterHit()
+ {
+ if (Player* target = GetHitUnit()->ToPlayer())
+ target->CastSpell(target, target->GetNativeGender() == GENDER_FEMALE ? SPELL_PRIEST_IMAGE_FEMALE : SPELL_PRIEST_IMAGE_MALE);
+ }
+
+ void Register() override
+ {
+ AfterHit += SpellHitFn(spell_dragonblight_scarlet_raven_priest_image_master::HandleAfterHit);
+ }
+};
+
+// 48769 - A Fall from Grace: Quest Completion Script
+class spell_dragonblight_cancel_scarlet_raven_priest_image : public SpellScript
+{
+ PrepareSpellScript(spell_dragonblight_cancel_scarlet_raven_priest_image);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_IMAGE_FEMALE, SPELL_PRIEST_IMAGE_MALE });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->RemoveAurasDueToSpell(SPELL_PRIEST_IMAGE_FEMALE);
+ GetCaster()->RemoveAurasDueToSpell(SPELL_PRIEST_IMAGE_MALE);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_dragonblight_cancel_scarlet_raven_priest_image::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 12232: Bombard the Ballistae
+######*/
+
+enum BombardTheBallistae
+{
+ SPELL_BALLISTA_BOW = 48351,
+ SPELL_BALLISTA_FRAME = 48352,
+ SPELL_BALLISTA_MISSILE = 48353,
+ SPELL_BALLISTA_WHEEL = 48354,
+ SPELL_BALLISTA_KNOCKBACK = 52687
+};
+
+// 48347 - Bombard the Ballistae: FX Master
+class spell_dragonblight_bombard_the_ballistae_fx_master : public SpellScript
+{
+ PrepareSpellScript(spell_dragonblight_bombard_the_ballistae_fx_master);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_BALLISTA_BOW,
+ SPELL_BALLISTA_FRAME,
+ SPELL_BALLISTA_MISSILE,
+ SPELL_BALLISTA_WHEEL,
+ SPELL_BALLISTA_KNOCKBACK
+ });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ caster->CastSpell(caster, SPELL_BALLISTA_BOW);
+ caster->CastSpell(caster, SPELL_BALLISTA_FRAME);
+ caster->CastSpell(caster, SPELL_BALLISTA_MISSILE);
+ caster->CastSpell(caster, SPELL_BALLISTA_WHEEL);
+ caster->CastSpell(caster, SPELL_BALLISTA_WHEEL);
+ caster->CastSpell(caster, SPELL_BALLISTA_WHEEL);
+ caster->CastSpell(caster, SPELL_BALLISTA_WHEEL);
+ caster->CastSpell(caster, SPELL_BALLISTA_KNOCKBACK);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_dragonblight_bombard_the_ballistae_fx_master::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_dragonblight()
{
RegisterCreatureAI(npc_commander_eligor_dawnbringer);
@@ -757,4 +890,8 @@ void AddSC_dragonblight()
RegisterSpellScript(spell_dragonblight_moti_hourglass_cast_see_invis_on_master);
RegisterSpellScript(spell_dragonblight_call_out_injured_soldier);
RegisterSpellScript(spell_dragonblight_high_executor_branding_iron);
+ RegisterSpellScript(spell_dragonblight_cancel_banshees_magic_mirror);
+ RegisterSpellScript(spell_dragonblight_scarlet_raven_priest_image_master);
+ RegisterSpellScript(spell_dragonblight_cancel_scarlet_raven_priest_image);
+ RegisterSpellScript(spell_dragonblight_bombard_the_ballistae_fx_master);
}