From 6df7a6f4145d5cb229b4fdebbd18e197ad98de7e Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Sun, 2 Aug 2026 08:17:41 +0200 Subject: [PATCH] fix(DB/Script): Rewrite A Special Surprise Quest event using SmartAI. (#26861) --- .../pending_db_world/rev_1785326682.sql | 132 +++++++++++++ .../zone_the_scarlet_enclave.cpp | 176 ------------------ 2 files changed, 132 insertions(+), 176 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1785326682.sql diff --git a/data/sql/updates/pending_db_world/rev_1785326682.sql b/data/sql/updates/pending_db_world/rev_1785326682.sql new file mode 100644 index 000000000..cf1e04acd --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1785326682.sql @@ -0,0 +1,132 @@ + +-- Set Right Emotes. +UPDATE `creature_text` SET `Emote` = 1 WHERE (`CreatureID` IN (29032, 29061, 29065, 29067, 29068, 29070, 29071, 29072, 29073, 29074)) AND (`GroupID` IN (0, 2, 3, 4, 5, 6, 7, 8)); +UPDATE `creature_text` SET `Emote` = 25 WHERE (`CreatureID` IN (29032, 29061, 29065, 29067, 29068, 29070, 29071, 29072, 29073, 29074)) AND (`GroupID` IN (1)); + +-- Deactive RegenHealth. +UPDATE `creature_template` SET `RegenHealth` = 0 WHERE (`entry` IN (29032, 29061, 29065, 29067, 29068, 29070, 29071, 29072, 29073, 29074)); + +-- Set Curhealth to 30%. +UPDATE `creature` SET `curhealth` = 3 WHERE (`id` IN (29032, 29061, 29065, 29067, 29068, 29070, 29071, 29072, 29073, 29074)); + +-- Remove Script Name and Enable SAI. +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE (`entry` IN (29032, 29061, 29065, 29067, 29068, 29070, 29071, 29072, 29073, 29074)); + +-- Set SAI. +DELETE FROM `smart_scripts` WHERE (`source_type` = 0) AND (`entryorguid` IN (29032, 29061, 29065, 29067, 29068, 29070, 29071, 29072, 29073, 29074)); +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 +(29032, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Malar Bravehorn - On Respawn - Set Flags Immune To Players'), +(29032, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Malar Bravehorn - On Respawn - Set Flag Standstate Kneel'), +(29032, 0, 2, 0, 61, 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, 'Malar Bravehorn - On Respawn - Set Event Phase 1'), +(29032, 0, 3, 4, 10, 0, 100, 257, 1, 3, 0, 0, 1, 0, 64, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Malar Bravehorn - On Out of Combat LoS - Store Targetlist (No Repeat)'), +(29032, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Malar Bravehorn - On Out of Combat LoS - Set Event Phase 2 (No Repeat)'), +(29032, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2907400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Malar Bravehorn - On Out of Combat LoS - Run Script (No Repeat)'), +(29032, 0, 6, 0, 1, 1, 100, 0, 30000, 60000, 30000, 60000, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Malar Bravehorn - Out of Combat - Play Emote 18 (Phase 1)'), +(29061, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ellen Stanbridge - On Respawn - Set Flags Immune To Players'), +(29061, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ellen Stanbridge - On Respawn - Set Flag Standstate Kneel'), +(29061, 0, 2, 0, 61, 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, 'Ellen Stanbridge - On Respawn - Set Event Phase 1'), +(29061, 0, 3, 4, 10, 0, 100, 257, 1, 3, 0, 0, 1, 0, 64, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Ellen Stanbridge - On Out of Combat LoS - Store Targetlist (No Repeat)'), +(29061, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ellen Stanbridge - On Out of Combat LoS - Set Event Phase 2 (No Repeat)'), +(29061, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2907400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ellen Stanbridge - On Out of Combat LoS - Run Script (No Repeat)'), +(29061, 0, 6, 0, 1, 1, 100, 0, 30000, 60000, 30000, 60000, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ellen Stanbridge - Out of Combat - Play Emote 18 (Phase 1)'), +(29065, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Yazmina Oakenthorn - On Respawn - Set Flags Immune To Players'), +(29065, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Yazmina Oakenthorn - On Respawn - Set Flag Standstate Kneel'), +(29065, 0, 2, 0, 61, 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, 'Yazmina Oakenthorn - On Respawn - Set Event Phase 1'), +(29065, 0, 3, 4, 10, 0, 100, 257, 1, 3, 0, 0, 1, 0, 64, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Yazmina Oakenthorn - On Out of Combat LoS - Store Targetlist (No Repeat)'), +(29065, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Yazmina Oakenthorn - On Out of Combat LoS - Set Event Phase 2 (No Repeat)'), +(29065, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2907400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Yazmina Oakenthorn - On Out of Combat LoS - Run Script (No Repeat)'), +(29065, 0, 6, 0, 1, 1, 100, 0, 30000, 60000, 30000, 60000, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Yazmina Oakenthorn - Out of Combat - Play Emote 18 (Phase 1)'), +(29067, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Donovan Pulfrost - On Respawn - Set Flags Immune To Players'), +(29067, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Donovan Pulfrost - On Respawn - Set Flag Standstate Kneel'), +(29067, 0, 2, 0, 61, 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, 'Donovan Pulfrost - On Respawn - Set Event Phase 1'), +(29067, 0, 3, 4, 10, 0, 100, 257, 1, 3, 0, 0, 1, 0, 64, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Donovan Pulfrost - On Out of Combat LoS - Store Targetlist (No Repeat)'), +(29067, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Donovan Pulfrost - On Out of Combat LoS - Set Event Phase 2 (No Repeat)'), +(29067, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2907400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Donovan Pulfrost - On Out of Combat LoS - Run Script (No Repeat)'), +(29067, 0, 6, 0, 1, 1, 100, 0, 30000, 60000, 30000, 60000, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Donovan Pulfrost - Out of Combat - Play Emote 18 (Phase 1)'), +(29068, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Goby Blastenheimer - On Respawn - Set Flags Immune To Players'), +(29068, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Goby Blastenheimer - On Respawn - Set Flag Standstate Kneel'), +(29068, 0, 2, 0, 61, 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, 'Goby Blastenheimer - On Respawn - Set Event Phase 1'), +(29068, 0, 3, 4, 10, 0, 100, 257, 1, 3, 0, 0, 1, 0, 64, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Goby Blastenheimer - On Out of Combat LoS - Store Targetlist (No Repeat)'), +(29068, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Goby Blastenheimer - On Out of Combat LoS - Set Event Phase 2 (No Repeat)'), +(29068, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2907400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Goby Blastenheimer - On Out of Combat LoS - Run Script (No Repeat)'), +(29068, 0, 6, 0, 1, 1, 100, 0, 30000, 60000, 30000, 60000, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Goby Blastenheimer - Out of Combat - Play Emote 18 (Phase 1)'), +(29070, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Valok the Righteous - On Respawn - Set Flags Immune To Players'), +(29070, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Valok the Righteous - On Respawn - Set Flag Standstate Kneel'), +(29070, 0, 2, 0, 61, 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, 'Valok the Righteous - On Respawn - Set Event Phase 1'), +(29070, 0, 3, 4, 10, 0, 100, 257, 1, 3, 0, 0, 1, 0, 64, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Valok the Righteous - On Out of Combat LoS - Store Targetlist (No Repeat)'), +(29070, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Valok the Righteous - On Out of Combat LoS - Set Event Phase 2 (No Repeat)'), +(29070, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2907400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Valok the Righteous - On Out of Combat LoS - Run Script (No Repeat)'), +(29070, 0, 6, 0, 1, 1, 100, 0, 30000, 60000, 30000, 60000, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Valok the Righteous - Out of Combat - Play Emote 18 (Phase 1)'), +(29071, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Antoine Brack - On Respawn - Set Flags Immune To Players'), +(29071, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Antoine Brack - On Respawn - Set Flag Standstate Kneel'), +(29071, 0, 2, 0, 61, 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, 'Antoine Brack - On Respawn - Set Event Phase 1'), +(29071, 0, 3, 4, 10, 0, 100, 257, 1, 3, 0, 0, 1, 0, 64, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Antoine Brack - On Out of Combat LoS - Store Targetlist (No Repeat)'), +(29071, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Antoine Brack - On Out of Combat LoS - Set Event Phase 2 (No Repeat)'), +(29071, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2907400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Antoine Brack - On Out of Combat LoS - Run Script (No Repeat)'), +(29071, 0, 6, 0, 1, 1, 100, 0, 30000, 60000, 30000, 60000, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Antoine Brack - Out of Combat - Play Emote 18 (Phase 1)'), +(29072, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kug Ironjaw - On Respawn - Set Flags Immune To Players'), +(29072, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kug Ironjaw - On Respawn - Set Flag Standstate Kneel'), +(29072, 0, 2, 0, 61, 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, 'Kug Ironjaw - On Respawn - Set Event Phase 1'), +(29072, 0, 3, 4, 10, 0, 100, 257, 1, 3, 0, 0, 1, 0, 64, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Kug Ironjaw - On Out of Combat LoS - Store Targetlist (No Repeat)'), +(29072, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kug Ironjaw - On Out of Combat LoS - Set Event Phase 2 (No Repeat)'), +(29072, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2907400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kug Ironjaw - On Out of Combat LoS - Run Script (No Repeat)'), +(29072, 0, 6, 0, 1, 1, 100, 0, 30000, 60000, 30000, 60000, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kug Ironjaw - Out of Combat - Play Emote 18 (Phase 1)'), +(29073, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iggy Darktusk - On Respawn - Set Flags Immune To Players'), +(29073, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iggy Darktusk - On Respawn - Set Flag Standstate Kneel'), +(29073, 0, 2, 0, 61, 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, 'Iggy Darktusk - On Respawn - Set Event Phase 1'), +(29073, 0, 3, 4, 10, 0, 100, 257, 1, 3, 0, 0, 1, 0, 64, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Iggy Darktusk - On Out of Combat LoS - Store Targetlist (No Repeat)'), +(29073, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iggy Darktusk - On Out of Combat LoS - Set Event Phase 2 (No Repeat)'), +(29073, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2907400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iggy Darktusk - On Out of Combat LoS - Run Script (No Repeat)'), +(29073, 0, 6, 0, 1, 1, 100, 0, 30000, 60000, 30000, 60000, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iggy Darktusk - Out of Combat - Play Emote 18 (Phase 1)'), +(29074, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - On Respawn - Set Flags Immune To Players'), +(29074, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - On Respawn - Set Flag Standstate Kneel'), +(29074, 0, 2, 0, 61, 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, 'Lady Eonys - On Respawn - Set Event Phase 1'), +(29074, 0, 3, 4, 10, 0, 100, 257, 1, 3, 0, 0, 1, 0, 64, 25, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - On Out of Combat LoS - Store Targetlist (No Repeat)'), +(29074, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - On Out of Combat LoS - Set Event Phase 2 (No Repeat)'), +(29074, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2907400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - On Out of Combat LoS - Run Script (No Repeat)'), +(29074, 0, 6, 0, 1, 1, 100, 0, 30000, 60000, 30000, 60000, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Out of Combat - Play Emote 18 (Phase 1)'); + +-- Set Action List (Used by all the Creatures). +DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 2907400); +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 +(2907400, 9, 0, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Say Line 0'), +(2907400, 9, 1, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Remove FlagStandstate Kneel'), +(2907400, 9, 2, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Say Line 1'), +(2907400, 9, 3, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Say Line 2'), +(2907400, 9, 4, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Say Line 3'), +(2907400, 9, 5, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Say Line 4'), +(2907400, 9, 6, 0, 0, 0, 100, 0, 8000, 8000, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Say Line 5'), +(2907400, 9, 7, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 0, 0, 5, 274, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Play Emote 274'), +(2907400, 9, 8, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Say Line 6'), +(2907400, 9, 9, 0, 0, 0, 100, 0, 9000, 9000, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Play Emote 5'), +(2907400, 9, 10, 0, 0, 0, 100, 0, 4500, 4500, 0, 0, 0, 0, 100, 25, 0, 0, 0, 0, 0, 10, 129947, 29053, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Send Target 25'), +(2907400, 9, 11, 0, 0, 0, 100, 0, 500, 500, 0, 0, 0, 0, 223, 25, 0, 0, 0, 0, 0, 10, 129947, 29053, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Do Action ID 25'), +(2907400, 9, 12, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Say Line 7'), +(2907400, 9, 13, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Set Reactstate Passive'), +(2907400, 9, 14, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 0, 5, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Play Emote 18'), +(2907400, 9, 15, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Set Flag Standstate Kneel'), +(2907400, 9, 16, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 19, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Remove Flags Immune To Players'), +(2907400, 9, 17, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Say Line 8'), +(2907400, 9, 18, 0, 0, 0, 100, 0, 30000, 30000, 0, 0, 0, 0, 1, 9, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Say Line 9'), +(2907400, 9, 19, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Eonys - Actionlist - Kill Self'); + +-- Set Plaguefist SAI. +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 29053; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 29053); +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 +(29053, 0, 0, 0, 72, 0, 100, 0, 25, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 'Knight Commander Plaguefist - On Action 25 Done - Say Line 0'); + +-- Set Conditions +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceGroup` = 4) AND (`SourceEntry` IN (29032, 29061, 29065, 29067, 29068, 29070, 29071, 29072, 29073, 29074)) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 47) AND (`ConditionTarget` = 0) AND (`ConditionValue1` IN (12739, 12742, 12743, 12744, 12745, 12746, 12750, 12748, 12749, 12747)) AND (`ConditionValue2` = 8) AND (`ConditionValue3` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 4, 29032, 0, 0, 47, 0, 12739, 8, 0, 0, 0, 0, '', 'The event will only occur when the player has the "A Special Surprise" (Tauren) quest incomplete.'), +(22, 4, 29061, 0, 0, 47, 0, 12742, 8, 0, 0, 0, 0, '', 'The event will only occur when the player has the "A Special Surprise" (Human) quest incomplete.'), +(22, 4, 29065, 0, 0, 47, 0, 12743, 8, 0, 0, 0, 0, '', 'The event will only occur when the player has the "A Special Surprise" (Night Elf) quest incomplete.'), +(22, 4, 29067, 0, 0, 47, 0, 12744, 8, 0, 0, 0, 0, '', 'The event will only occur when the player has the "A Special Surprise" (Dwarf) quest incomplete.'), +(22, 4, 29068, 0, 0, 47, 0, 12745, 8, 0, 0, 0, 0, '', 'The event will only occur when the player has the "A Special Surprise" (Gnome) quest incomplete.'), +(22, 4, 29070, 0, 0, 47, 0, 12746, 8, 0, 0, 0, 0, '', 'The event will only occur when the player has the "A Special Surprise" (Draenei) quest incomplete.'), +(22, 4, 29071, 0, 0, 47, 0, 12750, 8, 0, 0, 0, 0, '', 'The event will only occur when the player has the "A Special Surprise" (Undead) quest incomplete.'), +(22, 4, 29072, 0, 0, 47, 0, 12748, 8, 0, 0, 0, 0, '', 'The event will only occur when the player has the "A Special Surprise" (Orc) quest incomplete.'), +(22, 4, 29073, 0, 0, 47, 0, 12749, 8, 0, 0, 0, 0, '', 'The event will only occur when the player has the "A Special Surprise" (Troll) quest incomplete.'), +(22, 4, 29074, 0, 0, 47, 0, 12747, 8, 0, 0, 0, 0, '', 'The event will only occur when the player has the "A Special Surprise" (Blood Elf) quest incomplete.'); diff --git a/src/server/scripts/EasternKingdoms/zone_the_scarlet_enclave.cpp b/src/server/scripts/EasternKingdoms/zone_the_scarlet_enclave.cpp index 27a9ac07a..2bcdf520a 100644 --- a/src/server/scripts/EasternKingdoms/zone_the_scarlet_enclave.cpp +++ b/src/server/scripts/EasternKingdoms/zone_the_scarlet_enclave.cpp @@ -779,181 +779,6 @@ struct npc_scarlet_courier : public ScriptedAI } }; -/*###### -## Various NPCs AI -## Quest: A Special Surprise -## Note: Used by 29032, 29061, 29065, 29067, 29068, 29070, 29074, 29072, 29073, 29071 but signed for 29032 -######*/ - -enum SpecialSurprise -{ - SAY_EXEC_START = 0, - SAY_EXEC_PROG = 1, - SAY_EXEC_NAME = 2, - SAY_EXEC_RECOG = 3, - SAY_EXEC_NOREM = 4, - SAY_EXEC_THINK = 5, - SAY_EXEC_LISTEN = 6, - SAY_EXEC_TIME = 7, - SAY_EXEC_WAITING = 8, - EMOTE_DIES = 9, - - SAY_PLAGUEFIST = 0, - NPC_PLAGUEFIST = 29053 -}; - -struct npc_a_special_surprise : public ScriptedAI -{ - npc_a_special_surprise(Creature* creature) : ScriptedAI(creature) { } - - uint32 ExecuteSpeech_Timer; - uint32 ExecuteSpeech_Counter; - ObjectGuid PlayerGUID; - - void Reset() override - { - ExecuteSpeech_Timer = 0; - ExecuteSpeech_Counter = 0; - PlayerGUID.Clear(); - - me->SetReactState(REACT_PASSIVE); - me->SetImmuneToPC(true); - } - - bool MeetQuestCondition(Player* player) - { - switch (me->GetEntry()) - { - case 29061: // Ellen Stanbridge - if (player->GetQuestStatus(12742) == QUEST_STATUS_INCOMPLETE) - return true; - break; - case 29072: // Kug Ironjaw - if (player->GetQuestStatus(12748) == QUEST_STATUS_INCOMPLETE) - return true; - break; - case 29067: // Donovan Pulfrost - if (player->GetQuestStatus(12744) == QUEST_STATUS_INCOMPLETE) - return true; - break; - case 29065: // Yazmina Oakenthorn - if (player->GetQuestStatus(12743) == QUEST_STATUS_INCOMPLETE) - return true; - break; - case 29071: // Antoine Brack - if (player->GetQuestStatus(12750) == QUEST_STATUS_INCOMPLETE) - return true; - break; - case 29032: // Malar Bravehorn - if (player->GetQuestStatus(12739) == QUEST_STATUS_INCOMPLETE) - return true; - break; - case 29068: // Goby Blastenheimer - if (player->GetQuestStatus(12745) == QUEST_STATUS_INCOMPLETE) - return true; - break; - case 29073: // Iggy Darktusk - if (player->GetQuestStatus(12749) == QUEST_STATUS_INCOMPLETE) - return true; - break; - case 29074: // Lady Eonys - if (player->GetQuestStatus(12747) == QUEST_STATUS_INCOMPLETE) - return true; - break; - case 29070: // Valok the Righteous - if (player->GetQuestStatus(12746) == QUEST_STATUS_INCOMPLETE) - return true; - break; - } - - return false; - } - - void MoveInLineOfSight(Unit* who) override - - { - if (PlayerGUID || !who->IsPlayer() || !who->IsWithinDist(me, INTERACTION_DISTANCE)) - return; - - if (MeetQuestCondition(who->ToPlayer())) - PlayerGUID = who->GetGUID(); - } - - void UpdateAI(uint32 diff) override - { - if (PlayerGUID && !me->GetVictim() && me->IsAlive()) - { - if (ExecuteSpeech_Timer <= diff) - { - Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); - - if (!player) - { - Reset(); - return; - } - - switch (ExecuteSpeech_Counter) - { - case 0: - Talk(SAY_EXEC_START, player); - break; - case 1: - me->SetStandState(UNIT_STAND_STATE_STAND); - break; - case 2: - Talk(SAY_EXEC_PROG, player); - break; - case 3: - Talk(SAY_EXEC_NAME, player); - break; - case 4: - Talk(SAY_EXEC_RECOG, player); - break; - case 5: - Talk(SAY_EXEC_NOREM, player); - break; - case 6: - Talk(SAY_EXEC_THINK, player); - break; - case 7: - Talk(SAY_EXEC_LISTEN, player); - break; - case 8: - if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - { - Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player); - } - break; - case 9: - Talk(SAY_EXEC_TIME, player); - me->SetStandState(UNIT_STAND_STATE_KNEEL); - me->SetReactState(REACT_PASSIVE); - me->SetImmuneToPC(false); - break; - case 10: - Talk(SAY_EXEC_WAITING, player); - break; - case 11: - Talk(EMOTE_DIES); - me->setDeathState(DeathState::JustDied); - me->SetHealth(0); - return; - } - - if (ExecuteSpeech_Counter >= 9) - ExecuteSpeech_Timer = 15000; - else - ExecuteSpeech_Timer = 7000; - - ++ExecuteSpeech_Counter; - } - else - ExecuteSpeech_Timer -= diff; - } - } -}; - /*###### ## Gothik the Harvester and Acherus Necromancer AI ## Phase 4 Internal Mechanics. @@ -2938,7 +2763,6 @@ void AddSC_the_scarlet_enclave() RegisterCreatureAI(npc_dkc1_gothik); RegisterCreatureAI(npc_scarlet_courier); RegisterCreatureAI(npc_koltira_deathweaver); - RegisterCreatureAI(npc_a_special_surprise); RegisterCreatureAI(npc_acherus_necromancer); RegisterCreatureAI(npc_gothik_the_harvester); RegisterCreatureAI(npc_highlord_darion_mograine);