aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2025_04_01_01_world.sql108
-rw-r--r--src/server/scripts/KulTiras/Drustvar/drustvar_chapter_1_the_final_effigy.cpp52
-rw-r--r--src/server/scripts/KulTiras/kultiras_script_loader.cpp6
3 files changed, 166 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_04_01_01_world.sql b/sql/updates/world/master/2025_04_01_01_world.sql
new file mode 100644
index 00000000000..98e55e44c0a
--- /dev/null
+++ b/sql/updates/world/master/2025_04_01_01_world.sql
@@ -0,0 +1,108 @@
+SET @OGUID := 7000384;
+
+-- GameObject
+DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+24;
+INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES
+(@OGUID+0, 295778, 1643, 8721, 9032, '0', 0, 0, -101.710678100585937, 1950.5103759765625, 34.23123931884765625, 5.388891220092773437, 0, 0, -0.43239498138427734, 0.901684284210205078, 120, 255, 1, 59888), -- Fire (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+1, 295802, 1643, 8721, 9032, '0', 0, 0, 54.34577178955078125, 1828.55419921875, 47.43634796142578125, 4.965455532073974609, 0, 0, -0.61221981048583984, 0.790687620639801025, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+2, 295801, 1643, 8721, 9032, '0', 0, 0, 55.91382980346679687, 1826.363525390625, 47.43634414672851562, 2.55689859390258789, 0, 0, 0.957570075988769531, 0.288200527429580688, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+3, 303028, 1643, 8721, 9032, '0', 0, 0, 49.05208206176757812, 1661.21533203125, 1.157267093658447265, 4.790929317474365234, 0, 0, -0.67880058288574218, 0.734322667121887207, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+4, 295778, 1643, 8721, 9032, '0', 0, 0, 51.80818557739257812, 1829.400390625, 47.31052780151367187, 3.826812028884887695, 0, 0, -0.94188117980957031, 0.335946202278137207, 120, 255, 1, 59888), -- Fire (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+5, 303035, 1643, 8721, 9032, '0', 0, 0, 79.13541412353515625, 1689.9739990234375, 0.114583350718021392, 2.871063947677612304, 0, 0, 0.990865707397460937, 0.134852290153503417, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+6, 303034, 1643, 8721, 9032, '0', 0, 0, 82.82465362548828125, 1691.201416015625, 0.081597223877906799, 5.611230850219726562, 0, 0, -0.32969188690185546, 0.944088578224182128, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+7, 296901, 1643, 8721, 9032, '0', 0, 0, 65.90277862548828125, 1834.9461669921875, 47.23859405517578125, 5.436700820922851562, 0, 0, -0.41071891784667968, 0.911761999130249023, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+8, 303033, 1643, 8721, 9032, '0', 0, 0, 86.58333587646484375, 1689.2135009765625, -0.00694444449618458, 3.115387916564941406, 0, 0, 0.999914169311523437, 0.013101960532367229, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+9, 296900, 1643, 8721, 9032, '0', 0, 0, 64.34027862548828125, 1829.7708740234375, 47.20653152465820312, 0.052360795438289642, 0, 0, 0.026177406311035156, 0.999657332897186279, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+10, 303032, 1643, 8721, 9032, '0', 0, 0, 86.5069427490234375, 1691.064208984375, 0.02604166604578495, 3.115387916564941406, 0, 0, 0.999914169311523437, 0.013101960532367229, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+11, 303037, 1643, 8721, 9032, '0', 0, 0, 76.111114501953125, 1689.453125, 0.149305552244186401, 0.235617712140083312, 0, 0, 0.117536544799804687, 0.993068516254425048, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+12, 303027, 1643, 8721, 9032, '0', 0, 0, 49.31423568725585937, 1658.267333984375, 1.167453169822692871, 2.251477956771850585, 0, 0, 0.902585983276367187, 0.43050965666770935, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+13, 303036, 1643, 8721, 9032, '0', 0, 0, 77.6319427490234375, 1687.9947509765625, 0.102430559694766998, 1.60569620132446289, 0, 0, 0.71933746337890625, 0.694660782814025878, 120, 255, 1, 59888), -- Chair (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+14, 272198, 1643, 8721, 9032, '0', 0, 0, -50.2795143127441406, 1948.3680419921875, 37.52858352661132812, 1.615791201591491699, 0, 0, 0.722834587097167968, 0.691021084785461425, 120, 255, 1, 59888), -- Cursed Charm (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+15, 277420, 1643, 8721, 9032, '0', 0, 0, 56.34375, 1834.3021240234375, 47.41795730590820312, 2.877968549728393554, 0, 0, 0.99132537841796875, 0.131430670619010925, 120, 255, 1, 59888), -- Stool (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+16, 272199, 1643, 8721, 9032, '0', 0, 0, 61.43229293823242187, 1828.420166015625, 47.44915008544921875, 6.090238571166992187, 0, 0, -0.09632396697998046, 0.995350062847137451, 120, 255, 1, 59888), -- Stool (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+17, 272174, 1643, 8721, 9032, '0', 0, 0, 54.92361068725585937, 1834.80908203125, 47.40673446655273437, 1.28933107852935791, 0, 0, 0.600931167602539062, 0.799300789833068847, 120, 255, 1, 59888), -- Table (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+18, 272198, 1643, 8721, 9032, '0', 0, 0, -52.3211822509765625, 1950.107666015625, 35.99113845825195312, 0.09384927898645401, 0, 0, 0.046907424926757812, 0.998899221420288085, 120, 255, 1, 59888), -- Cursed Charm (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+19, 277380, 1643, 8721, 9032, '0', 0, 0, -44.6545143127441406, 1924.93408203125, 33.0326995849609375, 0.012832976877689361, 0.037631988525390625, -0.18040752410888671, 0.013010025024414062, 0.982785701751708984, 120, 255, 1, 59888), -- Tainted Pig Feed (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+20, 290442, 1643, 8721, 9032, '0', 0, 0, 55.53645706176757812, 1834.4132080078125, 48.20467758178710937, 0, 0, 0, 0, 1, 120, 255, 1, 59888), -- Food (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+21, 278670, 1643, 8721, 9032, '0', 0, 0, -91.3211822509765625, 1950.251708984375, 35.01362228393554687, 1.832701325416564941, 0, 0, 0.793385505676269531, 0.608719468116760253, 120, 255, 1, 59888), -- Cursed Charm (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+22, 290441, 1643, 8721, 9032, '0', 0, 0, 54.98090362548828125, 1834.6163330078125, 48.20263671875, 1.135462641716003417, 0, 0, 0.537720680236816406, 0.843123018741607666, 120, 255, 1, 59888), -- Tea Pot (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+23, 278671, 1643, 8721, 9032, '0', 0, 0, 1.795138955116271972, 1951.65625, 37.55127716064453125, 3.013794183731079101, 0, 0, 0.997959136962890625, 0.063855722546577453, 120, 255, 1, 59888), -- Cursed Charm (Area: Fallhaven - Difficulty: 0) CreateObject1
+(@OGUID+24, 278670, 1643, 8721, 9032, '0', 0, 0, -76.8993072509765625, 1973.6927490234375, 38.3642730712890625, 2.210199356079101562, 0, 0, 0.8935089111328125, 0.449045419692993164, 120, 255, 1, 59888); -- Cursed Charm (Area: Fallhaven - Difficulty: 0) CreateObject1
+DELETE FROM `gameobject_addon` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+24;
+INSERT INTO `gameobject_addon` (`guid`, `parent_rotation0`, `parent_rotation1`, `parent_rotation2`, `parent_rotation3`, `WorldEffectID`, `AIAnimKitID`) VALUES
+(@OGUID+0, 0, 0, 0.99086618423461914, 0.134848982095718383, 0, 0), -- Fire
+(@OGUID+1, 0, 0, 0.608758747577667236, 0.793355405330657958, 0, 0), -- Chair
+(@OGUID+2, 0, 0, 0.608758747577667236, 0.793355405330657958, 0, 0), -- Chair
+(@OGUID+4, 0, 0, 0.608758747577667236, 0.793355405330657958, 0, 0); -- Fire
+
+-- Update Phase
+UPDATE `creature` SET `PhaseId` = 9090 WHERE `guid` = 7001617;
+
+-- EventScripts
+DELETE FROM `event_script_names` WHERE `Id` = 59332;
+INSERT INTO `event_script_names` (`Id`, `ScriptName`) VALUES
+(59332, 'event_listen_to_helenas_story');
+
+-- Creature Text
+DELETE FROM `creature_text` WHERE `CreatureID` = 124922;
+INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
+(124922, 0, 0, 'Insipid $c! This village is mine. The Mother has willed it!', 12, 0, 100, 0, 0, 97669, 133715, 0, 'Helena Gentle to Player'),
+(124922, 1, 0, 'You should turn away now, lest you share their fate.', 12, 0, 100, 1, 0, 97670, 133716, 0, 'Helena Gentle to Player');
+
+-- Phase
+DELETE FROM `phase_name` WHERE `ID` IN (9869, 9090);
+INSERT INTO `phase_name` (`ID`, `Name`) VALUES
+(9869, 'Personal - Helenas House'),
+(9090, 'Cosmetic - See Helena Gentle (human)');
+
+DELETE FROM `phase_area` WHERE `PhaseId` = 9090;
+INSERT INTO `phase_area` (`AreaId`, `PhaseId`, `Comment`) VALUES
+(8721, 9090, 'See Helena Gentle (human)');
+
+DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId`=26 AND `SourceGroup` = 9090 AND `SourceEntry` = 0);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `Comment`) VALUE
+(26, 9090, 0, 0, 0, 47, 0, 47979, 2|64, 0, 1, 'Apply Phase 9090 if Quest 47979 is not complete | rewarded'),
+(26, 9090, 0, 0, 0, 48, 0, 291283, 0, 1, 1, 'Apply Phase 9090 if Questobjective 291283 is not rewarded');
+
+-- Quest
+DELETE FROM `quest_objectives_completion_effect` WHERE `ObjectiveID` = 291283;
+INSERT INTO `quest_objectives_completion_effect` (`ObjectiveID`, `GameEventID`, `SpellID`, `ConversationID`, `UpdatePhaseShift`, `UpdateZoneAuras`) VALUES
+(291283, NULL, NULL, NULL, 1, 0);
+
+-- Helena Gentle smart ai
+SET @ENTRY := 124922;
+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, 54, 0, 100, 0, 0, 0, 0, 0, 0, 80, 12492200, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On just summoned - Self: Start timed action list id #Helena Gentle #0 (12492200) (update out of combat)', ''),
+(@ENTRY, 0, 1, 0, 34, 0, 100, 0, 2, 2, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On movement of type WAYPOINT_MOTION_TYPE inform, point 2 - Self: Despawn in 2 s', '');
+
+-- Timed list 12492200 smart ai
+SET @ENTRY := 12492200;
+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, 66, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 'After 0 seconds - Self: Look at Owner/Summoner', ''),
+(@ENTRY, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'After 0 seconds - Self: Set npc flags NONE', ''),
+(@ENTRY, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 18, 33088, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'After 0 seconds - Self: Set UNIT_FLAGS to UNK_6, IMMUNE_TO_PC, UNK_15', ''),
+(@ENTRY, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 4, 97669, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'After 0 seconds - Self: Play direct sound 97669 to every player in visibility range of Self', ''),
+(@ENTRY, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 137, 92075, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'After 0 seconds - Self: Plays SpellVisual with SpellVisualKitId: 92075, KitType: 0 for 0 ms', ''),
+(@ENTRY, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 128, 11827, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'After 0 seconds - Self: Plays Anim with ID 11827', ''),
+(@ENTRY, 9, 6, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 3, 0, 80590, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'After 0 seconds - Self: Morph to model 80590', ''),
+(@ENTRY, 9, 7, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 'After 2 seconds - Self: Talk 0 to Owner/Summoner', ''),
+(@ENTRY, 9, 8, 0, 0, 0, 100, 0, 8000, 8000, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'After 8 seconds - Self: Talk 1 to Self', ''),
+(@ENTRY, 9, 9, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 53, 0, 12492200, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'After 2 seconds - Self: Start path #12492200, walk, do not repeat, Passive', '');
+
+-- Path for Helena Gentle
+SET @ENTRY := 124922;
+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, 'Helena Gentle - 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, 67.24479, 1824.3473, 47.59773, NULL, 0),
+(@PATH, 1, 92.760414, 1818.4913, 45.201107, NULL, 0),
+(@PATH, 2, 108.10416, 1829.106, 49.258705, NULL, 0),
+(@PATH, 3, 116.32118, 1847.1858, 52.655987, NULL, 0);
diff --git a/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_1_the_final_effigy.cpp b/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_1_the_final_effigy.cpp
new file mode 100644
index 00000000000..994112352ca
--- /dev/null
+++ b/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_1_the_final_effigy.cpp
@@ -0,0 +1,52 @@
+/*
+ * 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 "CreatureAIImpl.h"
+#include "Player.h"
+#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
+
+enum WitchHuntData
+{
+ NPC_HELENA_GENTLE_HUMAN = 124922,
+
+ SPELL_TAKE_A_SEAT_CURSED = 248423
+};
+
+// EventID: 59332
+class event_listen_to_helenas_story : public EventScript
+{
+public:
+ event_listen_to_helenas_story() : EventScript("event_listen_to_helenas_story") {}
+
+ void OnTrigger(WorldObject* /*object*/, WorldObject* invoker, uint32 /*eventId*/) override
+ {
+ if (Player* player = invoker->ToPlayer())
+ {
+ player->CastSpell(player, SPELL_TAKE_A_SEAT_CURSED);
+
+ if (Creature* helenaObject = player->FindNearestCreatureWithOptions(25.0f, { .CreatureId = NPC_HELENA_GENTLE_HUMAN, .IgnorePhases = true }))
+ helenaObject->SummonPersonalClone(helenaObject->GetPosition(), TEMPSUMMON_MANUAL_DESPAWN, 0s, 0, 0, player);
+ }
+ }
+};
+
+void AddSC_drustvar_chapter_1_the_final_effigy()
+{
+ // EventScripts
+ new event_listen_to_helenas_story();
+}
diff --git a/src/server/scripts/KulTiras/kultiras_script_loader.cpp b/src/server/scripts/KulTiras/kultiras_script_loader.cpp
index 4bcbc4d68c0..a59e05d6ccb 100644
--- a/src/server/scripts/KulTiras/kultiras_script_loader.cpp
+++ b/src/server/scripts/KulTiras/kultiras_script_loader.cpp
@@ -19,6 +19,9 @@
void AddSC_zone_boralus();
+// Drustvar
+void AddSC_drustvar_chapter_1_the_final_effigy();
+
// Shrine of the Storm
void AddSC_boss_aqusirr();
void AddSC_instance_shrine_of_the_storm();
@@ -36,6 +39,9 @@ void AddKulTirasScripts()
{
AddSC_zone_boralus();
+ // Drustvar
+ AddSC_drustvar_chapter_1_the_final_effigy();
+
// Shrine of the Storm
AddSC_boss_aqusirr();
AddSC_instance_shrine_of_the_storm();