diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp | 111 | ||||
| -rw-r--r-- | src/server/scripts/Kalimdor/zone_durotar.cpp | 45 | ||||
| -rw-r--r-- | src/server/scripts/Kalimdor/zone_orgrimmar.cpp | 28 | ||||
| -rw-r--r-- | src/server/scripts/Pandaria/zone_the_jade_forest.cpp | 129 |
4 files changed, 240 insertions, 73 deletions
diff --git a/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp b/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp index 902fb016da4..bacfef7e2c5 100644 --- a/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp +++ b/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp @@ -32,13 +32,18 @@ #include "SpellScript.h" #include "TemporarySummon.h" -namespace StormwindCity +namespace Scripts::EasternKingdoms::StormwindCity { - namespace Spells - { - static constexpr uint32 MOPAllianceIntroMoviePlay = 130805; - static constexpr uint32 FadeToBlack = 130411; - } +namespace Spells +{ + // The King's Command + static constexpr uint32 MOPAllianceIntroMoviePlay = 130805; + static constexpr uint32 FadeToBlack = 130411; + + // The Mission + static constexpr uint32 TeleportPrep = 130832; + static constexpr uint32 TeleportTimer = 132032; + static constexpr uint32 TheMissionTeleportPlayer = 130321; } enum TidesOfWarData @@ -511,15 +516,13 @@ class spell_the_kings_command_movie_aura : public SpellScript bool Validate(SpellInfo const* /*spellInfo*/) override { return ValidateSpellInfo({ - StormwindCity::Spells::FadeToBlack + Spells::FadeToBlack }); } void HandleHitTarget(SpellEffIndex /*effIndex*/) const { - Unit* hitUnit = GetHitUnit(); - - hitUnit->CastSpell(hitUnit, StormwindCity::Spells::FadeToBlack, CastSpellExtraArgsInit{ + GetHitUnit()->CastSpell(nullptr, Spells::FadeToBlack, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .OriginalCastId = GetSpell()->m_castId }); @@ -531,12 +534,87 @@ class spell_the_kings_command_movie_aura : public SpellScript } }; +// 130804 - The King's Command Movie Aura class spell_the_kings_command_movie_aura_aura : public AuraScript { bool Validate(SpellInfo const* /*spellInfo*/) override { return ValidateSpellInfo({ - StormwindCity::Spells::MOPAllianceIntroMoviePlay + Spells::MOPAllianceIntroMoviePlay + }); + } + + void HandleAfterEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const + { + GetTarget()->CastSpell(nullptr, Spells::MOPAllianceIntroMoviePlay, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR + }); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_the_kings_command_movie_aura_aura::HandleAfterEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 140885 - Admiral Rogers Script Effect +class spell_admiral_rogers_script_effect : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ + Spells::TeleportPrep + }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + GetHitUnit()->CastSpell(nullptr, Spells::TeleportPrep, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .OriginalCastId = GetSpell()->m_castId + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_admiral_rogers_script_effect::HandleHitTarget, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +// 130832 - Teleport Prep +class spell_teleport_prep_alliance : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ + Spells::TeleportTimer + }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + Unit* hitUnit = GetHitUnit(); + + hitUnit->CancelMountAura(); + hitUnit->CastSpell(nullptr, Spells::TeleportTimer, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .OriginalCastId = GetSpell()->m_castId + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_teleport_prep_alliance::HandleHitTarget, EFFECT_0, SPELL_EFFECT_APPLY_AURA); + } +}; + +// 132032 - Teleport Timer +class spell_teleport_timer_alliance : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ + Spells::TheMissionTeleportPlayer }); } @@ -544,19 +622,23 @@ class spell_the_kings_command_movie_aura_aura : public AuraScript { Unit* target = GetTarget(); - target->CastSpell(target, StormwindCity::Spells::MOPAllianceIntroMoviePlay, CastSpellExtraArgsInit{ + target->CancelTravelShapeshiftForm(); + target->CastSpell(nullptr, Spells::TheMissionTeleportPlayer, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR }); } void Register() override { - AfterEffectRemove += AuraEffectRemoveFn(spell_the_kings_command_movie_aura_aura::HandleAfterEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_teleport_timer_alliance::HandleAfterEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } }; +} void AddSC_stormwind_city() { + using namespace Scripts::EasternKingdoms::StormwindCity; + // Creature RegisterCreatureAI(npc_jaina_proudmoore_tides_of_war); RegisterCreatureAI(npc_anduin_wrynn_nation_of_kultiras); @@ -577,4 +659,7 @@ void AddSC_stormwind_city() RegisterSpellScript(spell_despawn_sailor_memory); RegisterSpellScript(spell_kultiras_skip_intro); RegisterSpellAndAuraScriptPair(spell_the_kings_command_movie_aura, spell_the_kings_command_movie_aura_aura); + RegisterSpellScript(spell_admiral_rogers_script_effect); + RegisterSpellScript(spell_teleport_prep_alliance); + RegisterSpellScript(spell_teleport_timer_alliance); } diff --git a/src/server/scripts/Kalimdor/zone_durotar.cpp b/src/server/scripts/Kalimdor/zone_durotar.cpp index 9e69f784319..9e979057641 100644 --- a/src/server/scripts/Kalimdor/zone_durotar.cpp +++ b/src/server/scripts/Kalimdor/zone_durotar.cpp @@ -29,14 +29,16 @@ #include "PassiveAI.h" #include "ObjectAccessor.h" -namespace Durotar +namespace Scripts::Kalimdor::Durotar { - namespace Spells - { - static constexpr uint32 PhasePlayer = 130750; - static constexpr uint32 TeleportTimer = 132034; - static constexpr uint32 TeleportPlayerToCrashSite = 102930; - } +namespace Spells +{ + // All Aboard! + static constexpr uint32 PhasePlayer = 130750; + + // Into the Mists + static constexpr uint32 TeleportTimer = 132034; + static constexpr uint32 TeleportPlayerToCrashSite = 102930; } /*###### @@ -1231,7 +1233,7 @@ public: bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override { - player->CastSpell(player, Durotar::Spells::PhasePlayer, CastSpellExtraArgsInit{ + player->CastSpell(nullptr, Spells::PhasePlayer, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, }); return true; @@ -1239,18 +1241,18 @@ public: bool OnExit(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override { - player->RemoveAurasDueToSpell(Durotar::Spells::PhasePlayer); + player->RemoveAurasDueToSpell(Spells::PhasePlayer); return true; } }; // 130810 - Teleport Prep -class spell_teleport_prep : public SpellScript +class spell_teleport_prep_horde : public SpellScript { bool Validate(SpellInfo const* /*spellInfo*/) override { return ValidateSpellInfo({ - Durotar::Spells::TeleportTimer + Spells::TeleportTimer }); } @@ -1258,7 +1260,8 @@ class spell_teleport_prep : public SpellScript { Unit* hitUnit = GetHitUnit(); - hitUnit->CastSpell(hitUnit, Durotar::Spells::TeleportTimer, CastSpellExtraArgsInit{ + hitUnit->CancelMountAura(); + hitUnit->CastSpell(nullptr, Spells::TeleportTimer, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .OriginalCastId = GetSpell()->m_castId }); @@ -1266,17 +1269,17 @@ class spell_teleport_prep : public SpellScript void Register() override { - OnEffectHitTarget += SpellEffectFn(spell_teleport_prep::HandleHitTarget, EFFECT_0, SPELL_EFFECT_APPLY_AURA); + OnEffectHitTarget += SpellEffectFn(spell_teleport_prep_horde::HandleHitTarget, EFFECT_0, SPELL_EFFECT_APPLY_AURA); } }; // 132034 - Teleport Timer -class spell_teleport_timer : public AuraScript +class spell_teleport_timer_horde : public AuraScript { bool Validate(SpellInfo const* /*spellInfo*/) override { return ValidateSpellInfo({ - Durotar::Spells::TeleportPlayerToCrashSite + Spells::TeleportPlayerToCrashSite }); } @@ -1284,19 +1287,23 @@ class spell_teleport_timer : public AuraScript { Unit* target = GetTarget(); - target->CastSpell(target, Durotar::Spells::TeleportPlayerToCrashSite, CastSpellExtraArgsInit{ + target->CancelTravelShapeshiftForm(); + target->CastSpell(nullptr, Spells::TeleportPlayerToCrashSite, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR }); } void Register() override { - AfterEffectRemove += AuraEffectRemoveFn(spell_teleport_timer::HandleAfterEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_teleport_timer_horde::HandleAfterEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } }; +} void AddSC_durotar() { + using namespace Scripts::Kalimdor::Durotar; + new npc_lazy_peon(); RegisterSpellScript(spell_voodoo); RegisterCreatureAI(npc_mithaka); @@ -1340,6 +1347,6 @@ void AddSC_durotar() new at_hellscreams_fist_gunship(); // Spells - RegisterSpellScript(spell_teleport_prep); - RegisterSpellScript(spell_teleport_timer); + RegisterSpellScript(spell_teleport_prep_horde); + RegisterSpellScript(spell_teleport_timer_horde); } diff --git a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp index 83c2e6711b6..34667e18522 100644 --- a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp +++ b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp @@ -22,13 +22,13 @@ #include "SpellScript.h" #include "Unit.h" -namespace Orgrimmar +namespace Scripts::Kalimdor::Orgrimmar { - namespace Spells - { - static constexpr uint32 MOPHordeIntroMoviePlay = 130409; - static constexpr uint32 FadeToBlack = 130411; - } +namespace Spells +{ + // The Art of War + static constexpr uint32 MOPHordeIntroMoviePlay = 130409; + static constexpr uint32 FadeToBlack = 130411; } // 130412 - Art of War Movie Aura @@ -37,15 +37,13 @@ class spell_art_of_war_movie_aura : public SpellScript bool Validate(SpellInfo const* /*spellInfo*/) override { return ValidateSpellInfo({ - Orgrimmar::Spells::FadeToBlack + Spells::FadeToBlack }); } void HandleHitTarget(SpellEffIndex /*effIndex*/) const { - Unit* hitUnit = GetHitUnit(); - - hitUnit->CastSpell(hitUnit, Orgrimmar::Spells::FadeToBlack, CastSpellExtraArgsInit{ + GetHitUnit()->CastSpell(nullptr, Spells::FadeToBlack, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .OriginalCastId = GetSpell()->m_castId }); @@ -57,20 +55,19 @@ class spell_art_of_war_movie_aura : public SpellScript } }; +// 130412 - Art of War Movie Aura class spell_art_of_war_movie_aura_aura : public AuraScript { bool Validate(SpellInfo const* /*spellInfo*/) override { return ValidateSpellInfo({ - Orgrimmar::Spells::MOPHordeIntroMoviePlay + Spells::MOPHordeIntroMoviePlay }); } void HandleAfterEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const { - Unit* target = GetTarget(); - - target->CastSpell(target, Orgrimmar::Spells::MOPHordeIntroMoviePlay, CastSpellExtraArgsInit{ + GetTarget()->CastSpell(nullptr, Spells::MOPHordeIntroMoviePlay, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR }); } @@ -80,9 +77,12 @@ class spell_art_of_war_movie_aura_aura : public AuraScript AfterEffectRemove += AuraEffectRemoveFn(spell_art_of_war_movie_aura_aura::HandleAfterEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } }; +} void AddSC_orgrimmar() { + using namespace Scripts::Kalimdor::Orgrimmar; + // Spells RegisterSpellAndAuraScriptPair(spell_art_of_war_movie_aura, spell_art_of_war_movie_aura_aura); } diff --git a/src/server/scripts/Pandaria/zone_the_jade_forest.cpp b/src/server/scripts/Pandaria/zone_the_jade_forest.cpp index 834c27926ab..593933bac3b 100644 --- a/src/server/scripts/Pandaria/zone_the_jade_forest.cpp +++ b/src/server/scripts/Pandaria/zone_the_jade_forest.cpp @@ -21,16 +21,23 @@ #include "SpellScript.h" #include "Unit.h" -namespace TheJadeForest +namespace Scripts::Pandaria::TheJadeForest { - namespace Spells - { - static constexpr uint32 CancelBlackout = 130812; - static constexpr uint32 TeleportPrep = 130810; - static constexpr uint32 TeleportPlayerToCrashSite = 102930; - static constexpr uint32 CutToBlack = 122343; - static constexpr uint32 WakeUpDead = 122344; - } +namespace Spells +{ + // Into the Mists & The Mission + static constexpr uint32 CancelBlackout = 130812; + static constexpr uint32 CutToBlack = 122343; + + // Into the Mists + static constexpr uint32 TeleportPrepHorde = 130810; + static constexpr uint32 TeleportPlayerToCrashSite = 102930; + static constexpr uint32 WakeUpDead = 122344; + + // The Mission + static constexpr uint32 TeleportPrepAlliance = 130832; + static constexpr uint32 TheMissionTeleportPlayer = 130321; + static constexpr uint32 TheMissionSceneJF = 131057; } // 121545 - Into the Mists Scene - JF @@ -39,7 +46,7 @@ class spell_into_the_mists_scene_jf : public SpellScript bool Validate(SpellInfo const* /*spellInfo*/) override { return ValidateSpellInfo({ - TheJadeForest::Spells::CancelBlackout + Spells::CancelBlackout }); } @@ -47,7 +54,8 @@ class spell_into_the_mists_scene_jf : public SpellScript { Unit* hitUnit = GetHitUnit(); - hitUnit->CastSpell(hitUnit, TheJadeForest::Spells::CancelBlackout, CastSpellExtraArgsInit{ + hitUnit->CancelMountAura(); + hitUnit->CastSpell(nullptr, Spells::CancelBlackout, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .OriginalCastId = GetSpell()->m_castId }); @@ -59,36 +67,44 @@ class spell_into_the_mists_scene_jf : public SpellScript } }; -// 130812 - Cancel Blackout -class spell_cancel_blackout : public AuraScript +// 130723 - Into the Mists Scene End +class spell_into_the_mists_scene_end : public SpellScript { bool Validate(SpellInfo const* /*spellInfo*/) override { return ValidateSpellInfo({ - TheJadeForest::Spells::TeleportPrep + Spells::TeleportPlayerToCrashSite, + Spells::CutToBlack, + Spells::WakeUpDead }); } - void HandleAfterEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const + void HandleHitTarget(SpellEffIndex /*effIndex*/) const { - GetTarget()->RemoveAurasDueToSpell(TheJadeForest::Spells::TeleportPrep); + Unit* hitUnit = GetHitUnit(); + + CastSpellExtraArgs const& castSpellExtraArgs = CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .OriginalCastId = GetSpell()->m_castId + }; + hitUnit->CastSpell(nullptr, Spells::TeleportPlayerToCrashSite, castSpellExtraArgs); + hitUnit->CastSpell(nullptr, Spells::CutToBlack, castSpellExtraArgs); + hitUnit->CastSpell(nullptr, Spells::WakeUpDead, castSpellExtraArgs); } void Register() override { - AfterEffectRemove += AuraEffectRemoveFn(spell_cancel_blackout::HandleAfterEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + OnEffectHitTarget += SpellEffectFn(spell_into_the_mists_scene_end::HandleHitTarget, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); } }; -// 130723 - Into the Mists Scene End -class spell_into_the_mists_scene_end : public SpellScript +// 131057 - The Mission Scene - JF +class spell_the_mission_scene_jf : public SpellScript { bool Validate(SpellInfo const* /*spellInfo*/) override { return ValidateSpellInfo({ - TheJadeForest::Spells::TeleportPlayerToCrashSite, - TheJadeForest::Spells::CutToBlack, - TheJadeForest::Spells::WakeUpDead + Spells::CancelBlackout }); } @@ -96,25 +112,84 @@ class spell_into_the_mists_scene_end : public SpellScript { Unit* hitUnit = GetHitUnit(); + hitUnit->CancelMountAura(); + hitUnit->CastSpell(nullptr, Spells::CancelBlackout, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .OriginalCastId = GetSpell()->m_castId + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_the_mission_scene_jf::HandleHitTarget, EFFECT_3, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +// 131059 - The Mission Scene End +class spell_the_mission_scene_end : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ + Spells::TheMissionSceneJF, + Spells::TheMissionTeleportPlayer, + Spells::CutToBlack + }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + Unit* hitUnit = GetHitUnit(); + + // EFFECT_0 is incorrectly removing Horde aura + hitUnit->RemoveAurasDueToSpell(Spells::TheMissionSceneJF); + CastSpellExtraArgs const& castSpellExtraArgs = CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .OriginalCastId = GetSpell()->m_castId }; - hitUnit->CastSpell(hitUnit, TheJadeForest::Spells::TeleportPlayerToCrashSite, castSpellExtraArgs); - hitUnit->CastSpell(hitUnit, TheJadeForest::Spells::CutToBlack, castSpellExtraArgs); - hitUnit->CastSpell(hitUnit, TheJadeForest::Spells::WakeUpDead, castSpellExtraArgs); + hitUnit->CastSpell(nullptr, Spells::TheMissionTeleportPlayer, castSpellExtraArgs); + hitUnit->CastSpell(nullptr, Spells::CutToBlack, castSpellExtraArgs); } void Register() override { - OnEffectHitTarget += SpellEffectFn(spell_into_the_mists_scene_end::HandleHitTarget, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + OnEffectHitTarget += SpellEffectFn(spell_the_mission_scene_end::HandleHitTarget, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); } }; +// 130812 - Cancel Blackout +class spell_cancel_blackout : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ + Spells::TeleportPrepHorde, + Spells::TeleportPrepAlliance + }); + } + + void HandleAfterEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const + { + GetTarget()->RemoveAurasDueToSpell(Spells::TeleportPrepHorde); + GetTarget()->RemoveAurasDueToSpell(Spells::TeleportPrepAlliance); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_cancel_blackout::HandleAfterEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; +} + void AddSC_zone_the_jade_forest() { + using namespace Scripts::Pandaria::TheJadeForest; + // Spells RegisterSpellScript(spell_into_the_mists_scene_jf); - RegisterSpellScript(spell_cancel_blackout); RegisterSpellScript(spell_into_the_mists_scene_end); + RegisterSpellScript(spell_the_mission_scene_jf); + RegisterSpellScript(spell_the_mission_scene_end); + RegisterSpellScript(spell_cancel_blackout); } |
