diff options
author | Naddley <64811442+Naddley@users.noreply.github.com> | 2025-07-05 16:13:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-05 16:13:58 +0200 |
commit | 2a2e09e8f431209c00b162f9e6c736d732b24114 (patch) | |
tree | bca17dcc3c80a3242034e4c43ea163ad866516b4 /src/server | |
parent | 21712f475383f6f3fae107706f5de5195f75b760 (diff) |
Scripts/DalaranLegion: Implement Quest: "Weapons of Legend" (Hunter) (#31099)
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/scripts/BrokenIsles/broken_isles_script_loader.cpp | 9 | ||||
-rw-r--r-- | src/server/scripts/BrokenIsles/zone_dalaran_broken_isle.cpp | 36 |
2 files changed, 42 insertions, 3 deletions
diff --git a/src/server/scripts/BrokenIsles/broken_isles_script_loader.cpp b/src/server/scripts/BrokenIsles/broken_isles_script_loader.cpp index 6960bdb0ef3..ca559d0ba62 100644 --- a/src/server/scripts/BrokenIsles/broken_isles_script_loader.cpp +++ b/src/server/scripts/BrokenIsles/broken_isles_script_loader.cpp @@ -17,6 +17,9 @@ // This is where scripts' loading functions should be declared: +void AddSC_zone_dalaran_broken_isle(); +void AddSC_zone_mardum(); + // Maw of Souls void AddSC_boss_ymiron_the_fallen_king(); void AddSC_instance_maw_of_souls(); @@ -31,12 +34,14 @@ void AddSC_instance_black_rook_hold(); // Orderhalls void AddSC_orderhall_warrior(); -void AddSC_zone_mardum(); // The name of this function should match: // void Add${NameOfDirectory}Scripts() void AddBrokenIslesScripts() { + AddSC_zone_dalaran_broken_isle(); + AddSC_zone_mardum(); + // Maw of Souls AddSC_boss_ymiron_the_fallen_king(); AddSC_instance_maw_of_souls(); @@ -49,6 +54,6 @@ void AddBrokenIslesScripts() AddSC_boss_amalgam_of_souls(); AddSC_instance_black_rook_hold(); + // Orderhalls AddSC_orderhall_warrior(); - AddSC_zone_mardum(); } diff --git a/src/server/scripts/BrokenIsles/zone_dalaran_broken_isle.cpp b/src/server/scripts/BrokenIsles/zone_dalaran_broken_isle.cpp index 829e566c6d3..c5a10ba6828 100644 --- a/src/server/scripts/BrokenIsles/zone_dalaran_broken_isle.cpp +++ b/src/server/scripts/BrokenIsles/zone_dalaran_broken_isle.cpp @@ -18,6 +18,7 @@ #include "ScriptMgr.h" #include "ObjectAccessor.h" #include "Player.h" +#include "PlayerChoice.h" #include "SpellAuras.h" #include "SpellScript.h" @@ -66,7 +67,7 @@ enum OrderCampaignDalaranIntro // 224240 - 7.0 Order Campaign - Dalaran Aura class spell_dalaran_order_campaign_intro_aura : public AuraScript { - void HandlePeriodic(AuraEffect const* /*aurEff*/) + void HandlePeriodic(AuraEffect const* /*aurEff*/) const { Player* player = Object::ToPlayer(GetCaster()); if (!player) @@ -157,8 +158,41 @@ class spell_dalaran_order_campaign_intro_aura : public AuraScript } }; +enum WeaponsOfLegendHunter +{ + // Spells + SPELL_FORCE_BEAST_MASTERY_SPEC = 198433, + SPELL_FORCE_SURVIVAL_SPEC = 198435, + SPELL_FORCE_MARKSMANSHIP_SPEC = 198436, + + // Playerchoice + PLAYERCHOICE_RESPONSE_CHOOSE_BEAST_MASTERY_WEAPON = 504, + PLAYERCHOICE_RESPONSE_CHOOSE_SURVIVAL_WEAPON = 505, + PLAYERCHOICE_RESPONSE_CHOOSE_MARKSMANSHIP_WEAPON = 506, +}; + +// 240 - Playerchoice +class playerchoice_weapons_of_legend_hunter : public PlayerChoiceScript +{ +public: + playerchoice_weapons_of_legend_hunter() : PlayerChoiceScript("playerchoice_weapons_of_legend_hunter") {} + + void OnResponse(WorldObject* /*object*/, Player* player, PlayerChoice const* /*choice*/, PlayerChoiceResponse const* response, uint16 /*clientIdentifier*/) override + { + if (response->ResponseId == PLAYERCHOICE_RESPONSE_CHOOSE_BEAST_MASTERY_WEAPON) + player->CastSpell(player, SPELL_FORCE_BEAST_MASTERY_SPEC, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK }); + else if (response->ResponseId == PLAYERCHOICE_RESPONSE_CHOOSE_SURVIVAL_WEAPON) + player->CastSpell(player, SPELL_FORCE_SURVIVAL_SPEC, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK }); + else if (response->ResponseId == PLAYERCHOICE_RESPONSE_CHOOSE_MARKSMANSHIP_WEAPON) + player->CastSpell(player, SPELL_FORCE_MARKSMANSHIP_SPEC, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK }); + } +}; + void AddSC_zone_dalaran_broken_isle() { + // Playerchoice + new playerchoice_weapons_of_legend_hunter(); + // Spellscripts RegisterSpellScript(spell_dalaran_order_campaign_intro_aura); } |