From 13b53e740c813994a08b90586d533c89a3f7e433 Mon Sep 17 00:00:00 2001 From: neifion-00000000 <91289495+neifion-00000000@users.noreply.github.com> Date: Wed, 19 Apr 2023 11:07:20 -0500 Subject: [PATCH 01/14] fix(DB/Loot): Remove Head of Ortor of Murkblood from pickpocketing loot (#16015) --- data/sql/updates/pending_db_world/rev_1681888475108592400.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1681888475108592400.sql diff --git a/data/sql/updates/pending_db_world/rev_1681888475108592400.sql b/data/sql/updates/pending_db_world/rev_1681888475108592400.sql new file mode 100644 index 000000000..ac44fccd2 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1681888475108592400.sql @@ -0,0 +1,3 @@ +-- +-- Remove erronous pickpocket loot +DELETE FROM `pickpocketing_loot_template` WHERE `Entry`=18204 AND `Item`=24543; From a71aaaf4d39150fdf4fd76a804cba80fd699a500 Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Wed, 19 Apr 2023 19:07:41 +0300 Subject: [PATCH 02/14] fix(DB/SAI): Bogblossom trap - knockback and despawn. (#16003) * fix(DB/SAI): Bogblossom trap - knockback and despawn. https: //github.com/TrinityCore/TrinityCore/commit/6fc2c62883b18be58201608848dadf348d1d91fe Co-Authored-By: offl <11556157+offl@users.noreply.github.com> * Update data/sql/updates/pending_db_world/rev_1681824132109329700.sql * Update data/sql/updates/pending_db_world/rev_1681824132109329700.sql --------- Co-authored-by: offl <11556157+offl@users.noreply.github.com> --- .../rev_1681824132109329700.sql | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1681824132109329700.sql diff --git a/data/sql/updates/pending_db_world/rev_1681824132109329700.sql b/data/sql/updates/pending_db_world/rev_1681824132109329700.sql new file mode 100644 index 000000000..528aba4e4 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1681824132109329700.sql @@ -0,0 +1,17 @@ +-- Bogblossom Bunny SAI (Source: https://www.youtube.com/watch?v=EIFhKHtvOe0) +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 23104; +DELETE FROM `smart_scripts` WHERE `entryorguid` = 23104 AND `source_type` = 0; +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`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(23104,0,0,1,54,0,100,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Bogblossom Bunny - On Just Summoned - Say Line 0'), +(23104,0,1,0,61,0,100,0,0,0,0,0,0,11,40532,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Bogblossom Bunny - On Link - Cast \'Bogblossom Knockback\''); + +DELETE FROM `creature_text` WHERE `CreatureID` = 23104; +INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES +(23104,0,0,"The bogblossom explodes, spraying pollen wildly.",16,0,100,0,0,0,20932,0,'Bogblossom Bunny'); + +-- 185500 (Bogblossom) +UPDATE `gameobject_template` SET `AIName` = 'SmartGameObjectAI' WHERE `entry` = 185500 ; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 1 AND `entryorguid` = 185500 ); +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`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(185500 , 1, 0, 0, 70, 0, 100, 0, 2, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bogblossom - On Gameobject State Changed - Despawn In 1000 ms'); From 0c6fda822a38b02fb17c003497a1fc9f50e414cf Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 19 Apr 2023 16:10:08 +0000 Subject: [PATCH 03/14] chore(DB): import pending files Referenced commit(s): a71aaaf4d39150fdf4fd76a804cba80fd699a500 --- .../rev_1681824132109329700.sql => db_world/2023_04_19_29.sql} | 1 + .../rev_1681888475108592400.sql => db_world/2023_04_19_30.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/rev_1681824132109329700.sql => db_world/2023_04_19_29.sql} (97%) rename data/sql/updates/{pending_db_world/rev_1681888475108592400.sql => db_world/2023_04_19_30.sql} (72%) diff --git a/data/sql/updates/pending_db_world/rev_1681824132109329700.sql b/data/sql/updates/db_world/2023_04_19_29.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1681824132109329700.sql rename to data/sql/updates/db_world/2023_04_19_29.sql index 528aba4e4..a2952e6ec 100644 --- a/data/sql/updates/pending_db_world/rev_1681824132109329700.sql +++ b/data/sql/updates/db_world/2023_04_19_29.sql @@ -1,3 +1,4 @@ +-- DB update 2023_04_19_28 -> 2023_04_19_29 -- Bogblossom Bunny SAI (Source: https://www.youtube.com/watch?v=EIFhKHtvOe0) UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 23104; DELETE FROM `smart_scripts` WHERE `entryorguid` = 23104 AND `source_type` = 0; diff --git a/data/sql/updates/pending_db_world/rev_1681888475108592400.sql b/data/sql/updates/db_world/2023_04_19_30.sql similarity index 72% rename from data/sql/updates/pending_db_world/rev_1681888475108592400.sql rename to data/sql/updates/db_world/2023_04_19_30.sql index ac44fccd2..8375e98eb 100644 --- a/data/sql/updates/pending_db_world/rev_1681888475108592400.sql +++ b/data/sql/updates/db_world/2023_04_19_30.sql @@ -1,3 +1,4 @@ +-- DB update 2023_04_19_29 -> 2023_04_19_30 -- -- Remove erronous pickpocket loot DELETE FROM `pickpocketing_loot_template` WHERE `Entry`=18204 AND `Item`=24543; From aef6d0b1a98204fca38d4c85bceff54e52965208 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Wed, 19 Apr 2023 10:28:59 -0600 Subject: [PATCH 04/14] fix(DB/Creature): Spitelash Serpent Guard equipment (#16036) --- data/sql/updates/pending_db_world/rev_1681920717306872200.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1681920717306872200.sql diff --git a/data/sql/updates/pending_db_world/rev_1681920717306872200.sql b/data/sql/updates/pending_db_world/rev_1681920717306872200.sql new file mode 100644 index 000000000..75c7e22fa --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1681920717306872200.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_equip_template` SET `ItemID2` = 0 WHERE `CreatureID` = 6194; From 9fe478e991b5a91a6052f408ec73a8e003436271 Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Wed, 19 Apr 2023 19:29:38 +0300 Subject: [PATCH 05/14] fix(DB/Conditions): Costume Scraps not having quest status requirements. (#15929) * fix(DB/Conditions): Costume Scraps not having quest status requirements. * Update data/sql/updates/pending_db_world/rev_1681332432499578800.sql --- .../pending_db_world/rev_1681332432499578800.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1681332432499578800.sql diff --git a/data/sql/updates/pending_db_world/rev_1681332432499578800.sql b/data/sql/updates/pending_db_world/rev_1681332432499578800.sql new file mode 100644 index 000000000..899b55ec7 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1681332432499578800.sql @@ -0,0 +1,10 @@ +-- Costume Scraps +DELETE FROM `conditions` WHERE `SourceGroup` IN (21383,21382,21492,21810,22308,21809,21637) AND `SourceEntry` = 31121 AND `SourceTypeOrReferenceId` = 1; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(1, 21383, 31121, 0, 0, 47, 0, 10722, 74, 0, 0, 0, 0, '', 'Allow obtaining Costume Scraps only if quest \'Meeting at the Blackwing Coven\' is complete, in progress or have been rewarded.'), +(1, 21382, 31121, 0, 0, 47, 0, 10722, 74, 0, 0, 0, 0, '', 'Allow obtaining Costume Scraps only if quest \'Meeting at the Blackwing Coven\' is complete, in progress or have been rewarded.'), +(1, 21492, 31121, 0, 0, 47, 0, 10722, 74, 0, 0, 0, 0, '', 'Allow obtaining Costume Scraps only if quest \'Meeting at the Blackwing Coven\' is complete, in progress or have been rewarded.'), +(1, 21810, 31121, 0, 0, 47, 0, 10722, 74, 0, 0, 0, 0, '', 'Allow obtaining Costume Scraps only if quest \'Meeting at the Blackwing Coven\' is complete, in progress or have been rewarded.'), +(1, 22308, 31121, 0, 0, 47, 0, 10722, 74, 0, 0, 0, 0, '', 'Allow obtaining Costume Scraps only if quest \'Meeting at the Blackwing Coven\' is complete, in progress or have been rewarded.'), +(1, 21809, 31121, 0, 0, 47, 0, 10722, 74, 0, 0, 0, 0, '', 'Allow obtaining Costume Scraps only if quest \'Meeting at the Blackwing Coven\' is complete, in progress or have been rewarded.'), +(1, 21637, 31121, 0, 0, 47, 0, 10722, 74, 0, 0, 0, 0, '', 'Allow obtaining Costume Scraps only if quest \'Meeting at the Blackwing Coven\' is complete, in progress or have been rewarded.'); From 4fc1cb3d91f6d36ff453b224b27a67ae67b7dbfc Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 19 Apr 2023 16:32:12 +0000 Subject: [PATCH 06/14] chore(DB): import pending files Referenced commit(s): 9fe478e991b5a91a6052f408ec73a8e003436271 --- .../rev_1681332432499578800.sql => db_world/2023_04_19_31.sql} | 1 + .../rev_1681920717306872200.sql => db_world/2023_04_19_32.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/rev_1681332432499578800.sql => db_world/2023_04_19_31.sql} (97%) rename data/sql/updates/{pending_db_world/rev_1681920717306872200.sql => db_world/2023_04_19_32.sql} (64%) diff --git a/data/sql/updates/pending_db_world/rev_1681332432499578800.sql b/data/sql/updates/db_world/2023_04_19_31.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1681332432499578800.sql rename to data/sql/updates/db_world/2023_04_19_31.sql index 899b55ec7..3bb1e0208 100644 --- a/data/sql/updates/pending_db_world/rev_1681332432499578800.sql +++ b/data/sql/updates/db_world/2023_04_19_31.sql @@ -1,3 +1,4 @@ +-- DB update 2023_04_19_30 -> 2023_04_19_31 -- Costume Scraps DELETE FROM `conditions` WHERE `SourceGroup` IN (21383,21382,21492,21810,22308,21809,21637) AND `SourceEntry` = 31121 AND `SourceTypeOrReferenceId` = 1; INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES diff --git a/data/sql/updates/pending_db_world/rev_1681920717306872200.sql b/data/sql/updates/db_world/2023_04_19_32.sql similarity index 64% rename from data/sql/updates/pending_db_world/rev_1681920717306872200.sql rename to data/sql/updates/db_world/2023_04_19_32.sql index 75c7e22fa..a74a6e191 100644 --- a/data/sql/updates/pending_db_world/rev_1681920717306872200.sql +++ b/data/sql/updates/db_world/2023_04_19_32.sql @@ -1,2 +1,3 @@ +-- DB update 2023_04_19_31 -> 2023_04_19_32 -- UPDATE `creature_equip_template` SET `ItemID2` = 0 WHERE `CreatureID` = 6194; From 2cf134adee337fbba03d0764bbf4c042dc75758c Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Wed, 19 Apr 2023 20:08:09 +0300 Subject: [PATCH 07/14] fix(DB/SAI): Port Wickerman Guardian from Mangos. (#15844) * fix(DB/SAI): Port Wickerman Guardian from Mangos. * remove alliance only restriction * fix actionid --- .../rev_1680771211065684700.sql | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1680771211065684700.sql diff --git a/data/sql/updates/pending_db_world/rev_1680771211065684700.sql b/data/sql/updates/pending_db_world/rev_1680771211065684700.sql new file mode 100644 index 000000000..543a87167 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1680771211065684700.sql @@ -0,0 +1,22 @@ +-- Wickerman Guardian 15195 +DELETE FROM `creature_template_addon` WHERE (`entry` = 15195); +INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(15195, 0, 0, 0, 0, 0, 0, '12187'); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 15195; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 15195); +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`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(15195, 0, 0, 0, 0, 0, 100, 0, 4000, 12000, 8000, 12000, 0, 11, 18368, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Wickerman Guardian - In Combat - Cast \'Strike\''), +(15195, 0, 1, 0, 0, 0, 100, 0, 8000, 14000, 9000, 15000, 0, 11, 19128, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Wickerman Guardian - In Combat - Cast \'Knockdown\''), +(15195, 0, 2, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 11, 25007, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wickerman Guardian - On Just Died - Cast \'Wickerman Guardian Ember\''); + +-- Wickerman Guardian Ember 180574, unknown if it can be opened only by alliance. +DELETE FROM `gameobject_template` WHERE (`entry` = 180574); +INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `IconName`, `castBarCaption`, `unk1`, `size`, `Data0`, `Data1`, `Data2`, `Data3`, `Data4`, `Data5`, `Data6`, `Data7`, `Data8`, `Data9`, `Data10`, `Data11`, `Data12`, `Data13`, `Data14`, `Data15`, `Data16`, `Data17`, `Data18`, `Data19`, `Data20`, `Data21`, `Data22`, `Data23`, `AIName`, `ScriptName`, `VerifiedBuild`) VALUES +(180574, 2, 6421, 'Wickerman Guardian Ember', '', 'Using', '', 5, 43, 0, 0, 6535, 0, 0, 19700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'SmartGameObjectAI', '', 0); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 1 AND `entryorguid` = 180574); +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`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(180574, 1, 0, 1, 62, 0, 100, 0, 6535, 0, 0, 0, 0, 134, 24705, 34, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Wickerman Guardian Ember - On Gossip Option 0 Selected - Invoker Cast \'Invocation of the Wickerman\''), +(180574, 1, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Wickerman Guardian Ember - On Gossip Option 0 Selected - Close Gossip'); From d1c8180232a62f43a149c8c6cda3fae972643b60 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 19 Apr 2023 17:10:43 +0000 Subject: [PATCH 08/14] chore(DB): import pending files Referenced commit(s): 2cf134adee337fbba03d0764bbf4c042dc75758c --- .../rev_1680771211065684700.sql => db_world/2023_04_19_33.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1680771211065684700.sql => db_world/2023_04_19_33.sql} (98%) diff --git a/data/sql/updates/pending_db_world/rev_1680771211065684700.sql b/data/sql/updates/db_world/2023_04_19_33.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1680771211065684700.sql rename to data/sql/updates/db_world/2023_04_19_33.sql index 543a87167..969024f23 100644 --- a/data/sql/updates/pending_db_world/rev_1680771211065684700.sql +++ b/data/sql/updates/db_world/2023_04_19_33.sql @@ -1,3 +1,4 @@ +-- DB update 2023_04_19_32 -> 2023_04_19_33 -- Wickerman Guardian 15195 DELETE FROM `creature_template_addon` WHERE (`entry` = 15195); INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES From a22ed030f3780f7a7d0510dec7e926fe38cecdd2 Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Thu, 20 Apr 2023 00:59:33 +0300 Subject: [PATCH 09/14] fix(DB/Conditions): Add missing gossip text for Rathis Tomber. (#16007) --- .../pending_db_world/rev_1681835987102434300.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1681835987102434300.sql diff --git a/data/sql/updates/pending_db_world/rev_1681835987102434300.sql b/data/sql/updates/pending_db_world/rev_1681835987102434300.sql new file mode 100644 index 000000000..e769c3a03 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1681835987102434300.sql @@ -0,0 +1,10 @@ +-- Rathis Tomber (16224) +DELETE FROM `gossip_menu` WHERE `MenuID` = 7162 AND `TextID` = 8432; +INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES +(7162, 8432); + +UPDATE `conditions` SET `Comment` = 'Rathis Tomber - Show Option 0 (Vendor) if quest 9152 has been rewarded.' WHERE `SourceTypeOrReferenceId` = 15 AND `SourceGroup` = 7162 AND `SourceEntry` = 0; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 14 AND `SourceGroup` = 7162; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(14, 7162, 8432, 0, 0, 8, 0, 9152, 0, 0, 0, 0, 0, '', 'Rathis Tomber - Show gossip text 8432 if quest 9152 has been rewarded.'); From 76745c43d235e9bc3f22facf6326fec3f90ed548 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 19 Apr 2023 22:02:06 +0000 Subject: [PATCH 10/14] chore(DB): import pending files Referenced commit(s): a22ed030f3780f7a7d0510dec7e926fe38cecdd2 --- .../rev_1681835987102434300.sql => db_world/2023_04_19_34.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1681835987102434300.sql => db_world/2023_04_19_34.sql} (95%) diff --git a/data/sql/updates/pending_db_world/rev_1681835987102434300.sql b/data/sql/updates/db_world/2023_04_19_34.sql similarity index 95% rename from data/sql/updates/pending_db_world/rev_1681835987102434300.sql rename to data/sql/updates/db_world/2023_04_19_34.sql index e769c3a03..ab3b9a485 100644 --- a/data/sql/updates/pending_db_world/rev_1681835987102434300.sql +++ b/data/sql/updates/db_world/2023_04_19_34.sql @@ -1,3 +1,4 @@ +-- DB update 2023_04_19_33 -> 2023_04_19_34 -- Rathis Tomber (16224) DELETE FROM `gossip_menu` WHERE `MenuID` = 7162 AND `TextID` = 8432; INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES From b4ff3da86b23c8f541ff028e07cd3c2885bb4cb7 Mon Sep 17 00:00:00 2001 From: Eddy Vega <61223313+Si1ker@users.noreply.github.com> Date: Wed, 19 Apr 2023 18:20:19 -0600 Subject: [PATCH 11/14] fix(Scripts/ShadowLabyrinth): Update Grandmaster Vorpil's script (#16018) init --- .../boss_grandmaster_vorpil.cpp | 382 +++++++++--------- .../instance_shadow_labyrinth.cpp | 4 +- .../ShadowLabyrinth/shadow_labyrinth.h | 9 +- 3 files changed, 192 insertions(+), 203 deletions(-) diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp index 771de6165..c1ec49cb1 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp @@ -56,261 +56,249 @@ float VorpilPosition[3] = {-253.548f, -263.646f, 17.0864f}; //x, y, z, and orientation float VoidPortalCoords[5][4] = { - {-208.411f, -263.652f, 17.086313f, 3.121870040893554687f}, //portal A 33566 - {-261.676f, -297.69f, 17.087011f, 1.360249996185302734f}, //portal B 33614 - {-282.272f, -240.432f, 12.683899f, 5.580170154571533203f}, //portal C 33615 - {-291.833f, -268.595f, 12.682545f, 0.047733999788761138f}, //portal D 33567 - {-303.966f, -255.759f, 12.683404f, 6.012829780578613281f} //portal E 33616 + {-208.411f, -263.652f, 17.086313f, 3.121870040893554687f}, //portal A 33566 + {-261.676f, -297.69f, 17.087011f, 1.360249996185302734f}, //portal B 33614 + {-282.272f, -240.432f, 12.683899f, 5.580170154571533203f}, //portal C 33615 + {-291.833f, -268.595f, 12.682545f, 0.047733999788761138f}, //portal D 33567 + {-303.966f, -255.759f, 12.683404f, 6.012829780578613281f} //portal E 33616 }; -class boss_grandmaster_vorpil : public CreatureScript +struct boss_grandmaster_vorpil : public BossAI { -public: - boss_grandmaster_vorpil() : CreatureScript("boss_grandmaster_vorpil") { } - - CreatureAI* GetAI(Creature* creature) const override + boss_grandmaster_vorpil(Creature* creature) : BossAI(creature, DATA_GRANDMASTER_VORPIL) { - return GetShadowLabyrinthAI(creature); + instance = creature->GetInstanceScript(); + sayIntro = false; } - struct boss_grandmaster_vorpilAI : public ScriptedAI + InstanceScript* instance; + bool sayIntro, sayHelp; + int count = 0; + + void Reset() override { - boss_grandmaster_vorpilAI(Creature* creature) : ScriptedAI(creature), summons(me) + sayHelp = false; + events.Reset(); + summons.DespawnAll(); + if (instance) { - instance = creature->GetInstanceScript(); - sayIntro = false; + instance->SetData(DATA_GRANDMASTER_VORPIL_EVENT, NOT_STARTED); } + } - InstanceScript* instance; - EventMap events; - SummonList summons; - - bool sayIntro, sayHelp; - - int count = 0; - - void Reset() override + void summonPortals() + { + for (uint8 i = 0; i < 5; ++i) { - sayHelp = false; - events.Reset(); - summons.DespawnAll(); - - if (instance) - instance->SetData(DATA_GRANDMASTERVORPILEVENT, NOT_STARTED); + me->SummonCreature(NPC_VOID_PORTAL, VoidPortalCoords[i][0], VoidPortalCoords[i][1], VoidPortalCoords[i][2], VoidPortalCoords[i][3], TEMPSUMMON_CORPSE_DESPAWN, 3000000); } + } - void summonPortals() + void spawnVoidTraveler() + { + uint8 pos = urand(0, 4); + me->SummonCreature(NPC_VOID_TRAVELER, VoidPortalCoords[pos][0], VoidPortalCoords[pos][1], VoidPortalCoords[pos][2], VoidPortalCoords[pos][3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000); + if (!sayHelp) { - for (uint8 i = 0; i < 5; ++i) - me->SummonCreature(NPC_VOID_PORTAL, VoidPortalCoords[i][0], VoidPortalCoords[i][1], VoidPortalCoords[i][2], VoidPortalCoords[i][3], TEMPSUMMON_CORPSE_DESPAWN, 3000000); + Talk(SAY_HELP); + sayHelp = true; } + } - void spawnVoidTraveler() + int counterVoidSpawns(int count) + { + int timer = 0; + switch(count) { - uint8 pos = urand(0, 4); - me->SummonCreature(NPC_VOID_TRAVELER, VoidPortalCoords[pos][0], VoidPortalCoords[pos][1], VoidPortalCoords[pos][2], VoidPortalCoords[pos][3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000); - if (!sayHelp) - { - Talk(SAY_HELP); - sayHelp = true; - } + case 1: + case 2: + timer = 13300; + break; + case 3: + timer = 12100; + break; + case 4: + timer = 10900; + break; + case 5: + case 6: + timer = 9700; + break; + case 7: + case 8: + timer = 7200; + break; + case 9: + timer = 6000; + break; + default: + timer = 4800; } + return timer; + } - int counterVoidSpawns(int count) + void JustSummoned(Creature* summon) override + { + summons.Summon(summon); + if (summon->GetEntry() == NPC_VOID_TRAVELER) { - int timer = 0; - switch(count) - { - case 1: - case 2: - timer = 13300; - break; - case 3: - timer = 12100; - break; - case 4: - timer = 10900; - break; - case 5: - case 6: - timer = 9700; - break; - case 7: - case 8: - timer = 7200; - break; - case 9: - timer = 6000; - break; - default: - timer = 4800; - } - return timer; + summon->AI()->SetGUID(me->GetGUID()); } - - void JustSummoned(Creature* summon) override + else if (summon->GetEntry() == NPC_VOID_PORTAL) { - summons.Summon(summon); - if (summon->GetEntry() == NPC_VOID_TRAVELER) - summon->AI()->SetGUID(me->GetGUID()); - else if (summon->GetEntry() == NPC_VOID_PORTAL) - summon->CastSpell(summon, SPELL_VOID_PORTAL_VISUAL, false); + summon->CastSpell(summon, SPELL_VOID_PORTAL_VISUAL, false); } + } - void KilledUnit(Unit* victim) override + void KilledUnit(Unit* victim) override + { + if (victim->GetTypeId() == TYPEID_PLAYER) { - if (victim->GetTypeId() == TYPEID_PLAYER) - Talk(SAY_SLAY); + Talk(SAY_SLAY); } + } - void JustDied(Unit* /*killer*/) override + void JustDied(Unit* /*killer*/) override + { + Talk(SAY_DEATH); + summons.DespawnAll(); + if (instance) { - Talk(SAY_DEATH); - summons.DespawnAll(); - - if (instance) - instance->SetData(DATA_GRANDMASTERVORPILEVENT, DONE); + instance->SetData(DATA_GRANDMASTER_VORPIL_EVENT, DONE); } + } - void JustEngagedWith(Unit* /*who*/) override + void JustEngagedWith(Unit* /*who*/) override + { + Talk(SAY_AGGRO); + summonPortals(); + events.ScheduleEvent(EVENT_SPELL_SHADOWBOLT, urand(9700, 20000)); + events.ScheduleEvent(EVENT_SPELL_DRAWSHADOWS, 36400); + events.ScheduleEvent(EVENT_SUMMON_TRAVELER, 10900); + if (IsHeroic()) { - Talk(SAY_AGGRO); - summonPortals(); - - events.ScheduleEvent(EVENT_SPELL_SHADOWBOLT, urand(9700, 20000)); - events.ScheduleEvent(EVENT_SPELL_DRAWSHADOWS, 36400); - events.ScheduleEvent(EVENT_SUMMON_TRAVELER, 10900); - if (IsHeroic()) - { - events.ScheduleEvent(EVENT_SPELL_BANISH, urand(17000, 28000)); - } - if (instance) - { - instance->SetData(DATA_GRANDMASTERVORPILEVENT, IN_PROGRESS); - } + events.ScheduleEvent(EVENT_SPELL_BANISH, urand(17000, 28000)); } - - void MoveInLineOfSight(Unit* who) override + if (instance) { - ScriptedAI::MoveInLineOfSight(who); - - if (!sayIntro && who->GetTypeId() == TYPEID_PLAYER) - { - Talk(SAY_INTRO); - sayIntro = true; - } + instance->SetData(DATA_GRANDMASTER_VORPIL_EVENT, IN_PROGRESS); } + } - void UpdateAI(uint32 diff) override + void MoveInLineOfSight(Unit* who) override + { + ScriptedAI::MoveInLineOfSight(who); + if (!sayIntro && who->GetTypeId() == TYPEID_PLAYER) { - if (!UpdateVictim()) - return; + Talk(SAY_INTRO); + sayIntro = true; + } + } - events.Update(diff); - switch (events.ExecuteEvent()) - { - case EVENT_SPELL_SHADOWBOLT: - me->CastSpell(me, SPELL_SHADOWBOLT_VOLLEY, false); - events.RepeatEvent(urand(9700, 20000)); - break; - case EVENT_SPELL_BANISH: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30, false)) - me->CastSpell(target, SPELL_BANISH, false); - events.RepeatEvent(urand(17000, 28000)); - break; - case EVENT_SUMMON_TRAVELER: - spawnVoidTraveler(); - count++; - events.RepeatEvent(counterVoidSpawns(count)); - break; - case EVENT_SPELL_DRAWSHADOWS: + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + switch (events.ExecuteEvent()) + { + case EVENT_SPELL_SHADOWBOLT: + DoCastAOE(SPELL_SHADOWBOLT_VOLLEY); + events.RepeatEvent(urand(9700, 20000)); + break; + case EVENT_SPELL_BANISH: + DoCastRandomTarget(SPELL_BANISH, 0, 30.0f, true); + events.RepeatEvent(urand(17000, 28000)); + break; + case EVENT_SUMMON_TRAVELER: + spawnVoidTraveler(); + count++; + events.RepeatEvent(counterVoidSpawns(count)); + break; + case EVENT_SPELL_DRAWSHADOWS: + { + DoCastSelf(SPELL_DRAW_SHADOWS, true); + Map* map = me->GetMap(); + Map::PlayerList const& PlayerList = map->GetPlayers(); + for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) { - me->CastSpell(me, SPELL_DRAW_SHADOWS, true); - Map* map = me->GetMap(); - Map::PlayerList const& PlayerList = map->GetPlayers(); - for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) - if (Player* player = i->GetSource()) - if (player->IsAlive() && !player->HasAura(SPELL_BANISH)) - player->TeleportTo(me->GetMapId(), VorpilPosition[0], VorpilPosition[1], VorpilPosition[2], 0, TELE_TO_NOT_LEAVE_COMBAT); - - me->NearTeleportTo(VorpilPosition[0], VorpilPosition[1], VorpilPosition[2], 0.0f); - events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 1000); - events.RepeatEvent(urand(36400, 44950)); - break; + if (Player* player = i->GetSource()) + { + if (player->IsAlive() && !player->HasAura(SPELL_BANISH)) + { + player->TeleportTo(me->GetMapId(), VorpilPosition[0], VorpilPosition[1], VorpilPosition[2], 0, TELE_TO_NOT_LEAVE_COMBAT); + } + } } - case EVENT_SPELL_RAIN_OF_FIRE: - me->CastSpell(me, DUNGEON_MODE(SPELL_RAIN_OF_FIRE_N, SPELL_RAIN_OF_FIRE_H)); - events.DelayEvents(6000); + me->NearTeleportTo(VorpilPosition[0], VorpilPosition[1], VorpilPosition[2], 0.0f); + events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 1000); + events.RepeatEvent(urand(36400, 44950)); break; - } - DoMeleeAttackIfReady(); + } + case EVENT_SPELL_RAIN_OF_FIRE: + DoCastSelf(DUNGEON_MODE(SPELL_RAIN_OF_FIRE_N, SPELL_RAIN_OF_FIRE_H)); + events.DelayEvents(6000); + break; } - }; + DoMeleeAttackIfReady(); + } }; -class npc_voidtraveler : public CreatureScript +struct npc_voidtraveler : public ScriptedAI { -public: - npc_voidtraveler() : CreatureScript("npc_voidtraveler") { } + npc_voidtraveler(Creature* creature) : ScriptedAI(creature) {} - CreatureAI* GetAI(Creature* creature) const override + ObjectGuid VorpilGUID; + uint32 moveTimer; + bool sacrificed; + + void Reset() override { - return GetShadowLabyrinthAI(creature); + moveTimer = 1000; + sacrificed = false; } - struct npc_voidtravelerAI : public ScriptedAI + void SetGUID(ObjectGuid guid, int32) override { - npc_voidtravelerAI(Creature* creature) : ScriptedAI(creature) - { - moveTimer = 1000; - sacrificed = false; - } + VorpilGUID = guid; + } - ObjectGuid VorpilGUID; - uint32 moveTimer; - bool sacrificed; - - void SetGUID(ObjectGuid guid, int32) override + void UpdateAI(uint32 diff) override + { + moveTimer += diff; + if (moveTimer >= 1000) { - VorpilGUID = guid; - } - - void UpdateAI(uint32 diff) override - { - moveTimer += diff; - if (moveTimer >= 1000) + moveTimer = 0; + Creature* Vorpil = ObjectAccessor::GetCreature(*me, VorpilGUID); + if (!Vorpil) { - moveTimer = 0; - Creature* Vorpil = ObjectAccessor::GetCreature(*me, VorpilGUID); - if (!Vorpil) - { - me->DespawnOrUnsummon(); - return; - } - me->GetMotionMaster()->MoveFollow(Vorpil, 0.0f, 0.0f); + me->DespawnOrUnsummon(); + return; + } + me->GetMotionMaster()->MoveFollow(Vorpil, 0.0f, 0.0f); - if (sacrificed) - { - me->AddAura(DUNGEON_MODE(SPELL_EMPOWERING_SHADOWS_N, SPELL_EMPOWERING_SHADOWS_H), Vorpil); - Vorpil->ModifyHealth(int32(Vorpil->CountPctFromMaxHealth(4))); - me->CastSpell(me, SPELL_SHADOW_NOVA, true); - me->KillSelf(); - return; - } + if (sacrificed) + { + Vorpil->AddAura(DUNGEON_MODE(SPELL_EMPOWERING_SHADOWS_N, SPELL_EMPOWERING_SHADOWS_H), Vorpil); + Vorpil->ModifyHealth(int32(Vorpil->CountPctFromMaxHealth(4))); + DoCastAOE(SPELL_SHADOW_NOVA, true); + me->KillSelf(); + return; + } - if (me->IsWithinDist(Vorpil, 3.0f)) - { - me->CastSpell(me, SPELL_SACRIFICE, false); - sacrificed = true; - moveTimer = 500; - } + if (me->IsWithinDist(Vorpil, 3.0f)) + { + DoCastSelf(SPELL_SACRIFICE); + sacrificed = true; + moveTimer = 500; } } - }; + } }; void AddSC_boss_grandmaster_vorpil() { - new boss_grandmaster_vorpil(); - new npc_voidtraveler(); + RegisterShadowLabyrinthCreatureAI(boss_grandmaster_vorpil); + RegisterShadowLabyrinthCreatureAI(npc_voidtraveler); } diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp index f05b3e2eb..8cc47c220 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp @@ -68,7 +68,7 @@ public: break; case SCREAMING_HALL_DOOR: m_uiScreamingHallDoorGUID = go->GetGUID(); - if (m_auiEncounter[DATA_GRANDMASTERVORPILEVENT] == DONE) + if (m_auiEncounter[DATA_GRANDMASTER_VORPIL_EVENT] == DONE) go->SetGoState(GO_STATE_ACTIVE); break; } @@ -116,7 +116,7 @@ public: m_auiEncounter[type] = uiData; break; - case DATA_GRANDMASTERVORPILEVENT: + case DATA_GRANDMASTER_VORPIL_EVENT: if (uiData == DONE) DoUseDoorOrButton(m_uiScreamingHallDoorGUID); m_auiEncounter[type] = uiData; diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.h b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.h index b0fa42f77..0c183a08f 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.h +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.h @@ -30,10 +30,11 @@ enum slData TYPE_RITUALISTS = 0, TYPE_HELLMAW = 1, DATA_BLACKHEARTTHEINCITEREVENT = 2, - DATA_GRANDMASTERVORPILEVENT = 3, - DATA_MURMUR = 4, - DATA_MURMUREVENT = 5, - MAX_ENCOUNTER = 6 + DATA_GRANDMASTER_VORPIL = 3, + DATA_GRANDMASTER_VORPIL_EVENT = 4, + DATA_MURMUR = 5, + DATA_MURMUREVENT = 6, + MAX_ENCOUNTER = 7 }; enum slNPCandGO From d75bcf0f67ea923ab82751e4b124b35d1cb76f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E9=B9=BF?= Date: Thu, 20 Apr 2023 08:34:48 +0800 Subject: [PATCH 12/14] chore(core): Cleanup code (#16012) * Update SmartScript.cpp * Update M2Stores.cpp * Update PetHandler.cpp * Update WaypointMovementGenerator.cpp * Update WorldSession.cpp * Update spell_item.cpp * Update LoginDatabase.cpp --- .../database/Database/Implementation/LoginDatabase.cpp | 4 ++-- src/server/game/AI/SmartScripts/SmartScript.cpp | 2 +- src/server/game/DataStores/M2Stores.cpp | 8 ++++---- src/server/game/Handlers/PetHandler.cpp | 6 +++--- .../MovementGenerators/WaypointMovementGenerator.cpp | 2 +- src/server/game/Server/WorldSession.cpp | 2 +- src/server/scripts/Spells/spell_item.cpp | 8 ++++---- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/server/database/Database/Implementation/LoginDatabase.cpp b/src/server/database/Database/Implementation/LoginDatabase.cpp index 482430974..3dbb2ced2 100644 --- a/src/server/database/Database/Implementation/LoginDatabase.cpp +++ b/src/server/database/Database/Implementation/LoginDatabase.cpp @@ -52,13 +52,13 @@ void LoginDatabaseConnection::DoPrepareStatements() PrepareStatement(LOGIN_DEL_EXPIRED_IP_BANS, "DELETE FROM ip_banned WHERE unbandate<>bandate AND unbandate<=UNIX_TIMESTAMP()", CONNECTION_ASYNC); PrepareStatement(LOGIN_UPD_EXPIRED_ACCOUNT_BANS, "UPDATE account_banned SET active = 0 WHERE active = 1 AND unbandate<>bandate AND unbandate<=UNIX_TIMESTAMP()", CONNECTION_ASYNC); PrepareStatement(LOGIN_SEL_IP_BANNED, "SELECT * FROM ip_banned WHERE ip = ?", CONNECTION_SYNCH); - PrepareStatement(LOGIN_INS_IP_AUTO_BANNED, "INSERT INTO ip_banned (ip, bandate, unbandate, bannedby, banreason) VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, 'Trinity realmd', 'Failed login autoban')", CONNECTION_ASYNC); + PrepareStatement(LOGIN_INS_IP_AUTO_BANNED, "INSERT INTO ip_banned (ip, bandate, unbandate, bannedby, banreason) VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, 'realmd', 'Failed login autoban')", CONNECTION_ASYNC); PrepareStatement(LOGIN_SEL_IP_BANNED_ALL, "SELECT ip, bandate, unbandate, bannedby, banreason FROM ip_banned WHERE (bandate = unbandate OR unbandate > UNIX_TIMESTAMP()) ORDER BY unbandate", CONNECTION_SYNCH); PrepareStatement(LOGIN_SEL_IP_BANNED_BY_IP, "SELECT ip, bandate, unbandate, bannedby, banreason FROM ip_banned WHERE (bandate = unbandate OR unbandate > UNIX_TIMESTAMP()) AND ip LIKE CONCAT('%%', ?, '%%') ORDER BY unbandate", CONNECTION_SYNCH); PrepareStatement(LOGIN_SEL_ACCOUNT_BANNED, "SELECT bandate, unbandate FROM account_banned WHERE id = ? AND active = 1", CONNECTION_SYNCH); PrepareStatement(LOGIN_SEL_ACCOUNT_BANNED_ALL, "SELECT account.id, username FROM account, account_banned WHERE account.id = account_banned.id AND active = 1 GROUP BY account.id", CONNECTION_SYNCH); PrepareStatement(LOGIN_SEL_ACCOUNT_BANNED_BY_USERNAME, "SELECT account.id, username FROM account, account_banned WHERE account.id = account_banned.id AND active = 1 AND username LIKE CONCAT('%%', ?, '%%') GROUP BY account.id", CONNECTION_SYNCH); - PrepareStatement(LOGIN_INS_ACCOUNT_AUTO_BANNED, "INSERT INTO account_banned VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, 'Trinity realmd', 'Failed login autoban', 1)", CONNECTION_ASYNC); + PrepareStatement(LOGIN_INS_ACCOUNT_AUTO_BANNED, "INSERT INTO account_banned VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, 'realmd', 'Failed login autoban', 1)", CONNECTION_ASYNC); PrepareStatement(LOGIN_DEL_ACCOUNT_BANNED, "DELETE FROM account_banned WHERE id = ?", CONNECTION_ASYNC); PrepareStatement(LOGIN_UPD_LOGON, "UPDATE account SET salt = ?, verifier = ? WHERE id = ?", CONNECTION_ASYNC); PrepareStatement(LOGIN_UPD_LOGONPROOF, "UPDATE account SET session_key = ?, last_ip = ?, last_login = NOW(), locale = ?, failed_logins = 0, os = ? WHERE username = ?", CONNECTION_SYNCH); diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 20e0bb47a..f61355ddc 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -544,7 +544,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (IsUnit(target)) { me->GetThreatMgr().ModifyThreatByPercent(target->ToUnit(), e.action.threatPCT.threatINC ? (int32)e.action.threatPCT.threatINC : -(int32)e.action.threatPCT.threatDEC); - LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_THREAT_SINGLE_PCT: Creature guidLow {} modify threat for unit {}, value %i", + LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_THREAT_SINGLE_PCT: Creature guidLow {} modify threat for unit {}, value {}", me->GetGUID().ToString(), target->GetGUID().ToString(), e.action.threatPCT.threatINC ? (int32)e.action.threatPCT.threatINC : -(int32)e.action.threatPCT.threatDEC); } } diff --git a/src/server/game/DataStores/M2Stores.cpp b/src/server/game/DataStores/M2Stores.cpp index 8bdb795c6..da56f1ff3 100644 --- a/src/server/game/DataStores/M2Stores.cpp +++ b/src/server/game/DataStores/M2Stores.cpp @@ -206,7 +206,7 @@ void LoadM2Cameras(std::string const& dataPath) // Reject if not at least the size of the header if (static_cast(fileSize) < sizeof(M2Header)) { - LOG_ERROR("server.loading", "Camera file %s is damaged. File is smaller than header size", filename.string().c_str()); + LOG_ERROR("server.loading", "Camera file {} is damaged. File is smaller than header size", filename.string().c_str()); m2file.close(); continue; } @@ -220,7 +220,7 @@ void LoadM2Cameras(std::string const& dataPath) // Check file has correct magic (MD20) if (strcmp(fileCheck, "MD20")) { - LOG_ERROR("server.loading", "Camera file %s is damaged. File identifier not found", filename.string().c_str()); + LOG_ERROR("server.loading", "Camera file {} is damaged. File identifier not found", filename.string().c_str()); m2file.close(); continue; } @@ -240,14 +240,14 @@ void LoadM2Cameras(std::string const& dataPath) if (header->ofsCameras + sizeof(M2Camera) > static_cast(fileSize)) { - LOG_ERROR("server.loading", "Camera file %s is damaged. Camera references position beyond file end", filename.string().c_str()); + LOG_ERROR("server.loading", "Camera file {} is damaged. Camera references position beyond file end", filename.string().c_str()); continue; } // Get camera(s) - Main header, then dump them. M2Camera const* cam = reinterpret_cast(buffer.data() + header->ofsCameras); if (!readCamera(cam, fileSize, header, dbcentry)) - LOG_ERROR("server.loading", "Camera file %s is damaged. Camera references position beyond file end", filename.string().c_str()); + LOG_ERROR("server.loading", "Camera file {} is damaged. Camera references position beyond file end", filename.string().c_str()); } LOG_INFO("server.loading", ">> Loaded {} Cinematic Waypoint Sets in {} ms", (uint32)sFlyByCameraStore.size(), GetMSTimeDiffToNow(oldMSTime)); diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 70516505e..765c90f8c 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -953,20 +953,20 @@ void WorldSession::HandlePetSpellAutocastOpcode(WorldPackets::Pet::PetSpellAutoc Creature* checkPet = ObjectAccessor::GetCreatureOrPetOrVehicle(*_player, packet.PetGUID); if (!checkPet) { - LOG_ERROR("entities.pet", "WorldSession::HandlePetSpellAutocastOpcode: Pet %s not found.", packet.PetGUID.ToString().c_str()); + LOG_ERROR("entities.pet", "WorldSession::HandlePetSpellAutocastOpcode: Pet {} not found.", packet.PetGUID.ToString().c_str()); return; } SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(packet.SpellID); if (!spellInfo) { - LOG_ERROR("spells.pet", "WorldSession::HandlePetSpellAutocastOpcode: Unknown spell id %u used by %s.", packet.SpellID, packet.PetGUID.ToString().c_str()); + LOG_ERROR("spells.pet", "WorldSession::HandlePetSpellAutocastOpcode: Unknown spell id {} used by {}.", packet.SpellID, packet.PetGUID.ToString().c_str()); return; } if (checkPet != _player->GetGuardianPet() && checkPet != _player->GetCharm()) { - LOG_ERROR("entities.pet", "WorldSession::HandlePetSpellAutocastOpcode: %s isn't pet of player %s (%s).", + LOG_ERROR("entities.pet", "WorldSession::HandlePetSpellAutocastOpcode: {} isn't pet of player {} ({}).", packet.PetGUID.ToString().c_str(), GetPlayer()->GetName().c_str(), GetPlayer()->GetGUID().ToString().c_str()); return; } diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index bd57f449f..0780866e8 100644 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -505,7 +505,7 @@ void FlightPathMovementGenerator::PreloadEndGrid() // Load the grid if (endMap) { - LOG_DEBUG("misc", "Preloading grid ({}, {}) for map %u at node index {}/{}", _endGridX, _endGridY, _endMapId, _preloadTargetNode, (uint32)(i_path.size() - 1)); + LOG_DEBUG("misc", "Preloading grid ({}, {}) for map {} at node index {}/{}", _endGridX, _endGridY, _endMapId, _preloadTargetNode, (uint32)(i_path.size() - 1)); endMap->LoadGrid(_endGridX, _endGridY); } else diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 3aa618656..71683e858 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -761,7 +761,7 @@ bool WorldSession::ValidateHyperlinksAndMaybeKick(std::string_view str) if (Acore::Hyperlinks::CheckAllLinks(str)) return true; - LOG_ERROR("network", "Player {}{} sent a message with an invalid link:\n%.*s", GetPlayer()->GetName(), + LOG_ERROR("network", "Player {} {} sent a message with an invalid link:\n%.*s", GetPlayer()->GetName(), GetPlayer()->GetGUID().ToString(), STRING_VIEW_FMT_ARG(str)); if (sWorld->getIntConfig(CONFIG_CHAT_STRICT_LINK_CHECKING_KICK)) diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index a8dd7acd2..8a5393942 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -625,19 +625,19 @@ class spell_item_feast : public SpellScript { case SPELL_GREAT_FEAST: if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(GREAT_FEAST_BROADCAST_TEXT_ID_PREPARE)) - player->TextEmote(bct->GetText(loc_idx, player->getGender()).c_str(), player); + player->TextEmote(bct->GetText(loc_idx, player->getGender()), player); break; case SPELL_FISH_FEAST: if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(FISH_FEAST_BROADCAST_TEXT_ID_PREPARE)) - player->TextEmote(bct->GetText(loc_idx, player->getGender()).c_str(), player); + player->TextEmote(bct->GetText(loc_idx, player->getGender()), player); break; case SPELL_SMALL_FEAST: if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(SMALL_FEAST_BROADCAST_TEXT_ID_PREPARE)) - player->TextEmote(bct->GetText(loc_idx, player->getGender()).c_str(), player); + player->TextEmote(bct->GetText(loc_idx, player->getGender()), player); break; case SPELL_GIGANTIC_FEAST: if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(GIGANTIC_FEAST_BROADCAST_TEXT_ID_PREPARE)) - player->TextEmote(bct->GetText(loc_idx, player->getGender()).c_str(), player); + player->TextEmote(bct->GetText(loc_idx, player->getGender()), player); break; } } From b86cf11499f148376639401d479ddc8d33723b77 Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Thu, 20 Apr 2023 18:16:31 -0300 Subject: [PATCH 13/14] fix(Core/Creature): Adjust IGNORE ASSISTANCE CALL flag to prevent assistance on initial aggro only (#16046) init --- .../updates/pending_db_world/rev_1682017480991526700.sql | 7 +++++++ src/server/game/Entities/Creature/Creature.cpp | 6 ------ src/server/game/Entities/Creature/CreatureData.h | 2 +- .../game/Entities/Creature/enuminfo_CreatureData.cpp | 6 +++--- src/server/game/Entities/Unit/Unit.cpp | 6 +++++- 5 files changed, 16 insertions(+), 11 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1682017480991526700.sql diff --git a/data/sql/updates/pending_db_world/rev_1682017480991526700.sql b/data/sql/updates/pending_db_world/rev_1682017480991526700.sql new file mode 100644 index 000000000..f442aca84 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1682017480991526700.sql @@ -0,0 +1,7 @@ +-- +UPDATE `creature_template` SET `flags_extra` = `flags_extra`|33554432 WHERE `entry` IN (16523, 16594, 17083, 17420, 17694, 16507, 17462, 18404, 17993, 18421, 19486, 18422, 19557, 19505); -- Botanica & SHH +UPDATE `creature_template` SET `flags_extra` = `flags_extra`|33554432 WHERE `entry` IN (20567, 20576, 20577, 20587, 20591, 20593, 20595, 21548, 21549, 21555, 21570, 21571, 21572, 21577); -- Botanica & SHH Heroics +UPDATE `creature_template` SET `flags_extra` = `flags_extra`|33554432 WHERE `entry` = 13996; -- Blackwing Technician +UPDATE `creature_template` SET `flags_extra` = `flags_extra`&~33554432 WHERE `entry` = 12460; -- Blackwing Adds +UPDATE `creature_template` SET `flags_extra` = `flags_extra`&~33554432 WHERE `entry` = 11380; -- Jin'do the Hexxer +UPDATE `creature_template` SET `flags_extra` = `flags_extra`|33554432 WHERE `entry` IN (14825, 14882, 14883); -- Jin'do the Hexxer Adds diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index afbed2ee0..6d2655a0d 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2445,12 +2445,6 @@ bool Creature::CanAssistTo(Unit const* u, Unit const* enemy, bool checkfaction / if (GetCharmerOrOwnerGUID()) return false; - // Check for ignore assistance extra flag - if (m_creatureInfo->HasFlagsExtra(CREATURE_FLAG_EXTRA_IGNORE_ASSISTANCE_CALL)) - { - return false; - } - // only from same creature faction if (checkfaction) { diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h index e3314cc14..2d8830b47 100644 --- a/src/server/game/Entities/Creature/CreatureData.h +++ b/src/server/game/Entities/Creature/CreatureData.h @@ -71,7 +71,7 @@ enum CreatureFlagsExtra : uint32 CREATURE_FLAG_EXTRA_AVOID_AOE = 0x00400000, // pussywizard: ignored by aoe attacks (for icc blood prince council npc - Dark Nucleus) CREATURE_FLAG_EXTRA_NO_DODGE = 0x00800000, // xinef: target cannot dodge CREATURE_FLAG_EXTRA_MODULE = 0x01000000, - CREATURE_FLAG_EXTRA_IGNORE_ASSISTANCE_CALL = 0x02000000, // Creatures are not aggroed by other mobs assistance functions + CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE = 0x02000000, // Prevent creatures from calling for assistance on initial aggro CREATURE_FLAG_DONT_OVERRIDE_ENTRY_SAI = 0x04000000, // Load both ENTRY and GUID specific SAI CREATURE_FLAG_EXTRA_UNUSED_28 = 0x08000000, CREATURE_FLAG_EXTRA_DUNGEON_BOSS = 0x10000000, // creature is a dungeon boss (SET DYNAMICALLY, DO NOT ADD IN DB) diff --git a/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp b/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp index 8e0b71bf5..273ec592d 100644 --- a/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp +++ b/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp @@ -56,7 +56,7 @@ AC_API_EXPORT EnumText EnumUtils::ToString(CreatureFlagsExtr case CREATURE_FLAG_EXTRA_AVOID_AOE: return { "CREATURE_FLAG_EXTRA_AVOID_AOE", "CREATURE_FLAG_EXTRA_AVOID_AOE", "pussywizard: ignored by aoe attacks (for icc blood prince council npc - Dark Nucleus)" }; case CREATURE_FLAG_EXTRA_NO_DODGE: return { "CREATURE_FLAG_EXTRA_NO_DODGE", "CREATURE_FLAG_EXTRA_NO_DODGE", "xinef: target cannot dodge" }; case CREATURE_FLAG_EXTRA_MODULE: return { "CREATURE_FLAG_EXTRA_MODULE", "CREATURE_FLAG_EXTRA_MODULE", "Used by module creatures to avoid blizzlike checks." }; - case CREATURE_FLAG_EXTRA_IGNORE_ASSISTANCE_CALL: return { "CREATURE_FLAG_EXTRA_IGNORE_ASSISTANCE_CALL", "Creatures are not aggroed by other mobs assistance functions", "" }; + case CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE: return { "CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE", "Creature does not call for assistance on initial aggro", "" }; case CREATURE_FLAG_DONT_OVERRIDE_ENTRY_SAI: return { "CREATURE_FLAG_DONT_OVERRIDE_ENTRY_SAI", "Creature entry SAI won't be overriden by GUID SAI", "" }; case CREATURE_FLAG_EXTRA_UNUSED_28: return { "CREATURE_FLAG_EXTRA_UNUSED_28", "CREATURE_FLAG_EXTRA_UNUSED_28", "" }; case CREATURE_FLAG_EXTRA_DUNGEON_BOSS: return { "CREATURE_FLAG_EXTRA_DUNGEON_BOSS", "CREATURE_FLAG_EXTRA_DUNGEON_BOSS", "creature is a dungeon boss (SET DYNAMICALLY, DO NOT ADD IN DB)" }; @@ -100,7 +100,7 @@ AC_API_EXPORT CreatureFlagsExtra EnumUtils::FromIndex(size_t case 22: return CREATURE_FLAG_EXTRA_AVOID_AOE; case 23: return CREATURE_FLAG_EXTRA_NO_DODGE; case 24: return CREATURE_FLAG_EXTRA_MODULE; - case 25: return CREATURE_FLAG_EXTRA_IGNORE_ASSISTANCE_CALL; + case 25: return CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE; case 26: return CREATURE_FLAG_DONT_OVERRIDE_ENTRY_SAI; case 27: return CREATURE_FLAG_EXTRA_UNUSED_28; case 28: return CREATURE_FLAG_EXTRA_DUNGEON_BOSS; @@ -141,7 +141,7 @@ AC_API_EXPORT size_t EnumUtils::ToIndex(CreatureFlagsExtra v case CREATURE_FLAG_EXTRA_AVOID_AOE: return 22; case CREATURE_FLAG_EXTRA_NO_DODGE: return 23; case CREATURE_FLAG_EXTRA_MODULE: return 24; - case CREATURE_FLAG_EXTRA_IGNORE_ASSISTANCE_CALL: return 25; + case CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE: return 25; case CREATURE_FLAG_DONT_OVERRIDE_ENTRY_SAI: return 26; case CREATURE_FLAG_EXTRA_UNUSED_28: return 27; case CREATURE_FLAG_EXTRA_DUNGEON_BOSS: return 28; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 2e77b6cdb..3f8e26ad0 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -10368,7 +10368,11 @@ bool Unit::Attack(Unit* victim, bool meleeAttack) creature->SendAIReaction(AI_REACTION_HOSTILE); - creature->CallAssistance(); + /// @todo: Implement aggro range, detection range and assistance range templates + if (!(creature->ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE)) + { + creature->CallAssistance(); + } creature->SetAssistanceTimer(sWorld->getIntConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_PERIOD)); SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); From 6634d6a581484499a2739d6c5ffffd3095ce431c Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 20 Apr 2023 21:19:31 +0000 Subject: [PATCH 14/14] chore(DB): import pending files Referenced commit(s): b86cf11499f148376639401d479ddc8d33723b77 --- .../rev_1682017480991526700.sql => db_world/2023_04_20_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1682017480991526700.sql => db_world/2023_04_20_00.sql} (95%) diff --git a/data/sql/updates/pending_db_world/rev_1682017480991526700.sql b/data/sql/updates/db_world/2023_04_20_00.sql similarity index 95% rename from data/sql/updates/pending_db_world/rev_1682017480991526700.sql rename to data/sql/updates/db_world/2023_04_20_00.sql index f442aca84..456c13bbc 100644 --- a/data/sql/updates/pending_db_world/rev_1682017480991526700.sql +++ b/data/sql/updates/db_world/2023_04_20_00.sql @@ -1,3 +1,4 @@ +-- DB update 2023_04_19_34 -> 2023_04_20_00 -- UPDATE `creature_template` SET `flags_extra` = `flags_extra`|33554432 WHERE `entry` IN (16523, 16594, 17083, 17420, 17694, 16507, 17462, 18404, 17993, 18421, 19486, 18422, 19557, 19505); -- Botanica & SHH UPDATE `creature_template` SET `flags_extra` = `flags_extra`|33554432 WHERE `entry` IN (20567, 20576, 20577, 20587, 20591, 20593, 20595, 21548, 21549, 21555, 21570, 21571, 21572, 21577); -- Botanica & SHH Heroics