|
| 1 | +-- DB update 2026_02_18_07 -> 2026_02_18_08 |
| 2 | +-- Fix Slaves to Saronite RP scripting (Issue #24157) |
| 3 | +-- https://github.com/azerothcore/azerothcore-wotlk/issues/24157 |
| 4 | +-- |
| 5 | +-- This PR was created with AI assistance (Windsurf/Cascade). |
| 6 | +-- |
| 7 | +-- Current behavior: |
| 8 | +-- - Script 3139700: Slave runs to freedom (working correctly) |
| 9 | +-- - Script 3139701: Slave yells and attacks (yelling is wrong per blizzlike) |
| 10 | +-- |
| 11 | +-- Blizzlike behavior per 2009 video evidence (https://www.youtube.com/watch?v=QeW_q-24Z28): |
| 12 | +-- 1. Slave silently runs to freedom |
| 13 | +-- 2. Slave emotes "goes into a frenzy!" and becomes hostile (NO yelling) |
| 14 | +-- 3. Slave yells one of their quotes and runs to pit to jump (NEW) |
| 15 | +-- |
| 16 | +-- Changes: |
| 17 | +-- 1. Gossip: cast 5429 on player; NpcFlags/EmoteState reset on respawn (template) |
| 18 | +-- 2. Add third random outcome (pit-jumping with yell); three pit waypoints per sniffs |
| 19 | +-- 3. Fix hostile behavior to use emote instead of yell |
| 20 | +-- 4. Fix /say messages language from Orcish to Universal |
| 21 | +-- 5. Add unknown voice whispers in Saronite Mines (spell_area 27769, area 4514) |
| 22 | +-- 6. Freedom path and pit coordinates from in-game research (Gultask) |
| 23 | +-- 7. Workaround (Gultask): run random script on gossip first, then cast 5429 on link; |
| 24 | +-- pit outcome sets phase 1 and UPDATE (event 60) picks random pit (no actionlist overlap). |
| 25 | + |
| 26 | +-- ============================================================================ |
| 27 | +-- 1. Gossip: Run random script first, then cast 5429 on link (fixes actionlist overlap). |
| 28 | +-- MovementInform (event 34, pointId 1/2/3): jump then despawn 4000ms. |
| 29 | +-- MovementInform pointId 4: freedom reached, despawn instant. |
| 30 | +-- UPDATE phase 1: run random pit (3139703/4/5) so 1/3 chance without nested actionlist. |
| 31 | +-- ============================================================================ |
| 32 | +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 31397); |
| 33 | +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`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES |
| 34 | +(31397, 0, 0, 1, 62, 0, 100, 512, 10137, 0, 0, 0, 0, 0, 87, 3139700, 3139701, 3139702, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - On Gossip Option Selected - Run Random Script'), |
| 35 | +(31397, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 5429, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - On Link - Cast 5429 on Player'), |
| 36 | +(31397, 0, 2, 0, 0, 0, 100, 0, 1000, 1000, 14000, 14000, 0, 0, 11, 3148, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - IC - Cast Head Crack'), |
| 37 | +(31397, 0, 3, 0, 1, 0, 15, 0, 10000, 30000, 50000, 70000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - OOC - Say text2'), |
| 38 | +(31397, 0, 4, 5, 34, 0, 100, 0, 8, 1, 0, 0, 0, 0, 97, 15, 15, 0, 0, 0, 0, 1, 0, 0, 0, 0, 6966.75, 2067.58, 482.553, 0, 'Saronite Mine Slave - On Reached Pit 1 - Jump To Pos'), |
| 39 | +(31397, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 4000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - On Reached Pit 1 - Despawn In 4000 ms'), |
| 40 | +(31397, 0, 6, 7, 34, 0, 100, 0, 8, 2, 0, 0, 0, 0, 97, 15, 15, 0, 0, 0, 0, 1, 0, 0, 0, 0, 6904.17, 2026.23, 482.964, 0, 'Saronite Mine Slave - On Reached Pit 2 - Jump To Pos'), |
| 41 | +(31397, 0, 7, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 4000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - On Reached Pit 2 - Despawn In 4000 ms'), |
| 42 | +(31397, 0, 8, 9, 34, 0, 100, 0, 8, 3, 0, 0, 0, 0, 97, 15, 15, 0, 0, 0, 0, 1, 0, 0, 0, 0, 6911.13, 1969.18, 488.24, 0, 'Saronite Mine Slave - On Reached Pit 3 - Jump To Pos'), |
| 43 | +(31397, 0, 9, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 4000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - On Reached Pit 3 - Despawn In 4000 ms'), |
| 44 | +(31397, 0, 10, 0, 60, 1, 100, 0, 1200, 1200, 0, 0, 0, 0, 87, 3139703, 3139704, 3139705, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - On Update Phase 1 - Run to Random Pit'), |
| 45 | +(31397, 0, 11, 0, 34, 0, 100, 0, 8, 4, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - On Reached Freedom - Despawn Instant'); |
| 46 | + |
| 47 | +-- ============================================================================ |
| 48 | +-- 2a. Freedom path: move to PointId 4 (7026.46, 1877.16, 533.62); MovementInform 4 despawns (31397 id 11). |
| 49 | +-- ============================================================================ |
| 50 | +DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 3139700); |
| 51 | +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`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES |
| 52 | +(3139700, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - Actionlist - Close Gossip'), |
| 53 | +(3139700, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - Actionlist - Remove Npc Flags Gossip'), |
| 54 | +(3139700, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 33, 31866, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Mine Slave - Actionlist - Quest Credit Slaves to Saronite'), |
| 55 | +(3139700, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 7026.46, 1877.16, 533.627, 0, 'Saronite Mine Slave - Actionlist - Move To Freedom PointId 4'); |
| 56 | + |
| 57 | +-- ============================================================================ |
| 58 | +-- 2b. Pit outcome: yell, set phase 1 (no quest credit; UPDATE event 60 on 31397 runs random pit). |
| 59 | +-- ============================================================================ |
| 60 | +DELETE FROM `smart_scripts` WHERE `entryorguid`=3139702 AND `source_type`=9; |
| 61 | +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`,`event_param6`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES |
| 62 | +(3139702,9,0,0,0,0,100,0,0,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,'Saronite Mine Slave - On Script - Close Gossip'), |
| 63 | +(3139702,9,1,0,0,0,100,0,0,0,0,0,0,0,83,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Saronite Mine Slave - On Script - Remove NPC Flag'), |
| 64 | +(3139702,9,2,0,0,0,100,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Saronite Mine Slave - On Script - Yell (GroupID 0)'), |
| 65 | +(3139702,9,3,0,0,0,100,0,0,0,0,0,0,0,59,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Saronite Mine Slave - On Script - Set Run On'), |
| 66 | +(3139702,9,4,0,0,0,100,0,0,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Saronite Mine Slave - On Script - Set Event Phase 1'); |
| 67 | + |
| 68 | +-- Pit scripts: only Move to Pos with PointId; MovementInform on 31397 handles jump + despawn |
| 69 | +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (3139703,3139704,3139705) AND `source_type`=9; |
| 70 | +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`,`event_param6`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES |
| 71 | +(3139703,9,0,0,0,0,100,0,0,0,0,0,0,0,69,1,0,0,0,0,0,8,0,0,0,0,6966.371,2050.5237,519.42505,0,'Pit 1 - Move to pos PointId 1'), |
| 72 | +(3139704,9,0,0,0,0,100,0,0,0,0,0,0,0,69,2,0,0,0,0,0,8,0,0,0,0,6915.9272,2025.5466,518.6113,0,'Pit 2 - Move to pos PointId 2'), |
| 73 | +(3139705,9,0,0,0,0,100,0,0,0,0,0,0,0,69,3,0,0,0,0,0,8,0,0,0,0,6921.0854,1972.6857,523.33716,0,'Pit 3 - Move to pos PointId 3'); |
| 74 | + |
| 75 | +-- ============================================================================ |
| 76 | +-- 3. Fix hostile behavior: emote "goes into a frenzy!" instead of yelling |
| 77 | +-- ============================================================================ |
| 78 | + |
| 79 | +-- Add emote text (Type 16 = CHAT_MSG_MONSTER_EMOTE) |
| 80 | +DELETE FROM `creature_text` WHERE `CreatureID`=31397 AND `GroupID`=2; |
| 81 | +INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES |
| 82 | +(31397,2,0,'%s goes into a frenzy!',16,0,100,0,0,0,36719,0,'Saronite Mine Slave - Frenzy Emote'); |
| 83 | + |
| 84 | +-- Update hostile script to use emote (GroupID 2) instead of yell (GroupID 0) |
| 85 | +DELETE FROM `smart_scripts` WHERE `entryorguid`=3139701 AND `source_type`=9; |
| 86 | +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`,`event_param6`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES |
| 87 | +(3139701,9,0,0,0,0,100,0,0,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,'Saronite Mine Slave - On Script - Close Gossip'), |
| 88 | +(3139701,9,1,0,0,0,100,0,0,0,0,0,0,0,2,14,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Saronite Mine Slave - On Script - Set Faction Hostile'), |
| 89 | +(3139701,9,2,0,0,0,100,0,0,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Saronite Mine Slave - On Script - Emote (GroupID 2 - frenzy)'), |
| 90 | +(3139701,9,3,0,0,0,100,0,0,0,0,0,0,0,49,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,'Saronite Mine Slave - On Script - Attack'), |
| 91 | +(3139701,9,4,0,0,0,100,0,0,0,0,0,0,0,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Saronite Mine Slave - On Script - Cast Enrage'); |
| 92 | + |
| 93 | +-- ============================================================================ |
| 94 | +-- 4. Fix /say messages language from Orcish (1) to Universal (0) |
| 95 | +-- ============================================================================ |
| 96 | +UPDATE `creature_text` SET `Language`=0 WHERE `CreatureID`=31397 AND `GroupID`=1; |
| 97 | + |
| 98 | +-- ============================================================================ |
| 99 | +-- 5. Unknown voice whispers in Saronite Mines (same as Whisper Gulch) |
| 100 | +-- ============================================================================ |
| 101 | +DELETE FROM `spell_area` WHERE `spell` = 27769 AND `area` = 4514; |
| 102 | +INSERT INTO `spell_area` (`spell`,`area`,`quest_start`,`quest_end`,`aura_spell`,`racemask`,`gender`,`autocast`,`quest_start_status`,`quest_end_status`) VALUES |
| 103 | +(27769,4514,0,0,0,0,2,1,64,11); |
0 commit comments