diff options
author | Naddley <64811442+Naddley@users.noreply.github.com> | 2025-05-31 09:25:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-31 09:25:55 +0200 |
commit | 83064c3b096dbbbacd9046a1fdeca20c9cefd2ef (patch) | |
tree | 6d3053198a2fbe9241eae41c460c28ac2531deb8 | |
parent | 5a96b2d4dbb2618f66d8f0281883a46968959525 (diff) |
Scripts/Boralus: Implement Quest: "Daughter of the Sea" (#30967)
-rw-r--r-- | sql/updates/world/master/2025_05_31_00_world.sql | 65 | ||||
-rw-r--r-- | src/server/scripts/KulTiras/zone_boralus.cpp | 79 |
2 files changed, 144 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_05_31_00_world.sql b/sql/updates/world/master/2025_05_31_00_world.sql new file mode 100644 index 00000000000..63fed93178d --- /dev/null +++ b/sql/updates/world/master/2025_05_31_00_world.sql @@ -0,0 +1,65 @@ +-- Creature Text +DELETE FROM `creature_text` WHERE `CreatureID` = 120922; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(120922, 0, 0, 'I hope this works.', 12, 0, 100, 669, 0, 112099, 129993, 0, 'Lady Jaina Proudmoore to Player'); + +-- Scene +DELETE FROM `scene_template` WHERE `SceneId`=1954; +INSERT INTO `scene_template` (`SceneId`, `Flags`, `ScriptPackageID`, `Encrypted`) VALUES +(1954, 27, 2103, 0); + +UPDATE `scene_template` SET `ScriptName` = 'scene_boralus_jainas_procession' WHERE `SceneId` = 1954; + +-- Spelltarget pos. +DELETE FROM `spell_target_position` WHERE (`ID`=241526 AND `EffectIndex`=0 AND `OrderIndex`=0); +INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `OrderIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `VerifiedBuild`) VALUES +(241526, 0, 0, 1643, 132.720001220703125, -2710.1298828125, 28.73999977111816406, 60822); -- Spell: 241526 (Teleport to Tol Dagor) Effect 0: 252 (SPELL_EFFECT_TELEPORT_UNITS) + +-- SpellArea +DELETE FROM `spell_area` WHERE `area` = 8568 AND `spell` = 281429; +INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `flags`, `quest_start_status`, `quest_end_status`) VALUES +(281429, 8568, 46728, 51341, 0, 0, 2, 0x03, 74, 11); + +-- Condition +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId`=26 AND `SourceGroup` = 10832 AND `SourceEntry` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `Comment`) VALUE +(26, 10832, 0, 0, 0, 47, 0, 46728, 2|8|64, 0, 0, 'Apply Phase 10832 if Quest 46728 is in progress | complete | rewarded'), +(26, 10832, 0, 0, 0, 47, 0, 51341, 64, 0, 1, 'Apply Phase 10832 if Quest 51341 is not rewarded'); + +-- SpellScript names +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_boralus_teleport_off_ship', 'spell_boralus_teleport_to_tol_dagor'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(281460, 'spell_boralus_teleport_off_ship'), +(241526, 'spell_boralus_teleport_to_tol_dagor'); + +-- Quest +DELETE FROM `quest_details` WHERE `ID`=51341; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(51341, 669, 0, 0, 0, 0, 0, 0, 0, 60822); -- Daughter of the Sea + +DELETE FROM `creature_queststarter` WHERE (`id`=120922 AND `quest`=51341); +INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES +(120922, 51341, 60822); -- Daughter of the Sea offered by Lady Jaina Proudmoore + +DELETE FROM `quest_objectives_completion_effect` WHERE `ObjectiveID` = 335474; +INSERT INTO `quest_objectives_completion_effect` (`ObjectiveID`, `GameEventID`, `SpellID`, `ConversationID`, `UpdatePhaseShift`, `UpdateZoneAuras`) VALUES +(335474, NULL, 241526, NULL, 1, 0); + +DELETE FROM `quest_template_addon` WHERE `ID` = 51341; +INSERT INTO `quest_template_addon` (`ID`, `MaxLevel`, `AllowableClasses`, `SourceSpellID`, `PrevQuestID`, `NextQuestID`, `ExclusiveGroup`, `BreadcrumbForQuestId`, `RewardMailTemplateID`, `RewardMailDelay`, `RequiredSkillID`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `ProvidedItemCount`, `SpecialFlags`, `ScriptName`) VALUES +(51341, 0, 0, 0, 46728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''); -- Daughter of the Sea + +-- Lady Jaina Proudmoore smart ai +SET @ENTRY := 120922; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 0, 19, 0, 100, 0, 51341, 0, 0, 0, 0, 80, 12092200, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On player accepted quest Daughter of the Sea (51341) - Self: Start timed action list id #Lady Jaina Proudmoore #0 (12092200) (update out of combat)', ''); + +-- Timed list 12092200 smart ai +SET @ENTRY := 12092200; +DELETE FROM `smart_scripts` WHERE `source_type` = 9 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 149, 8, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'After 0 seconds - Self: Become personal clone for Last action invoker for 0 seconds (manual despawn)', ''), +(@ENTRY, 9, 1, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 'After 2 seconds - Owner/Summoner: Talk 0 to invoker', ''), +(@ENTRY, 9, 2, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 85, 281460, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'After 3 seconds - Self: Cast spell 281460 on self', ''); diff --git a/src/server/scripts/KulTiras/zone_boralus.cpp b/src/server/scripts/KulTiras/zone_boralus.cpp index 854e8e0298f..48405772892 100644 --- a/src/server/scripts/KulTiras/zone_boralus.cpp +++ b/src/server/scripts/KulTiras/zone_boralus.cpp @@ -771,6 +771,82 @@ struct at_boralus_sanctum_of_the_sages_conversation : AreaTriggerAI } }; +enum DaughterOfTheSeaData +{ + NPC_JAINA_PROUDMOORE_BEFORE_AUDIENCE = 120922, + + SPELL_PLAY_SCENE_JAINA_PROCESSION = 270608, + SPELL_OBJ_COMPLETE_KATHERINES_COURT = 241525, + SPELL_WAKE_UP_IN_TOL_DAGOR = 270081 +}; + +// 281460 - Teleport Off Ship +class spell_boralus_teleport_off_ship : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PLAY_SCENE_JAINA_PROCESSION }); + } + + void HandleHitSummoner(SpellEffIndex /*effIndex*/) + { + if (Player* player = GetHitUnit()->ToPlayer()) + player->CastSpell(player, SPELL_PLAY_SCENE_JAINA_PROCESSION, false); + } + + void HandleHitJaina(SpellEffIndex /*effIndex*/) + { + if (Creature* summon = GetHitCreature()) + { + if (summon->GetEntry() == NPC_JAINA_PROUDMOORE_BEFORE_AUDIENCE) + summon->DespawnOrUnsummon(2s); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_boralus_teleport_off_ship::HandleHitSummoner, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_boralus_teleport_off_ship::HandleHitJaina, EFFECT_1, SPELL_EFFECT_DUMMY); + } +}; + +// 1954 - Play Scene: Jainas Procession +class scene_boralus_jainas_procession : public SceneScript +{ +public: + scene_boralus_jainas_procession() : SceneScript("scene_boralus_jainas_procession") {} + + void OnSceneComplete(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) override + { + player->CastSpell(player, SPELL_OBJ_COMPLETE_KATHERINES_COURT, true); + } + + void OnSceneCancel(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) override + { + player->CastSpell(player, SPELL_OBJ_COMPLETE_KATHERINES_COURT, true); + } +}; + +// 241526 - Teleport to Tol Dagor +class spell_boralus_teleport_to_tol_dagor : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WAKE_UP_IN_TOL_DAGOR }); + } + + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Unit* caster = GetCaster()) + caster->CastSpell(caster, SPELL_WAKE_UP_IN_TOL_DAGOR, false); + } + + void Register() override + { + AfterEffectApply += AuraEffectRemoveFn(spell_boralus_teleport_to_tol_dagor::OnApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_zone_boralus() { // Creature @@ -791,6 +867,7 @@ void AddSC_zone_boralus() // Scene new scene_boralus_client_scene_cyrus_and_genn(); + new scene_boralus_jainas_procession(); // AreaTrigger RegisterAreaTriggerAI(at_boralus_old_knight_enter_harbormasters_office); @@ -805,4 +882,6 @@ void AddSC_zone_boralus() // Spells RegisterSpellScript(spell_boralus_find_cyrus_objective_complete); + RegisterSpellScript(spell_boralus_teleport_off_ship); + RegisterSpellScript(spell_boralus_teleport_to_tol_dagor); } |