aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2024_12_29_01_world.sql178
-rw-r--r--src/server/scripts/KhazAlgar/IsleOfDorn/zone_isle_of_dorn.cpp114
-rw-r--r--src/server/scripts/KhazAlgar/khaz_algar_script_loader.cpp6
3 files changed, 298 insertions, 0 deletions
diff --git a/sql/updates/world/master/2024_12_29_01_world.sql b/sql/updates/world/master/2024_12_29_01_world.sql
new file mode 100644
index 00000000000..65e06894e81
--- /dev/null
+++ b/sql/updates/world/master/2024_12_29_01_world.sql
@@ -0,0 +1,178 @@
+SET @CGUID := 10005011;
+SET @NPCTEXTID := 600069;
+
+-- Creature
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+1;
+INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES
+(@CGUID+0, 223923, 2552, 14717, 14717, '0', 23673, 0, 0, 0, 568.5399169921875, -1205.8992919921875, 2.48101663589477539, 1.82973647117614746, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 57689), -- Natalia Pearce (Area: Isle of Dorn - Difficulty: 0) CreateObject1
+(@CGUID+1, 223924, 2552, 14717, 14717, '0', 23674, 0, 0, 0, 606.951416015625, -1231.859375, -2.37935256958007812, 5.465282917022705078, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 57689); -- Natalia Pearce (Area: Isle of Dorn - Difficulty: 0) CreateObject1
+
+-- Template
+UPDATE `creature_template` SET `faction`=35, `npcflag`=3, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x800 WHERE `entry`=223923; -- Natalia Pearce
+UPDATE `creature_template` SET `faction`=35, `npcflag`=2, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x800 WHERE `entry`=223924; -- Natalia Pearce
+
+-- Conversation
+DELETE FROM `conversation_template` WHERE `Id` IN (25586,25590);
+INSERT INTO `conversation_template` (`Id`, `FirstLineID`, `TextureKitId`, `VerifiedBuild`) VALUES
+(25586, 69573, 0, 57689),
+(25590, 69579, 0, 57689);
+
+UPDATE `conversation_template` SET `ScriptName` = 'conversation_natalia_pearces_accept_precious_gems' WHERE `Id` = 25586;
+UPDATE `conversation_template` SET `ScriptName` = 'conversation_natalia_pearces_complete_precious_gems' WHERE `Id` = 25590;
+
+DELETE FROM `conversation_actors` WHERE (`ConversationId`=25586 AND `Idx` = 0) OR (`ConversationId`=25590 AND `Idx` IN (0,1));
+INSERT INTO `conversation_actors` (`ConversationId`, `ConversationActorId`, `Idx`, `CreatureId`, `CreatureDisplayInfoId`, `NoActorObject`, `ActivePlayerObject`, `VerifiedBuild`) VALUES
+(25586, 99047, 0, 0, 0, 0, 0, 57689), -- Full: 0x20197D3F00DA6540001389000050CAC8 Creature/0 R1631/S5001 Map: 2552 (Khaz Algar (Surface)) Entry: 223637 (Natalia Pearce) Low: 5294792
+(25590, 99215, 0, 0, 0, 0, 0, 57689), -- Full: 0x2042313F00DAAD000064D40000531CDF Creature/0 R4236/S25812 Map: 2552 (Khaz Algar (Surface)) Entry: 223924 (Natalia Pearce) Low: 5446879
+(25590, 0, 1, 0, 0, 0, 1, 57689); -- Full: 0x0800040000000000FFFFFFFFFFFFFFFF Player/0 R1/S16777215 Map: 0 (Eastern Kingdoms) Low: 1099511627775
+
+DELETE FROM `conversation_line_template` WHERE `Id` IN (69573, 69584, 69583, 69581, 69580, 69579);
+INSERT INTO `conversation_line_template` (`Id`, `UiCameraID`, `ActorIdx`, `Flags`, `ChatType`, `VerifiedBuild`) VALUES
+(69573, 0, 0, 0, 0, 57689),
+(69584, 0, 0, 0, 0, 57689),
+(69583, 0, 1, 0, 0, 57689),
+(69581, 0, 0, 0, 0, 57689),
+(69580, 0, 1, 0, 0, 57689),
+(69579, 0, 0, 0, 0, 57689);
+
+-- Phase
+DELETE FROM `phase_name` WHERE `ID` = 23674;
+INSERT INTO `phase_name` (`ID`, `Name`) VALUES
+(23674, 'Cosmetic - See Natalia Pearces inside the Basalteous cave');
+
+DELETE FROM `phase_area` WHERE `PhaseId` = 23674;
+INSERT INTO `phase_area` (`AreaId`, `PhaseId`, `Comment`) VALUES
+(14717, 23674, 'See Natalia Pearces inside the Basalteous cave');
+
+DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (23673,23674) AND `SourceEntry` = 0);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `Comment`) VALUE
+(26, 23673, 0, 0, 0, 47, 0, 82465, 8, 0, 0, 'Apply Phase 23673 if Quest 82465 is taken'),
+(26, 23674, 0, 0, 0, 47, 0, 82465, 2|64, 0, 0, 'Apply Phase 23674 if Quest 82465 is complete | rewarded');
+
+-- Gossip
+DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=223923 AND `MenuID`=34984);
+INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES
+(223923, 34984, 57689); -- Natalia Pearce
+
+DELETE FROM `npc_text` WHERE `ID` BETWEEN @NPCTEXTID+0 AND @NPCTEXTID+0;
+INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES
+(@NPCTEXTID+0, 1, 0, 0, 0, 0, 0, 0, 0, 264643, 0, 0, 0, 0, 0, 0, 0, 57689); -- 223923 (Natalia Pearce)
+
+DELETE FROM `gossip_menu` WHERE (`MenuID`=34984 AND `TextID`=@NPCTEXTID+0);
+INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES
+(34984, @NPCTEXTID+0, 57689); -- 223923 (Natalia Pearce)
+
+DELETE FROM `gossip_menu_option` WHERE (`MenuID`=34984 AND `OptionID`=0);
+INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES
+(34984, 122493, 0, 0, 'After you.', 0, 0, 1, 0, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 57689);
+
+DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 15) AND (`SourceGroup` IN (34984));
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `Comment`) VALUES
+(15, 34984, 0, 0, 0, 9, 0, 82465, 0, 0, '', 0, 'Player for which gossip text is shown has quest Precious Gems (82465) active');
+
+-- Quest
+DELETE FROM `creature_queststarter` WHERE (`id`=223924 AND `quest`=82466);
+INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES
+(223924, 82466, 57689); -- What We Do For Gems offered by Natalia Pearce
+
+DELETE FROM `creature_questender` WHERE (`id`=223924 AND `quest`=82465);
+INSERT INTO `creature_questender` (`id`, `quest`, `VerifiedBuild`) VALUES
+(223924, 82465, 57689); -- Precious Gems ended by Natalia Pearce
+
+DELETE FROM `quest_objectives_completion_effect` WHERE `ObjectiveID` = 450025;
+INSERT INTO `quest_objectives_completion_effect` (`ObjectiveID`, `GameEventID`, `SpellID`, `ConversationID`, `UpdatePhaseShift`, `UpdateZoneAuras`) VALUES
+(450025, NULL, NULL, NULL, 1, 0);
+
+DELETE FROM `quest_template_addon` WHERE `ID` = 82466;
+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
+(82466, 0, 0, 0, 82465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''); -- What We Do For Gems
+
+-- Difficulty
+UPDATE `creature_template_difficulty` SET `ContentTuningID`=2797, `StaticFlags1`=0x10000000, `VerifiedBuild`=57689 WHERE (`Entry`=223924 AND `DifficultyID`=0); -- 223924 (Natalia Pearce) - CanSwim
+UPDATE `creature_template_difficulty` SET `ContentTuningID`=2797, `StaticFlags1`=0x10000000, `VerifiedBuild`=57689 WHERE (`Entry`=223923 AND `DifficultyID`=0); -- 223923 (Natalia Pearce) - CanSwim
+
+-- Natalia Pearce smart ai
+SET @ENTRY := 223637;
+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, 82465, 0, 0, 0, 0, 143, 25586, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On player accepted quest Precious Gems (82465) - Player who accepted quest: Start conversation 25586', ''),
+(@ENTRY, 0, 1, 0, 40, 0, 100, 0, 1, 22363700, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On wapoint 1 of path 22363700 reached - Self: Despawn in 2 s', '');
+
+-- Natalia Pearce smart ai
+SET @ENTRY := 223923;
+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, 1, 62, 0, 100, 0, 34984, 0, 0, 0, 0, 33, 223923, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On gossip action 0 from menu 34984 selected - Gossip player: Give kill credit Natalia Pearce (223923)', ''),
+(@ENTRY, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On gossip action 0 from menu 34984 selected - Gossip player: Close gossip', ''),
+(@ENTRY, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 143, 25590, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On gossip action 0 from menu 34984 selected - Gossip player: Start conversation (25590) Actors<> (first line 69579)', '');
+
+-- Natalia Pearce smart ai
+SET @ENTRY := 223924;
+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, 58, 0, 100, 0, 19, 22392400, 0, 0, 0, 53, 0, 22392401, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On waypoint 19 of path 22392400 ended - Self: Start path #22392401, walk, do not repeat, Passive', ''),
+(@ENTRY, 0, 1, 0, 58, 0, 100, 0, 0, 22392401, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On any waypoint of path 22392401 ended - Self: Despawn in 2 s', '');
+
+-- Path for Natalia Pearce
+SET @ENTRY := 223637;
+SET @PATHOFFSET := 0;
+SET @PATH := @ENTRY * 100 + @PATHOFFSET;
+DELETE FROM `waypoint_path` WHERE `PathId`= @PATH;
+INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES
+(@PATH, 1, 0x0, NULL, 'Natalia Pearce - Scripted Path');
+
+DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH;
+INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES
+(@PATH, 0, 1161.875, -2005.408, 80.17253, NULL, 0),
+(@PATH, 1, 1165.0295, -1991.0452, 80.59499, NULL, 0),
+(@PATH, 2, 1165.3923, -1984.4323, 80.73431, NULL, 0),
+(@PATH, 3, 1165.191, -1978.092, 80.491325, NULL, 0),
+(@PATH, 4, 1165.7305, -1974.1309, 80.28405, NULL, 0),
+(@PATH, 5, 1166.1348, -1971.1602, 80.06721, NULL, 0),
+(@PATH, 6, 1166.1666, -1970.941, 80.04346, NULL, 0);
+
+-- Path for Natalia Pearce (run)
+SET @ENTRY := 223924;
+SET @PATHOFFSET := 0;
+SET @PATH := @ENTRY * 100 + @PATHOFFSET;
+DELETE FROM `waypoint_path` WHERE `PathId`= @PATH;
+INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES
+(@PATH, 1, 0x0, NULL, 'Natalia Pearce - Scripted Path');
+
+DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH;
+INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES
+(@PATH, 0, 573.13086, -1204.5195, 1.5434456, NULL, 0),
+(@PATH, 1, 574.1289, -1204.4609, 1.3652716, NULL, 0),
+(@PATH, 2, 574.8262, -1204.416, 1.3652716, NULL, 0),
+(@PATH, 3, 575.1992, -1204.4395, 1.1621518, NULL, 0),
+(@PATH, 4, 576.55914, -1203.9913, 1.2641888, NULL, 0),
+(@PATH, 5, 577.2599, -1203.7604, 1.1122702, NULL, 0),
+(@PATH, 6, 578.23956, -1203.4375, 1.4185454, NULL, 0),
+(@PATH, 7, 578.4873, -1203.7229, 1.6263658, NULL, 0),
+(@PATH, 8, 579.9707, -1205.432, 2.4789832, NULL, 0),
+(@PATH, 9, 580.4241, -1205.9543, 2.5559785, NULL, 0),
+(@PATH, 10, 581.66205, -1207.3807, 3.2729156, NULL, 0),
+(@PATH, 11, 581.8108, -1207.5521, 3.2960181, NULL, 0),
+(@PATH, 12, 582.42993, -1208.5288, 3.5478327, NULL, 0),
+(@PATH, 13, 582.9775, -1209.3926, 3.8676937, NULL, 0),
+(@PATH, 14, 583.25854, -1209.8359, 3.8548698, NULL, 0),
+(@PATH, 15, 585.0303, -1212.6307, 4.1777277, NULL, 0),
+(@PATH, 16, 585.8515, -1213.9263, 3.8800235, NULL, 0),
+(@PATH, 17, 586.125, -1214.3577, 3.8656776, NULL, 0),
+(@PATH, 18, 589.6389, -1221.2135, 1.5684685, NULL, 0),
+(@PATH, 19, 594.40454, -1230.3663, -0.9916396, NULL, 0);
+
+-- Path for Natalia Pearce (walk)
+SET @ENTRY := 223924;
+SET @PATHOFFSET := 1;
+SET @PATH := @ENTRY * 100 + @PATHOFFSET;
+DELETE FROM `waypoint_path` WHERE `PathId`= @PATH;
+INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES
+(@PATH, 0, 0x0, NULL, 'Natalia Pearce - Scripted Path');
+
+DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH;
+INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES
+(@PATH, 0, 606.9514, -1231.8594, -2.349821, NULL, 0);
diff --git a/src/server/scripts/KhazAlgar/IsleOfDorn/zone_isle_of_dorn.cpp b/src/server/scripts/KhazAlgar/IsleOfDorn/zone_isle_of_dorn.cpp
new file mode 100644
index 00000000000..fd206d7fef8
--- /dev/null
+++ b/src/server/scripts/KhazAlgar/IsleOfDorn/zone_isle_of_dorn.cpp
@@ -0,0 +1,114 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Containers.h"
+#include "Conversation.h"
+#include "ConversationAI.h"
+#include "CreatureAIImpl.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
+#include "TemporarySummon.h"
+
+enum PreciousGemsData
+{
+ NPC_NATALIA_PEARCES_FREYWOLD = 223637,
+ NPC_NATALIA_PEARCES_INSIDE_BASALTEOUS = 223924,
+
+ CONVO_ACTOR_NATALIA_FREYWOLD = 99047,
+ CONVO_ACTOR_NATALIA_BASALTEOUS_CAVE = 99215,
+
+ PATH_NATALIA_CLONE_FREYWOLD = 22363700,
+ PATH_NATALIA_CLONE_BASALTEOUS_CAVE = 22392400
+};
+
+// 25586 - Conversation
+class conversation_natalia_pearces_accept_precious_gems : public ConversationAI
+{
+public:
+ conversation_natalia_pearces_accept_precious_gems(Conversation* conversation) : ConversationAI(conversation) { }
+
+ enum ConversationPreciousGemsIntro
+ {
+ EVENT_NATALIA_START_INTRO_PATH = 1
+ };
+
+ void OnCreate(Unit* creator) override
+ {
+ Creature* nataliaObject = GetClosestCreatureWithOptions(creator, 10.0f, { .CreatureId = NPC_NATALIA_PEARCES_FREYWOLD, .IgnorePhases = true });
+ if (!nataliaObject)
+ return;
+
+ TempSummon* nataliaClone = nataliaObject->SummonPersonalClone(nataliaObject->GetPosition(), TEMPSUMMON_MANUAL_DESPAWN, 0s, 0, 0, creator->ToPlayer());
+ if (!nataliaClone)
+ return;
+
+ nataliaClone->RemoveNpcFlag(NPCFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER));
+
+ conversation->AddActor(CONVO_ACTOR_NATALIA_FREYWOLD, 0, nataliaClone->GetGUID());
+ conversation->Start();
+ }
+
+ void OnStart() override
+ {
+ LocaleConstant privateOwnerLocale = conversation->GetPrivateObjectOwnerLocale();
+
+ conversation->m_Events.AddEvent([this]()
+ {
+ Creature* nataliaClone = conversation->GetActorCreature(0);
+ if (!nataliaClone)
+ return;
+
+ nataliaClone->GetMotionMaster()->MovePath(PATH_NATALIA_CLONE_FREYWOLD, false);
+ }, conversation->GetLastLineEndTime(privateOwnerLocale));
+ }
+};
+
+constexpr Position NataliaSpawnPos = { 568.539f, -1205.899f, 2.48101f, 1.82973f };
+
+// 25590 - Conversation
+class conversation_natalia_pearces_complete_precious_gems : public ConversationAI
+{
+public:
+ conversation_natalia_pearces_complete_precious_gems(Conversation* conversation) : ConversationAI(conversation) { }
+
+ void OnCreate(Unit* creator) override
+ {
+ Creature* nataliaObject = GetClosestCreatureWithOptions(creator, 60.0f, { .CreatureId = NPC_NATALIA_PEARCES_INSIDE_BASALTEOUS, .IgnorePhases = true });
+ if (!nataliaObject)
+ return;
+
+ TempSummon* nataliaClone = nataliaObject->SummonPersonalClone(NataliaSpawnPos, TEMPSUMMON_MANUAL_DESPAWN, 0s, 0, 0, creator->ToPlayer());
+ if (!nataliaClone)
+ return;
+
+ nataliaClone->RemoveNpcFlag(NPCFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER));
+ nataliaClone->SetUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE));
+ nataliaClone->GetMotionMaster()->MovePath(PATH_NATALIA_CLONE_BASALTEOUS_CAVE, false);
+
+ conversation->AddActor(CONVO_ACTOR_NATALIA_BASALTEOUS_CAVE, 0, nataliaClone->GetGUID());
+ conversation->Start();
+ }
+};
+
+void AddSC_zone_isle_of_dorn()
+{
+ // Conversation
+ RegisterConversationAI(conversation_natalia_pearces_accept_precious_gems);
+ RegisterConversationAI(conversation_natalia_pearces_complete_precious_gems);
+}
diff --git a/src/server/scripts/KhazAlgar/khaz_algar_script_loader.cpp b/src/server/scripts/KhazAlgar/khaz_algar_script_loader.cpp
index d67f17a6373..f1d0e6698c8 100644
--- a/src/server/scripts/KhazAlgar/khaz_algar_script_loader.cpp
+++ b/src/server/scripts/KhazAlgar/khaz_algar_script_loader.cpp
@@ -16,6 +16,9 @@
*/
// This is where scripts' loading functions should be declared:
+// Zone Isle Of Dorn
+void AddSC_zone_isle_of_dorn();
+
// Nerub'ar Palace
void AddSC_instance_nerubar_palace();
void AddSC_boss_ulgrax_the_devourer();
@@ -24,6 +27,9 @@ void AddSC_boss_ulgrax_the_devourer();
// void Add${NameOfDirectory}Scripts()
void AddKhazAlgarScripts()
{
+ // Zone Isle of Dorn
+ AddSC_zone_isle_of_dorn();
+
// Nerub'ar Palace
AddSC_instance_nerubar_palace();
AddSC_boss_ulgrax_the_devourer();