From cbc4301adeae850797fbbdba46a3245a89f32581 Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Mon, 23 Mar 2026 05:10:29 -0500 Subject: [PATCH] fix(DB/Scripts): CoS Stephanie Sindree and citizen now talk (#24045) Co-authored-by: blinkysc Co-authored-by: sudlud --- .../rev_1764894567538544452.sql | 12 ++++ .../culling_of_stratholme.cpp | 57 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1764894567538544452.sql diff --git a/data/sql/updates/pending_db_world/rev_1764894567538544452.sql b/data/sql/updates/pending_db_world/rev_1764894567538544452.sql new file mode 100644 index 000000000..a16068747 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1764894567538544452.sql @@ -0,0 +1,12 @@ +-- Add creature_text for Stephanie Sindree (31019) +DELETE FROM `creature_text` WHERE `CreatureID` = 31019; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(31019, 0, 0, 'It wasn''t my food!', 12, 0, 100, 6, 0, 0, 31838, 0, 'Stephanie Sindree - Stephanie Crowd'), +(31019, 1, 0, 'Please, it''s not my fault! If... if I give you a refund, maybe you can speak to a healer? I don''t know what you expect me to do!', 12, 0, 100, 20, 0, 0, 31840, 0, 'Stephanie Sindree - Stephanie Crowd'); + +-- Add creature_text for Agitated Stratholme Citizen (31126) - Stephanie Crowd +DELETE FROM `creature_text` WHERE `CreatureID` = 31126 AND `GroupID` IN (4, 5, 6); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(31126, 4, 0, 'My wife and children are sick in bed because of the poison you sold me!', 12, 0, 100, 5, 0, 0, 31837, 0, 'Agitated Stratholme Citizen - Stephanie Crowd'), +(31126, 5, 0, 'Don''t try to weasel out of this!', 12, 0, 100, 25, 0, 0, 31839, 0, 'Agitated Stratholme Citizen - Stephanie Crowd'), +(31126, 6, 0, 'That... no, keep your filthy money! It won''t help my family!', 12, 0, 100, 5, 0, 0, 31842, 0, 'Agitated Stratholme Citizen - Stephanie Crowd'); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp index 66b76a02e..7165323ce 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp @@ -176,6 +176,14 @@ enum Misc POINT_CHRONOS = 1, + // Stephanie Sindree crowd + NPC_STEPHANIE_SINDREE = 31019, + SAY_STEPHANIE_CROWD_1 = 4, + SAY_STEPHANIE_CROWD_2 = 5, + SAY_STEPHANIE_CROWD_3 = 6, + SAY_STEPHANIE_RESPONSE_1 = 0, + SAY_STEPHANIE_RESPONSE_2 = 1, + // Brandon Eiredeck crowd NPC_BRANDON_EIREDECK = 31023, SAY_BRANDON_CROWD_AMBIENT = 3, @@ -1526,6 +1534,10 @@ public: if (!pInstance || pInstance->GetData(DATA_ARTHAS_EVENT) < COS_PROGRESS_FINISHED_CITY_INTRO) allowTimer++; + isStephanieCrowd = me->GetEntry() == NPC_CITY_MAN3 && me->GetDistance(2149.56f, 1339.46f, 132.531f) < 10.0f; + stephanieDialogueTimer = isStephanieCrowd ? urand(5000, 15000) : 0; + stephanieDialoguePhase = 0; + isBrandonCrowd = me->GetDistance(2267.86f, 1144.93f, 138.403f) < 10.0f; ambientTalkTimer = isBrandonCrowd ? urand(5000, 15000) : 0; } @@ -1534,6 +1546,9 @@ public: uint32 changeTimer; InstanceScript* pInstance; uint32 allowTimer; + bool isStephanieCrowd; + uint32 stephanieDialogueTimer; + uint8 stephanieDialoguePhase; bool isBrandonCrowd; uint32 ambientTalkTimer; @@ -1596,6 +1611,48 @@ public: { ScriptedAI::UpdateAI(diff); + if (isStephanieCrowd && stephanieDialogueTimer) + { + if (stephanieDialogueTimer <= diff) + { + Creature* stephanie = me->FindNearestCreature(NPC_STEPHANIE_SINDREE, 10.0f); + switch (stephanieDialoguePhase) + { + case 0: + Talk(SAY_STEPHANIE_CROWD_1); + stephanieDialogueTimer = 5000; + stephanieDialoguePhase = 1; + break; + case 1: + if (stephanie) + stephanie->AI()->Talk(SAY_STEPHANIE_RESPONSE_1); + stephanieDialogueTimer = 5000; + stephanieDialoguePhase = 2; + break; + case 2: + Talk(SAY_STEPHANIE_CROWD_2); + stephanieDialogueTimer = 5000; + stephanieDialoguePhase = 3; + break; + case 3: + if (stephanie) + stephanie->AI()->Talk(SAY_STEPHANIE_RESPONSE_2); + stephanieDialogueTimer = 8000; + stephanieDialoguePhase = 4; + break; + case 4: + Talk(SAY_STEPHANIE_CROWD_3); + stephanieDialogueTimer = urand(45000, 60000); + stephanieDialoguePhase = 0; + break; + } + } + else + stephanieDialogueTimer -= diff; + + return; + } + if (isBrandonCrowd && ambientTalkTimer) { if (ambientTalkTimer <= diff)