From 2ff4788b90c26087eb77d784a6281f362744ab0d Mon Sep 17 00:00:00 2001 From: FlyingArowana Date: Sat, 30 Nov 2024 09:35:17 +0000 Subject: [PATCH 01/66] fix(DB/Quest) - Remove the wrong prerequisite Escape from Skettis and Hungry Nether Rays (#20753) * Created File * Removed the prequiste quests * Space correction --- .../updates/pending_db_world/rev_1732663460298122300.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1732663460298122300.sql diff --git a/data/sql/updates/pending_db_world/rev_1732663460298122300.sql b/data/sql/updates/pending_db_world/rev_1732663460298122300.sql new file mode 100644 index 00000000000000..1a8d55e0dfdcec --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1732663460298122300.sql @@ -0,0 +1,6 @@ +-- +-- To Skettis! requirement removed from Escape from Skettis +UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 11085); + +-- To Skettis! requirement removed from Hungry Nether Rays +UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 11093); From cf0097e4dd370a1d3352c7280a5fe5416592fbb3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 30 Nov 2024 09:36:11 +0000 Subject: [PATCH 02/66] chore(DB): import pending files Referenced commit(s): 2ff4788b90c26087eb77d784a6281f362744ab0d --- .../rev_1732663460298122300.sql => db_world/2024_11_30_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1732663460298122300.sql => db_world/2024_11_30_00.sql} (86%) diff --git a/data/sql/updates/pending_db_world/rev_1732663460298122300.sql b/data/sql/updates/db_world/2024_11_30_00.sql similarity index 86% rename from data/sql/updates/pending_db_world/rev_1732663460298122300.sql rename to data/sql/updates/db_world/2024_11_30_00.sql index 1a8d55e0dfdcec..5afb60cd67dd74 100644 --- a/data/sql/updates/pending_db_world/rev_1732663460298122300.sql +++ b/data/sql/updates/db_world/2024_11_30_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_27_02 -> 2024_11_30_00 -- -- To Skettis! requirement removed from Escape from Skettis UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 11085); From 9d422136f6112d22c7cda45a9d0bca8823043964 Mon Sep 17 00:00:00 2001 From: sudlud Date: Sat, 30 Nov 2024 11:31:02 +0100 Subject: [PATCH 03/66] =?UTF-8?q?fix(Core/LootMgr):=20add=20startup=20erro?= =?UTF-8?q?r=20for=20unsupported=20reference=20minCou=E2=80=A6=20(#20725)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rev_1732727220046586300.sql | 837 ++++++++++++++++++ src/server/game/Loot/LootMgr.cpp | 42 +- src/server/game/Loot/LootMgr.h | 3 +- 3 files changed, 861 insertions(+), 21 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1732727220046586300.sql diff --git a/data/sql/updates/pending_db_world/rev_1732727220046586300.sql b/data/sql/updates/pending_db_world/rev_1732727220046586300.sql new file mode 100644 index 00000000000000..05badf0e90b2ab --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1732727220046586300.sql @@ -0,0 +1,837 @@ +-- enforce minCnt == macCnt for reference loot entries + +-- creature loot + +-- 33885 XT-002 Deconstructor (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 33885 AND `Item` = 1 AND `Reference` = 34358 ); +-- 37613 Forgemaster Garfrost (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37613 AND `Item` = 1 AND `Reference` = 35060 ); +-- 17808 Anetheron, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 17808 AND `Item` = 34065 AND `Reference` = 34065 ); +-- 22898 Supremus, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 22898 AND `Item` = 34071 AND `Reference` = 34071 ); +-- 38401 Prince Valanar (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 38401 AND `Item` = 1 AND `Reference` = 34248 ); +-- 38075 Deathspeaker Servant (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38075 AND `Item` = 1 AND `Reference` = 35069 ); +-- 35448 Icehowl (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35448 AND `Item` = 1 AND `Reference` = 34306 ); +-- 35448 Icehowl (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35448 AND `Item` = 2 AND `Reference` = 34313 ); +-- 38390 Rotface (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 38390 AND `Item` = 1 AND `Reference` = 34245 ); +-- 37957 Lord Marrowgar (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 37957 AND `Item` = 1 AND `Reference` = 34242 ); +-- 38479 Darkfallen Tactician (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38479 AND `Item` = 1 AND `Reference` = 35069 ); +-- 33515 Auriaya, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33515 AND `Item` = 1 AND `Reference` = 34363 ); +-- 37664 Darkfallen Archmage, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37664 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37546 Frenzied Abomination, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37546 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38599 Falric (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38599 AND `Item` = 1 AND `Reference` = 35055 ); +-- 11492 Alzzin the Wildshaper, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11492 AND `Item` = 35017 AND `Reference` = 35017 ); +-- 38058 Nerub'ar Broodkeeper (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38058 AND `Item` = 1 AND `Reference` = 35069 ); +-- 19516 Void Reaver, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 19516 AND `Item` = 34054 AND `Reference` = 34054 ); +-- 19622 Kael'thas Sunstrider, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 19622 AND `Item` = 34056 AND `Reference` = 34056 ); +-- 19622 Kael'thas Sunstrider, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 19622 AND `Item` = 90056 AND `Reference` = 34056 ); +-- 29278 Maexxna (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 29278 AND `Item` = 1 AND `Reference` = 34139 ); +-- 38434 Blood-Queen Lana'thel (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38434 AND `Item` = 2 AND `Reference` = 34278 ); +-- 15936 Heigan the Unclean, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15936 AND `Item` = 1 AND `Reference` = 34041 ); +-- 38059 Ancient Skeletal Soldier (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38059 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38585 Professor Putricide (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38585 AND `Item` = 1 AND `Reference` = 34258 ); +-- 18831 High King Maulgar, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 18831 AND `Item` = 34050 AND `Reference` = 34050 ); +-- 38031 Deathbound Ward (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38031 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38074 Deathspeaker High Priest (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38074 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38267 Sindragosa (3), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38267 AND `Item` = 2 AND `Reference` = 34278 ); +-- 29701 Heigan the Unclean (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 29701 AND `Item` = 1 AND `Reference` = 34148 ); +-- 31311 Sartharion (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 31311 AND `Item` = 1 AND `Reference` = 34166 ); +-- 22947 Mother Shahraz, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 22947 AND `Item` = 34076 AND `Reference` = 34076 ); +-- 22917 Illidan Stormrage, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 22917 AND `Item` = 90077 AND `Reference` = 34077 ); +-- 9019 Emperor Dagran Thaurissan, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 9019 AND `Item` = 35014 AND `Reference` = 35014 ); +-- 38106 Lady Deathwhisper (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 38106 AND `Item` = 1 AND `Reference` = 34243 ); +-- 11486 Prince Tortheldrin, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11486 AND `Item` = 35021 AND `Reference` = 35021 ); +-- 38296 Lady Deathwhisper (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38296 AND `Item` = 1 AND `Reference` = 34255 ); +-- 21214 Fathom-Lord Karathress, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 21214 AND `Item` = 34060 AND `Reference` = 34060 ); +-- 19044 Gruul the Dragonkiller, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 19044 AND `Item` = 34051 AND `Reference` = 34051 ); +-- 25165 Lady Sacrolash, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 25165 AND `Item` = 34085 AND `Reference` = 34085 ); +-- 32867 Steelbreaker, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 32867 AND `Item` = 1 AND `Reference` = 34359 ); +-- 33724 Razorscale (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 33724 AND `Item` = 1 AND `Reference` = 34356 ); +-- 12017 Broodlord Lashlayer, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 12017 AND `Item` = 30346 AND `Reference` = 30346 ); +-- 37662 Darkfallen Commander, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37662 AND `Item` = 1 AND `Reference` = 35069 ); +-- 24239 Hex Lord Malacrass, minCnt 2, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 24239 AND `Item` = 34078 AND `Reference` = 34078 ); +-- 38564 Shadowy Mercenary (1), minCnt 1, maxCnt 2 +-- 38563 Ghostly Priest (1), minCnt 1, maxCnt 2 +-- 38544 Tortured Rifleman (1), minCnt 1, maxCnt 2 +-- 38525 Spectral Footman (1), minCnt 1, maxCnt 2 +-- 38524 Phantom Mage (1), minCnt 1, maxCnt 2 +-- 38249 Hungering Ghoul (1), minCnt 1, maxCnt 2 +-- 38193 Soulguard Bonecaster (1), minCnt 1, maxCnt 2 +-- 38026 Deathwhisper Torturer (1), minCnt 1, maxCnt 2 +-- 38025 Deathwhisper Shadowcaster (1), minCnt 1, maxCnt 2 +-- 37720 Frostsworn General (1), minCnt 1, maxCnt 2 +-- 37644 Ymirjar Wrathbringer (1), minCnt 1, maxCnt 2 +-- 37643 Ymirjar Skycaller (1), minCnt 1, maxCnt 2 +-- 37642 Ymirjar Flamebearer (1), minCnt 1, maxCnt 2 +-- 37641 Ymirjar Deathbringer (1), minCnt 1, maxCnt 2 +-- 37638 Wrathbone Laborer (1), minCnt 1, maxCnt 2 +-- 37637 Wrathbone Coldwraith (1), minCnt 1, maxCnt 2 +-- 37636 Stonespine Gargoyle (1), minCnt 1, maxCnt 2 +-- 37635 Plagueborn Horror (1), minCnt 1, maxCnt 2 +-- 37622 Geist Ambusher (1), minCnt 1, maxCnt 2 +-- 37609 Deathwhisper Necrolyte (1), minCnt 1, maxCnt 2 +-- 37569 Soulguard Watchman (1), minCnt 1, maxCnt 2 +-- 37568 Soulguard Reaper (1), minCnt 1, maxCnt 2 +-- 37567 Soulguard Animator (1), minCnt 1, maxCnt 2 +-- 37566 Soulguard Adept (1), minCnt 1, maxCnt 2 +-- 37565 Soul Horror (1), minCnt 1, maxCnt 2 +-- 37563 Spectral Warden (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 100001 AND `Item` = 1 AND `Reference` = 35073 ); +-- 38494 Rotting Frost Giant, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38494 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37007 Deathbound Ward, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37007 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38134 Frostwarden Warrior (1), minCnt 1, maxCnt 2 +-- 37228 Frostwarden Warrior, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37228 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38550 Rotface (3), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 38550 AND `Item` = 1 AND `Reference` = 34269 ); +-- 38445 Spire Minion (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38445 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37012 Ancient Skeletal Soldier, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37012 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38110 Pustulating Horror (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38110 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38099 Darkfallen Archmage (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38099 AND `Item` = 1 AND `Reference` = 35069 ); +-- 24892 Sathrovarr the Corruptor, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 24892 AND `Item` = 34082 AND `Reference` = 34082 ); +-- 35615 Anub'arak (2), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 35615 AND `Item` = 1 AND `Reference` = 34310 ); +-- 35615 Anub'arak (2), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 35615 AND `Item` = 2 AND `Reference` = 34317 ); +-- 37677 Devourer of Souls (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37677 AND `Item` = 1 AND `Reference` = 35052 ); +-- 38063 Vengeful Fleshreaper (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38063 AND `Item` = 1 AND `Reference` = 35069 ); +-- 11583 Nefarian, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11583 AND `Item` = 30486 AND `Reference` = 30486 ); +-- 11583 Nefarian, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11583 AND `Item` = 34009 AND `Reference` = 34009 ); +-- 29324 Patchwerk (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 29324 AND `Item` = 1 AND `Reference` = 34140 ); +-- 25840 Entropius, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 25840 AND `Item` = 34095 AND `Reference` = 34095 ); +-- 10363 General Drakkisath, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 10363 AND `Item` = 35025 AND `Reference` = 35025 ); +-- 11382 Bloodlord Mandokir, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11382 AND `Item` = 34088 AND `Reference` = 34088 ); +-- 38603 Marwyn (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38603 AND `Item` = 1 AND `Reference` = 35056 ); +-- 17225 Nightbane, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 17225 AND `Item` = 34022 AND `Reference` = 34022 ); +-- 12435 Razorgore the Untamed, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 12435 AND `Item` = 30369 AND `Reference` = 30369 ); +-- 12201 Princess Theradras, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 12201 AND `Item` = 35009 AND `Reference` = 35009 ); +-- 29448 Thaddius (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 29448 AND `Item` = 1 AND `Reference` = 34143 ); +-- 29448 Thaddius (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 29448 AND `Item` = 2 AND `Reference` = 34380 ); +-- 8443 Avatar of Hakkar, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 8443 AND `Item` = 35012 AND `Reference` = 35012 ); +-- 10429 Warchief Rend Blackhand, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 10429 AND `Item` = 35022 AND `Reference` = 35022 ); +-- 37627 Ick (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37627 AND `Item` = 1 AND `Reference` = 35061 ); +-- 36627 Rotface, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36627 AND `Item` = 1 AND `Reference` = 34233 ); +-- 10404 Pustulating Horror, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 10404 AND `Item` = 1 AND `Reference` = 35069 ); +-- 29120 Anub'arak, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 29120 AND `Item` = 1 AND `Reference` = 35035 ); +-- 11498 Skarr the Unbreakable, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11498 AND `Item` = 35015 AND `Reference` = 35015 ); +-- 21217 The Lurker Below, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 21217 AND `Item` = 34058 AND `Reference` = 34058 ); +-- 39167 The Lich King (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 39167 AND `Item` = 1 AND `Reference` = 34262 ); +-- 10813 Balnazzar, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 10813 AND `Item` = 35027 AND `Reference` = 35027 ); +-- 11380 Jin'do the Hexxer, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11380 AND `Item` = 34089 AND `Reference` = 34089 ); +-- 36811 Deathspeaker Attendant, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36811 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37595 Darkfallen Blood Knight, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37595 AND `Item` = 1 AND `Reference` = 35069 ); +-- 33693 Steelbreaker (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 33693 AND `Item` = 1 AND `Reference` = 34360 ); +-- 38139 Frostwarden Handler (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38139 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37544 Spire Gargoyle, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37544 AND `Item` = 1 AND `Reference` = 35069 ); +-- 17842 Azgalor, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 17842 AND `Item` = 34067 AND `Reference` = 34067 ); +-- 37506 Festergut (3), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 37506 AND `Item` = 1 AND `Reference` = 34268 ); +-- 11501 King Gordok, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11501 AND `Item` = 35019 AND `Reference` = 35019 ); +-- 37959 Lord Marrowgar (3), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 37959 AND `Item` = 1 AND `Reference` = 34266 ); +-- 33993 Emalon the Storm Watcher, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33993 AND `Item` = 1 AND `Reference` = 34208 ); +-- 33118 Ignis the Furnace Master, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33118 AND `Item` = 1 AND `Reference` = 34353 ); +-- 14888 Lethon, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 14888 AND `Item` = 34002 AND `Reference` = 34002 ); +-- 14888 Lethon, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 14888 AND `Item` = 34005 AND `Reference` = 34005 ); +-- 16457 Maiden of Virtue, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 16457 AND `Item` = 34018 AND `Reference` = 34018 ); +-- 5709 Shade of Eranikus, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 5709 AND `Item` = 35013 AND `Reference` = 35013 ); +-- 34564 Anub'arak, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 34564 AND `Item` = 1 AND `Reference` = 34298 ); +-- 34564 Anub'arak, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 34564 AND `Item` = 2 AND `Reference` = 34304 ); +-- 39168 The Lich King (3), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 39168 AND `Item` = 1 AND `Reference` = 34274 ); +-- 39168 The Lich King (3), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 39168 AND `Item` = 2 AND `Reference` = 34278 ); +-- 35352 Fjola Lightbane (3), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35352 AND `Item` = 1 AND `Reference` = 34336 ); +-- 35352 Fjola Lightbane (3), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35352 AND `Item` = 2 AND `Reference` = 34343 ); +-- 27978 Sjonnir The Ironshaper, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27978 AND `Item` = 1 AND `Reference` = 35044 ); +-- 22948 Gurtogg Bloodboil, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 22948 AND `Item` = 34074 AND `Reference` = 34074 ); +-- 35351 Fjola Lightbane (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35351 AND `Item` = 1 AND `Reference` = 34308 ); +-- 35351 Fjola Lightbane (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35351 AND `Item` = 2 AND `Reference` = 34315 ); +-- 33113 Flame Leviathan, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33113 AND `Item` = 2 AND `Reference` = 34351 ); +-- 6109 Azuregos, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 6109 AND `Item` = 34002 AND `Reference` = 34002 ); +-- 6109 Azuregos, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 6109 AND `Item` = 34004 AND `Reference` = 34004 ); +-- 6109 Azuregos, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 6109 AND `Item` = 190003 AND `Reference` = 34003 ); +-- 13020 Vaelastrasz the Corrupt, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 13020 AND `Item` = 30372 AND `Reference` = 30372 ); +-- 17257 Magtheridon, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 17257 AND `Item` = 90039 AND `Reference` = 34039 ); +-- 35360 Koralon the Flame Watcher (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35360 AND `Item` = 1 AND `Reference` = 34205 ); +-- 35360 Koralon the Flame Watcher (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35360 AND `Item` = 3 AND `Reference` = 34205 ); +-- 35360 Koralon the Flame Watcher (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35360 AND `Item` = 4 AND `Reference` = 34205 ); +-- 29306 Gal'darah, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 29306 AND `Item` = 1 AND `Reference` = 35039 ); +-- 36807 Deathspeaker Disciple, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36807 AND `Item` = 1 AND `Reference` = 35069 ); +-- 15339 Ossirian the Unscarred, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15339 AND `Item` = 34024 AND `Reference` = 34024 ); +-- 15339 Ossirian the Unscarred, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15339 AND `Item` = 34025 AND `Reference` = 34025 ); +-- 14890 Taerar, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 14890 AND `Item` = 34002 AND `Reference` = 34002 ); +-- 14890 Taerar, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 14890 AND `Item` = 34007 AND `Reference` = 34007 ); +-- 36626 Festergut, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36626 AND `Item` = 1 AND `Reference` = 34232 ); +-- 15688 Terestian Illhoof, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15688 AND `Item` = 34019 AND `Reference` = 34019 ); +-- 37663 Darkfallen Noble, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37663 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37666 Darkfallen Tactician, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37666 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38785 Prince Valanar (3), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 38785 AND `Item` = 1 AND `Reference` = 34271 ); +-- 36805 Deathspeaker Servant, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36805 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37505 Festergut (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37505 AND `Item` = 1 AND `Reference` = 34256 ); +-- 37501 Nerub'ar Champion, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37501 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38435 Blood-Queen Lana'thel (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38435 AND `Item` = 1 AND `Reference` = 34260 ); +-- 10184 Onyxia, minCnt 1, maxCnt 5 +UPDATE `creature_loot_template` SET `MinCount` = 5 WHERE ( `Entry`= 10184 AND `Item` = 1 AND `Reference` = 34000 ); +-- 38108 Blighted Abomination (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38108 AND `Item` = 1 AND `Reference` = 35069 ); +-- 21212 Lady Vashj, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 21212 AND `Item` = 34062 AND `Reference` = 34062 ); +-- 21212 Lady Vashj, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 21212 AND `Item` = 90062 AND `Reference` = 34062 ); +-- 10430 The Beast, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 10430 AND `Item` = 35023 AND `Reference` = 35023 ); +-- 10440 Baron Rivendare, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 10440 AND `Item` = 35028 AND `Reference` = 35028 ); +-- 11447 Mushgog, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11447 AND `Item` = 35015 AND `Reference` = 35015 ); +-- 10508 Ras Frostwhisper, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 10508 AND `Item` = 35030 AND `Reference` = 35030 ); +-- 38102 Darkfallen Commander (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38102 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37022 Blighted Abomination, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37022 AND `Item` = 1 AND `Reference` = 35069 ); +-- 10997 Cannon Master Willey, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 10997 AND `Item` = 35026 AND `Reference` = 35026 ); +-- 11496 Immol'thar, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11496 AND `Item` = 35020 AND `Reference` = 35020 ); +-- 11497 The Razza, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11497 AND `Item` = 35015 AND `Reference` = 35015 ); +-- 11502 Ragnaros, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 11502 AND `Item` = 30171 AND `Reference` = 30171 ); +-- 26723 Keristrasza, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 26723 AND `Item` = 1 AND `Reference` = 35033 ); +-- 33449 General Vezax (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 33449 AND `Item` = 1 AND `Reference` = 34374 ); +-- 34175 Auriaya (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 34175 AND `Item` = 1 AND `Reference` = 34364 ); +-- 16808 Warchief Kargath Bladefist, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 16808 AND `Item` = 35003 AND `Reference` = 35003 ); +-- 14020 Chromaggus, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 14020 AND `Item` = 30379 AND `Reference` = 30379 ); +-- 35447 Icehowl (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 35447 AND `Item` = 1 AND `Reference` = 34320 ); +-- 35447 Icehowl (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 35447 AND `Item` = 2 AND `Reference` = 34327 ); +-- 15340 Moam, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15340 AND `Item` = 34024 AND `Reference` = 34024 ); +-- 35268 Lord Jaraxxus (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35268 AND `Item` = 1 AND `Reference` = 34307 ); +-- 35268 Lord Jaraxxus (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35268 AND `Item` = 2 AND `Reference` = 34314 ); +-- 36724 Servant of the Throne, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36724 AND `Item` = 1 AND `Reference` = 35069 ); +-- 36612 Lord Marrowgar, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36612 AND `Item` = 1 AND `Reference` = 34230 ); +-- 29311 Herald Volazj, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 29311 AND `Item` = 1 AND `Reference` = 35036 ); +-- 14887 Ysondre, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 14887 AND `Item` = 34002 AND `Reference` = 34002 ); +-- 14887 Ysondre, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 14887 AND `Item` = 34008 AND `Reference` = 34008 ); +-- 14889 Emeriss, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 14889 AND `Item` = 34002 AND `Reference` = 34002 ); +-- 14889 Emeriss, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 14889 AND `Item` = 34006 AND `Reference` = 34006 ); +-- 25166 Grand Warlock Alythess, minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 25166 AND `Item` = 34085 AND `Reference` = 34085 ); +-- 15341 General Rajaxx, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15341 AND `Item` = 34024 AND `Reference` = 34024 ); +-- 15348 Kurinnaxx, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15348 AND `Item` = 34024 AND `Reference` = 34024 ); +-- 15369 Ayamiss the Hunter, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15369 AND `Item` = 34024 AND `Reference` = 34024 ); +-- 15370 Buru the Gorger, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15370 AND `Item` = 34024 AND `Reference` = 34024 ); +-- 29955 Gothik the Harvester (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 29955 AND `Item` = 1 AND `Reference` = 34145 ); +-- 15952 Maexxna, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15952 AND `Item` = 1 AND `Reference` = 34040 ); +-- 35449 Icehowl (3), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 35449 AND `Item` = 1 AND `Reference` = 34334 ); +-- 35449 Icehowl (3), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 35449 AND `Item` = 2 AND `Reference` = 34341 ); +-- 15687 Moroes, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15687 AND `Item` = 34017 AND `Reference` = 34017 ); +-- 15689 Netherspite, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15689 AND `Item` = 34021 AND `Reference` = 34021 ); +-- 15953 Grand Widow Faerlina, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15953 AND `Item` = 1 AND `Reference` = 34099 ); +-- 15931 Grobbulus, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15931 AND `Item` = 1 AND `Reference` = 34101 ); +-- 15954 Noth the Plaguebringer, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15954 AND `Item` = 1 AND `Reference` = 34042 ); +-- 15956 Anub'Rekhan, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15956 AND `Item` = 1 AND `Reference` = 34098 ); +-- 29940 Instructor Razuvious (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 29940 AND `Item` = 1 AND `Reference` = 34144 ); +-- 15989 Sapphiron, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15989 AND `Item` = 1 AND `Reference` = 34043 ); +-- 15990 Kel'Thuzad, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 15990 AND `Item` = 1 AND `Reference` = 34044 ); +-- 16028 Patchwerk, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 16028 AND `Item` = 1 AND `Reference` = 34100 ); +-- 16042 Lord Valthalak, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 16042 AND `Item` = 35024 AND `Reference` = 35024 ); +-- 16060 Gothik the Harvester, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 16060 AND `Item` = 1 AND `Reference` = 34103 ); +-- 16061 Instructor Razuvious, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 16061 AND `Item` = 1 AND `Reference` = 34102 ); +-- 29268 Grand Widow Faerlina (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 29268 AND `Item` = 1 AND `Reference` = 34138 ); +-- 16152 Attumen the Huntsman, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 16152 AND `Item` = 34016 AND `Reference` = 34016 ); +-- 31125 Archavon the Stone Watcher, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 31125 AND `Item` = 1 AND `Reference` = 34209 ); +-- 35616 Anub'arak (3), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 35616 AND `Item` = 1 AND `Reference` = 34338 ); +-- 35616 Anub'arak (3), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 35616 AND `Item` = 2 AND `Reference` = 34345 ); +-- 39166 The Lich King (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 39166 AND `Item` = 1 AND `Reference` = 34250 ); +-- 39166 The Lich King (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 39166 AND `Item` = 2 AND `Reference` = 34278 ); +-- 35216 Lord Jaraxxus (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 35216 AND `Item` = 1 AND `Reference` = 34321 ); +-- 35216 Lord Jaraxxus (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 35216 AND `Item` = 2 AND `Reference` = 34328 ); +-- 16524 Shade of Aran, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 16524 AND `Item` = 34020 AND `Reference` = 34020 ); +-- 35350 Fjola Lightbane (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35350 AND `Item` = 1 AND `Reference` = 34322 ); +-- 35350 Fjola Lightbane (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35350 AND `Item` = 2 AND `Reference` = 34329 ); +-- 17711 Doomwalker, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 17711 AND `Item` = 34080 AND `Reference` = 34080 ); +-- 17767 Rage Winterchill, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 17767 AND `Item` = 34064 AND `Reference` = 34064 ); +-- 17888 Kaz'rogal, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 17888 AND `Item` = 34066 AND `Reference` = 34066 ); +-- 17968 Archimonde, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 17968 AND `Item` = 34068 AND `Reference` = 34068 ); +-- 36853 Sindragosa, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36853 AND `Item` = 1 AND `Reference` = 34237 ); +-- 38436 Blood-Queen Lana'thel (3), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38436 AND `Item` = 2 AND `Reference` = 34278 ); +-- 18728 Doom Lord Kazzak, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 18728 AND `Item` = 1 AND `Reference` = 26043 ); +-- 18805 High Astromancer Solarian, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 18805 AND `Item` = 34055 AND `Reference` = 34055 ); +-- 38198 Nerub'ar Webweaver (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38198 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37025 Stinky, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37025 AND `Item` = 1 AND `Reference` = 35069 ); +-- 36829 Deathspeaker High Priest, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36829 AND `Item` = 1 AND `Reference` = 35069 ); +-- 19514 Al'ar, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 19514 AND `Item` = 1 AND `Reference` = 34053 ); +-- 38076 Deathspeaker Zealot (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38076 AND `Item` = 1 AND `Reference` = 35069 ); +-- 21213 Morogrim Tidewalker, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 21213 AND `Item` = 34061 AND `Reference` = 34061 ); +-- 21215 Leotheras the Blind, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 21215 AND `Item` = 34059 AND `Reference` = 34059 ); +-- 21216 Hydross the Unstable, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 21216 AND `Item` = 34057 AND `Reference` = 34057 ); +-- 36808 Deathspeaker Zealot, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36808 AND `Item` = 1 AND `Reference` = 35069 ); +-- 36494 Forgemaster Garfrost, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36494 AND `Item` = 1 AND `Reference` = 35057 ); +-- 22841 Shade of Akama, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 22841 AND `Item` = 34072 AND `Reference` = 34072 ); +-- 22871 Teron Gorefiend, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 22871 AND `Item` = 34073 AND `Reference` = 34073 ); +-- 22887 High Warlord Naj'entus, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 22887 AND `Item` = 34070 AND `Reference` = 34070 ); +-- 33293 XT-002 Deconstructor, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33293 AND `Item` = 1 AND `Reference` = 34357 ); +-- 23420 Essence of Anger, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 23420 AND `Item` = 34075 AND `Reference` = 34075 ); +-- 37098 Val'kyr Herald, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37098 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38297 Lady Deathwhisper (3), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 38297 AND `Item` = 1 AND `Reference` = 34267 ); +-- 23863 Zul'jin, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 23863 AND `Item` = 34079 AND `Reference` = 34079 ); +-- 38418 Val'kyr Herald (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38418 AND `Item` = 1 AND `Reference` = 35069 ); +-- 23954 Ingvar the Plunderer, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 23954 AND `Item` = 1 AND `Reference` = 35048 ); +-- 38112 Falric, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38112 AND `Item` = 1 AND `Reference` = 35053 ); +-- 24882 Brutallus, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 24882 AND `Item` = 34083 AND `Reference` = 34083 ); +-- 25038 Felmyst, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 25038 AND `Item` = 34084 AND `Reference` = 34084 ); +-- 25315 Kil'jaeden, minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 25315 AND `Item` = 34096 AND `Reference` = 34096 ); +-- 38549 Rotface (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38549 AND `Item` = 1 AND `Reference` = 34257 ); +-- 37958 Lord Marrowgar (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37958 AND `Item` = 1 AND `Reference` = 34254 ); +-- 26632 The Prophet Tharon'ja, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 26632 AND `Item` = 1 AND `Reference` = 35032 ); +-- 37504 Festergut (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 37504 AND `Item` = 1 AND `Reference` = 34244 ); +-- 26861 King Ymiron, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 26861 AND `Item` = 1 AND `Reference` = 35050 ); +-- 38784 Prince Valanar (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38784 AND `Item` = 1 AND `Reference` = 34259 ); +-- 33694 Stormcaller Brundir (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 33694 AND `Item` = 1 AND `Reference` = 34360 ); +-- 28923 Loken, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 28923 AND `Item` = 1 AND `Reference` = 35043 ); +-- 29249 Anub'Rekhan (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 29249 AND `Item` = 1 AND `Reference` = 34137 ); +-- 29373 Grobbulus (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 29373 AND `Item` = 1 AND `Reference` = 34141 ); +-- 29417 Gluth (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 29417 AND `Item` = 1 AND `Reference` = 34142 ); +-- 29417 Gluth (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 29417 AND `Item` = 2 AND `Reference` = 34383 ); +-- 29615 Noth the Plaguebringer (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 29615 AND `Item` = 1 AND `Reference` = 34147 ); +-- 29718 Loatheb (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 29718 AND `Item` = 1 AND `Reference` = 34149 ); +-- 29718 Loatheb (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 29718 AND `Item` = 2 AND `Reference` = 34381 ); +-- 29991 Sapphiron (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 29991 AND `Item` = 1 AND `Reference` = 34135 ); +-- 30061 Kel'Thuzad (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 30061 AND `Item` = 1 AND `Reference` = 34136 ); +-- 30061 Kel'Thuzad (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 30061 AND `Item` = 2 AND `Reference` = 34133 ); +-- 36476 Ick, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36476 AND `Item` = 1 AND `Reference` = 35058 ); +-- 31134 Cyanigosa, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 31134 AND `Item` = 1 AND `Reference` = 35042 ); +-- 31722 Archavon the Stone Watcher (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 31722 AND `Item` = 1 AND `Reference` = 34216 ); +-- 37545 Spire Minion, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37545 AND `Item` = 1 AND `Reference` = 35069 ); +-- 32857 Stormcaller Brundir, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 32857 AND `Item` = 1 AND `Reference` = 34359 ); +-- 32927 Runemaster Molgeim, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 32927 AND `Item` = 1 AND `Reference` = 34359 ); +-- 33186 Razorscale, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33186 AND `Item` = 1 AND `Reference` = 34355 ); +-- 33190 Ignis the Furnace Master (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 33190 AND `Item` = 1 AND `Reference` = 34354 ); +-- 33271 General Vezax, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33271 AND `Item` = 1 AND `Reference` = 34373 ); +-- 33692 Runemaster Molgeim (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 33692 AND `Item` = 1 AND `Reference` = 34360 ); +-- 33955 Yogg-Saron (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33955 AND `Item` = 1 AND `Reference` = 34376 ); +-- 33955 Yogg-Saron (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33955 AND `Item` = 2 AND `Reference` = 12035 ); +-- 33994 Emalon the Storm Watcher (1), minCnt 1, maxCnt 4 +UPDATE `creature_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 33994 AND `Item` = 1 AND `Reference` = 34215 ); +-- 34003 Flame Leviathan (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 34003 AND `Item` = 2 AND `Reference` = 34352 ); +-- 34003 Flame Leviathan (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 34003 AND `Item` = 6 AND `Reference` = 34350 ); +-- 34566 Anub'arak (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 34566 AND `Item` = 1 AND `Reference` = 34324 ); +-- 34566 Anub'arak (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 34566 AND `Item` = 2 AND `Reference` = 34331 ); +-- 34780 Lord Jaraxxus, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 34780 AND `Item` = 1 AND `Reference` = 34295 ); +-- 34780 Lord Jaraxxus, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 34780 AND `Item` = 2 AND `Reference` = 34301 ); +-- 34797 Icehowl, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 34797 AND `Item` = 1 AND `Reference` = 34294 ); +-- 34797 Icehowl, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 34797 AND `Item` = 2 AND `Reference` = 34300 ); +-- 35269 Lord Jaraxxus (3), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 35269 AND `Item` = 1 AND `Reference` = 34335 ); +-- 35269 Lord Jaraxxus (3), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 35269 AND `Item` = 2 AND `Reference` = 34342 ); +-- 35451 The Black Knight, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35451 AND `Item` = 1 AND `Reference` = 34170 ); +-- 35490 The Black Knight (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 35490 AND `Item` = 1 AND `Reference` = 34171 ); +-- 36502 Devourer of Souls, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36502 AND `Item` = 1 AND `Reference` = 35051 ); +-- 36538 Onyxia (1), minCnt 1, maxCnt 5 +UPDATE `creature_loot_template` SET `MinCount` = 5 WHERE ( `Entry`= 36538 AND `Item` = 1 AND `Reference` = 34001 ); +-- 36597 The Lich King, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36597 AND `Item` = 1 AND `Reference` = 34238 ); +-- 36658 Scourgelord Tyrannus, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36658 AND `Item` = 1 AND `Reference` = 35059 ); +-- 36678 Professor Putricide, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36678 AND `Item` = 1 AND `Reference` = 34234 ); +-- 36725 Nerub'ar Broodkeeper, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36725 AND `Item` = 1 AND `Reference` = 35069 ); +-- 36855 Lady Deathwhisper, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36855 AND `Item` = 1 AND `Reference` = 34231 ); +-- 36880 Decaying Colossus, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36880 AND `Item` = 1 AND `Reference` = 35069 ); +-- 36938 Scourgelord Tyrannus (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 36938 AND `Item` = 1 AND `Reference` = 35062 ); +-- 37023 Plague Scientist, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37023 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37038 Vengeful Fleshreaper, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37038 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38137 Frostwarden Sorceress (1), minCnt 1, maxCnt 2 +-- 37229 Frostwarden Sorceress, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37229 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37502 Nerub'ar Webweaver, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37502 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37531 Frostwarden Handler, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37531 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37571 Darkfallen Advisor, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37571 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37655 Decaying Colossus (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37655 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37665 Darkfallen Lieutenant, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37665 AND `Item` = 1 AND `Reference` = 35069 ); +-- 37955 Blood-Queen Lana'thel, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37955 AND `Item` = 1 AND `Reference` = 34236 ); +-- 37970 Prince Valanar, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 37970 AND `Item` = 1 AND `Reference` = 34235 ); +-- 38057 Servant of the Throne (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38057 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38062 Plague Scientist (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38062 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38064 Stinky (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38064 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38072 Deathspeaker Attendant (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38072 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38073 Deathspeaker Disciple (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38073 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38098 Darkfallen Advisor (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38098 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38100 Darkfallen Blood Knight (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38100 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38101 Darkfallen Lieutenant (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38101 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38113 Marwyn, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38113 AND `Item` = 1 AND `Reference` = 35054 ); +-- 38197 Nerub'ar Champion (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38197 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38265 Sindragosa (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38265 AND `Item` = 2 AND `Reference` = 34278 ); +-- 38266 Sindragosa (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38266 AND `Item` = 1 AND `Reference` = 34261 ); +-- 38431 Professor Putricide (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38431 AND `Item` = 1 AND `Reference` = 34278 ); +-- 38433 Toravon the Ice Watcher, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38433 AND `Item` = 1 AND `Reference` = 34206 ); +-- 38446 Frenzied Abomination (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38446 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38462 Toravon the Ice Watcher (1), minCnt 1, maxCnt 3 +UPDATE `creature_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 38462 AND `Item` = 1 AND `Reference` = 34207 ); +-- 38480 Darkfallen Noble (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38480 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38481 Spire Gargoyle (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38481 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38490 Rotting Frost Giant, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38490 AND `Item` = 1 AND `Reference` = 35069 ); +-- 38586 Professor Putricide (3), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 38586 AND `Item` = 1 AND `Reference` = 34278 ); +-- 39863 Halion, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 39863 AND `Item` = 1 AND `Reference` = 34280 ); +-- 39864 Halion (1), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 39864 AND `Item` = 1 AND `Reference` = 34282 ); +-- 39944 Halion (2), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 39944 AND `Item` = 1 AND `Reference` = 34281 ); +-- 39945 Halion (3), minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 39945 AND `Item` = 1 AND `Reference` = 34283 ); +-- 38177 Shadowy Mercenary, minCnt 1, maxCnt 2 +-- 38176 Tortured Rifleman, minCnt 1, maxCnt 2 +-- 38175 Ghostly Priest, minCnt 1, maxCnt 2 +-- 38173 Spectral Footman, minCnt 1, maxCnt 2 +-- 38172 Phantom Mage, minCnt 1, maxCnt 2 +-- 37713 Deathwhisper Torturer, minCnt 1, maxCnt 2 +-- 37712 Deathwhisper Shadowcaster, minCnt 1, maxCnt 2 +-- 37711 Hungering Ghoul, minCnt 1, maxCnt 2 +-- 36896 Stonespine Gargoyle, minCnt 1, maxCnt 2 +-- 36879 Plagueborn Horror, minCnt 1, maxCnt 2 +-- 36842 Wrathbone Coldwraith, minCnt 1, maxCnt 2 +-- 36830 Wrathbone Laborer, minCnt 1, maxCnt 2 +-- 36788 Deathwhisper Necrolyte, minCnt 1, maxCnt 2 +-- 36723 Frostsworn General, minCnt 1, maxCnt 2 +-- 36666 Spectral Warden, minCnt 1, maxCnt 2 +-- 36620 Soulguard Adept, minCnt 1, maxCnt 2 +-- 36564 Soulguard Bonecaster, minCnt 1, maxCnt 2 +-- 36522 Soul Horror, minCnt 1, maxCnt 2 +-- 36516 Soulguard Animator, minCnt 1, maxCnt 2 +-- 36499 Soulguard Reaper, minCnt 1, maxCnt 2 +-- 36478 Soulguard Watchman, minCnt 1, maxCnt 2 +UPDATE `creature_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 100000 AND `Item` = 1 AND `Reference` = 35071 ); + +-- gameobject loot + +-- 195672 Argent Crusade Tribute Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 195672 AND `Item` = 1 AND `Reference` = 34293 ); +-- 195672 Argent Crusade Tribute Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 195672 AND `Item` = 2 AND `Reference` = 12002 ); +-- 202238 Deathbringer's Cache , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 28058 AND `Item` = 1 AND `Reference` = 34264 ); +-- 194315 Cache of Storms , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 26956 AND `Item` = 2 AND `Reference` = 12033 ); +-- 169243 Chest of The Seven , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 12260 AND `Item` = 12005 AND `Reference` = 12005 ); +-- 185169 Reinforced Fel Iron Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 21764 AND `Item` = 1 AND `Reference` = 35093 ); +-- 195046 Cache of Living Stone , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27061 AND `Item` = 1 AND `Reference` = 34361 ); +-- 191349 Cache of Eregos , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 24462 AND `Item` = 1 AND `Reference` = 35041 ); +-- 202338 Cache of the Dreamwalker , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 28064 AND `Item` = 1 AND `Reference` = 34265 ); +-- 195666 Argent Crusade Tribute Chest , minCnt 1, maxCnt 4 +UPDATE `gameobject_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 195666 AND `Item` = 3 AND `Reference` = 12002 ); +-- 185119 Dust Covered Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 20712 AND `Item` = 12001 AND `Reference` = 12001 ); +-- 195632 Champions' Cache , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 27503 AND `Item` = 1 AND `Reference` = 34325 ); +-- 195632 Champions' Cache , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 27503 AND `Item` = 2 AND `Reference` = 34332 ); +-- 202212 The Captain's Chest , minCnt 1, maxCnt 2 +-- 201710 The Captain's Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27985 AND `Item` = 1 AND `Reference` = 35091 ); +-- 179501 Knot Thimblejack's Cache , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 16591 AND `Item` = 12006 AND `Reference` = 12006 ); +-- 185168 Reinforced Fel Iron Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 21762 AND `Item` = 12003 AND `Reference` = 12003 ); +-- 195668 Argent Crusade Tribute Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 195668 AND `Item` = 1 AND `Reference` = 12002 ); +-- 194821 Gift of the Observer , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27030 AND `Item` = 1 AND `Reference` = 34134 ); +-- 202241 Deathbringer's Cache , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 28088 AND `Item` = 2 AND `Reference` = 34278 ); +-- 201872 Gunship Armory , minCnt 1, maxCnt 2 +-- 202177 Gunship Armory , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 28057 AND `Item` = 1 AND `Reference` = 34263 ); +-- 194327 Freya's Gift , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27081 AND `Item` = 2 AND `Reference` = 12027 ); +-- 194327 Freya's Gift , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27081 AND `Item` = 6 AND `Reference` = 34349 ); +-- 202240 Deathbringer's Cache , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 28074 AND `Item` = 2 AND `Reference` = 34278 ); +-- 193426 Four Horsemen Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 25193 AND `Item` = 2 AND `Reference` = 34382 ); +-- 193426 Four Horsemen Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 25193 AND `Item` = 40344 AND `Reference` = 34146 ); +-- 195633 Champions' Cache , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27335 AND `Item` = 1 AND `Reference` = 34311 ); +-- 195633 Champions' Cache , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27335 AND `Item` = 2 AND `Reference` = 34318 ); +-- 202336 The Captain's Chest , minCnt 1, maxCnt 2 +-- 202337 The Captain's Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27993 AND `Item` = 1 AND `Reference` = 35092 ); +-- 190663 Dark Runed Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 24556 AND `Item` = 1 AND `Reference` = 35037 ); +-- 193905 Alexstrasza's Gift , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 26094 AND `Item` = 1 AND `Reference` = 34174 ); +-- 193967 Alexstrasza's Gift , minCnt 1, maxCnt 4 +UPDATE `gameobject_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 26097 AND `Item` = 1 AND `Reference` = 34175 ); +-- 195670 Argent Crusade Tribute Chest , minCnt 1, maxCnt 4 +UPDATE `gameobject_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 27517 AND `Item` = 1 AND `Reference` = 34293 ); +-- 195670 Argent Crusade Tribute Chest , minCnt 1, maxCnt 4 +UPDATE `gameobject_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 27517 AND `Item` = 4 AND `Reference` = 12002 ); +-- 195047 Cache of Living Stone , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 26929 AND `Item` = 1 AND `Reference` = 34362 ); +-- 194314 Cache of Storms , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 26955 AND `Item` = 2 AND `Reference` = 12033 ); +-- 194329 Freya's Gift , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 26960 AND `Item` = 2 AND `Reference` = 12027 ); +-- 194329 Freya's Gift , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 26960 AND `Item` = 6 AND `Reference` = 34349 ); +-- 194331 Freya's Gift , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 26962 AND `Item` = 2 AND `Reference` = 12027 ); +-- 194956 Cache of Innovation , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 26963 AND `Item` = 2 AND `Reference` = 12031 ); +-- 194958 Cache of Innovation , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 26967 AND `Item` = 2 AND `Reference` = 12031 ); +-- 194822 Gift of the Observer , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 26974 AND `Item` = 1 AND `Reference` = 12023 ); +-- 194325 Freya's Gift , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27079 AND `Item` = 2 AND `Reference` = 12027 ); +-- 194326 Freya's Gift , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27080 AND `Item` = 4 AND `Reference` = 34349 ); +-- 195635 Champions' Cache , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 27356 AND `Item` = 1 AND `Reference` = 34339 ); +-- 195635 Champions' Cache , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 27356 AND `Item` = 2 AND `Reference` = 34346 ); +-- 195631 Champions' Cache , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27498 AND `Item` = 1 AND `Reference` = 34299 ); +-- 195631 Champions' Cache , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27498 AND `Item` = 2 AND `Reference` = 34305 ); +-- 195669 Argent Crusade Tribute Chest , minCnt 1, maxCnt 4 +UPDATE `gameobject_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 27512 AND `Item` = 1 AND `Reference` = 34293 ); +-- 195669 Argent Crusade Tribute Chest , minCnt 1, maxCnt 4 +UPDATE `gameobject_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 27512 AND `Item` = 6 AND `Reference` = 12002 ); +-- 195671 Argent Crusade Tribute Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27518 AND `Item` = 1 AND `Reference` = 34293 ); +-- 195671 Argent Crusade Tribute Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 27518 AND `Item` = 4 AND `Reference` = 12002 ); +-- 201873 Gunship Armory , minCnt 1, maxCnt 2 +-- 202178 Gunship Armory , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 28045 AND `Item` = 1 AND `Reference` = 12036 ); +-- 202239 Deathbringer's Cache , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 28046 AND `Item` = 1 AND `Reference` = 34240 ); +-- 201959 Cache of the Dreamwalker , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 28052 AND `Item` = 1 AND `Reference` = 34241 ); +-- 201874 Gunship Armory , minCnt 1, maxCnt 3 +-- 202180 Gunship Armory , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 28072 AND `Item` = 1 AND `Reference` = 34251 ); +-- 202339 Cache of the Dreamwalker , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 28082 AND `Item` = 1 AND `Reference` = 34253 ); +-- 201875 Gunship Armory , minCnt 1, maxCnt 3 +-- 202179 Gunship Armory , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 28090 AND `Item` = 1 AND `Reference` = 34275 ); +-- 202340 Cache of the Dreamwalker , minCnt 1, maxCnt 3 +UPDATE `gameobject_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 28096 AND `Item` = 1 AND `Reference` = 34277 ); +-- 195665 Argent Crusade Tribute Chest , minCnt 1, maxCnt 4 +UPDATE `gameobject_loot_template` SET `MinCount` = 4 WHERE ( `Entry`= 195665 AND `Item` = 5 AND `Reference` = 12002 ); +-- 195667 Argent Crusade Tribute Chest , minCnt 1, maxCnt 2 +UPDATE `gameobject_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 195667 AND `Item` = 3 AND `Reference` = 12002 ); + +-- item loot + +-- 34846 Black Sack of Gems, minCnt 1, maxCnt 2 +UPDATE `item_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 34846 AND `Item` = 0 AND `Reference` = 10005 ); +-- 34846 Black Sack of Gems, minCnt 1, maxCnt 3 +UPDATE `item_loot_template` SET `MinCount` = 3 WHERE ( `Entry`= 34846 AND `Item` = 10005 AND `Reference` = 10005 ); +-- 20469 Decoded True Believer Clippings, minCnt 1, maxCnt 2 +UPDATE `item_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 20469 AND `Item` = 1 AND `Reference` = 10025 ); +-- 46007 Bag of Fishing Treasures, minCnt 1, maxCnt 2 +UPDATE `item_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 46007 AND `Item` = 1 AND `Reference` = 10016 ); +-- 46007 Bag of Fishing Treasures, minCnt 1, maxCnt 2 +UPDATE `item_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 46007 AND `Item` = 2 AND `Reference` = 10017 ); +-- 46007 Bag of Fishing Treasures, minCnt 1, maxCnt 2 +UPDATE `item_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 46007 AND `Item` = 3 AND `Reference` = 10018 ); +-- 49909 Box of Chocolates, minCnt 1, maxCnt 6 +UPDATE `item_loot_template` SET `MinCount` = 6 WHERE ( `Entry`= 49909 AND `Item` = 1 AND `Reference` = 50012 ); +-- 44943 Icy Prism, minCnt 1, maxCnt 2 +UPDATE `item_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 44943 AND `Item` = 2 AND `Reference` = 45010 ); +-- 30320 Bundle of Nether Spikes, minCnt 1, maxCnt 6 +UPDATE `item_loot_template` SET `MinCount` = 6 WHERE ( `Entry`= 30320 AND `Item` = 10007 AND `Reference` = 10007 ); +-- 33844 Barrel of Fish, minCnt 1, maxCnt 2 +UPDATE `item_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33844 AND `Item` = 10003 AND `Reference` = 10003 ); +-- 33857 Crate of Meat, minCnt 1, maxCnt 2 +UPDATE `item_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 33857 AND `Item` = 10004 AND `Reference` = 10004 ); +-- 45986 Tiny Titanium Lockbox, minCnt 1, maxCnt 2 +UPDATE `item_loot_template` SET `MinCount` = 2 WHERE ( `Entry`= 45986 AND `Item` = 1 AND `Reference` = 10012 ); diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index e4215ff1d13f21..2f0dd99d920d1d 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -107,7 +107,7 @@ class LootTemplate::LootGroup // A set of loot def void Verify(LootStore const& lootstore, uint32 id, uint8 group_id) const; void CollectLootIds(LootIdSet& set) const; - void CheckLootRefs(LootTemplateMap const& store, LootIdSet* ref_set) const; + void CheckLootRefs(LootStore const& lootstore, uint32 Id, LootIdSet* ref_set) const; LootStoreItemList* GetExplicitlyChancedItemList() { return &ExplicitlyChanced; } LootStoreItemList* GetEqualChancedItemList() { return &EqualChanced; } void CopyConditions(ConditionList conditions); @@ -277,7 +277,7 @@ uint32 LootStore::LoadAndCollectLootIds(LootIdSet& lootIdSet) void LootStore::CheckLootRefs(LootIdSet* ref_set) const { for (LootTemplateMap::const_iterator ltItr = m_LootTemplates.begin(); ltItr != m_LootTemplates.end(); ++ltItr) - ltItr->second->CheckLootRefs(m_LootTemplates, ref_set); + ltItr->second->CheckLootRefs(*this, ltItr->first, ref_set); } void LootStore::ReportUnusedIds(LootIdSet const& lootIdSet) const @@ -297,6 +297,11 @@ void LootStore::ReportNonExistingId(uint32 lootId, const char* ownerType, uint32 LOG_ERROR("sql.sql", "Table '{}' Entry {} does not exist but it is used by {} {}", GetName(), lootId, ownerType, ownerId); } +void LootStore::ReportInvalidCount(uint32 lootId, const char* ownerType, uint32 ownerId, uint32 itemId, uint8 minCount, uint8 maxCount) const +{ + LOG_ERROR("sql.sql", "Table '{}' Entry {} used by {} entry {} item {} has minCount ( {} ) != maxCount ( {} ) which is not supported for this loot type.", GetName(), lootId, ownerType, ownerId, itemId, minCount, maxCount); +} + // // --------- LootStoreItem --------- // @@ -1502,21 +1507,20 @@ void LootTemplate::LootGroup::Verify(LootStore const& lootstore, uint32 id, uint } } -void LootTemplate::LootGroup::CheckLootRefs(LootTemplateMap const& /*store*/, LootIdSet* ref_set) const +void LootTemplate::LootGroup::CheckLootRefs(LootStore const& lootstore, uint32 Id, LootIdSet* ref_set) const { for (LootStoreItemList::const_iterator ieItr = ExplicitlyChanced.begin(); ieItr != ExplicitlyChanced.end(); ++ieItr) { LootStoreItem* item = *ieItr; if (item->reference) { + if (item->mincount != item->maxcount) + LootTemplates_Reference.ReportInvalidCount(std::abs(item->reference), lootstore.GetName(), Id, item->itemid, item->mincount, item->maxcount); + if (!LootTemplates_Reference.GetLootFor(std::abs(item->reference))) - { - LootTemplates_Reference.ReportNonExistingId(std::abs(item->reference), "Reference", item->itemid); - } + LootTemplates_Reference.ReportNonExistingId(std::abs(item->reference), lootstore.GetName(), item->itemid); else if (ref_set) - { ref_set->erase(std::abs(item->reference)); - } } } @@ -1525,14 +1529,13 @@ void LootTemplate::LootGroup::CheckLootRefs(LootTemplateMap const& /*store*/, Lo LootStoreItem* item = *ieItr; if (item->reference) { + if (item->mincount != item->maxcount) + LootTemplates_Reference.ReportInvalidCount(std::abs(item->reference), lootstore.GetName(), Id, item->itemid, item->mincount, item->maxcount); + if (!LootTemplates_Reference.GetLootFor(std::abs(item->reference))) - { - LootTemplates_Reference.ReportNonExistingId(std::abs(item->reference), "Reference", item->itemid); - } + LootTemplates_Reference.ReportNonExistingId(std::abs(item->reference), lootstore.GetName(), item->itemid); else if (ref_set) - { ref_set->erase(std::abs(item->reference)); - } } } } @@ -1864,27 +1867,26 @@ void LootTemplate::Verify(LootStore const& lootstore, uint32 id) const /// @todo: References validity checks } -void LootTemplate::CheckLootRefs(LootTemplateMap const& store, LootIdSet* ref_set) const +void LootTemplate::CheckLootRefs(LootStore const& lootstore, uint32 Id, LootIdSet* ref_set) const { for (LootStoreItemList::const_iterator ieItr = Entries.begin(); ieItr != Entries.end(); ++ieItr) { LootStoreItem* item = *ieItr; if (item->reference) { + if (item->mincount != item->maxcount) + LootTemplates_Reference.ReportInvalidCount(std::abs(item->reference), lootstore.GetName(), Id, item->itemid, item->mincount, item->maxcount); + if (!LootTemplates_Reference.GetLootFor(std::abs(item->reference))) - { - LootTemplates_Reference.ReportNonExistingId(std::abs(item->reference), "Reference", item->itemid); - } + LootTemplates_Reference.ReportNonExistingId(std::abs(item->reference), lootstore.GetName(), item->itemid); else if (ref_set) - { ref_set->erase(std::abs(item->reference)); - } } } for (LootGroups::const_iterator grItr = Groups.begin(); grItr != Groups.end(); ++grItr) if (LootGroup* group = *grItr) - group->CheckLootRefs(store, ref_set); + group->CheckLootRefs(lootstore, Id, ref_set); } bool LootTemplate::addConditionItem(Condition* cond) diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h index 0ba37596011534..ebdfc2d3dc8fc2 100644 --- a/src/server/game/Loot/LootMgr.h +++ b/src/server/game/Loot/LootMgr.h @@ -219,6 +219,7 @@ class LootStore void ReportUnusedIds(LootIdSet const& ids_set) const; void ReportNonExistingId(uint32 lootId) const; void ReportNonExistingId(uint32 lootId, const char* ownerType, uint32 ownerId) const; + void ReportInvalidCount(uint32 lootId, const char* ownerType, uint32 ownerId, uint32 itemId, uint8 minCount, uint8 maxCount) const; [[nodiscard]] bool HaveLootFor(uint32 loot_id) const { return m_LootTemplates.find(loot_id) != m_LootTemplates.end(); } [[nodiscard]] bool HaveQuestLootFor(uint32 loot_id) const; @@ -263,7 +264,7 @@ class LootTemplate // Checks integrity of the template void Verify(LootStore const& store, uint32 Id) const; - void CheckLootRefs(LootTemplateMap const& store, LootIdSet* ref_set) const; + void CheckLootRefs(LootStore const& lootstore, uint32 Id, LootIdSet* ref_set) const; bool addConditionItem(Condition* cond); [[nodiscard]] bool isReference(uint32 id) const; From c8805b6ed13e3f50026c6138152858bbd1f0ca10 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 30 Nov 2024 10:31:56 +0000 Subject: [PATCH 04/66] chore(DB): import pending files Referenced commit(s): 9d422136f6112d22c7cda45a9d0bca8823043964 --- .../rev_1732727220046586300.sql => db_world/2024_11_30_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1732727220046586300.sql => db_world/2024_11_30_01.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1732727220046586300.sql b/data/sql/updates/db_world/2024_11_30_01.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1732727220046586300.sql rename to data/sql/updates/db_world/2024_11_30_01.sql index 05badf0e90b2ab..28b75f3c72b12d 100644 --- a/data/sql/updates/pending_db_world/rev_1732727220046586300.sql +++ b/data/sql/updates/db_world/2024_11_30_01.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_30_00 -> 2024_11_30_01 -- enforce minCnt == macCnt for reference loot entries -- creature loot From 6ec4eb5ab6209fe89be0d8b3770c43ccf97b24e2 Mon Sep 17 00:00:00 2001 From: sudlud Date: Sat, 30 Nov 2024 16:21:21 +0100 Subject: [PATCH 05/66] fix(DB/Gameobject): Sniffed Values for 'Dwarf Hero / Gnome Hero' spawns (#20779) --- .../rev_1732971648185284700.sql | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1732971648185284700.sql diff --git a/data/sql/updates/pending_db_world/rev_1732971648185284700.sql b/data/sql/updates/pending_db_world/rev_1732971648185284700.sql new file mode 100644 index 00000000000000..6c6e400176462f --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1732971648185284700.sql @@ -0,0 +1,24 @@ +-- Update gameobject 'Dwarf Hero / Gnome Hero' with sniffed values +-- new spawns +DELETE FROM `gameobject` WHERE (`id` IN (180755, 180756)) +AND (`guid` BETWEEN 900 AND 913); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(900, 180755, 0, 0, 0, 1, 1, -4633.953125, -932.1756591796875, 507.62445068359375, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, "", 47720, NULL), +(901, 180755, 0, 0, 0, 1, 1, -4834.15283203125, -861.96600341796875, 505.34283447265625, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 120, 255, 1, "", 47720, NULL), +(902, 180755, 0, 0, 0, 1, 1, -4866.29052734375, -1148.2222900390625, 504.770294189453125, 0.471238493919372558, 0, 0, 0.233445167541503906, 0.972369968891143798, 120, 255, 1, "", 52237, NULL), +(903, 180755, 0, 0, 0, 1, 1, -4896.44384765625, -980.9735107421875, 506.79931640625, 2.268925428390502929, 0, 0, 0.906307220458984375, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(904, 180755, 0, 0, 0, 1, 1, -5001.94775390625, -1242.0035400390625, 511.2802734375, 0.680676698684692382, 0, 0, 0.333806037902832031, 0.942641794681549072, 120, 255, 1, "", 52237, NULL), +(905, 180755, 0, 0, 0, 1, 1, -5162.0400390625, -884.55035400390625, 507.917205810546875, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 120, 255, 1, "", 51943, NULL), +(906, 180755, 0, 0, 0, 1, 1, -8439.107421875, 625.29766845703125, 97.348419189453125, 5.724681377410888671, 0, 0, -0.27563667297363281, 0.961261868476867675, 120, 255, 1, "", 52237, NULL), +(907, 180755, 0, 0, 0, 1, 1, -8483.7900390625, 526.233154296875, 105.7811508178710937, 2.216565132141113281, 0, 0, 0.894933700561523437, 0.44619917869567871, 120, 255, 1, "", 52237, NULL), +(908, 180756, 0, 0, 0, 1, 1, -4633.861328125, -932.0946044921875, 506.45074462890625, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, "", 47720, NULL), +(909, 180756, 0, 0, 0, 1, 1, -4802.892578125, -1180.2821044921875, 504.93218994140625, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, "", 52237, NULL), +(910, 180756, 0, 0, 0, 1, 1, -4825.68408203125, -1289.34375, 504.256744384765625, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 120, 255, 1, "", 52237, NULL), +(911, 180756, 0, 0, 0, 1, 1, -4900.81591796875, -984.625, 506.778472900390625, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, "", 47720, NULL), +(912, 180756, 0, 0, 0, 1, 1, -5007.57275390625, -1235.19775390625, 511.25433349609375, 0.680676698684692382, 0, 0, 0.333806037902832031, 0.942641794681549072, 120, 255, 1, "", 52237, NULL), +(913, 180756, 0, 0, 0, 1, 1, -5166.14599609375, -883.52081298828125, 508.024810791015625, 1.256635904312133789, 0, 0, 0.587784767150878906, 0.809017360210418701, 120, 255, 1, "", 51943, NULL); + +-- enable all spawns for eventEntry 7 +DELETE FROM `game_event_gameobject` WHERE (`eventEntry` = 7) +AND (`guid` IN (SELECT `guid` FROM `gameobject` WHERE `id` IN (180755, 180756))); +INSERT INTO `game_event_gameobject` (SELECT 7, `guid` FROM `gameobject` WHERE `id` IN (180755, 180756)); From f1b635c0f4b4ed07af723141e8e4bd923016d4cd Mon Sep 17 00:00:00 2001 From: sudlud Date: Sat, 30 Nov 2024 16:21:43 +0100 Subject: [PATCH 06/66] fix(DB/Gameobject): Sniffed values for 'Lunar Festival' spawns (#20769) --- .../rev_1731870187134695200.sql | 1139 +++++++++++++++++ 1 file changed, 1139 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1731870187134695200.sql diff --git a/data/sql/updates/pending_db_world/rev_1731870187134695200.sql b/data/sql/updates/pending_db_world/rev_1731870187134695200.sql new file mode 100644 index 00000000000000..68c84fa6c2ec01 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1731870187134695200.sql @@ -0,0 +1,1139 @@ +-- Update gameobject 'Lunar Festival' with sniffed values +-- updated spawns +DELETE FROM `gameobject` WHERE (`id` IN (180878, 180769, 180770, 180778, 180767, 180761, 180775, 180768, 180762, 180759, 180760, 180766, 180757, 180774, 180773, 180765, 180758, 180879, 180880, 180881, 180882, 180883, 180777, 180888)) +AND (`guid` IN (28846, 28847, 28849, 28850, 28851, 28852, 28853, 28854, 28855, 28856, 28857, 28858, 28859, 28860, 28861, 28862, 28863, 28864, 28867, 28868, 28869, 28870, 28871, 28873, 28874, 28875, 28877, 28878, 28879, 28880, 28881, 28882, 28884, 28887, 28888, 28889, 28890, 28891, 28893, 28894, 28895, 28896, 28897, 28898, 28900, 28901, 28902, 28903, 28904, 28906, 28907, 28908, 28909, 28910, 28911, 28912, 28913, 28916, 28917, 28918, 28919, 28920, 28921, 28923, 28927, 28928, 28929, 28930, 28932, 28933, 28937, 28938, 28939, 28940, 28941, 28942, 28943, 28944, 28947, 28949, 28950, 28952, 28953, 28955, 28956, 28957, 28959, 28960, 28962, 28963, 28964, 28965, 28966, 28967, 28968, 28970, 28971, 28973, 28975, 28977, 28978, 28979, 28980, 28981, 28982, 28983, 28984, 28985, 28986, 28988, 28989, 28990, 28992, 28993, 28994, 28995, 28996, 28997, 28999, 29000, 29001, 29002, 29003, 29005, 29006, 29007, 29009, 29010, 29011, 29014, 29015, 29018, 29020, 29022, 29023, 29024, 29025, 29028, 29030, 29032, 29033, 29036, 29037, 29038, 29039, 29040, 29041, 29042, 29044, 29045, 29046, 29047, 29048, 29049, 29050, 29051, 29052, 29053, 29054, 29055, 29056, 29057, 29059, 29060, 29062, 29063, 29065, 29067, 29068, 29069, 29070, 29071, 29072, 29073, 29074, 29076, 29077, 29078, 29081, 29082, 29083, 29084, 29085, 29087, 29088, 29089, 29090, 29091, 29092, 29094, 29095, 29097, 29098, 29099, 29100, 29101, 29102, 29103, 29104, 29105, 29106, 29107, 29108, 29110, 29111, 29112, 29113, 29424, 29425, 29426, 29427, 29430, 29431, 29433, 29434, 29436, 29437, 29439, 29442, 29443, 29444, 29445, 29446, 29447, 29448, 29450, 29451, 29452, 29454, 29455, 29456, 29457, 29458, 29459, 29460, 29461, 29462, 29463, 29464, 29465, 29467, 29468, 29469, 29470, 29471, 29472, 29473, 29474, 29475, 29476, 29477, 29479, 29480, 29482, 29483, 29486, 29487, 29488, 29489, 29492, 29493, 29495, 29496, 29497, 29499, 29500, 29501, 29502, 29503, 29504, 29505, 29506, 29507, 29508, 29509, 29511, 29512, 29515, 29516, 29517, 29518, 29519, 29520, 29522, 29523, 29524, 29525, 29526, 30356, 30802, 30803, 30806, 30860, 30861, 30862, 30863, 30864, 30868, 30869, 31144, 31146, 31147, 31148, 31149, 31150, 31151, 31152, 31153, 31154, 31156, 31157, 31158, 31159, 31160, 31163, 31164, 31165, 31167, 31168, 31169, 31171, 31172, 31174, 31175, 31177, 31178, 31180, 31181, 31182, 31184, 31185, 31187, 31188, 31189, 31190, 31191, 31192, 31193, 31194, 31195, 31196, 31198, 31199, 31202, 31250, 31251, 31253, 31255, 31256, 31260, 31262, 31263, 31264, 31265, 31266, 31268, 31270, 31272, 31273, 31274, 31275, 31276, 31277, 31278, 31279, 31281, 31282, 31284, 31286, 31289, 31290, 31291, 31292, 31293, 31294, 31296, 31297, 31298, 31299, 33158, 33159, 33161, 33162, 33163, 33164, 33165, 43232, 43236, 43237, 43238, 43239, 43240, 43241, 43242, 43243, 43244, 43245, 43246, 43248, 43249, 43250, 43251, 43252, 43253, 43254, 43255, 43256, 43259, 43260, 43261, 43262, 43263, 43264, 43265, 43266, 43267, 43268, 43270, 43272, 43273, 43274, 43275, 43277, 43278, 43279, 43280, 43281, 43283, 43284, 43285, 43286, 43287, 43288, 43289, 43292, 43293, 43294, 43295, 43296, 43297, 43298, 43299, 43300, 43303, 43304, 43305, 43306, 43308, 43309, 43310, 43311, 43312, 43313, 43314, 43315, 43317, 43318, 43320, 43321, 43323, 43324, 43325, 43327, 43328, 43329, 43330, 43331, 43332, 43334, 43335, 43337, 43338, 43339, 43340, 43341, 43342, 43343, 43345, 43347, 43348, 43349, 43350, 43352, 43355, 43356, 43357, 43358, 43359, 43360, 43361, 43363, 43364, 43365, 43366, 43367, 43368, 43371, 43372, 43374, 43375, 43376, 43377, 43378, 43379, 43380, 43383, 43384, 43385, 43386, 43387, 43388, 43389, 43390, 43391, 43392, 43393, 43395, 43396, 43397, 43399, 43400, 43401, 43402, 43403, 43404, 43405, 43406, 43407, 43408, 43409, 43410, 43411, 43414, 43415, 43419, 43421, 43422, 43423, 43424, 43425, 43426, 43427, 43428, 43429, 43430, 43431, 43433, 43435, 43436, 43438, 43439, 43440, 43441, 43442, 43443, 43444, 43445, 43446, 43447, 43448, 43452, 43453, 7235, 79584, 79585, 79586, 79587, 79588, 79589, 79590, 79591, 79592, 79593, 79600, 79601, 79602, 79603, 79604, 79605, 79606, 79744, 79745, 79748, 79753, 79754, 79755, 79756, 79757, 79767, 79768, 79769, 79770, 79771, 79772, 79773, 79774, 79775, 79776, 79777, 79778, 79779, 79780, 79781, 79782, 79783, 79784, 79785, 79786, 79787, 79788, 79789, 79790, 79791, 79792, 79793, 79794, 79795, 79796, 79797, 79798, 79799, 79800, 79801, 79802, 79803, 79804, 79805, 79806, 79807, 79808, 79809, 79810, 79811, 79812, 79813, 79814, 79815, 79816, 79817, 79826, 79827, 79828, 79829, 79830, 79831, 79832, 79833, 79834, 79835, 79836, 79837, 79838, 79839, 79840, 79841, 79842, 79843, 79844, 79845, 79846, 79847, 79848, 79849, 82948, 82949, 82950, 82951, 82952, 82953, 82954, 82955, 82958, 82959, 82960, 82961, 82962, 82963, 82964, 82965, 82966, 82967, 82968, 82969, 82970, 82971, 82972, 82973, 82974, 82975, 82976, 82977, 82978, 82985, 82994, 82995, 82996, 82997, 82998, 82999, 83000, 83001, 83002, 83003, 83004, 83005, 83006, 83007, 83008, 83009)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(28846, 180878, 1, 0, 0, 1, 1, 1969.1961669921875, -4259.796875, 32.37454986572265625, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 120, 255, 1, "", 47720, NULL), +(28847, 180769, 1, 0, 0, 1, 1, 1670.4896240234375, -4477.44775390625, 32.53198623657226562, 4.101525306701660156, 0, 0, -0.88701057434082031, 0.461749136447906494, 120, 255, 1, "", 47720, NULL), +(28849, 180770, 1, 0, 0, 1, 1, 1703.54345703125, -4464.34375, 32.4458465576171875, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 120, 255, 1, "", 47720, NULL), +(28850, 180769, 1, 0, 0, 1, 1, 1679.6353759765625, -4411.1005859375, 36.17628860473632812, 0.087265998125076293, 0, 0, 0.043619155883789062, 0.999048233032226562, 120, 255, 1, "", 47720, NULL), +(28851, 180770, 1, 0, 0, 1, 1, 1609.4322509765625, -4460.12158203125, 42.17335891723632812, 1.064649581909179687, 0, 0, 0.507537841796875, 0.861629426479339599, 120, 255, 1, "", 47720, NULL), +(28852, 180778, 1, 0, 0, 1, 1, 1942.6666259765625, -4280.4462890625, 29.56145286560058593, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 120, 255, 1, "", 47720, NULL), +(28853, 180778, 1, 0, 0, 1, 1, 1958.8489990234375, -4268.31591796875, 31.62879180908203125, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, "", 47720, NULL), +(28854, 180770, 1, 0, 0, 1, 1, 1694.3992919921875, -4476.283203125, 32.54077529907226562, 2.007128477096557617, 0, 0, 0.84339141845703125, 0.537299633026123046, 120, 255, 1, "", 47720, NULL), +(28855, 180767, 1, 0, 0, 1, 1, -1098.1510009765625, -58.2350273132324218, 158.3143463134765625, 2.600535154342651367, 0, 0, 0.963629722595214843, 0.26724100112915039, 120, 255, 1, "", 47720, NULL), +(28856, 180761, 1, 0, 0, 1, 1, -1222.7100830078125, -70.9461822509765625, 165.4095916748046875, 6.230826377868652343, 0, 0, -0.02617645263671875, 0.999657332897186279, 120, 255, 1, "", 47720, NULL), +(28857, 180775, 1, 0, 0, 1, 1, -1181.2864990234375, -91.986114501953125, 165.95849609375, 2.530723094940185546, 0, 0, 0.953716278076171875, 0.300707906484603881, 120, 255, 1, "", 47720, NULL), +(28858, 180768, 1, 0, 0, 1, 1, -1022.18707275390625, -231.043777465820312, 160.1183929443359375, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 120, 255, 1, "", 47720, NULL), +(28859, 180778, 1, 0, 0, 1, 1, -1012.5609130859375, -11.1563587188720703, 60.61656951904296875, 0.645771682262420654, 0, 0, 0.317304611206054687, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(28860, 180767, 1, 0, 0, 1, 1, -1244.12109375, -94.1285781860351562, 169.7642364501953125, 1.658061861991882324, 0, 0, 0.737277030944824218, 0.67559051513671875, 120, 255, 1, "", 47720, NULL), +(28861, 180761, 1, 0, 0, 1, 1, -1256.6197509765625, 39.43918228149414062, 132.648651123046875, 1.797688722610473632, 0, 0, 0.7826080322265625, 0.622514784336090087, 120, 255, 1, "", 47720, NULL), +(28862, 180769, 0, 0, 0, 1, 1, 1586.1744384765625, 201.4016876220703125, -36.3775291442871093, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 120, 255, 1, "", 47720, NULL), +(28863, 180878, 0, 0, 0, 1, 1, 1645.920166015625, 234.4384307861328125, 62.59157180786132812, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 120, 255, 1, "", 47720, NULL), +(28864, 180769, 0, 0, 0, 1, 1, 1629.632568359375, 261.488616943359375, -36.6427192687988281, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 120, 255, 1, "", 47720, NULL), +(28867, 180769, 0, 0, 0, 1, 1, 1555.6927490234375, 248.0243072509765625, -36.4547843933105468, 2.862335443496704101, 0, 0, 0.990267753601074218, 0.139175355434417724, 120, 255, 1, "", 47720, NULL), +(28868, 180769, 0, 0, 0, 1, 1, 1561.97607421875, 219.1158294677734375, -36.4872055053710937, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 120, 255, 1, "", 47720, NULL), +(28869, 180769, 1, 0, 0, 1, 1, 1578.60595703125, -4462.95654296875, 34.89577865600585937, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, "", 47720, NULL), +(28870, 180775, 1, 0, 0, 1, 1, 1382.955078125, -4355.70556640625, 38.02347183227539062, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 120, 255, 1, "", 47720, NULL), +(28871, 180770, 1, 0, 0, 1, 1, 1618.8021240234375, -4356.14404296875, 22.47444343566894531, 5.602506637573242187, 0, 0, -0.33380699157714843, 0.942641437053680419, 120, 255, 1, "", 47720, NULL), +(28873, 180769, 1, 0, 0, 1, 1, 1676.1944580078125, -4481.53466796875, 32.77462387084960937, 1.064649581909179687, 0, 0, 0.507537841796875, 0.861629426479339599, 120, 255, 1, "", 47720, NULL), +(28874, 180770, 1, 0, 0, 1, 1, 1606.4166259765625, -4460.80029296875, 33.94220352172851562, 1.012289404869079589, 0, 0, 0.484808921813964843, 0.87462007999420166, 120, 255, 1, "", 47720, NULL), +(28875, 180768, 1, 0, 0, 1, 1, 1964.095458984375, -4275.892578125, 30.99634742736816406, 0.471238493919372558, 0, 0, 0.233445167541503906, 0.972369968891143798, 120, 255, 1, "", 47720, NULL), +(28877, 180770, 1, 0, 0, 1, 1, 1614.3072509765625, -4361.892578125, 22.31605720520019531, 5.619962215423583984, 0, 0, -0.32556724548339843, 0.945518851280212402, 120, 255, 1, "", 47720, NULL), +(28878, 180768, 1, 0, 0, 1, 1, -1047.07421875, -227.933059692382812, 159.78472900390625, 4.380776405334472656, 0, 0, -0.81411552429199218, 0.580702960491180419, 120, 255, 1, "", 47720, NULL), +(28879, 180775, 1, 0, 0, 1, 1, -1235.890380859375, -90.114044189453125, 165.7311553955078125, 0.488691210746765136, 0, 0, 0.241921424865722656, 0.970295846462249755, 120, 255, 1, "", 47720, NULL), +(28880, 180767, 1, 0, 0, 1, 1, -1285.031005859375, 45.88433074951171875, 135.8875579833984375, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 47720, NULL), +(28881, 180767, 1, 0, 0, 1, 1, -1280.95751953125, -110.514381408691406, 178.7292022705078125, 5.89921426773071289, 0, 0, -0.19080829620361328, 0.981627285480499267, 120, 255, 1, "", 47720, NULL), +(28882, 180778, 1, 0, 0, 1, 1, -1328.2874755859375, 173.114288330078125, 60.92924118041992187, 3.22885894775390625, 0, 0, -0.99904823303222656, 0.043619260191917419, 120, 255, 1, "", 47720, NULL), +(28884, 180878, 1, 0, 0, 1, 1, -1042.9544677734375, -218.213699340820312, 160.2321319580078125, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 120, 255, 1, "", 47720, NULL), +(28887, 180769, 0, 0, 0, 1, 1, 1572.1690673828125, 208.06549072265625, -36.5376052856445312, 0.977383077144622802, 0, 0, 0.469470977783203125, 0.882947921752929687, 120, 255, 1, "", 47720, NULL), +(28888, 180769, 0, 0, 0, 1, 1, 1556.3992919921875, 230.3715362548828125, -36.4690437316894531, 3.403396368026733398, 0, 0, -0.99144458770751953, 0.130528271198272705, 120, 255, 1, "", 47720, NULL), +(28889, 180878, 0, 0, 0, 1, 1, 1648.1024169921875, 232.4895782470703125, 62.59157180786132812, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 47720, NULL), +(28890, 180768, 0, 0, 0, 1, 1, 1637.78466796875, 245.4951171875, 62.59157180786132812, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, "", 47720, NULL), +(28891, 180769, 0, 0, 0, 1, 1, 1616.4617919921875, 274.220489501953125, -36.5835762023925781, 0.994837164878845214, 0, 0, 0.477158546447753906, 0.878817260265350341, 120, 255, 1, "", 47720, NULL), +(28893, 180769, 0, 0, 0, 1, 1, 1575.2529296875, 275.016754150390625, -36.57464599609375, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 120, 255, 1, "", 47720, NULL), +(28894, 180878, 0, 0, 0, 1, 1, 1646.796630859375, 232.9846954345703125, 62.59157180786132812, 4.206246376037597656, 0, 0, -0.86162853240966796, 0.50753939151763916, 120, 255, 1, "", 47720, NULL), +(28895, 180762, 1, 0, 0, 1, 1, 1970.123291015625, -4749.98291015625, 61.02700424194335937, 1.937312245368957519, 0, 0, 0.824125289916992187, 0.566407561302185058, 120, 255, 1, "", 47720, NULL), +(28896, 180759, 1, 0, 0, 1, 1, 1628.77783203125, -4432.283203125, 20.24281883239746093, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, "", 47720, NULL), +(28897, 180770, 1, 0, 0, 1, 1, 1652.2864990234375, -4440.3505859375, 25.30954933166503906, 6.248279094696044921, 0, 0, -0.01745223999023437, 0.999847710132598876, 120, 255, 1, "", 47720, NULL), +(28898, 180778, 1, 0, 0, 1, 1, 1976.4444580078125, -4264.705078125, 32.35150527954101562, 0.645771682262420654, 0, 0, 0.317304611206054687, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(28900, 180770, 1, 0, 0, 1, 1, 1635.7135009765625, -4428.51025390625, 25.70723915100097656, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 120, 255, 1, "", 47720, NULL), +(28901, 180769, 1, 0, 0, 1, 1, 1622.5572509765625, -4438.32275390625, 25.86449813842773437, 5.654868602752685546, 0, 0, -0.30901622772216796, 0.95105677843093872, 120, 255, 1, "", 47720, NULL), +(28902, 180778, 1, 0, 0, 1, 1, -1330.80126953125, 184.1837615966796875, 60.79775619506835937, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, "", 47720, NULL), +(28903, 180767, 1, 0, 0, 1, 1, -1121.5816650390625, 72.31694793701171875, 150.1532745361328125, 2.059488296508789062, 0, 0, 0.857167243957519531, 0.515038192272186279, 120, 255, 1, "", 47720, NULL), +(28904, 180878, 1, 0, 0, 1, 1, -1043.6807861328125, -217.30712890625, 160.2414093017578125, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 120, 255, 1, "", 47720, NULL), +(28906, 180878, 1, 0, 0, 1, 1, -1042.0592041015625, -218.222549438476562, 159.8043365478515625, 0.209439441561698913, 0, 0, 0.104528427124023437, 0.994521915912628173, 120, 255, 1, "", 47720, NULL), +(28907, 180768, 0, 0, 0, 1, 1, 1641.107177734375, 232.87164306640625, 62.59157180786132812, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 47720, NULL), +(28908, 180760, 0, 0, 0, 1, 1, 1595.3975830078125, 201.921875, -50.7758598327636718, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, "", 47720, NULL), +(28909, 180769, 0, 0, 0, 1, 1, 1648.8077392578125, 221.1050872802734375, -36.6522560119628906, 0.645771682262420654, 0, 0, 0.317304611206054687, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(28910, 180769, 0, 0, 0, 1, 1, 1605.5521240234375, 279.723968505859375, -36.4851303100585937, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 120, 255, 1, "", 47720, NULL), +(28911, 180769, 0, 0, 0, 1, 1, 1601.8555908203125, 200.0330352783203125, -36.5113410949707031, 1.762782454490661621, 0, 0, 0.771624565124511718, 0.636078238487243652, 120, 255, 1, "", 47720, NULL), +(28912, 180769, 0, 0, 0, 1, 1, 1635.6597900390625, 247.545135498046875, -36.351165771484375, 0.261798173189163208, 0, 0, 0.130525588989257812, 0.991444945335388183, 120, 255, 1, "", 47720, NULL), +(28913, 180769, 0, 0, 0, 1, 1, 1562.30078125, 262.051666259765625, -36.4425430297851562, 2.530723094940185546, 0, 0, 0.953716278076171875, 0.300707906484603881, 120, 255, 1, "", 47720, NULL), +(28916, 180770, 1, 0, 0, 1, 1, 1658.29345703125, -4451.77978515625, 32.54044723510742187, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 47720, NULL), +(28917, 180878, 1, 0, 0, 1, 1, 1968.532958984375, -4259.3369140625, 32.30084609985351562, 4.241150379180908203, 0, 0, -0.85264015197753906, 0.522498607635498046, 120, 255, 1, "", 47720, NULL), +(28918, 180769, 1, 0, 0, 1, 1, 1586.9010009765625, -4453.54541015625, 42.4123077392578125, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 120, 255, 1, "", 47720, NULL), +(28919, 180878, 1, 0, 0, 1, 1, 1968.9114990234375, -4257.11474609375, 32.2914581298828125, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, "", 47720, NULL), +(28920, 180770, 1, 0, 0, 1, 1, 1687.55908203125, -4398.57275390625, 36.28493118286132812, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, "", 47720, NULL), +(28921, 180770, 1, 0, 0, 1, 1, 1669.435791015625, -4428.91650390625, 31.84844970703125, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 120, 255, 1, "", 47720, NULL), +(28923, 180770, 1, 0, 0, 1, 1, 1587.4617919921875, -4456.27978515625, 34.42712783813476562, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 120, 255, 1, "", 47720, NULL), +(28927, 180767, 1, 0, 0, 1, 1, -1141.6683349609375, -122.524360656738281, 178.1985626220703125, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, "", 47720, NULL), +(28928, 180878, 1, 0, 0, 1, 1, -1044.244140625, -216.62115478515625, 159.335205078125, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 120, 255, 1, "", 47720, NULL), +(28929, 180878, 1, 0, 0, 1, 1, -1042.4605712890625, -218.979110717773437, 159.8175048828125, 5.253442287445068359, 0, 0, -0.49242305755615234, 0.870355963706970214, 120, 255, 1, "", 47720, NULL), +(28930, 180775, 1, 0, 0, 1, 1, -1206.3489990234375, 133.65972900390625, 138.1436614990234375, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, "", 47720, NULL), +(28932, 180878, 0, 0, 0, 1, 1, 1648.579833984375, 234.881561279296875, 62.59157180786132812, 2.914689540863037109, 0, 0, 0.993571281433105468, 0.113208353519439697, 120, 255, 1, "", 47720, NULL), +(28933, 180878, 0, 0, 0, 1, 1, 1646.2762451171875, 233.5351104736328125, 62.59157180786132812, 2.897245407104492187, 0, 0, 0.99254608154296875, 0.121869951486587524, 120, 255, 1, "", 47720, NULL), +(28937, 180768, 0, 0, 0, 1, 1, 1635.3607177734375, 237.19580078125, 62.59157180786132812, 5.096362113952636718, 0, 0, -0.55919265747070312, 0.829037725925445556, 120, 255, 1, "", 47720, NULL), +(28938, 180770, 1, 0, 0, 1, 1, 1662.87158203125, -4432.1318359375, 31.90442848205566406, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 120, 255, 1, "", 47720, NULL), +(28939, 180769, 1, 0, 0, 1, 1, 1684.6927490234375, -4480.89599609375, 32.70841598510742187, 5.078907966613769531, 0, 0, -0.56640625, 0.824126183986663818, 120, 255, 1, "", 47720, NULL), +(28940, 180770, 1, 0, 0, 1, 1, 1610.0035400390625, -4367.546875, 22.52040672302246093, 2.530723094940185546, 0, 0, 0.953716278076171875, 0.300707906484603881, 120, 255, 1, "", 47720, NULL), +(28941, 180878, 1, 0, 0, 1, 1, 1969.6302490234375, -4256.9306640625, 32.35718917846679687, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(28942, 180770, 1, 0, 0, 1, 1, 1589.60595703125, -4451.71533203125, 42.48970413208007812, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, "", 47720, NULL), +(28943, 180775, 1, 0, 0, 1, 1, 1733.1441650390625, -4408.24658203125, 48.66936492919921875, 2.181660413742065429, 0, 0, 0.887010574340820312, 0.461749136447906494, 120, 255, 1, "", 52237, NULL), +(28944, 180769, 1, 0, 0, 1, 1, 1599.9566650390625, -4456.82666015625, 34.08385086059570312, 4.188792228698730468, 0, 0, -0.86602497100830078, 0.50000077486038208, 120, 255, 1, "", 47720, NULL), +(28947, 180768, 1, 0, 0, 1, 1, -1041.4603271484375, -230.345535278320312, 160.022613525390625, 0.488691210746765136, 0, 0, 0.241921424865722656, 0.970295846462249755, 120, 255, 1, "", 47720, NULL), +(28949, 180768, 1, 0, 0, 1, 1, -1041.9439697265625, -217.551483154296875, 159.7678070068359375, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, "", 47720, NULL), +(28950, 180878, 0, 0, 0, 1, 1, 1649.087890625, 233.5462799072265625, 62.59157180786132812, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, "", 47720, NULL), +(28952, 180769, 0, 0, 0, 1, 1, 1589.67236328125, 280.358245849609375, -36.5544929504394531, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 120, 255, 1, "", 47720, NULL), +(28953, 180769, 0, 0, 0, 1, 1, 1586.84033203125, 279.833343505859375, -36.3963851928710937, 1.832594871520996093, 0, 0, 0.793353080749511718, 0.608761727809906005, 120, 255, 1, "", 47720, NULL), +(28955, 180878, 0, 0, 0, 1, 1, 1648.6202392578125, 233.0487213134765625, 62.59157180786132812, 0.366517573595046997, 0, 0, 0.182234764099121093, 0.98325502872467041, 120, 255, 1, "", 47720, NULL), +(28956, 180769, 0, 0, 0, 1, 1, 1604.7039794921875, 200.7293243408203125, -36.4510993957519531, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 120, 255, 1, "", 47720, NULL), +(28957, 180770, 1, 0, 0, 1, 1, 1634.123291015625, -4393.96875, 22.60219764709472656, 1.466075778007507324, 0, 0, 0.669130325317382812, 0.74314504861831665, 120, 255, 1, "", 47720, NULL), +(28959, 180769, 1, 0, 0, 1, 1, 1614.548583984375, -4387.671875, 22.58172988891601562, 0.488691210746765136, 0, 0, 0.241921424865722656, 0.970295846462249755, 120, 255, 1, "", 47720, NULL), +(28960, 180770, 1, 0, 0, 1, 1, 1620.314208984375, -4441.298828125, 26.00938224792480468, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, "", 47720, NULL), +(28962, 180767, 1, 0, 0, 1, 1, -1173.8033447265625, -97.9679336547851562, 169.19488525390625, 3.508116960525512695, 0, 0, -0.98325443267822265, 0.182238012552261352, 120, 255, 1, "", 47720, NULL), +(28963, 180778, 1, 0, 0, 1, 1, -1045.6636962890625, -227.56494140625, 159.955780029296875, 5.794494152069091796, 0, 0, -0.24192142486572265, 0.970295846462249755, 120, 255, 1, "", 47720, NULL), +(28964, 180778, 1, 0, 0, 1, 1, -1276.5948486328125, 209.697479248046875, 59.27470016479492187, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 120, 255, 1, "", 47720, NULL), +(28965, 180775, 1, 0, 0, 1, 1, -1276.954833984375, 50.09548568725585937, 132.455841064453125, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, "", 52237, NULL), +(28966, 180878, 0, 0, 0, 1, 1, 1647.3203125, 232.5182342529296875, 62.59157180786132812, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, "", 47720, NULL), +(28967, 180878, 0, 0, 0, 1, 1, 1649.08642578125, 234.271484375, 62.59157180786132812, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 120, 255, 1, "", 47720, NULL), +(28968, 180769, 0, 0, 0, 1, 1, 1648.8599853515625, 215.153594970703125, -36.4556465148925781, 5.637413978576660156, 0, 0, -0.31730461120605468, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(28970, 180769, 0, 0, 0, 1, 1, 1619.4107666015625, 272.49993896484375, -36.5721626281738281, 1.047197580337524414, 0, 0, 0.5, 0.866025388240814208, 120, 255, 1, "", 47720, NULL), +(28971, 180769, 0, 0, 0, 1, 1, 1635.752685546875, 232.6225128173828125, -36.5015144348144531, 5.969027042388916015, 0, 0, -0.1564340591430664, 0.987688362598419189, 120, 255, 1, "", 47720, NULL), +(28973, 180769, 0, 0, 0, 1, 1, 1572.96533203125, 273.088531494140625, -36.6699409484863281, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, "", 47720, NULL), +(28975, 180770, 0, 0, 0, 1, 1, 1588.4791259765625, 240.0069427490234375, -48.0515327453613281, 6.230826377868652343, 0, 0, -0.02617645263671875, 0.999657332897186279, 120, 255, 1, "", 47720, NULL), +(28977, 180778, 0, 0, 0, 1, 1, 1646.557373046875, 244.0512237548828125, 62.59157180786132812, 0.087265998125076293, 0, 0, 0.043619155883789062, 0.999048233032226562, 120, 255, 1, "", 47720, NULL), +(28978, 180769, 0, 0, 0, 1, 1, 1574.7318115234375, 206.3705596923828125, -36.4860000610351562, 4.101525306701660156, 0, 0, -0.88701057434082031, 0.461749136447906494, 120, 255, 1, "", 47720, NULL), +(28979, 180769, 0, 0, 0, 1, 1, 1602.6441650390625, 280.404510498046875, -36.4615211486816406, 1.378809213638305664, 0, 0, 0.636077880859375, 0.771624863147735595, 120, 255, 1, "", 47720, NULL), +(28980, 180768, 1, 0, 0, 1, 1, 1993.423583984375, -4258.82666015625, 32.08855438232421875, 6.12610626220703125, 0, 0, -0.07845878601074218, 0.996917366981506347, 120, 255, 1, "", 47720, NULL), +(28981, 180770, 1, 0, 0, 1, 1, 1608.8836669921875, -4374.46337890625, 22.48315238952636718, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, "", 47720, NULL), +(28982, 180769, 1, 0, 0, 1, 1, 1681.7257080078125, -4425.57666015625, 36.10413360595703125, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 120, 255, 1, "", 47720, NULL), +(28983, 180770, 1, 0, 0, 1, 1, 1682.9444580078125, -4431.125, 32.56739044189453125, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 120, 255, 1, "", 47720, NULL), +(28984, 180762, 1, 0, 0, 1, 1, 1937.875, -4251.4130859375, 45.30184555053710937, 4.764749526977539062, 0, 0, -0.6883544921875, 0.725374460220336914, 120, 255, 1, "", 47720, NULL), +(28985, 180770, 1, 0, 0, 1, 1, 1600.0625, -4454.21533203125, 42.40180206298828125, 4.171337604522705078, 0, 0, -0.87035560607910156, 0.492423713207244873, 120, 255, 1, "", 47720, NULL), +(28986, 180768, 1, 0, 0, 1, 1, 1984.626708984375, -4244.7880859375, 31.79969024658203125, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(28988, 180767, 1, 0, 0, 1, 1, -1106.41845703125, -17.8789615631103515, 149.3155059814453125, 5.253442287445068359, 0, 0, -0.49242305755615234, 0.870355963706970214, 120, 255, 1, "", 47720, NULL), +(28989, 180778, 1, 0, 0, 1, 1, -1034.4757080078125, -73.7086029052734375, 60.53104019165039062, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 120, 255, 1, "", 47720, NULL), +(28990, 180878, 1, 0, 0, 1, 1, -1043.079833984375, -217.583328247070312, 160.26116943359375, 3.351046562194824218, 0, 0, -0.99452114105224609, 0.104535527527332305, 120, 255, 1, "", 47720, NULL), +(28992, 180769, 0, 0, 0, 1, 1, 1627.6900634765625, 216.647735595703125, -36.4423294067382812, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, "", 47720, NULL), +(28993, 180760, 0, 0, 0, 1, 1, 1595.69970703125, 278.743072509765625, -50.8353080749511718, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, "", 47720, NULL), +(28994, 180769, 0, 0, 0, 1, 1, 1563.7159423828125, 216.6520233154296875, -36.4788894653320312, 3.769911527633666992, 0, 0, -0.95105648040771484, 0.309017121791839599, 120, 255, 1, "", 47720, NULL), +(28995, 180769, 0, 0, 0, 1, 1, 1618.7315673828125, 207.7862396240234375, -36.6290779113769531, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, "", 47720, NULL), +(28996, 180768, 0, 0, 0, 1, 1, 1635.4854736328125, 242.69830322265625, 62.59157180786132812, 4.206246376037597656, 0, 0, -0.86162853240966796, 0.50753939151763916, 120, 255, 1, "", 47720, NULL), +(28997, 180770, 0, 0, 0, 1, 1, 1639.5538330078125, 215.954864501953125, -36.4585227966308593, 4.241150379180908203, 0, 0, -0.85264015197753906, 0.522498607635498046, 120, 255, 1, "", 47720, NULL), +(28999, 180769, 0, 0, 0, 1, 1, 1646.1676025390625, 213.659942626953125, -36.4928092956542968, 1.658061861991882324, 0, 0, 0.737277030944824218, 0.67559051513671875, 120, 255, 1, "", 47720, NULL), +(29000, 180769, 0, 0, 0, 1, 1, 1635.6322021484375, 227.1669921875, -36.5431098937988281, 1.012289404869079589, 0, 0, 0.484808921813964843, 0.87462007999420166, 120, 255, 1, "", 47720, NULL), +(29001, 180768, 0, 0, 0, 1, 1, 1637.638427734375, 234.2244415283203125, 62.59157180786132812, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, "", 47720, NULL), +(29002, 180769, 0, 0, 0, 1, 1, 1589.298583984375, 200.453125, -36.4421310424804687, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 120, 255, 1, "", 47720, NULL), +(29003, 180770, 0, 0, 0, 1, 1, 1595.7413330078125, 233.1805572509765625, -48.0654335021972656, 1.535889506340026855, 0, 0, 0.694658279418945312, 0.719339847564697265, 120, 255, 1, "", 47720, NULL), +(29005, 180878, 0, 0, 0, 1, 1, 1647.5833740234375, 233.3194427490234375, 63.69573974609375, 3.22885894775390625, 0, 0, -0.99904823303222656, 0.043619260191917419, 120, 255, 1, "", 47720, NULL), +(29006, 180760, 0, 0, 0, 1, 1, 1631.716552734375, 216.6436614990234375, -39.8793754577636718, 0.959929943084716796, 0, 0, 0.461748123168945312, 0.887011110782623291, 120, 255, 1, "", 47720, NULL), +(29007, 180769, 0, 0, 0, 1, 1, 1616.1185302734375, 205.969940185546875, -36.5110740661621093, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(29009, 180778, 0, 0, 0, 1, 1, 1646.297607421875, 235.5414581298828125, 62.59157180786132812, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 120, 255, 1, "", 47720, NULL), +(29010, 180770, 0, 0, 0, 1, 1, 1642.4442138671875, 224.40484619140625, -36.7174186706542968, 1.239183306694030761, 0, 0, 0.580702781677246093, 0.814115643501281738, 120, 255, 1, "", 47720, NULL), +(29011, 180775, 0, 0, 0, 1, 1, 1608.54541015625, 253.162109375, -46.6005516052246093, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 120, 255, 1, "", 47966, NULL), +(29014, 180769, 0, 0, 0, 1, 1, 1627.6884765625, 264.104156494140625, -36.6370735168457031, 0.575957298278808593, 0, 0, 0.284014701843261718, 0.958819925785064697, 120, 255, 1, "", 47720, NULL), +(29015, 180769, 0, 0, 0, 1, 1, 1649.814208984375, 218.219024658203125, -36.4882392883300781, 0.017452461645007133, 0, 0, 0.008726119995117187, 0.999961912631988525, 120, 255, 1, "", 47720, NULL), +(29018, 180770, 0, 0, 0, 1, 1, 1595.7413330078125, 247.951385498046875, -48.0584793090820312, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, "", 47720, NULL), +(29020, 180769, 0, 0, 0, 1, 1, 1634.904052734375, 250.342498779296875, -36.3342475891113281, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 120, 255, 1, "", 47720, NULL), +(29022, 180769, 0, 0, 0, 1, 1, 1555.46337890625, 233.378631591796875, -36.3423957824707031, 3.43830275535583496, 0, 0, -0.98901557922363281, 0.147811368107795715, 120, 255, 1, "", 47720, NULL), +(29023, 180769, 0, 0, 0, 1, 1, 1632.9166259765625, 219.2395782470703125, -36.3693313598632812, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 120, 255, 1, "", 47720, NULL), +(29024, 180769, 0, 0, 0, 1, 1, 1563.8756103515625, 264.798492431640625, -36.6633033752441406, 5.84685373306274414, 0, 0, -0.21643924713134765, 0.976296067237854003, 120, 255, 1, "", 47720, NULL), +(29025, 180769, 0, 0, 0, 1, 1, 1556.640625, 251.015625, -36.4765853881835937, 2.792518377304077148, 0, 0, 0.984807014465332031, 0.173652306199073791, 120, 255, 1, "", 47720, NULL), +(29028, 180769, 0, 0, 0, 1, 1, 1634.7457275390625, 229.68609619140625, -36.4041481018066406, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, "", 47720, NULL), +(29030, 180768, 0, 0, 0, 1, 1, 1641.177978515625, 247.0255584716796875, 62.59157180786132812, 3.211419343948364257, 0, 0, -0.9993906021118164, 0.034906134009361267, 120, 255, 1, "", 47720, NULL), +(29032, 180769, 0, 0, 0, 1, 1, 1629.4600830078125, 219.2083282470703125, -36.4536666870117187, 5.619962215423583984, 0, 0, -0.32556724548339843, 0.945518851280212402, 120, 255, 1, "", 47720, NULL), +(29033, 180770, 0, 0, 0, 1, 1, 1603.2916259765625, 240.3958282470703125, -48.0445976257324218, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 120, 255, 1, "", 47720, NULL), +(29036, 180770, 1, 0, 0, 1, 1, 1674.8941650390625, -4429.55029296875, 32.53606033325195312, 1.797688722610473632, 0, 0, 0.7826080322265625, 0.622514784336090087, 120, 255, 1, "", 47720, NULL), +(29037, 180769, 1, 0, 0, 1, 1, 1693.7117919921875, -4394.74462890625, 36.18780517578125, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, "", 47720, NULL), +(29038, 180769, 1, 0, 0, 1, 1, 1662.8629150390625, -4436.9599609375, 32.6082305908203125, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 120, 255, 1, "", 47720, NULL), +(29039, 180769, 1, 0, 0, 1, 1, 1695.15283203125, -4439.44775390625, 32.63016510009765625, 4.241150379180908203, 0, 0, -0.85264015197753906, 0.522498607635498046, 120, 255, 1, "", 47720, NULL), +(29040, 180769, 1, 0, 0, 1, 1, 1639.09375, -4429.361328125, 25.49821853637695312, 4.415683269500732421, 0, 0, -0.80385684967041015, 0.594822824001312255, 120, 255, 1, "", 47720, NULL), +(29041, 180778, 1, 0, 0, 1, 1, -1266.355712890625, 199.4052734375, 59.69921875, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(29042, 180767, 1, 0, 0, 1, 1, -1322.1845703125, 29.21533203125, 144.8863983154296875, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 120, 255, 1, "", 47720, NULL), +(29044, 180778, 1, 0, 0, 1, 1, -1023.0186767578125, -68.3546524047851562, 60.53104019165039062, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, "", 47720, NULL), +(29045, 180778, 1, 0, 0, 1, 1, -1006.6038818359375, -21.3942604064941406, 60.53104019165039062, 3.9793548583984375, 0, 0, -0.9135446548461914, 0.406738430261611938, 120, 255, 1, "", 47720, NULL), +(29046, 180768, 1, 0, 0, 1, 1, -1052.769775390625, -250.587127685546875, 159.0303497314453125, 4.991643905639648437, 0, 0, -0.60181427001953125, 0.798636078834533691, 120, 255, 1, "", 47720, NULL), +(29047, 180759, 1, 0, 0, 1, 1, 1614.173583984375, -4380.82666015625, 18.43857765197753906, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 120, 255, 1, "", 47720, NULL), +(29048, 180770, 1, 0, 0, 1, 1, 1664.670166015625, -4472.76025390625, 32.53103256225585937, 4.049167633056640625, 0, 0, -0.89879322052001953, 0.438372820615768432, 120, 255, 1, "", 47720, NULL), +(29049, 180770, 1, 0, 0, 1, 1, 1673.3697509765625, -4479.65478515625, 32.61395263671875, 4.101525306701660156, 0, 0, -0.88701057434082031, 0.461749136447906494, 120, 255, 1, "", 47720, NULL), +(29050, 180878, 1, 0, 0, 1, 1, 1970.1771240234375, -4257.95654296875, 33.06834030151367187, 3.857182979583740234, 0, 0, -0.93667125701904296, 0.350209832191467285, 120, 255, 1, "", 47720, NULL), +(29051, 180759, 1, 0, 0, 1, 1, 1668.5504150390625, -4431.96533203125, 25.86832618713378906, 1.954769015312194824, 0, 0, 0.829037666320800781, 0.559192776679992675, 120, 255, 1, "", 47720, NULL), +(29052, 180770, 1, 0, 0, 1, 1, 1656.046875, -4443.6025390625, 31.73310279846191406, 6.178466320037841796, 0, 0, -0.05233573913574218, 0.998629570007324218, 120, 255, 1, "", 47720, NULL), +(29053, 180878, 1, 0, 0, 1, 1, -1043.48828125, -216.356063842773437, 159.401580810546875, 1.099556446075439453, 0, 0, 0.522498130798339843, 0.852640450000762939, 120, 255, 1, "", 47720, NULL), +(29054, 180768, 1, 0, 0, 1, 1, -1064.0010986328125, -252.400177001953125, 159.0303497314453125, 1.500982880592346191, 0, 0, 0.681998252868652343, 0.731353819370269775, 120, 255, 1, "", 47720, NULL), +(29055, 180878, 1, 0, 0, 1, 1, -1042.7203369140625, -216.533309936523437, 159.5494842529296875, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, "", 47720, NULL), +(29056, 180761, 1, 0, 0, 1, 1, -1192.556396484375, -70.560821533203125, 165.004425048828125, 3.141592741012573242, 0, 0, -1, 0, 120, 255, 1, "", 47720, NULL), +(29057, 180878, 1, 0, 0, 1, 1, -1042.2047119140625, -217.193191528320312, 159.7144927978515625, 4.066620349884033203, 0, 0, -0.89493370056152343, 0.44619917869567871, 120, 255, 1, "", 47720, NULL), +(29059, 180775, 1, 0, 0, 1, 1, 1676.748291015625, -4363.52783203125, 46.46495437622070312, 3.577930212020874023, 0, 0, -0.97629547119140625, 0.216442063450813293, 120, 255, 1, "", 47720, NULL), +(29060, 180778, 1, 0, 0, 1, 1, 1945.7117919921875, -4286.7724609375, 28.27943992614746093, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 120, 255, 1, "", 47720, NULL), +(29062, 180770, 1, 0, 0, 1, 1, 1680.4478759765625, -4418.36474609375, 36.25653457641601562, 0.139624491333961486, 0, 0, 0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 47720, NULL), +(29063, 180778, 1, 0, 0, 1, 1, 1963.310791015625, -4274.5, 31.30120849609375, 0.645771682262420654, 0, 0, 0.317304611206054687, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(29065, 180770, 1, 0, 0, 1, 1, 1702.907958984375, -4452.88916015625, 32.46869277954101562, 3.263772249221801757, 0, 0, -0.99813461303710937, 0.061051756143569946, 120, 255, 1, "", 47720, NULL), +(29067, 180778, 1, 0, 0, 1, 1, -1041.67431640625, -218.831008911132812, 159.887969970703125, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 120, 255, 1, "", 47720, NULL), +(29068, 180761, 1, 0, 0, 1, 1, -1178.93408203125, 30.53645896911621093, 154.6270904541015625, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 120, 255, 1, "", 47720, NULL), +(29069, 180768, 1, 0, 0, 1, 1, -1025.51171875, -238.322265625, 159.3505401611328125, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 120, 255, 1, "", 47720, NULL), +(29070, 180770, 1, 0, 0, 1, 1, 1657.1632080078125, -4459.13916015625, 32.53067398071289062, 6.03883981704711914, 0, 0, -0.12186908721923828, 0.9925462007522583, 120, 255, 1, "", 47720, NULL), +(29071, 180770, 1, 0, 0, 1, 1, 1627.060791015625, -4432.32275390625, 25.84846878051757812, 5.637413978576660156, 0, 0, -0.31730461120605468, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(29072, 180770, 1, 0, 0, 1, 1, 1611.6805419921875, -4381.203125, 22.31065940856933593, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, "", 47720, NULL), +(29073, 180769, 1, 0, 0, 1, 1, 1606.1805419921875, -4458.0556640625, 42.2401275634765625, 4.171337604522705078, 0, 0, -0.87035560607910156, 0.492423713207244873, 120, 255, 1, "", 47720, NULL), +(29074, 180770, 1, 0, 0, 1, 1, 1668.798583984375, -4432.82275390625, 32.47963333129882812, 2.146752834320068359, 0, 0, 0.878816604614257812, 0.477159708738327026, 120, 255, 1, "", 47720, NULL), +(29076, 180767, 1, 0, 0, 1, 1, -1107.3125, 110.8940200805664062, 159.152099609375, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, "", 47720, NULL), +(29077, 180878, 1, 0, 0, 1, 1, -1044.8253173828125, -217.27398681640625, 159.3284912109375, 3.211419343948364257, 0, 0, -0.9993906021118164, 0.034906134009361267, 120, 255, 1, "", 47720, NULL), +(29078, 180768, 1, 0, 0, 1, 1, -1036.8250732421875, -221.709197998046875, 160.24481201171875, 1.658061861991882324, 0, 0, 0.737277030944824218, 0.67559051513671875, 120, 255, 1, "", 47720, NULL), +(29081, 180761, 1, 0, 0, 1, 1, -1057.46875, -260.164947509765625, 170.4704132080078125, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 120, 255, 1, "", 47720, NULL), +(29082, 180767, 1, 0, 0, 1, 1, -1166.1871337890625, 162.909454345703125, 150.406707763671875, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, "", 47720, NULL), +(29083, 180770, 1, 0, 0, 1, 1, 1687.890625, -4479.4619140625, 32.7740631103515625, 1.954769015312194824, 0, 0, 0.829037666320800781, 0.559192776679992675, 120, 255, 1, "", 47720, NULL), +(29084, 180770, 1, 0, 0, 1, 1, 1580.9375, -4457.81103515625, 42.23295974731445312, 2.181660413742065429, 0, 0, 0.887010574340820312, 0.461749136447906494, 120, 255, 1, "", 47720, NULL), +(29085, 180770, 1, 0, 0, 1, 1, 1623.1597900390625, -4451.96533203125, 26.22796058654785156, 0.645771682262420654, 0, 0, 0.317304611206054687, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(29087, 180768, 1, 0, 0, 1, 1, 1957.9444580078125, -4267.13916015625, 31.56690216064453125, 3.735006093978881835, 0, 0, -0.95630455017089843, 0.292372345924377441, 120, 255, 1, "", 47720, NULL), +(29088, 180878, 1, 0, 0, 1, 1, 1968.3975830078125, -4257.73779296875, 32.25462722778320312, 3.089183330535888671, 0, 0, 0.99965667724609375, 0.026201646775007247, 120, 255, 1, "", 47720, NULL), +(29089, 180768, 1, 0, 0, 1, 1, 1942.0625, -4279.65283203125, 29.71286964416503906, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, "", 47720, NULL), +(29090, 180770, 1, 0, 0, 1, 1, 1581.5833740234375, -4460.80029296875, 34.81140518188476562, 2.181660413742065429, 0, 0, 0.887010574340820312, 0.461749136447906494, 120, 255, 1, "", 47720, NULL), +(29091, 180770, 1, 0, 0, 1, 1, 1681.4444580078125, -4402.75341796875, 36.44989395141601562, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, "", 47720, NULL), +(29092, 180767, 1, 0, 0, 1, 1, -1199.381591796875, 139.050811767578125, 141.4077911376953125, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 120, 255, 1, "", 47720, NULL), +(29094, 180878, 1, 0, 0, 1, 1, 1968.21875, -4258.5556640625, 32.25426483154296875, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 120, 255, 1, "", 47720, NULL), +(29095, 180770, 1, 0, 0, 1, 1, 1659.1822509765625, -4444.40087890625, 32.66511917114257812, 3.089183330535888671, 0, 0, 0.99965667724609375, 0.026201646775007247, 120, 255, 1, "", 47720, NULL), +(29097, 180762, 1, 0, 0, 1, 1, 1623.3072509765625, -4440.173828125, 20.19143104553222656, 2.513273954391479492, 0, 0, 0.951056480407714843, 0.309017121791839599, 120, 255, 1, "", 47720, NULL), +(29098, 180778, 1, 0, 0, 1, 1, 1971.685791015625, -4258.375, 32.32268142700195312, 3.78736734390258789, 0, 0, -0.94832324981689453, 0.317305892705917358, 120, 255, 1, "", 47720, NULL), +(29099, 180768, 1, 0, 0, 1, 1, 1970.892333984375, -4257.1943359375, 32.3561553955078125, 3.735006093978881835, 0, 0, -0.95630455017089843, 0.292372345924377441, 120, 255, 1, "", 47720, NULL), +(29100, 180770, 1, 0, 0, 1, 1, 1687.515625, -4430.9931640625, 31.66991806030273437, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(29101, 180759, 1, 0, 0, 1, 1, 1959.6285400390625, -4754.61474609375, 59.89603805541992187, 1.972219824790954589, 0, 0, 0.83388519287109375, 0.55193793773651123, 120, 255, 1, "", 47720, NULL), +(29102, 180768, 1, 0, 0, 1, 1, 1945.873291015625, -4287.72900390625, 28.06640052795410156, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, "", 47720, NULL), +(29103, 180770, 1, 0, 0, 1, 1, 1645.9913330078125, -4431.2744140625, 25.39589881896972656, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 120, 255, 1, "", 47720, NULL), +(29104, 180770, 1, 0, 0, 1, 1, 1627.029541015625, -4393.15283203125, 22.29093360900878906, 1.448621988296508789, 0, 0, 0.662619590759277343, 0.748956084251403808, 120, 255, 1, "", 47720, NULL), +(29105, 180770, 1, 0, 0, 1, 1, 1688.703125, -4435.4775390625, 32.52971267700195312, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(29106, 180769, 1, 0, 0, 1, 1, 1619.967041015625, -4392.125, 22.551361083984375, 1.32644820213317871, 0, 0, 0.615660667419433593, 0.788011372089385986, 120, 255, 1, "", 47720, NULL), +(29107, 180768, 1, 0, 0, 1, 1, 1977.1927490234375, -4265.79150390625, 32.42452239990234375, 0.645771682262420654, 0, 0, 0.317304611206054687, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(29108, 180878, 1, 0, 0, 1, 1, 1970.3663330078125, -4257.01416015625, 32.3834075927734375, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, "", 47720, NULL), +(29110, 180762, 1, 0, 0, 1, 1, 1672.3333740234375, -4334.2880859375, 65.60201263427734375, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 120, 255, 1, "", 47720, NULL), +(29111, 180759, 1, 0, 0, 1, 1, 1664.0972900390625, -4346.6494140625, 38.93149185180664062, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 120, 255, 1, "", 47720, NULL), +(29112, 180769, 1, 0, 0, 1, 1, 1596.8385009765625, -4454.9599609375, 34.12637710571289062, 4.171337604522705078, 0, 0, -0.87035560607910156, 0.492423713207244873, 120, 255, 1, "", 47720, NULL), +(29113, 180759, 1, 0, 0, 1, 1, 1919.032958984375, -4252.79150390625, 46.09141921997070312, 4.764749526977539062, 0, 0, -0.6883544921875, 0.725374460220336914, 120, 255, 1, "", 47720, NULL), +(29424, 180766, 0, 0, 0, 1, 1, -4647.3173828125, -951.8907470703125, 502.14642333984375, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 120, 255, 1, "", 47720, NULL), +(29425, 180766, 0, 0, 0, 1, 1, -4650.31884765625, -965.22149658203125, 502.1456298828125, 2.513273954391479492, 0, 0, 0.951056480407714843, 0.309017121791839599, 120, 255, 1, "", 47720, NULL), +(29426, 180770, 0, 0, 0, 1, 1, -4757.8427734375, -1036.9024658203125, 520.8275146484375, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 120, 255, 1, "", 52237, NULL), +(29427, 180770, 0, 0, 0, 1, 1, -4749.11279296875, -1043.6868896484375, 520.83880615234375, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 120, 255, 1, "", 52237, NULL), +(29430, 180769, 0, 0, 0, 1, 1, -4944.60595703125, -919.5711669921875, 510.7408447265625, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 120, 255, 1, "", 47720, NULL), +(29431, 180769, 0, 0, 0, 1, 1, -8851.9619140625, 790.5382080078125, 101.022186279296875, 3.735006093978881835, 0, 0, -0.95630455017089843, 0.292372345924377441, 120, 255, 1, "", 47720, NULL), +(29433, 180769, 0, 0, 0, 1, 1, -8936.9345703125, 993.13018798828125, 136.4216156005859375, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, "", 52237, NULL), +(29434, 180769, 0, 0, 0, 1, 1, -8933.978515625, 994.6522216796875, 136.30926513671875, 5.218535900115966796, 0, 0, -0.507537841796875, 0.861629426479339599, 120, 255, 1, "", 52237, NULL), +(29436, 180769, 0, 0, 0, 1, 1, -4860.1337890625, -879.78472900390625, 517.72808837890625, 1.780233979225158691, 0, 0, 0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 47720, NULL), +(29437, 180769, 0, 0, 0, 1, 1, -4942.02783203125, -917.4375, 510.791168212890625, 2.338739633560180664, 0, 0, 0.920504570007324218, 0.3907318115234375, 120, 255, 1, "", 47720, NULL), +(29439, 180769, 0, 0, 0, 1, 1, -8838.09375, 653.7745361328125, 100.9432525634765625, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, "", 47720, NULL), +(29442, 180769, 0, 0, 0, 1, 1, -8849.087890625, 622.7205810546875, 101.0871505737304687, 0.349065244197845458, 0, 0, 0.173647880554199218, 0.984807789325714111, 120, 255, 1, "", 47720, NULL), +(29443, 180770, 0, 0, 0, 1, 1, -8764.171875, 724.28643798828125, 104.2149276733398437, 3.892086982727050781, 0, 0, -0.93041706085205078, 0.366502493619918823, 120, 255, 1, "", 47720, NULL), +(29444, 180878, 0, 0, 0, 1, 1, -8737.2216796875, 1077.3302001953125, 90.78026580810546875, 4.276057243347167968, 0, 0, -0.84339141845703125, 0.537299633026123046, 120, 255, 1, "", 47720, NULL), +(29445, 180769, 0, 0, 0, 1, 1, -9055.89453125, 831.77777099609375, 119.2715225219726562, 3.508116960525512695, 0, 0, -0.98325443267822265, 0.182238012552261352, 120, 255, 1, "", 47966, NULL), +(29446, 180878, 0, 0, 0, 1, 1, -8739.701171875, 1076.3382568359375, 90.75988006591796875, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 120, 255, 1, "", 47720, NULL), +(29447, 180766, 0, 0, 0, 1, 1, -8727.3876953125, 1079.9298095703125, 90.78026580810546875, 0.610863447189331054, 0, 0, 0.3007049560546875, 0.953717231750488281, 120, 255, 1, "", 47720, NULL), +(29448, 180878, 0, 0, 0, 1, 1, -8737.0283203125, 1076.2767333984375, 90.7685546875, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, "", 47720, NULL), +(29450, 180757, 0, 0, 0, 1, 1, -8870.1298828125, 672.57110595703125, 101.51416015625, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 120, 255, 1, "", 47720, NULL), +(29451, 180770, 0, 0, 0, 1, 1, -8868.48046875, 564.99462890625, 107.27374267578125, 2.268925428390502929, 0, 0, 0.906307220458984375, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(29452, 180878, 0, 0, 0, 1, 1, -4646.25927734375, -951.1544189453125, 502.146484375, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 120, 255, 1, "", 47720, NULL), +-- duplicate spawn +-- (29454, 180774, 0, 0, 0, 1, 1, -4909.1875, -877.80902099609375, 508.408538818359375, 5.096362113952636718, 0, 0, -0.55919265747070312, 0.829037725925445556, 120, 255, 1, "", 52237, NULL), +(29455, 180769, 0, 0, 0, 1, 1, -4936.736328125, -913.11456298828125, 510.865936279296875, 2.268925428390502929, 0, 0, 0.906307220458984375, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(29456, 180769, 0, 0, 0, 1, 1, -4957.96533203125, -930.8367919921875, 510.45208740234375, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 120, 255, 1, "", 47720, NULL), +-- duplicate spawn +-- (29457, 180774, 0, 0, 0, 1, 1, -4911.4423828125, -980.86956787109375, 508.03363037109375, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 120, 255, 1, "", 47720, NULL), +(29458, 180769, 0, 0, 0, 1, 1, -4934.17529296875, -911.015625, 510.92388916015625, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(29459, 180878, 0, 0, 0, 1, 1, -4645.6865234375, -950.10296630859375, 501.913726806640625, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 120, 255, 1, "", 47720, NULL), +(29460, 180773, 0, 0, 0, 1, 1, -4634.31591796875, -1026.5972900390625, 511.7818603515625, 1.815141916275024414, 0, 0, 0.788010597229003906, 0.615661680698394775, 120, 255, 1, "", 47720, NULL), +(29461, 180773, 0, 0, 0, 1, 1, -4999.5625, -952.12152099609375, 508.382659912109375, 5.672322273254394531, 0, 0, -0.3007049560546875, 0.953717231750488281, 120, 255, 1, "", 52237, NULL), +(29462, 180769, 0, 0, 0, 1, 1, -4863.66845703125, -880.4930419921875, 517.64349365234375, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 120, 255, 1, "", 47720, NULL), +(29463, 180878, 0, 0, 0, 1, 1, -4644.6357421875, -955.35040283203125, 501.91357421875, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, "", 47720, NULL), +(29464, 180878, 0, 0, 0, 1, 1, -4643.89306640625, -954.76202392578125, 501.6607666015625, 0.331610709428787231, 0, 0, 0.16504669189453125, 0.986285746097564697, 120, 255, 1, "", 47720, NULL), +(29465, 180769, 0, 0, 0, 1, 1, -4724.23291015625, -1108.40283203125, 520.7218017578125, 6.178466320037841796, 0, 0, -0.05233573913574218, 0.998629570007324218, 120, 255, 1, "", 52237, NULL), +(29467, 180773, 0, 0, 0, 1, 1, -4640.94775390625, -1177.7257080078125, 511.82611083984375, 4.223697185516357421, 0, 0, -0.85716724395751953, 0.515038192272186279, 120, 255, 1, "", 52237, NULL), +(29468, 180878, 0, 0, 0, 1, 1, -4643.00634765625, -950.55914306640625, 501.66009521484375, 4.188792228698730468, 0, 0, -0.86602497100830078, 0.50000077486038208, 120, 255, 1, "", 47720, NULL), +(29469, 180769, 0, 0, 0, 1, 1, -4978.9130859375, -1022.39410400390625, 520.18487548828125, 5.916667938232421875, 0, 0, -0.18223476409912109, 0.98325502872467041, 120, 255, 1, "", 52237, NULL), +(29470, 180878, 0, 0, 0, 1, 1, -4644.38037109375, -953.23956298828125, 502.584381103515625, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, "", 47720, NULL), +-- duplicate spawn +-- (29471, 180774, 0, 0, 0, 1, 1, -8942.748046875, 987.95489501953125, 135.160858154296875, 5.340708732604980468, 0, 0, -0.45398998260498046, 0.891006767749786376, 120, 255, 1, "", 52237, NULL), +(29472, 180770, 0, 0, 0, 1, 1, -8456.8994140625, 501.864593505859375, 110.47296142578125, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 120, 255, 1, "", 52237, NULL), +(29473, 180773, 0, 0, 0, 1, 1, -8851.8330078125, 850.70489501953125, 108.8473587036132812, 5.410521507263183593, 0, 0, -0.42261791229248046, 0.906307935714721679, 120, 255, 1, "", 52237, NULL), +(29474, 180769, 0, 0, 0, 1, 1, -8841.236328125, 798.01739501953125, 101.209686279296875, 0.645771682262420654, 0, 0, 0.317304611206054687, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(29475, 180757, 0, 0, 0, 1, 1, -8934.8720703125, 617.9815673828125, 102.706573486328125, 3.630291461944580078, 0, 0, -0.97029495239257812, 0.241925001144409179, 120, 255, 1, "", 47720, NULL), +(29476, 180770, 0, 0, 0, 1, 1, -8647.9912109375, 443.477447509765625, 109.0393829345703125, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, "", 52237, NULL), +(29477, 180770, 0, 0, 0, 1, 1, -8802.42578125, 620.40277099609375, 101.4536514282226562, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, "", 47720, NULL), +(29479, 180770, 0, 0, 0, 1, 1, -8466.46875, 494.298614501953125, 110.5261383056640625, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, "", 52237, NULL), +(29480, 180769, 0, 0, 0, 1, 1, -8835.501953125, 604.100341796875, 98.3973388671875, 2.530723094940185546, 0, 0, 0.953716278076171875, 0.300707906484603881, 120, 255, 1, "", 47720, NULL), +(29482, 180773, 0, 0, 0, 1, 1, -8538.9580078125, 455.3336181640625, 113.5704116821289062, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, "", 52237, NULL), +-- duplicate spawn +-- (29483, 180774, 0, 0, 0, 1, 1, -8854.5439453125, 662.6796875, 107.2023773193359375, 5.340708732604980468, 0, 0, -0.45398998260498046, 0.891006767749786376, 120, 255, 1, "", 47966, NULL), +(29486, 180769, 0, 0, 0, 1, 1, -8852.7392578125, 667.99481201171875, 100.2721023559570312, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 120, 255, 1, "", 47720, NULL), +(29487, 180770, 0, 0, 0, 1, 1, -8844.8642578125, 792.29522705078125, 101.0985794067382812, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 120, 255, 1, "", 47720, NULL), +(29488, 180766, 0, 0, 0, 1, 1, -8769.564453125, 1069.18994140625, 90.78026580810546875, 6.265733242034912109, 0, 0, -0.00872611999511718, 0.999961912631988525, 120, 255, 1, "", 47720, NULL), +(29489, 180770, 0, 0, 0, 1, 1, -8860.5458984375, 575.90362548828125, 103.9402236938476562, 2.338739633560180664, 0, 0, 0.920504570007324218, 0.3907318115234375, 120, 255, 1, "", 47720, NULL), +(29492, 180769, 0, 0, 0, 1, 1, -4960.6767578125, -933.0205078125, 510.504058837890625, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, "", 47720, NULL), +(29493, 180769, 0, 0, 0, 1, 1, -4971.41845703125, -1005.39239501953125, 520.1387939453125, 5.829400539398193359, 0, 0, -0.22495079040527343, 0.974370121955871582, 120, 255, 1, "", 52237, NULL), +(29495, 180769, 0, 0, 0, 1, 1, -4972.767578125, -1008.64239501953125, 520.15478515625, 5.89921426773071289, 0, 0, -0.19080829620361328, 0.981627285480499267, 120, 255, 1, "", 52237, NULL), +(29496, 180769, 0, 0, 0, 1, 1, -4952.3681640625, -926.1788330078125, 510.53948974609375, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, "", 47720, NULL), +(29497, 180769, 0, 0, 0, 1, 1, -4806.919921875, -1179.826416015625, 516.32598876953125, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, "", 52237, NULL), +(29499, 180769, 0, 0, 0, 1, 1, -4977.3212890625, -1019.036376953125, 520.13348388671875, 5.916667938232421875, 0, 0, -0.18223476409912109, 0.98325502872467041, 120, 255, 1, "", 52237, NULL), +(29500, 180878, 0, 0, 0, 1, 1, -4646.2421875, -952.04168701171875, 502.14642333984375, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 120, 255, 1, "", 47720, NULL), +(29501, 180769, 0, 0, 0, 1, 1, -4975.6630859375, -1015.4271240234375, 520.06939697265625, 5.916667938232421875, 0, 0, -0.18223476409912109, 0.98325502872467041, 120, 255, 1, "", 52237, NULL), +-- duplicate spawn +-- (29502, 180774, 0, 0, 0, 1, 1, -5020.66357421875, -834.8433837890625, 515.46832275390625, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, "", 52237, NULL), +(29503, 180769, 0, 0, 0, 1, 1, -4723.41455078125, -1101.906982421875, 520.96954345703125, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 52237, NULL), +(29504, 180769, 0, 0, 0, 1, 1, -4949.66748046875, -923.86749267578125, 510.668792724609375, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 120, 255, 1, "", 47720, NULL), +(29505, 180769, 0, 0, 0, 1, 1, -4726.39892578125, -1121.2969970703125, 521.0274658203125, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 52237, NULL), +(29506, 180769, 0, 0, 0, 1, 1, -4676.533203125, -885.7274169921875, 520.2188720703125, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 120, 255, 1, "", 47720, NULL), +(29507, 180769, 0, 0, 0, 1, 1, -4723.79052734375, -1105.02734375, 520.9151611328125, 6.161012649536132812, 0, 0, -0.06104850769042968, 0.998134791851043701, 120, 255, 1, "", 52237, NULL), +(29508, 180769, 0, 0, 0, 1, 1, -4939.38525390625, -915.25518798828125, 510.80084228515625, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, "", 47720, NULL), +(29509, 180769, 0, 0, 0, 1, 1, -4726.95849609375, -1124.51220703125, 520.96685791015625, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 120, 255, 1, "", 52237, NULL), +-- duplicate spawn +-- (29511, 180774, 0, 0, 0, 1, 1, -4898.0849609375, -969.86212158203125, 508.09564208984375, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 52237, NULL), +(29512, 180766, 0, 0, 0, 1, 1, -4669.05615234375, -970.063720703125, 502.1358642578125, 4.223697185516357421, 0, 0, -0.85716724395751953, 0.515038192272186279, 120, 255, 1, "", 47720, NULL), +-- duplicate spawn +-- (29515, 180774, 0, 0, 0, 1, 1, -8712.763671875, 465.376739501953125, 107.8306732177734375, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, "", 52237, NULL), +(29516, 180770, 0, 0, 0, 1, 1, -8854.3525390625, 617.130126953125, 100.5960235595703125, 5.096362113952636718, 0, 0, -0.55919265747070312, 0.829037725925445556, 120, 255, 1, "", 47720, NULL), +(29517, 180770, 0, 0, 0, 1, 1, -8455.4931640625, 490.953125, 110.5626678466796875, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 120, 255, 1, "", 52237, NULL), +(29518, 180757, 0, 0, 0, 1, 1, -8800.279296875, 670.98614501953125, 100.9956588745117187, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 120, 255, 1, "", 47720, NULL), +(29519, 180769, 0, 0, 0, 1, 1, -8939.5517578125, 990.90850830078125, 136.77728271484375, 5.288348197937011718, 0, 0, -0.4771585464477539, 0.878817260265350341, 120, 255, 1, "", 52237, NULL), +(29520, 180769, 0, 0, 0, 1, 1, -8951.1806640625, 981.33282470703125, 137.118194580078125, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 120, 255, 1, "", 52237, NULL), +(29522, 180770, 0, 0, 0, 1, 1, -9060.0517578125, 841.65692138671875, 119.3519668579101562, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 120, 255, 1, "", 47966, NULL), +(29523, 180766, 0, 0, 0, 1, 1, -8760.6728515625, 1068.522216796875, 90.78026580810546875, 0, 0, 0, 0, 1, 120, 255, 1, "", 47720, NULL), +(29524, 180766, 0, 0, 0, 1, 1, -8731.943359375, 1060.68359375, 90.7473907470703125, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 120, 255, 1, "", 47720, NULL), +(29525, 180769, 0, 0, 0, 1, 1, -8948.9736328125, 983.89019775390625, 136.9651641845703125, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, "", 52237, NULL), +(29526, 180766, 0, 0, 0, 1, 1, -8734.7841796875, 1076.231201171875, 90.75266265869140625, 0.575957298278808593, 0, 0, 0.284014701843261718, 0.958819925785064697, 120, 255, 1, "", 47720, NULL), +(30356, 180770, 0, 0, 0, 1, 1, -8563.59765625, 604.25, 109.3567581176757812, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 120, 255, 1, "", 52237, NULL), +(30802, 180770, 0, 0, 0, 1, 1, -9085.3173828125, 827.94622802734375, 119.3678665161132812, 0.383971005678176879, 0, 0, 0.190808296203613281, 0.981627285480499267, 120, 255, 1, "", 47966, NULL), +(30803, 180878, 0, 0, 0, 1, 1, -8738.9384765625, 1074.9361572265625, 90.7093505859375, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, "", 47720, NULL), +(30806, 180766, 0, 0, 0, 1, 1, -8735.341796875, 1066.7115478515625, 90.4430694580078125, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 120, 255, 1, "", 47720, NULL), +(30860, 180773, 0, 0, 0, 1, 1, -8885.669921875, 594.6055908203125, 93.583526611328125, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, "", 47720, NULL), +(30861, 180770, 0, 0, 0, 1, 1, -4867.88720703125, -1144.3040771484375, 510.1231689453125, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 120, 255, 1, "", 52237, NULL), +(30862, 180878, 0, 0, 0, 1, 1, -4645.455078125, -950.86944580078125, 501.913726806640625, 3.176533222198486328, 0, 0, -0.999847412109375, 0.017469281330704689, 120, 255, 1, "", 47720, NULL), +(30863, 180878, 0, 0, 0, 1, 1, -4643.13037109375, -954.62109375, 501.660919189453125, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, "", 47720, NULL), +(30864, 180766, 0, 0, 0, 1, 1, -4655.96630859375, -941.48760986328125, 502.14593505859375, 1.274088263511657714, 0, 0, 0.594821929931640625, 0.80385744571685791, 120, 255, 1, "", 47720, NULL), +(30868, 180766, 0, 0, 0, 1, 1, -4677.8359375, -959.58660888671875, 502.14501953125, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 120, 255, 1, "", 47720, NULL), +(30869, 180769, 0, 0, 0, 1, 1, -4867.3662109375, -881.1632080078125, 517.56805419921875, 1.832594871520996093, 0, 0, 0.793353080749511718, 0.608761727809906005, 120, 255, 1, "", 47720, NULL), +(31144, 180769, 0, 0, 0, 1, 1, -4725.3740234375, -1114.8397216796875, 520.90655517578125, 6.09120035171508789, 0, 0, -0.09584522247314453, 0.995396256446838378, 120, 255, 1, "", 52237, NULL), +(31146, 180770, 0, 0, 0, 1, 1, -4847.67333984375, -1163.0767822265625, 508.427154541015625, 0.837757468223571777, 0, 0, 0.406736373901367187, 0.913545548915863037, 120, 255, 1, "", 52237, NULL), +(31147, 180769, 0, 0, 0, 1, 1, -4810.58154296875, -1179.8712158203125, 516.28607177734375, 4.747295856475830078, 0, 0, -0.69465827941894531, 0.719339847564697265, 120, 255, 1, "", 52237, NULL), +(31148, 180769, 0, 0, 0, 1, 1, -4947.25, -921.7100830078125, 510.724395751953125, 2.356194972991943359, 0, 0, 0.923879623413085937, 0.382683247327804565, 120, 255, 1, "", 47720, NULL), +(31149, 180769, 0, 0, 0, 1, 1, -4724.77783203125, -1111.6007080078125, 520.82757568359375, 6.12610626220703125, 0, 0, -0.07845878601074218, 0.996917366981506347, 120, 255, 1, "", 52237, NULL), +(31150, 180770, 0, 0, 0, 1, 1, -4691.3388671875, -874.26153564453125, 520.23614501953125, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 120, 255, 1, "", 47720, NULL), +(31151, 180769, 0, 0, 0, 1, 1, -4799.392578125, -1179.9375, 516.353515625, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, "", 52237, NULL), +(31152, 180878, 0, 0, 0, 1, 1, -8737.9873046875, 1077.3504638671875, 90.78026580810546875, 0.645771682262420654, 0, 0, 0.317304611206054687, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(31153, 180773, 0, 0, 0, 1, 1, -4637.8662109375, -934.6649169921875, 517.1827392578125, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, "", 52237, NULL), +(31154, 180770, 0, 0, 0, 1, 1, -8663.1494140625, 503.359375, 105.884490966796875, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 52237, NULL), +(31156, 180769, 0, 0, 0, 1, 1, -8795.1162109375, 622.48956298828125, 101.7800521850585937, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 120, 255, 1, "", 47720, NULL), +(31157, 180770, 0, 0, 0, 1, 1, -5019.259765625, -1046.804443359375, 522.747802734375, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 120, 255, 1, "", 52237, NULL), +(31158, 180769, 0, 0, 0, 1, 1, -8946.23828125, 985.97247314453125, 137.0928497314453125, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, "", 52237, NULL), +(31159, 180769, 0, 0, 0, 1, 1, -4725.93408203125, -1118.111083984375, 520.86895751953125, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 120, 255, 1, "", 52237, NULL), +(31160, 180769, 0, 0, 0, 1, 1, -4803.0380859375, -1179.85595703125, 516.320556640625, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, "", 52237, NULL), +(31163, 180769, 0, 0, 0, 1, 1, -4955.12841796875, -928.47222900390625, 510.47216796875, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, "", 47720, NULL), +(31164, 180878, 0, 0, 0, 1, 1, -4645.779296875, -955.2208251953125, 502.146331787109375, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, "", 47720, NULL), +(31165, 180770, 0, 0, 0, 1, 1, -8463.013671875, 509.90972900390625, 110.4709625244140625, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, "", 52237, NULL), +-- duplicate spawn +-- (31167, 180774, 0, 0, 0, 1, 1, -8763.1982421875, 724.888916015625, 104.2291107177734375, 0.680676698684692382, 0, 0, 0.333806037902832031, 0.942641794681549072, 120, 255, 1, "", 47966, NULL), +(31168, 180878, 0, 0, 0, 1, 1, -8739.3310546875, 1077.0634765625, 90.78026580810546875, 5.602506637573242187, 0, 0, -0.33380699157714843, 0.942641437053680419, 120, 255, 1, "", 47720, NULL), +(31169, 180769, 0, 0, 0, 1, 1, -8806.0263671875, 613.984375, 101.8494873046875, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, "", 47720, NULL), +(31171, 180769, 0, 0, 0, 1, 1, -8856.1767578125, 665.4617919921875, 100.2600784301757812, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, "", 47720, NULL), +(31172, 180770, 0, 0, 0, 1, 1, -8472.4892578125, 502.2882080078125, 110.5087890625, 5.410521507263183593, 0, 0, -0.42261791229248046, 0.906307935714721679, 120, 255, 1, "", 52237, NULL), +(31174, 180773, 0, 0, 0, 1, 1, -8859.9287109375, 584.9310302734375, 93.38101959228515625, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 47800, NULL), +(31175, 180769, 0, 0, 0, 1, 1, -9057.16015625, 835.0966796875, 119.4120635986328125, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 120, 255, 1, "", 47966, NULL), +(31177, 180769, 0, 0, 0, 1, 1, -8835.6298828125, 649.72918701171875, 100.7945632934570312, 3.717553615570068359, 0, 0, -0.95881938934326171, 0.284016460180282592, 120, 255, 1, "", 47720, NULL), +(31178, 180769, 0, 0, 0, 1, 1, -4974.15625, -1011.93048095703125, 520.0267333984375, 5.864306926727294921, 0, 0, -0.20791149139404296, 0.978147625923156738, 120, 255, 1, "", 52237, NULL), +(31180, 180878, 0, 0, 0, 1, 1, -4643.37158203125, -955.283447265625, 501.660797119140625, 2.844882726669311523, 0, 0, 0.989015579223632812, 0.147811368107795715, 120, 255, 1, "", 47720, NULL), +-- duplicate spawn +-- (31181, 180774, 0, 0, 0, 1, 1, -5007.46435546875, -1240.84765625, 518.63848876953125, 0.698131442070007324, 0, 0, 0.342020034790039062, 0.939692676067352294, 120, 255, 1, "", 52237, NULL), +(31182, 180770, 0, 0, 0, 1, 1, -4765.3291015625, -912.12969970703125, 507.817657470703125, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 120, 255, 1, "", 47720, NULL), +(31184, 180770, 0, 0, 0, 1, 1, -4682.48388671875, -881.14801025390625, 520.2335205078125, 0.925023794174194335, 0, 0, 0.446197509765625, 0.894934535026550292, 120, 255, 1, "", 47720, NULL), +(31185, 180878, 0, 0, 0, 1, 1, -4645.9912109375, -953.58831787109375, 502.146392822265625, 0.733038187026977539, 0, 0, 0.358367919921875, 0.933580458164215087, 120, 255, 1, "", 47720, NULL), +(31187, 180878, 0, 0, 0, 1, 1, -4646.04541015625, -952.815673828125, 502.146392822265625, 5.84685373306274414, 0, 0, -0.21643924713134765, 0.976296067237854003, 120, 255, 1, "", 47720, NULL), +(31188, 180878, 0, 0, 0, 1, 1, -4645.03271484375, -954.70745849609375, 501.91357421875, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, "", 47720, NULL), +(31189, 180878, 0, 0, 0, 1, 1, -4645.9423828125, -954.43890380859375, 502.146331787109375, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 120, 255, 1, "", 47720, NULL), +(31190, 180878, 0, 0, 0, 1, 1, -8737.755859375, 1076.5692138671875, 90.77675628662109375, 0.087265998125076293, 0, 0, 0.043619155883789062, 0.999048233032226562, 120, 255, 1, "", 47720, NULL), +(31191, 180878, 0, 0, 0, 1, 1, -8736.5185546875, 1074.7296142578125, 90.71143341064453125, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 120, 255, 1, "", 47720, NULL), +(31192, 180769, 0, 0, 0, 1, 1, -8862.8974609375, 617.22918701171875, 100.997222900390625, 3.560472726821899414, 0, 0, -0.97814750671386718, 0.207912087440490722, 120, 255, 1, "", 47720, NULL), +(31193, 180878, 0, 0, 0, 1, 1, -8739.8876953125, 1075.4716796875, 90.7259368896484375, 4.118979454040527343, 0, 0, -0.88294696807861328, 0.469472706317901611, 120, 255, 1, "", 47720, NULL), +(31194, 180770, 0, 0, 0, 1, 1, -5016.3369140625, -1125.1396484375, 509.606109619140625, 3.316144466400146484, 0, 0, -0.99619388580322265, 0.087165042757987976, 120, 255, 1, "", 52237, NULL), +(31195, 180769, 0, 0, 0, 1, 1, -4870.798828125, -882.01043701171875, 517.74261474609375, 1.780233979225158691, 0, 0, 0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 47720, NULL), +(31196, 180878, 0, 0, 0, 1, 1, -4643.845703125, -953.56768798828125, 502.598297119140625, 3.22885894775390625, 0, 0, -0.99904823303222656, 0.043619260191917419, 120, 255, 1, "", 47720, NULL), +(31198, 180766, 0, 0, 0, 1, 1, -4669.66357421875, -941.9884033203125, 502.144866943359375, 2.059488296508789062, 0, 0, 0.857167243957519531, 0.515038192272186279, 120, 255, 1, "", 47720, NULL), +(31199, 180878, 0, 0, 0, 1, 1, -4644.83544921875, -949.22137451171875, 501.66058349609375, 0.261798173189163208, 0, 0, 0.130525588989257812, 0.991444945335388183, 120, 255, 1, "", 47720, NULL), +(31202, 180769, 0, 0, 0, 1, 1, -8838.1318359375, 600.77606201171875, 98.2744140625, 2.44346022605895996, 0, 0, 0.939692497253417968, 0.34202045202255249, 120, 255, 1, "", 47720, NULL), +(31250, 180765, 1, 0, 0, 1, 1, 9640.306640625, 2620.290771484375, 1356.5782470703125, 1.85004889965057373, 0, 0, 0.798635482788085937, 0.60181504487991333, 120, 255, 1, "", 52237, NULL), +(31251, 180773, 1, 0, 0, 1, 1, 9940.3740234375, 2509.09375, 1327.0860595703125, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 120, 255, 1, "", 47720, NULL), +(31253, 180878, 1, 0, 0, 1, 1, 7593.7041015625, -2225.91015625, 469.256744384765625, 2.600535154342651367, 0, 0, 0.963629722595214843, 0.26724100112915039, 120, 255, 1, "", 47720, NULL), +(31255, 180768, 1, 0, 0, 1, 1, 7596.47900390625, -2260.560546875, 464.6484375, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 120, 255, 1, "", 47720, NULL), +(31256, 180768, 1, 0, 0, 1, 1, 7567.658203125, -2234.9912109375, 470.03466796875, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 120, 255, 1, "", 47720, NULL), +(31260, 180878, 1, 0, 0, 1, 1, 7595.8291015625, -2227.57177734375, 468.584136962890625, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, "", 47720, NULL), +(31262, 180768, 1, 0, 0, 1, 1, 7804.6337890625, -2306.099365234375, 455.44183349609375, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, "", 47720, NULL), +(31263, 180765, 1, 0, 0, 1, 1, 7789.0927734375, -2453.34716796875, 494.77301025390625, 5.532694816589355468, 0, 0, -0.3665008544921875, 0.93041771650314331, 120, 255, 1, "", 52237, NULL), +(31264, 180765, 1, 0, 0, 1, 1, 7844.05224609375, -2569.990234375, 505.267303466796875, 0.418878614902496337, 0, 0, 0.207911491394042968, 0.978147625923156738, 120, 255, 1, "", 47720, NULL), +(31265, 180765, 1, 0, 0, 1, 1, 8018.68310546875, -2687.18603515625, 521.24981689453125, 3.089183330535888671, 0, 0, 0.99965667724609375, 0.026201646775007247, 120, 255, 1, "", 47720, NULL), +(31266, 180765, 1, 0, 0, 1, 1, 7980.53466796875, -2436.577392578125, 496.33148193359375, 6.178466320037841796, 0, 0, -0.05233573913574218, 0.998629570007324218, 120, 255, 1, "", 47720, NULL), +(31268, 180765, 1, 0, 0, 1, 1, 9864.9228515625, 2496.113037109375, 1337.4749755859375, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, "", 52237, NULL), +(31270, 180765, 1, 0, 0, 1, 1, 10153.6591796875, 2244.231201171875, 1335.2490234375, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, "", 52237, NULL), +(31272, 180778, 1, 0, 0, 1, 1, 7608.04345703125, -2241.1318359375, 467.294830322265625, 2.652894020080566406, 0, 0, 0.970294952392578125, 0.241925001144409179, 120, 255, 1, "", 47720, NULL), +(31273, 180766, 1, 0, 0, 1, 1, 7577.0380859375, -2202.193603515625, 475.33013916015625, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 120, 255, 1, "", 47720, NULL), +(31274, 180878, 1, 0, 0, 1, 1, 7594.09375, -2218.446044921875, 469.6158447265625, 5.288348197937011718, 0, 0, -0.4771585464477539, 0.878817260265350341, 120, 255, 1, "", 47720, NULL), +(31275, 180878, 1, 0, 0, 1, 1, 7593.462890625, -2220.960693359375, 469.408477783203125, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, "", 47720, NULL), +(31276, 180878, 1, 0, 0, 1, 1, 7594.0146484375, -2217.77880859375, 469.815155029296875, 4.433136463165283203, 0, 0, -0.79863548278808593, 0.60181504487991333, 120, 255, 1, "", 47720, NULL), +(31277, 180766, 1, 0, 0, 1, 1, 7584.9306640625, -2210.227294921875, 473.766265869140625, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, "", 47720, NULL), +(31278, 180778, 1, 0, 0, 1, 1, 7533.19189453125, -2189.474609375, 476.343475341796875, 3.368495941162109375, 0, 0, -0.99357128143310546, 0.113208353519439697, 120, 255, 1, "", 47720, NULL), +(31279, 180778, 1, 0, 0, 1, 1, 7533.15380859375, -2200.416259765625, 475.957183837890625, 6.12610626220703125, 0, 0, -0.07845878601074218, 0.996917366981506347, 120, 255, 1, "", 47720, NULL), +(31281, 180778, 1, 0, 0, 1, 1, 7597.28662109375, -2260.57568359375, 464.6719970703125, 4.555310726165771484, 0, 0, -0.76040554046630859, 0.649448513984680175, 120, 255, 1, "", 47720, NULL), +(31282, 180766, 1, 0, 0, 1, 1, 7586.3125, -2220.493408203125, 471.46240234375, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, "", 47720, NULL), +(31284, 180768, 1, 0, 0, 1, 1, 7622.8271484375, -2235.06103515625, 465.44293212890625, 6.265733242034912109, 0, 0, -0.00872611999511718, 0.999961912631988525, 120, 255, 1, "", 47720, NULL), +(31286, 180768, 1, 0, 0, 1, 1, 7602.5390625, -2228.526123046875, 467.91595458984375, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, "", 47720, NULL), +(31289, 180768, 1, 0, 0, 1, 1, 7697.64404296875, -2225.45556640625, 456.51123046875, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 120, 255, 1, "", 47720, NULL), +(31290, 180765, 1, 0, 0, 1, 1, 7785.37060546875, -2587.576416015625, 497.62396240234375, 1.884953022003173828, 0, 0, 0.809016227722167968, 0.587786316871643066, 120, 255, 1, "", 47720, NULL), +(31291, 180769, 1, 0, 0, 1, 1, 7976.00439453125, -2424.463623046875, 497.054962158203125, 0.069811686873435974, 0, 0, 0.034898757934570312, 0.999390840530395507, 120, 255, 1, "", 47720, NULL), +(31292, 180768, 1, 0, 0, 1, 1, 7892.77783203125, -2315.49609375, 466.889495849609375, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 120, 255, 1, "", 47720, NULL), +(31293, 180765, 1, 0, 0, 1, 1, 9936.6279296875, 2508.2685546875, 1324.6402587890625, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 120, 255, 1, "", 47720, NULL), +(31294, 180765, 1, 0, 0, 1, 1, 9855.1484375, 2363.35205078125, 1337.1397705078125, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 120, 255, 1, "", 52237, NULL), +(31296, 180758, 1, 0, 0, 1, 1, 10142.8759765625, 2209.26611328125, 1332.5137939453125, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 120, 255, 1, "", 52237, NULL), +(31297, 180878, 1, 0, 0, 1, 1, 7594.9853515625, -2220.9853515625, 469.232421875, 2.338739633560180664, 0, 0, 0.920504570007324218, 0.3907318115234375, 120, 255, 1, "", 47720, NULL), +(31298, 180878, 1, 0, 0, 1, 1, 7595.52001953125, -2222.410400390625, 468.999725341796875, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, "", 47720, NULL), +(31299, 180878, 1, 0, 0, 1, 1, 7594.1337890625, -2226.657958984375, 469.131988525390625, 3.665196180343627929, 0, 0, -0.96592521667480468, 0.258821308612823486, 120, 255, 1, "", 47720, NULL), +(33158, 180878, 1, 0, 0, 1, 1, 7594.97314453125, -2225.433837890625, 468.876251220703125, 5.986480236053466796, 0, 0, -0.14780902862548828, 0.989015936851501464, 120, 255, 1, "", 47720, NULL), +(33159, 180765, 1, 0, 0, 1, 1, 9746.5361328125, 2571.271484375, 1348.618408203125, 3.351046562194824218, 0, 0, -0.99452114105224609, 0.104535527527332305, 120, 255, 1, "", 52237, NULL), +(33161, 180878, 1, 0, 0, 1, 1, 7593.501953125, -2222.484375, 470.96392822265625, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, "", 47720, NULL), +(33162, 180765, 1, 0, 0, 1, 1, 9862.2529296875, 2392.576171875, 1345.2239990234375, 2.478367090225219726, 0, 0, 0.94551849365234375, 0.325568377971649169, 120, 255, 1, "", 52237, NULL), +(33163, 180878, 1, 0, 0, 1, 1, 7593.455078125, -2218.18994140625, 469.722320556640625, 1.151916384696960449, 0, 0, 0.544638633728027343, 0.838670849800109863, 120, 255, 1, "", 47720, NULL), +(33164, 180765, 1, 0, 0, 1, 1, 9888.87109375, 2352.4013671875, 1326.3707275390625, 2.583080768585205078, 0, 0, 0.961260795593261718, 0.275640487670898437, 120, 255, 1, "", 52237, NULL), +(33165, 180765, 1, 0, 0, 1, 1, 9748.8154296875, 2482.107666015625, 1348.6822509765625, 1.466075778007507324, 0, 0, 0.669130325317382812, 0.74314504861831665, 120, 255, 1, "", 52237, NULL), +(43232, 180878, 1, 0, 0, 1, 1, 7595.61474609375, -2225.548095703125, 468.6796875, 1.692969322204589843, 0, 0, 0.748955726623535156, 0.662620067596435546, 120, 255, 1, "", 47720, NULL), +(43236, 180768, 1, 0, 0, 1, 1, 7704.1650390625, -2239.710693359375, 456.548248291015625, 3.001946926116943359, 0, 0, 0.997563362121582031, 0.069766148924827575, 120, 255, 1, "", 47720, NULL), +(43237, 180768, 1, 0, 0, 1, 1, 7644.640625, -2214.369873046875, 464.141815185546875, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 120, 255, 1, "", 47720, NULL), +(43238, 180768, 1, 0, 0, 1, 1, 7711.921875, -2226.815673828125, 454.9150390625, 0.15707901120185852, 0, 0, 0.078458786010742187, 0.996917366981506347, 120, 255, 1, "", 47720, NULL), +(43239, 180765, 1, 0, 0, 1, 1, 7879.61279296875, -2478.378662109375, 498.8212890625, 4.241150379180908203, 0, 0, -0.85264015197753906, 0.522498607635498046, 120, 255, 1, "", 47720, NULL), +(43240, 180765, 1, 0, 0, 1, 1, 10154.861328125, 2510.7705078125, 1348.6934814453125, 5.148722648620605468, 0, 0, -0.53729915618896484, 0.843391716480255126, 120, 255, 1, "", 47720, NULL), +(43241, 180765, 1, 0, 0, 1, 1, 9645.1025390625, 2439.84423828125, 1356.5269775390625, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, "", 52237, NULL), +(43242, 180765, 1, 0, 0, 1, 1, 9878.228515625, 2481.73681640625, 1337.4749755859375, 2.426007747650146484, 0, 0, 0.936672210693359375, 0.350207358598709106, 120, 255, 1, "", 52237, NULL), +(43243, 180766, 1, 0, 0, 1, 1, 7591.0703125, -2215.048583984375, 471.042877197265625, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, "", 47720, NULL), +(43244, 180778, 1, 0, 0, 1, 1, 7604.17041015625, -2204.446533203125, 473.183746337890625, 0.785396754741668701, 0, 0, 0.38268280029296875, 0.923879802227020263, 120, 255, 1, "", 47720, NULL), +(43245, 180768, 1, 0, 0, 1, 1, 7613.15087890625, -2234.594970703125, 467.0772705078125, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, "", 47720, NULL), +(43246, 180878, 1, 0, 0, 1, 1, 7593.64697265625, -2218.996337890625, 469.53369140625, 2.652894020080566406, 0, 0, 0.970294952392578125, 0.241925001144409179, 120, 255, 1, "", 47720, NULL), +(43248, 180768, 1, 0, 0, 1, 1, 7581.205078125, -2248.315673828125, 467.3194580078125, 5.532694816589355468, 0, 0, -0.3665008544921875, 0.93041771650314331, 120, 255, 1, "", 47720, NULL), +(43249, 180878, 1, 0, 0, 1, 1, 7594.47412109375, -2225.946533203125, 469.0274658203125, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 120, 255, 1, "", 47720, NULL), +(43250, 180768, 1, 0, 0, 1, 1, 7935.84130859375, -2310.791748046875, 474.185211181640625, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, "", 47720, NULL), +(43251, 180768, 1, 0, 0, 1, 1, 7532.73779296875, -2139.89697265625, 483.88519287109375, 2.70525527000427246, 0, 0, 0.97629547119140625, 0.216442063450813293, 120, 255, 1, "", 47720, NULL), +(43252, 180768, 1, 0, 0, 1, 1, 7930.111328125, -2321.35107421875, 473.36077880859375, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 120, 255, 1, "", 47720, NULL), +(43253, 180768, 1, 0, 0, 1, 1, 7598.20166015625, -2233.017578125, 467.86376953125, 2.426007747650146484, 0, 0, 0.936672210693359375, 0.350207358598709106, 120, 255, 1, "", 47720, NULL), +(43254, 180766, 1, 0, 0, 1, 1, 7587.8974609375, -2197.061279296875, 476.1669921875, 2.862335443496704101, 0, 0, 0.990267753601074218, 0.139175355434417724, 120, 255, 1, "", 47720, NULL), +(43255, 180778, 1, 0, 0, 1, 1, 7613.83251953125, -2233.686279296875, 467.286407470703125, 5.619962215423583984, 0, 0, -0.32556724548339843, 0.945518851280212402, 120, 255, 1, "", 47720, NULL), +(43256, 180878, 1, 0, 0, 1, 1, 7592.4931640625, -2222.166259765625, 469.499298095703125, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, "", 47720, NULL), +(43259, 180878, 1, 0, 0, 1, 1, 7591.8349609375, -2218.63818359375, 469.93060302734375, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 120, 255, 1, "", 47720, NULL), +(43260, 180778, 1, 0, 0, 1, 1, 7603.4130859375, -2227.890869140625, 468.2110595703125, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, "", 47720, NULL), +(43261, 180770, 1, 0, 0, 1, 1, 7595.04345703125, -2218.2587890625, 474.4747314453125, 0.785396754741668701, 0, 0, 0.38268280029296875, 0.923879802227020263, 120, 255, 1, "", 47720, NULL), +(43262, 180768, 1, 0, 0, 1, 1, 7745.27685546875, -2264.59765625, 455.249725341796875, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, "", 47720, NULL), +(43263, 180767, 1, 0, 0, 1, 1, 7860.251953125, -2568.447998046875, 501.588104248046875, 6.056293010711669921, 0, 0, -0.11320304870605468, 0.993571877479553222, 120, 255, 1, "", 47720, NULL), +(43264, 180767, 1, 0, 0, 1, 1, 7861.15185546875, -2519.1142578125, 496.651702880859375, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 120, 255, 1, "", 47720, NULL), +(43265, 180765, 1, 0, 0, 1, 1, 7846.74658203125, -2595.48095703125, 494.174102783203125, 3.176533222198486328, 0, 0, -0.999847412109375, 0.017469281330704689, 120, 255, 1, "", 52237, NULL), +(43266, 180767, 1, 0, 0, 1, 1, 8022.0634765625, -2671.010986328125, 521.28167724609375, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, "", 47720, NULL), +(43267, 180768, 1, 0, 0, 1, 1, 7692.51416015625, -2237.527587890625, 457.552581787109375, 3.054326534271240234, 0, 0, 0.999048233032226562, 0.043619260191917419, 120, 255, 1, "", 47720, NULL), +(43268, 180765, 1, 0, 0, 1, 1, 9732.6845703125, 2612.33544921875, 1362.8448486328125, 0.366517573595046997, 0, 0, 0.182234764099121093, 0.98325502872467041, 120, 255, 1, "", 52237, NULL), +(43270, 180765, 1, 0, 0, 1, 1, 9796.5537109375, 2483.214599609375, 1348.6416015625, 0.052358884364366531, 0, 0, 0.02617645263671875, 0.999657332897186279, 120, 255, 1, "", 52237, NULL), +(43272, 180765, 1, 0, 0, 1, 1, 9737.1767578125, 2440.220947265625, 1362.8597412109375, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 120, 255, 1, "", 52237, NULL), +(43273, 180765, 1, 0, 0, 1, 1, 9867.7626953125, 2375.509033203125, 1345.2239990234375, 3.577930212020874023, 0, 0, -0.97629547119140625, 0.216442063450813293, 120, 255, 1, "", 52237, NULL), +(43274, 180758, 1, 0, 0, 1, 1, 9987.015625, 2308.417236328125, 1335.3905029296875, 1.448621988296508789, 0, 0, 0.662619590759277343, 0.748956084251403808, 120, 255, 1, "", 47720, NULL), +(43275, 180765, 1, 0, 0, 1, 1, 10217.40625, 2502.561767578125, 1366.01025390625, 3.700104713439941406, 0, 0, -0.96126079559326171, 0.275640487670898437, 120, 255, 1, "", 52237, NULL), +(43277, 180758, 1, 0, 0, 1, 1, 9867.8564453125, 2328.986083984375, 1325.4254150390625, 2.548179388046264648, 0, 0, 0.956304550170898437, 0.292372345924377441, 120, 255, 1, "", 52237, NULL), +(43278, 180758, 1, 0, 0, 1, 1, 9920.5390625, 2307.413330078125, 1335.3857421875, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 120, 255, 1, "", 47720, NULL), +(43279, 180773, 1, 0, 0, 1, 1, 9952.4931640625, 2258.6494140625, 1349.288330078125, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, "", 52237, NULL), +(43280, 180765, 1, 0, 0, 1, 1, 10213.64453125, 2498.30810546875, 1375.355224609375, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, "", 52237, NULL), +(43281, 180768, 1, 0, 0, 1, 1, 7591.91162109375, -2223.405517578125, 469.710235595703125, 2.70525527000427246, 0, 0, 0.97629547119140625, 0.216442063450813293, 120, 255, 1, "", 47720, NULL), +(43283, 180878, 1, 0, 0, 1, 1, 7591.939453125, -2222.578125, 469.656585693359375, 0.418878614902496337, 0, 0, 0.207911491394042968, 0.978147625923156738, 120, 255, 1, "", 47720, NULL), +(43284, 180878, 1, 0, 0, 1, 1, 7594.3681640625, -2222.910888671875, 469.133514404296875, 1.972219824790954589, 0, 0, 0.83388519287109375, 0.55193793773651123, 120, 255, 1, "", 47720, NULL), +(43285, 180878, 1, 0, 0, 1, 1, 7593.369140625, -2219.572509765625, 469.5224609375, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 120, 255, 1, "", 47720, NULL), +(43286, 180878, 1, 0, 0, 1, 1, 7591.345703125, -2218.072509765625, 470.12451171875, 2.548179388046264648, 0, 0, 0.956304550170898437, 0.292372345924377441, 120, 255, 1, "", 47720, NULL), +(43287, 180878, 1, 0, 0, 1, 1, 7595.8837890625, -2221.744873046875, 469.03900146484375, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 120, 255, 1, "", 47720, NULL), +(43288, 180768, 1, 0, 0, 1, 1, 7608.7177734375, -2240.2802734375, 467.18109130859375, 2.600535154342651367, 0, 0, 0.963629722595214843, 0.26724100112915039, 120, 255, 1, "", 47720, NULL), +(43289, 180878, 1, 0, 0, 1, 1, 7593.025390625, -2224.009033203125, 469.454742431640625, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 47720, NULL), +(43292, 180768, 1, 0, 0, 1, 1, 7842.76318359375, -2302.04345703125, 458.26214599609375, 5.986480236053466796, 0, 0, -0.14780902862548828, 0.989015936851501464, 120, 255, 1, "", 47720, NULL), +(43293, 180770, 1, 0, 0, 1, 1, 7795.1005859375, -2575.12158203125, 496.78704833984375, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 120, 255, 1, "", 47720, NULL), +(43294, 180778, 1, 0, 0, 1, 1, 7938.4375, -2375.484619140625, 488.52777099609375, 4.223697185516357421, 0, 0, -0.85716724395751953, 0.515038192272186279, 120, 255, 1, "", 47720, NULL), +(43295, 180765, 1, 0, 0, 1, 1, 7941.814453125, -2383.61669921875, 496.2965087890625, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, "", 47720, NULL), +(43296, 180766, 1, 0, 0, 1, 1, 7610.66845703125, -2300.421142578125, 458.17913818359375, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(43297, 180878, 1, 0, 0, 1, 1, 7594.18603515625, -2227.329345703125, 469.1070556640625, 3.508116960525512695, 0, 0, -0.98325443267822265, 0.182238012552261352, 120, 255, 1, "", 47720, NULL), +(43298, 180768, 1, 0, 0, 1, 1, 7604.77880859375, -2204.8525390625, 473.018463134765625, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, "", 47720, NULL), +(43299, 180878, 1, 0, 0, 1, 1, 7591.9912109375, -2219.290283203125, 469.799041748046875, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 120, 255, 1, "", 47720, NULL), +(43300, 180778, 1, 0, 0, 1, 1, 7597.4140625, -2233.827392578125, 467.9375, 2.391098499298095703, 0, 0, 0.930417060852050781, 0.366502493619918823, 120, 255, 1, "", 47720, NULL), +(43303, 180878, 1, 0, 0, 1, 1, 7592.5078125, -2218.870361328125, 469.763580322265625, 5.654868602752685546, 0, 0, -0.30901622772216796, 0.95105677843093872, 120, 255, 1, "", 47720, NULL), +(43304, 180770, 1, 0, 0, 1, 1, 7816.99462890625, -2572.12158203125, 497.041900634765625, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 120, 255, 1, "", 47720, NULL), +(43305, 180767, 1, 0, 0, 1, 1, 7872.55029296875, -2478.9150390625, 498.779693603515625, 1.343901276588439941, 0, 0, 0.622513771057128906, 0.78260880708694458, 120, 255, 1, "", 47720, NULL), +(43306, 180767, 1, 0, 0, 1, 1, 7898.0234375, -2476.247314453125, 498.772735595703125, 1.361356139183044433, 0, 0, 0.629320144653320312, 0.77714616060256958, 120, 255, 1, "", 47720, NULL), +(43308, 180767, 1, 0, 0, 1, 1, 7827.3369140625, -2546.64306640625, 503.596832275390625, 1.047197580337524414, 0, 0, 0.5, 0.866025388240814208, 120, 255, 1, "", 47720, NULL), +(43309, 180778, 1, 0, 0, 1, 1, 7979.65087890625, -2518.6689453125, 487.484771728515625, 2.356194972991943359, 0, 0, 0.923879623413085937, 0.382683247327804565, 120, 255, 1, "", 47720, NULL), +(43310, 180765, 1, 0, 0, 1, 1, 9883.47265625, 2496.60498046875, 1337.4749755859375, 2.391098499298095703, 0, 0, 0.930417060852050781, 0.366502493619918823, 120, 255, 1, "", 47720, NULL), +(43311, 180765, 1, 0, 0, 1, 1, 9793.9140625, 2572.302001953125, 1348.677734375, 1.658061861991882324, 0, 0, 0.737277030944824218, 0.67559051513671875, 120, 255, 1, "", 52237, NULL), +(43312, 180765, 1, 0, 0, 1, 1, 9748.2080078125, 2523.5087890625, 1360.431396484375, 5.497788906097412109, 0, 0, -0.38268280029296875, 0.923879802227020263, 120, 255, 1, "", 52237, NULL), +(43313, 180765, 1, 0, 0, 1, 1, 9866.5830078125, 2322.45654296875, 1337.2119140625, 1.239183306694030761, 0, 0, 0.580702781677246093, 0.814115643501281738, 120, 255, 1, "", 52237, NULL), +(43314, 180878, 1, 0, 0, 1, 1, 7594.82373046875, -2222.37109375, 469.123870849609375, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 120, 255, 1, "", 47720, NULL), +(43315, 180778, 1, 0, 0, 1, 1, 7622.8984375, -2233.944580078125, 465.877593994140625, 6.12610626220703125, 0, 0, -0.07845878601074218, 0.996917366981506347, 120, 255, 1, "", 47720, NULL), +(43317, 180766, 1, 0, 0, 1, 1, 7562.4208984375, -2870.490478515625, 458.33978271484375, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, "", 47720, NULL), +(43318, 180878, 1, 0, 0, 1, 1, 7594.4384765625, -2221.372314453125, 469.267913818359375, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 47720, NULL), +(43320, 180765, 1, 0, 0, 1, 1, 7914.283203125, -2481.3427734375, 496.647247314453125, 5.201082706451416015, 0, 0, -0.51503753662109375, 0.857167601585388183, 120, 255, 1, "", 47720, NULL), +(43321, 180768, 1, 0, 0, 1, 1, 7549.2646484375, -2136.742919921875, 483.712677001953125, 5.84685373306274414, 0, 0, -0.21643924713134765, 0.976296067237854003, 120, 255, 1, "", 47720, NULL), +(43323, 180765, 1, 0, 0, 1, 1, 7972.67626953125, -2380.009521484375, 496.278656005859375, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 120, 255, 1, "", 52237, NULL), +(43324, 180765, 1, 0, 0, 1, 1, 7948.68603515625, -2440.544921875, 496.29095458984375, 1.884953022003173828, 0, 0, 0.809016227722167968, 0.587786316871643066, 120, 255, 1, "", 47720, NULL), +(43325, 180878, 1, 0, 0, 1, 1, 7593.986328125, -2217.054443359375, 470.032135009765625, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, "", 47720, NULL), +(43327, 180878, 1, 0, 0, 1, 1, 7594.28662109375, -2225.31005859375, 469.080291748046875, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, "", 47720, NULL), +(43328, 180766, 1, 0, 0, 1, 1, 7571.87841796875, -2207.409423828125, 474.81256103515625, 2.356194972991943359, 0, 0, 0.923879623413085937, 0.382683247327804565, 120, 255, 1, "", 47720, NULL), +(43329, 180766, 1, 0, 0, 1, 1, 7580.40087890625, -2214.850830078125, 473.34423828125, 2.44346022605895996, 0, 0, 0.939692497253417968, 0.34202045202255249, 120, 255, 1, "", 47720, NULL), +(43330, 180878, 1, 0, 0, 1, 1, 7593.41162109375, -2217.432861328125, 469.94964599609375, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 120, 255, 1, "", 47720, NULL), +(43331, 180878, 1, 0, 0, 1, 1, 7593.84716796875, -2223.0498046875, 470.924957275390625, 5.759587764739990234, 0, 0, -0.25881862640380859, 0.965925931930541992, 120, 255, 1, "", 47720, NULL), +(43332, 180769, 1, 0, 0, 1, 1, 7853.05908203125, -2569.35986328125, 497.708160400390625, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 120, 255, 1, "", 47720, NULL), +(43334, 180770, 1, 0, 0, 1, 1, 7963.98974609375, -2438.75, 495.919830322265625, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, "", 47720, NULL), +(43335, 180765, 1, 0, 0, 1, 1, 7939.9775390625, -2425.346923828125, 498.42132568359375, 3.700104713439941406, 0, 0, -0.96126079559326171, 0.275640487670898437, 120, 255, 1, "", 47720, NULL), +(43337, 180765, 1, 0, 0, 1, 1, 9887.4697265625, 2347.947265625, 1337.024658203125, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 120, 255, 1, "", 52237, NULL), +(43338, 180770, 1, 0, 0, 1, 1, 7594.8447265625, -2228.784423828125, 473.12646484375, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 120, 255, 1, "", 47720, NULL), +(43339, 180878, 1, 0, 0, 1, 1, 7592.6337890625, -2222.82275390625, 469.502593994140625, 0.471238493919372558, 0, 0, 0.233445167541503906, 0.972369968891143798, 120, 255, 1, "", 47720, NULL), +(43340, 180878, 1, 0, 0, 1, 1, 7593.15283203125, -2223.34912109375, 469.40728759765625, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 120, 255, 1, "", 47720, NULL), +(43341, 180778, 1, 0, 0, 1, 1, 7567.48779296875, -2234.310302734375, 470.226348876953125, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 120, 255, 1, "", 47720, NULL), +(43342, 180878, 1, 0, 0, 1, 1, 7594.88916015625, -2220.369384765625, 469.288787841796875, 4.433136463165283203, 0, 0, -0.79863548278808593, 0.60181504487991333, 120, 255, 1, "", 47720, NULL), +(43343, 180878, 1, 0, 0, 1, 1, 7594.18603515625, -2220.700439453125, 469.344635009765625, 3.508116960525512695, 0, 0, -0.98325443267822265, 0.182238012552261352, 120, 255, 1, "", 47720, NULL), +(43345, 180765, 1, 0, 0, 1, 1, 9866.505859375, 2324.537353515625, 1330.732421875, 3.403396368026733398, 0, 0, -0.99144458770751953, 0.130528271198272705, 120, 255, 1, "", 52237, NULL), +(43347, 180768, 1, 0, 0, 1, 1, 7564.6083984375, -2160.893310546875, 480.921295166015625, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, "", 47720, NULL), +(43348, 180767, 1, 0, 0, 1, 1, 7783.375, -2563.994384765625, 497.555023193359375, 3.892086982727050781, 0, 0, -0.93041706085205078, 0.366502493619918823, 120, 255, 1, "", 47720, NULL), +(43349, 180767, 1, 0, 0, 1, 1, 7891.53564453125, -2477.243408203125, 498.728240966796875, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 120, 255, 1, "", 47720, NULL), +(43350, 180768, 1, 0, 0, 1, 1, 7956.47509765625, -2342.95751953125, 484.342071533203125, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, "", 47720, NULL), +(43352, 180765, 1, 0, 0, 1, 1, 10158.2861328125, 2522.732421875, 1350.4752197265625, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 120, 255, 1, "", 47720, NULL), +(43355, 180765, 1, 0, 0, 1, 1, 9644.5888671875, 2452.30859375, 1356.428955078125, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 120, 255, 1, "", 52237, NULL), +(43356, 180765, 1, 0, 0, 1, 1, 10204.052734375, 2494.780517578125, 1364.4786376953125, 5.253442287445068359, 0, 0, -0.49242305755615234, 0.870355963706970214, 120, 255, 1, "", 47720, NULL), +(43357, 180765, 1, 0, 0, 1, 1, 10129.4970703125, 2227.018798828125, 1334.799560546875, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, "", 52237, NULL), +(43358, 180765, 1, 0, 0, 1, 1, 9640.84375, 2607.803466796875, 1356.5084228515625, 4.904376029968261718, 0, 0, -0.636077880859375, 0.771624863147735595, 120, 255, 1, "", 52237, NULL), +(43359, 180768, 1, 0, 0, 1, 1, 7516.90478515625, -2122.637939453125, 485.130706787109375, 6.161012649536132812, 0, 0, -0.06104850769042968, 0.998134791851043701, 120, 255, 1, "", 47720, NULL), +(43360, 180878, 1, 0, 0, 1, 1, 7592.015625, -2223.967041015625, 469.71685791015625, 5.864306926727294921, 0, 0, -0.20791149139404296, 0.978147625923156738, 120, 255, 1, "", 47720, NULL), +(43361, 180878, 1, 0, 0, 1, 1, 7595.11962890625, -2223.009033203125, 468.992462158203125, 5.724681377410888671, 0, 0, -0.27563667297363281, 0.961261868476867675, 120, 255, 1, "", 47720, NULL), +(43363, 180766, 1, 0, 0, 1, 1, 7619.31884765625, -2221.525634765625, 469.7265625, 2.391098499298095703, 0, 0, 0.930417060852050781, 0.366502493619918823, 120, 255, 1, "", 47720, NULL), +(43364, 180765, 1, 0, 0, 1, 1, 7927.9130859375, -2401.150634765625, 498.45318603515625, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, "", 47720, NULL), +(43365, 180768, 1, 0, 0, 1, 1, 7754.5927734375, -2254.286865234375, 454.4696044921875, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 120, 255, 1, "", 47720, NULL), +(43366, 180769, 1, 0, 0, 1, 1, 7872.8427734375, -2514.87158203125, 497.417327880859375, 4.817109584808349609, 0, 0, -0.66913032531738281, 0.74314504861831665, 120, 255, 1, "", 47720, NULL), +(43367, 180765, 1, 0, 0, 1, 1, 7833.26025390625, -2607.046875, 503.596832275390625, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, "", 47720, NULL), +(43368, 180770, 1, 0, 0, 1, 1, 7959.392578125, -2575.677001953125, 500.478668212890625, 3.106652259826660156, 0, 0, 0.999847412109375, 0.017469281330704689, 120, 255, 1, "", 47720, NULL), +(43371, 180878, 1, 0, 0, 1, 1, 7594.84130859375, -2227.708984375, 468.894805908203125, 5.794494152069091796, 0, 0, -0.24192142486572265, 0.970295846462249755, 120, 255, 1, "", 47720, NULL), +(43372, 180878, 1, 0, 0, 1, 1, 7595.1796875, -2221.735107421875, 469.1435546875, 0.977383077144622802, 0, 0, 0.469470977783203125, 0.882947921752929687, 120, 255, 1, "", 47720, NULL), +(43374, 180878, 1, 0, 0, 1, 1, 7591.861328125, -2223.28759765625, 469.715728759765625, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, "", 47720, NULL), +(43375, 180878, 1, 0, 0, 1, 1, 7594.76416015625, -2228.4423828125, 468.9117431640625, 4.991643905639648437, 0, 0, -0.60181427001953125, 0.798636078834533691, 120, 255, 1, "", 47720, NULL), +(43376, 180778, 1, 0, 0, 1, 1, 7972.109375, -2371.993896484375, 488.07476806640625, 1.919861555099487304, 0, 0, 0.819151878356933593, 0.573576688766479492, 120, 255, 1, "", 47720, NULL), +(43377, 180768, 1, 0, 0, 1, 1, 7809.60791015625, -2296.2568359375, 456.076995849609375, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 120, 255, 1, "", 47720, NULL), +(43378, 180767, 1, 0, 0, 1, 1, 7917.49560546875, -2513.798095703125, 496.710601806640625, 4.817109584808349609, 0, 0, -0.66913032531738281, 0.74314504861831665, 120, 255, 1, "", 47720, NULL), +(43379, 180768, 1, 0, 0, 1, 1, 7894.48193359375, -2303.823974609375, 467.555328369140625, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 120, 255, 1, "", 47720, NULL), +(43380, 180770, 1, 0, 0, 1, 1, 7915.63720703125, -2496.975830078125, 496.198638916015625, 0.15707901120185852, 0, 0, 0.078458786010742187, 0.996917366981506347, 120, 255, 1, "", 47720, NULL), +(43383, 180878, 1, 0, 0, 1, 1, 7595.6630859375, -2221.080810546875, 469.143707275390625, 1.448621988296508789, 0, 0, 0.662619590759277343, 0.748956084251403808, 120, 255, 1, "", 47720, NULL), +(43384, 180778, 1, 0, 0, 1, 1, 7580.775390625, -2247.5205078125, 467.56976318359375, 1.029743075370788574, 0, 0, 0.492423057556152343, 0.870355963706970214, 120, 255, 1, "", 47720, NULL), +(43385, 180878, 1, 0, 0, 1, 1, 7593.4521484375, -2226.5439453125, 469.3345947265625, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, "", 47720, NULL), +(43386, 180768, 1, 0, 0, 1, 1, 7599.50244140625, -2222.728759765625, 469.648773193359375, 0.767943859100341796, 0, 0, 0.374606132507324218, 0.927184045314788818, 120, 255, 1, "", 47720, NULL), +(43387, 180770, 1, 0, 0, 1, 1, 7957.12060546875, -2382.029541015625, 495.735992431640625, 1.727874636650085449, 0, 0, 0.760405540466308593, 0.649448513984680175, 120, 255, 1, "", 47720, NULL), +(43388, 180769, 1, 0, 0, 1, 1, 7842.369140625, -2225.351806640625, 477.5909423828125, 3.996806621551513671, 0, 0, -0.90996074676513671, 0.414694398641586303, 120, 255, 1, "", 47720, NULL), +(43389, 180765, 1, 0, 0, 1, 1, 7857.6328125, -2486.78125, 496.6710205078125, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 120, 255, 1, "", 47720, NULL), +(43390, 180768, 1, 0, 0, 1, 1, 7776.41845703125, -2271.939208984375, 455.441741943359375, 5.84685373306274414, 0, 0, -0.21643924713134765, 0.976296067237854003, 120, 255, 1, "", 47720, NULL), +(43391, 180778, 1, 0, 0, 1, 1, 7949.1181640625, -2473.904296875, 487.0250244140625, 6.03883981704711914, 0, 0, -0.12186908721923828, 0.9925462007522583, 120, 255, 1, "", 47720, NULL), +-- duplicate spawn +-- (43392, 180774, 1, 0, 0, 1, 1, 9710.0869140625, 2525.442626953125, 1343.0679931640625, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, "", 52237, NULL), +(43393, 180765, 1, 0, 0, 1, 1, 10018.169921875, 2502.783447265625, 1353.9842529296875, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 120, 255, 1, "", 47720, NULL), +(43395, 180765, 1, 0, 0, 1, 1, 10105.505859375, 2211.2353515625, 1335.2584228515625, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 120, 255, 1, "", 47720, NULL), +(43396, 180765, 1, 0, 0, 1, 1, 9645.19140625, 2427.3232421875, 1356.573486328125, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 52237, NULL), +(43397, 180765, 1, 0, 0, 1, 1, 9745.9970703125, 2529.46435546875, 1360.47705078125, 5.410521507263183593, 0, 0, -0.42261791229248046, 0.906307935714721679, 120, 255, 1, "", 52237, NULL), +(43399, 180765, 1, 0, 0, 1, 1, 9796.3486328125, 2531.2568359375, 1360.334228515625, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 120, 255, 1, "", 52237, NULL), +-- duplicate spawn +-- (43400, 180774, 1, 0, 0, 1, 1, 9935.6044921875, 2509.44970703125, 1326.9095458984375, 3.857182979583740234, 0, 0, -0.93667125701904296, 0.350209832191467285, 120, 255, 1, "", 47720, NULL), +(43401, 180765, 1, 0, 0, 1, 1, 10160.6240234375, 2492.12890625, 1351.2200927734375, 6.195919513702392578, 0, 0, -0.04361915588378906, 0.999048233032226562, 120, 255, 1, "", 47720, NULL), +(43402, 180773, 1, 0, 0, 1, 1, 9950.4228515625, 2339.038330078125, 1355.65625, 4.747295856475830078, 0, 0, -0.69465827941894531, 0.719339847564697265, 120, 255, 1, "", 47720, NULL), +(43403, 180765, 1, 0, 0, 1, 1, 9796.611328125, 2524.587890625, 1360.374755859375, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 120, 255, 1, "", 52237, NULL), +(43404, 180758, 1, 0, 0, 1, 1, 9935.4677734375, 2516.37060546875, 1321.3277587890625, 5.829400539398193359, 0, 0, -0.22495079040527343, 0.974370121955871582, 120, 255, 1, "", 47720, NULL), +(43405, 180878, 1, 0, 0, 1, 1, 7593.75341796875, -2221.61181640625, 469.32958984375, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 120, 255, 1, "", 47720, NULL), +(43406, 180878, 1, 0, 0, 1, 1, 7595.37841796875, -2228.134033203125, 468.7188720703125, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 120, 255, 1, "", 47720, NULL), +(43407, 180878, 1, 0, 0, 1, 1, 7592.68408203125, -2219.46435546875, 469.63720703125, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 120, 255, 1, "", 47720, NULL), +(43408, 180878, 1, 0, 0, 1, 1, 7594.18408203125, -2228.040771484375, 469.101959228515625, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, "", 47720, NULL), +(43409, 180878, 1, 0, 0, 1, 1, 7594.2412109375, -2222.514892578125, 470.96923828125, 0.383971005678176879, 0, 0, 0.190808296203613281, 0.981627285480499267, 120, 255, 1, "", 47720, NULL), +(43410, 180778, 1, 0, 0, 1, 1, 7622.6787109375, -2243.350341796875, 464.331695556640625, 3.316144466400146484, 0, 0, -0.99619388580322265, 0.087165042757987976, 120, 255, 1, "", 47720, NULL), +(43411, 180768, 1, 0, 0, 1, 1, 7622.81884765625, -2242.0986328125, 464.280609130859375, 3.106652259826660156, 0, 0, 0.999847412109375, 0.017469281330704689, 120, 255, 1, "", 47720, NULL), +(43414, 180770, 1, 0, 0, 1, 1, 7830.8291015625, -2448.31005859375, 501.73199462890625, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 255, 1, "", 47720, NULL), +(43415, 180767, 1, 0, 0, 1, 1, 8003.72314453125, -2672.30615234375, 538.656494140625, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 120, 255, 1, "", 52237, NULL), +(43419, 180878, 1, 0, 0, 1, 1, 7592.54150390625, -2223.4970703125, 469.563262939453125, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 120, 255, 1, "", 47720, NULL), +(43421, 180878, 1, 0, 0, 1, 1, 7596.2177734375, -2225.9638671875, 468.526214599609375, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 120, 255, 1, "", 47720, NULL), +(43422, 180767, 1, 0, 0, 1, 1, 7936.6162109375, -2400.23193359375, 498.442169189453125, 1.815141916275024414, 0, 0, 0.788010597229003906, 0.615661680698394775, 120, 255, 1, "", 47720, NULL), +(43423, 180765, 1, 0, 0, 1, 1, 7887.9072265625, -2501.87109375, 501.987457275390625, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, "", 47720, NULL), +(43424, 180768, 1, 0, 0, 1, 1, 7845.0322265625, -2318.163818359375, 458.59619140625, 2.897245407104492187, 0, 0, 0.99254608154296875, 0.121869951486587524, 120, 255, 1, "", 47720, NULL), +(43425, 180765, 1, 0, 0, 1, 1, 7871.5791015625, -2470.440673828125, 498.78564453125, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 120, 255, 1, "", 47720, NULL), +(43426, 180765, 1, 0, 0, 1, 1, 7931.38623046875, -2426.612548828125, 498.436859130859375, 0.680676698684692382, 0, 0, 0.333806037902832031, 0.942641794681549072, 120, 255, 1, "", 47720, NULL), +(43427, 180765, 1, 0, 0, 1, 1, 8013.81103515625, -2638.38232421875, 521.009033203125, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, "", 47720, NULL), +(43428, 180768, 1, 0, 0, 1, 1, 7592.08349609375, -2190.99609375, 475.2554931640625, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 120, 255, 1, "", 47720, NULL), +(43429, 180768, 1, 0, 0, 1, 1, 7766.8671875, -2281.903564453125, 455.66748046875, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, "", 47720, NULL), +(43430, 180766, 1, 0, 0, 1, 1, 7951.32470703125, -2617.365478515625, 493.063262939453125, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 120, 255, 1, "", 47720, NULL), +(43431, 180770, 1, 0, 0, 1, 1, 7859.38818359375, -2502.979248046875, 496.135101318359375, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 120, 255, 1, "", 47720, NULL), +(43433, 180766, 1, 0, 0, 1, 1, 7579.470703125, -2330.606689453125, 457.67327880859375, 1.064649581909179687, 0, 0, 0.507537841796875, 0.861629426479339599, 120, 255, 1, "", 47720, NULL), +(43435, 180769, 1, 0, 0, 1, 1, 7971.7734375, -2392.21435546875, 496.749908447265625, 0.139624491333961486, 0, 0, 0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 47720, NULL), +(43436, 180766, 1, 0, 0, 1, 1, 7626.09375, -2252.974853515625, 460.85943603515625, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 120, 255, 1, "", 47720, NULL), +(43438, 180766, 1, 0, 0, 1, 1, 7949.07275390625, -2627.794677734375, 493.04400634765625, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 120, 255, 1, "", 47720, NULL), +(43439, 180770, 1, 0, 0, 1, 1, 7830.74853515625, -2474.5625, 501.845489501953125, 4.747295856475830078, 0, 0, -0.69465827941894531, 0.719339847564697265, 120, 255, 1, "", 47720, NULL), +(43440, 180768, 1, 0, 0, 1, 1, 7944.29541015625, -2346.669677734375, 482.910552978515625, 1.727874636650085449, 0, 0, 0.760405540466308593, 0.649448513984680175, 120, 255, 1, "", 47720, NULL), +(43441, 180768, 1, 0, 0, 1, 1, 7491.61572265625, -2129.403564453125, 489.297210693359375, 3.211419343948364257, 0, 0, -0.9993906021118164, 0.034906134009361267, 120, 255, 1, "", 47720, NULL), +(43442, 180765, 1, 0, 0, 1, 1, 7831.9541015625, -2594.871826171875, 503.596832275390625, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 120, 255, 1, "", 47720, NULL), +(43443, 180769, 1, 0, 0, 1, 1, 7905.2880859375, -2511.538330078125, 497.396331787109375, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 120, 255, 1, "", 47720, NULL), +(43444, 180758, 1, 0, 0, 1, 1, 7969.65185546875, -2388.297119140625, 493.36566162109375, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, "", 47720, NULL), +(43445, 180761, 1, 0, 0, 1, 1, 7901.07373046875, -2511.068603515625, 493.828521728515625, 1.710421562194824218, 0, 0, 0.754709243774414062, 0.656059443950653076, 120, 255, 1, "", 47720, NULL), +(43446, 180765, 1, 0, 0, 1, 1, 7897.0322265625, -2467.569580078125, 498.766937255859375, 4.066620349884033203, 0, 0, -0.89493370056152343, 0.44619917869567871, 120, 255, 1, "", 47720, NULL), +(43447, 180765, 1, 0, 0, 1, 1, 7826.32373046875, -2535.32666015625, 503.596832275390625, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 120, 255, 1, "", 52237, NULL), +(43448, 180778, 1, 0, 0, 1, 1, 7879.72216796875, -2588.08056640625, 486.89556884765625, 1.32644820213317871, 0, 0, 0.615660667419433593, 0.788011372089385986, 120, 255, 1, "", 47720, NULL), +(43452, 180767, 1, 0, 0, 1, 1, 7948.68603515625, -2440.544921875, 496.29095458984375, 1.884953022003173828, 0, 0, 0.809016227722167968, 0.587786316871643066, 120, 255, 1, "", 47720, NULL), +(43453, 180767, 1, 0, 0, 1, 1, 7792.21875, -2575.030029296875, 504.42974853515625, 3.78736734390258789, 0, 0, -0.94832324981689453, 0.317305892705917358, 120, 255, 1, "", 47720, NULL), +(7235, 180775, 571, 0, 0, 1, 1, 5862.43408203125, 606.05731201171875, 654.38897705078125, 2.827429771423339843, 0, 0, 0.987688064575195312, 0.156436234712600708, 120, 255, 1, "", 47720, NULL), +(79584, 180766, 571, 0, 0, 1, 1, 5827.36376953125, 638.95635986328125, 647.21160888671875, 1.082102894783020019, 0, 0, 0.51503753662109375, 0.857167601585388183, 120, 255, 1, "", 47720, NULL), +(79585, 180766, 571, 0, 0, 1, 1, 5827.50244140625, 645.6351318359375, 647.14166259765625, 1.937312245368957519, 0, 0, 0.824125289916992187, 0.566407561302185058, 120, 255, 1, "", 47720, NULL), +(79586, 180766, 571, 0, 0, 1, 1, 5821.810546875, 633.41143798828125, 647.1953125, 0, 0, 0, 0, 1, 120, 255, 1, "", 47720, NULL), +(79587, 180766, 571, 0, 0, 1, 1, 5822.48583984375, 652.9246826171875, 647.2120361328125, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 120, 255, 1, "", 47720, NULL), +(79588, 180766, 571, 0, 0, 1, 1, 5815.52099609375, 643.16650390625, 647.19677734375, 4.642575740814208984, 0, 0, -0.731353759765625, 0.681998312473297119, 120, 255, 1, "", 47720, NULL), +(79589, 180766, 571, 0, 0, 1, 1, 5818.2900390625, 648.65863037109375, 647.17303466796875, 4.118979454040527343, 0, 0, -0.88294696807861328, 0.469472706317901611, 120, 255, 1, "", 47720, NULL), +(79590, 180766, 571, 0, 0, 1, 1, 5818.40576171875, 635.2548828125, 647.18548583984375, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, "", 47720, NULL), +(79591, 180766, 571, 0, 0, 1, 1, 5816.46875, 638.81524658203125, 647.1978759765625, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 120, 255, 1, "", 47720, NULL), +(79592, 180765, 571, 0, 0, 1, 1, 5862.578125, 608.978515625, 622.72503662109375, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 120, 255, 1, "", 47720, NULL), +(79593, 180765, 571, 0, 0, 1, 1, 5818.55712890625, 689.67535400390625, 617.53765869140625, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 120, 255, 1, "", 47720, NULL), +(79600, 180878, 571, 0, 0, 1, 1, 5831.14306640625, 655.094970703125, 647.12396240234375, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, "", 47720, NULL), +(79601, 180878, 571, 0, 0, 1, 1, 5830.4267578125, 655.5618896484375, 647.19384765625, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, "", 47720, NULL), +(79602, 180878, 571, 0, 0, 1, 1, 5829.47802734375, 652.81414794921875, 647.388916015625, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, "", 47720, NULL), +(79603, 180878, 571, 0, 0, 1, 1, 5829.29296875, 656.30401611328125, 647.3472900390625, 2.129300594329833984, 0, 0, 0.874619483947753906, 0.484810054302215576, 120, 255, 1, "", 47720, NULL), +(79604, 180878, 571, 0, 0, 1, 1, 5830.0029296875, 656.1676025390625, 647.27935791015625, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 120, 255, 1, "", 47720, NULL), +(79605, 180878, 571, 0, 0, 1, 1, 5829.67138671875, 655.49822998046875, 647.284423828125, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 47720, NULL), +(79606, 180878, 571, 0, 0, 1, 1, 5828.8681640625, 653.24737548828125, 647.4296875, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, "", 47720, NULL), +(79744, 180879, 571, 0, 0, 1, 1, 5829.638671875, 654.44268798828125, 647.3204345703125, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, "", 47720, NULL), +(79745, 180767, 571, 0, 0, 1, 1, 5867.94140625, 616.2357177734375, 622.7247314453125, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, "", 47720, NULL), +(79748, 180767, 571, 0, 0, 1, 1, 5814.17431640625, 684.25469970703125, 617.58087158203125, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 120, 255, 1, "", 47720, NULL), +(79753, 180880, 571, 0, 0, 1, 1, 5828.15625, 651.35687255859375, 647.5218505859375, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, "", 47720, NULL), +(79754, 180881, 571, 0, 0, 1, 1, 5829.0966796875, 651.77496337890625, 647.44879150390625, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 120, 255, 1, "", 47720, NULL), +(79755, 180882, 571, 0, 0, 1, 1, 5829.01708984375, 651.12408447265625, 647.47381591796875, 3.769911527633666992, 0, 0, -0.95105648040771484, 0.309017121791839599, 120, 255, 1, "", 47720, NULL), +(79756, 180883, 571, 0, 0, 1, 1, 5828.4619140625, 652.31475830078125, 647.46356201171875, 5.445427894592285156, 0, 0, -0.40673637390136718, 0.913545548915863037, 120, 255, 1, "", 47720, NULL), +(79757, 180883, 571, 0, 0, 1, 1, 5828.0126953125, 651.92218017578125, 647.506591796875, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 120, 255, 1, "", 47720, NULL), +(79767, 180768, 530, 0, 0, 1, 1, -1813.065185546875, 5493.69140625, -12.4281415939331054, 4.433136463165283203, 0, 0, -0.79863548278808593, 0.60181504487991333, 120, 255, 1, "", 52237, NULL), +(79768, 180768, 530, 0, 0, 1, 1, -1810.5294189453125, 5502.1240234375, -12.4281387329101562, 3.560472726821899414, 0, 0, -0.97814750671386718, 0.207912087440490722, 120, 255, 1, "", 52237, NULL), +(79769, 180768, 530, 0, 0, 1, 1, -1797.3834228515625, 5484.87890625, -12.4281387329101562, 0.872663915157318115, 0, 0, 0.422617912292480468, 0.906307935714721679, 120, 255, 1, "", 52237, NULL), +(79770, 180768, 530, 0, 0, 1, 1, -1802.3717041015625, 5503.94384765625, -12.4281387329101562, 2.879789113998413085, 0, 0, 0.991444587707519531, 0.130528271198272705, 120, 255, 1, "", 52237, NULL), +(79771, 180768, 530, 0, 0, 1, 1, -1804.870361328125, 5483.97509765625, -12.428140640258789, 0.122172988951206207, 0, 0, 0.061048507690429687, 0.998134791851043701, 120, 255, 1, "", 52237, NULL), +(79772, 180768, 530, 0, 0, 1, 1, -1796.43896484375, 5505.65283203125, -12.428135871887207, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, "", 52237, NULL), +(79773, 180768, 530, 0, 0, 1, 1, -1791.092041015625, 5498.2236328125, -12.4281387329101562, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 120, 255, 1, "", 52237, NULL), +(79774, 180768, 530, 0, 0, 1, 1, -1793.7183837890625, 5492.51953125, -12.4281425476074218, 1.274088263511657714, 0, 0, 0.594821929931640625, 0.80385744571685791, 120, 255, 1, "", 52237, NULL), +(79775, 180768, 530, 0, 0, 1, 1, 9487.0166015625, -7295.94970703125, 14.34291744232177734, 1.274088263511657714, 0, 0, 0.594821929931640625, 0.80385744571685791, 120, 255, 1, "", 47720, NULL), +(79776, 180768, 530, 0, 0, 1, 1, 9484.23828125, -7301.35498046875, 14.382415771484375, 0.872663915157318115, 0, 0, 0.422617912292480468, 0.906307935714721679, 120, 255, 1, "", 47720, NULL), +(79777, 180768, 530, 0, 0, 1, 1, 9489.6083984375, -7291.33447265625, 14.31547355651855468, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 120, 255, 1, "", 47720, NULL), +(79778, 180768, 530, 0, 0, 1, 1, 9477.1513671875, -7304.06787109375, 14.36638545989990234, 0.122172988951206207, 0, 0, 0.061048507690429687, 0.998134791851043701, 120, 255, 1, "", 47720, NULL), +(79779, 180768, 530, 0, 0, 1, 1, 9486.314453125, -7286.40966796875, 14.28697395324707031, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, "", 47720, NULL), +(79780, 180768, 530, 0, 0, 1, 1, 9475.41015625, -7288.1484375, 14.25112724304199218, 3.560472726821899414, 0, 0, -0.97814750671386718, 0.207912087440490722, 120, 255, 1, "", 47720, NULL), +(79781, 180768, 530, 0, 0, 1, 1, 9481.2890625, -7287.1875, 14.26699542999267578, 2.879789113998413085, 0, 0, 0.991444587707519531, 0.130528271198272705, 120, 255, 1, "", 47720, NULL), +(79782, 180768, 530, 0, 0, 1, 1, 9470.736328125, -7293.92431640625, 14.30252742767333984, 4.433136463165283203, 0, 0, -0.79863548278808593, 0.60181504487991333, 120, 255, 1, "", 47720, NULL), +(79783, 180766, 530, 0, 0, 1, 1, -1784.918212890625, 5443.966796875, -12.428140640258789, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47966, NULL), +(79784, 180766, 530, 0, 0, 1, 1, -1782.339599609375, 5432.16845703125, -12.4281415939331054, 5.864306926727294921, 0, 0, -0.20791149139404296, 0.978147625923156738, 120, 255, 1, "", 47966, NULL), +(79785, 180766, 530, 0, 0, 1, 1, -1779.8817138671875, 5450.220703125, -12.4281415939331054, 3.43830275535583496, 0, 0, -0.98901557922363281, 0.147811368107795715, 120, 255, 1, "", 47966, NULL), +(79786, 180766, 530, 0, 0, 1, 1, -1771.7847900390625, 5447.63525390625, -12.4281415939331054, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, "", 47966, NULL), +(79787, 180766, 530, 0, 0, 1, 1, -1768.4993896484375, 5435.30029296875, -12.4281377792358398, 0.785396754741668701, 0, 0, 0.38268280029296875, 0.923879802227020263, 120, 255, 1, "", 47966, NULL), +(79788, 180766, 530, 0, 0, 1, 1, -1774.7735595703125, 5428.89794921875, -12.428140640258789, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 120, 255, 1, "", 47966, NULL), +(79789, 180766, 530, 0, 0, 1, 1, -1764.9107666015625, 5447.4736328125, -12.4281415939331054, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, "", 52237, NULL), +(79790, 180766, 530, 0, 0, 1, 1, -1762.984130859375, 5438.720703125, -12.4281415939331054, 0.15707901120185852, 0, 0, 0.078458786010742187, 0.996917366981506347, 120, 255, 1, "", 47966, NULL), +(79791, 180778, 530, 0, 0, 1, 1, -1807.913330078125, 5485.73681640625, -12.4281396865844726, 0.750490784645080566, 0, 0, 0.3665008544921875, 0.93041771650314331, 120, 255, 1, "", 52237, NULL), +(79792, 180778, 530, 0, 0, 1, 1, -1812.186279296875, 5490.322265625, -12.4281377792358398, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 120, 255, 1, "", 52237, NULL), +(79793, 180778, 530, 0, 0, 1, 1, 9471.935546875, -7298.0556640625, 14.34921741485595703, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 120, 255, 1, "", 47720, NULL), +(79794, 180778, 530, 0, 0, 1, 1, 9474.5595703125, -7301.3525390625, 14.37096500396728515, 0.750490784645080566, 0, 0, 0.3665008544921875, 0.93041771650314331, 120, 255, 1, "", 47720, NULL), +(79795, 180878, 530, 0, 0, 1, 1, -1790.337646484375, 5498.74365234375, -12.428140640258789, 3.857182979583740234, 0, 0, -0.93667125701904296, 0.350209832191467285, 120, 255, 1, "", 52237, NULL), +(79796, 180878, 530, 0, 0, 1, 1, -1790.2335205078125, 5496.28759765625, -12.4281425476074218, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 52237, NULL), +(79797, 180878, 530, 0, 0, 1, 1, -1790.90185546875, 5497.0107421875, -12.4281415939331054, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, "", 52237, NULL), +(79798, 180878, 530, 0, 0, 1, 1, -1789.2340087890625, 5496.1396484375, -12.428140640258789, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, "", 52237, NULL), +(79799, 180878, 530, 0, 0, 1, 1, -1789.1722412109375, 5498.91748046875, -12.4281444549560546, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 120, 255, 1, "", 52237, NULL), +(79800, 180878, 530, 0, 0, 1, 1, -1788.4154052734375, 5496.59765625, -12.4281425476074218, 3.089183330535888671, 0, 0, 0.99965667724609375, 0.026201646775007247, 120, 255, 1, "", 52237, NULL), +(79801, 180878, 530, 0, 0, 1, 1, -1788.391845703125, 5498.38134765625, -12.4281444549560546, 4.241150379180908203, 0, 0, -0.85264015197753906, 0.522498607635498046, 120, 255, 1, "", 52237, NULL), +(79802, 180878, 530, 0, 0, 1, 1, -1788.1109619140625, 5497.560546875, -12.4281415939331054, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 120, 255, 1, "", 52237, NULL), +(79803, 180878, 530, 0, 0, 1, 1, -1765.7216796875, 5449.93359375, -12.4281387329101562, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 120, 255, 1, "", 52237, NULL), +(79804, 180878, 530, 0, 0, 1, 1, -1764.8065185546875, 5450.1806640625, -12.4281387329101562, 2.129300594329833984, 0, 0, 0.874619483947753906, 0.484810054302215576, 120, 255, 1, "", 52237, NULL), +(79805, 180878, 530, 0, 0, 1, 1, -1766.2261962890625, 5448.12548828125, -12.4281387329101562, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, "", 52237, NULL), +(79806, 180878, 530, 0, 0, 1, 1, -1766.08837890625, 5449.02587890625, -12.4281387329101562, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 52237, NULL), +(79807, 180878, 530, 0, 0, 1, 1, -1765.540771484375, 5447.3076171875, -12.428140640258789, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, "", 52237, NULL), +(79808, 180878, 530, 0, 0, 1, 1, -1763.9942626953125, 5449.7802734375, -12.428140640258789, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, "", 52237, NULL), +(79809, 180878, 530, 0, 0, 1, 1, -1763.4022216796875, 5449.15234375, -12.428140640258789, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, "", 52237, NULL), +(79810, 180878, 530, 0, 0, 1, 1, 9491.6845703125, -7292.4599609375, 14.32973575592041015, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 120, 255, 1, "", 47720, NULL), +(79811, 180878, 530, 0, 0, 1, 1, 9490.6220703125, -7293.79443359375, 14.33647537231445312, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 120, 255, 1, "", 47720, NULL), +(79812, 180878, 530, 0, 0, 1, 1, 9491.373046875, -7293.28466796875, 14.33489990234375, 4.241150379180908203, 0, 0, -0.85264015197753906, 0.522498607635498046, 120, 255, 1, "", 47720, NULL), +(79813, 180878, 530, 0, 0, 1, 1, 9489.7158203125, -7293.83251953125, 14.33414745330810546, 3.089183330535888671, 0, 0, 0.99965667724609375, 0.026201646775007247, 120, 255, 1, "", 47720, NULL), +(79814, 180878, 530, 0, 0, 1, 1, 9488.9580078125, -7293.3515625, 14.32842731475830078, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, "", 47720, NULL), +(79815, 180878, 530, 0, 0, 1, 1, 9491.265625, -7291.5546875, 14.321868896484375, 3.857182979583740234, 0, 0, -0.93667125701904296, 0.350209832191467285, 120, 255, 1, "", 47720, NULL), +(79816, 180878, 530, 0, 0, 1, 1, 9488.6728515625, -7292.52001953125, 14.32149410247802734, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(79817, 180878, 530, 0, 0, 1, 1, 9488.966796875, -7291.69384765625, 14.31626701354980468, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, "", 47720, NULL), +(79826, 180879, 530, 0, 0, 1, 1, -1764.9112548828125, 5448.845703125, -12.428140640258789, 1.204277276992797851, 0, 0, 0.56640625, 0.824126183986663818, 120, 255, 1, "", 52237, NULL), +(79827, 180777, 530, 0, 0, 1, 1, -1784.935791015625, 5439.93701171875, -12.428140640258789, 3.351046562194824218, 0, 0, -0.99452114105224609, 0.104535527527332305, 120, 255, 1, "", 47966, NULL), +(79828, 180777, 530, 0, 0, 1, 1, -1784.0084228515625, 5435.99658203125, -12.428140640258789, 0.209439441561698913, 0, 0, 0.104528427124023437, 0.994521915912628173, 120, 255, 1, "", 47966, NULL), +(79829, 180880, 530, 0, 0, 1, 1, -1789.301025390625, 5498.0341796875, -11.7267522811889648, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, "", 52237, NULL), +(79830, 180880, 530, 0, 0, 1, 1, -1789.677978515625, 5498.17041015625, -11.7128620147705078, 1.989672422409057617, 0, 0, 0.838669776916503906, 0.544640243053436279, 120, 255, 1, "", 52237, NULL), +(79831, 180880, 530, 0, 0, 1, 1, -1764.4932861328125, 5448.474609375, -10.5878629684448242, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, "", 52237, NULL), +(79832, 180880, 530, 0, 0, 1, 1, 9490.5166015625, -7292.7490234375, 15.03819084167480468, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, "", 47720, NULL), +(79833, 180880, 530, 0, 0, 1, 1, 9490.0908203125, -7292.48974609375, 15.04175281524658203, 1.989672422409057617, 0, 0, 0.838669776916503906, 0.544640243053436279, 120, 255, 1, "", 47720, NULL), +(79834, 180881, 530, 0, 0, 1, 1, -1789.489013671875, 5497.0986328125, -11.747589111328125, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 52237, NULL), +(79835, 180881, 530, 0, 0, 1, 1, -1790.061279296875, 5497.2509765625, -11.7406396865844726, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 120, 255, 1, "", 52237, NULL), +(79836, 180881, 530, 0, 0, 1, 1, -1764.7899169921875, 5449.2021484375, -10.6156387329101562, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 120, 255, 1, "", 52237, NULL), +(79837, 180881, 530, 0, 0, 1, 1, 9489.5791015625, -7292.59033203125, 15.02525138854980468, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 120, 255, 1, "", 47720, NULL), +(79838, 180881, 530, 0, 0, 1, 1, 9489.869140625, -7292.06103515625, 15.01507759094238281, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 47720, NULL), +(79839, 180882, 530, 0, 0, 1, 1, -1789.6334228515625, 5497.66552734375, -11.7336950302124023, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, "", 52237, NULL), +(79840, 180882, 530, 0, 0, 1, 1, -1790.077880859375, 5497.86181640625, -11.7336959838867187, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 120, 255, 1, "", 52237, NULL), +(79841, 180882, 530, 0, 0, 1, 1, -1764.3111572265625, 5449.00634765625, -10.6086959838867187, 3.769911527633666992, 0, 0, -0.95105648040771484, 0.309017121791839599, 120, 255, 1, "", 52237, NULL), +(79842, 180882, 530, 0, 0, 1, 1, 9490.705078125, -7292.34375, 15.01930904388427734, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 120, 255, 1, "", 47720, NULL), +(79843, 180882, 530, 0, 0, 1, 1, 9490.4697265625, -7292.03564453125, 15.02789020538330078, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, "", 47720, NULL), +(79844, 180883, 530, 0, 0, 1, 1, -1789.0595703125, 5497.5205078125, -11.7337007522583007, 5.654868602752685546, 0, 0, -0.30901622772216796, 0.95105677843093872, 120, 255, 1, "", 52237, NULL), +(79845, 180883, 530, 0, 0, 1, 1, -1764.8839111328125, 5448.25244140625, -10.5878610610961914, 5.445427894592285156, 0, 0, -0.40673637390136718, 0.913545548915863037, 120, 255, 1, "", 52237, NULL), +(79846, 180883, 530, 0, 0, 1, 1, -1765.2747802734375, 5448.697265625, -10.6086969375610351, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 120, 255, 1, "", 52237, NULL), +(79847, 180883, 530, 0, 0, 1, 1, 9490.1142578125, -7293.03564453125, 15.03140640258789062, 5.654868602752685546, 0, 0, -0.30901622772216796, 0.95105677843093872, 120, 255, 1, "", 47720, NULL), +(79848, 180888, 530, 0, 0, 1, 1, -1789.768310546875, 5497.439453125, -12.4281387329101562, 1.937312245368957519, 0, 0, 0.824125289916992187, 0.566407561302185058, 120, 255, 1, "", 52237, NULL), +(79849, 180888, 530, 0, 0, 1, 1, 9489.94921875, -7292.66943359375, 14.32626533508300781, 1.937312245368957519, 0, 0, 0.824125289916992187, 0.566407561302185058, 120, 255, 1, "", 47720, NULL), +(82948, 180879, 530, 0, 0, 1, 1, -4021.67138671875, -11847.31640625, 0.006293999962508678, 1.902408957481384277, 0, 0, 0.814115524291992187, 0.580702960491180419, 120, 255, 1, "", 52237, NULL), +(82949, 180777, 530, 0, 0, 1, 1, -4016.040283203125, -11831.6572265625, 0.122772000730037689, 1.605701684951782226, 0, 0, 0.719339370727539062, 0.694658815860748291, 120, 255, 1, "", 52237, NULL), +(82950, 180777, 530, 0, 0, 1, 1, -4019.716064453125, -11831.791015625, 0.095343001186847686, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, "", 52237, NULL), +(82951, 180880, 530, 0, 0, 1, 1, -4021.57470703125, -11847.875, 1.865077018737792968, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, "", 52237, NULL), +(82952, 180881, 530, 0, 0, 1, 1, -4021.983154296875, -11847.416015625, 1.80630505084991455, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 120, 255, 1, "", 52237, NULL), +(82953, 180882, 530, 0, 0, 1, 1, -4021.177001953125, -11847.7314453125, 1.821341991424560546, 3.769911527633666992, 0, 0, -0.95105648040771484, 0.309017121791839599, 120, 255, 1, "", 52237, NULL), +(82954, 180883, 530, 0, 0, 1, 1, -4021.107177734375, -11847.263671875, 1.800922989845275878, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 120, 255, 1, "", 52237, NULL), +(82955, 180883, 530, 0, 0, 1, 1, -4021.649658203125, -11846.94921875, 1.82935500144958496, 5.445427894592285156, 0, 0, -0.40673637390136718, 0.913545548915863037, 120, 255, 1, "", 52237, NULL), +(82958, 180766, 530, 0, 0, 1, 1, -4012.713134765625, -11842.396484375, 0.117444999516010284, 0.802850961685180664, 0, 0, 0.390730857849121093, 0.920504987239837646, 120, 255, 1, "", 52237, NULL), +(82959, 180766, 530, 0, 0, 1, 1, -4020.12548828125, -11847.205078125, 0.023653000593185424, 4.642575740814208984, 0, 0, -0.731353759765625, 0.681998312473297119, 120, 255, 1, "", 52237, NULL), +(82960, 180766, 530, 0, 0, 1, 1, -4014.77783203125, -11847.4443359375, 0.082152999937534332, 1.623155713081359863, 0, 0, 0.725374221801757812, 0.688354730606079101, 120, 255, 1, "", 52237, NULL), +(82961, 180766, 530, 0, 0, 1, 1, -4022.487060546875, -11842.517578125, 0.009147999808192253, 5.305802345275878906, 0, 0, -0.46947097778320312, 0.882947921752929687, 120, 255, 1, "", 52237, NULL), +(82962, 180766, 530, 0, 0, 1, 1, -4008.91748046875, -11837.8251953125, 0.170679003000259399, 1.361356139183044433, 0, 0, 0.629320144653320312, 0.77714616060256958, 120, 255, 1, "", 52237, NULL), +(82963, 180766, 530, 0, 0, 1, 1, -4012.803955078125, -11831.5703125, 0.146642997860908508, 2.146752834320068359, 0, 0, 0.878816604614257812, 0.477159708738327026, 120, 255, 1, "", 52237, NULL), +(82964, 180766, 530, 0, 0, 1, 1, -4025.327392578125, -11837.01953125, 0.008527999743819236, 4.677483558654785156, 0, 0, -0.71933937072753906, 0.694658815860748291, 120, 255, 1, "", 52237, NULL), +(82965, 180766, 530, 0, 0, 1, 1, -4023.502197265625, -11831.390625, 0.072734996676445007, 4.066620349884033203, 0, 0, -0.89493370056152343, 0.44619917869567871, 120, 255, 1, "", 52237, NULL), +(82966, 180878, 530, 0, 0, 1, 1, -4022.725341796875, -11846.5439453125, -0.00343600008636713, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 52237, NULL), +(82967, 180878, 530, 0, 0, 1, 1, -4023.05419921875, -11847.3349609375, -0.00903000030666589, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 120, 255, 1, "", 52237, NULL), +(82968, 180878, 530, 0, 0, 1, 1, -4022.055908203125, -11846.015625, 0.005262000020593404, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, "", 52237, NULL), +(82969, 180878, 530, 0, 0, 1, 1, -4021.266845703125, -11845.90234375, 0.014263000339269638, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, "", 52237, NULL), +(82970, 180878, 530, 0, 0, 1, 1, -4021.342529296875, -11848.8466796875, 0.009881000034511089, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, "", 52237, NULL), +(82971, 180878, 530, 0, 0, 1, 1, -4022.728759765625, -11848.0244140625, -0.00563899986445903, 2.129300594329833984, 0, 0, 0.874619483947753906, 0.484810054302215576, 120, 255, 1, "", 52237, NULL), +(82972, 180878, 530, 0, 0, 1, 1, -4022.063720703125, -11848.556640625, 0.00076000002445653, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, "", 52237, NULL), +(82973, 180766, 1, 0, 0, 1, 1, 10147.0244140625, 2574.300048828125, 1320.71923828125, 1.186823248863220214, 0, 0, 0.559192657470703125, 0.829037725925445556, 120, 255, 1, "", 47720, NULL), +(82974, 180766, 1, 0, 0, 1, 1, 10149.5576171875, 2592.335205078125, 1330.617919921875, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, "", 47720, NULL), +(82975, 180766, 1, 0, 0, 1, 1, 10154.5859375, 2593.354736328125, 1330.5478515625, 0.087265998125076293, 0, 0, 0.043619155883789062, 0.999048233032226562, 120, 255, 1, "", 47720, NULL), +(82976, 180766, 1, 0, 0, 1, 1, 10148.5166015625, 2610.37646484375, 1330.8250732421875, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 120, 255, 1, "", 47720, NULL), +(82977, 180766, 1, 0, 0, 1, 1, 10159.9482421875, 2604.6064453125, 1330.8250732421875, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, "", 47720, NULL), +(82978, 180766, 1, 0, 0, 1, 1, 10141.6845703125, 2600.14599609375, 1330.8250732421875, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 120, 255, 1, "", 47720, NULL), +(82985, 180765, 1, 0, 0, 1, 1, 10156.580078125, 2582.2734375, 1345.4324951171875, 4.817109584808349609, 0, 0, -0.66913032531738281, 0.74314504861831665, 120, 255, 1, "", 47720, NULL), +(82994, 180878, 1, 0, 0, 1, 1, 10147.58203125, 2574.046630859375, 1320.63720703125, 2.129300594329833984, 0, 0, 0.874619483947753906, 0.484810054302215576, 120, 255, 1, "", 47720, NULL), +(82995, 180878, 1, 0, 0, 1, 1, 10145.037109375, 2573.8369140625, 1321.0274658203125, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, "", 47720, NULL), +(82996, 180878, 1, 0, 0, 1, 1, 10146.9267578125, 2572.093505859375, 1320.7406005859375, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 120, 255, 1, "", 47720, NULL), +(82997, 180878, 1, 0, 0, 1, 1, 10147.892578125, 2574.833251953125, 1320.5750732421875, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, "", 47720, NULL), +(82998, 180878, 1, 0, 0, 1, 1, 10145.3046875, 2572.09619140625, 1320.9808349609375, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 47720, NULL), +(82999, 180878, 1, 0, 0, 1, 1, 10144.7626953125, 2572.7744140625, 1321.07421875, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, "", 47720, NULL), +(83000, 180878, 1, 0, 0, 1, 1, 10148.345703125, 2574.1865234375, 1320.5164794921875, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, "", 47720, NULL), +(83001, 180879, 1, 0, 0, 1, 1, 10146.29296875, 2573.104736328125, 1320.6748046875, 5.864306926727294921, 0, 0, -0.20791149139404296, 0.978147625923156738, 120, 255, 1, "", 47720, NULL), +(83002, 180777, 1, 0, 0, 1, 1, 10155.513671875, 2571.572998046875, 1320.5401611328125, 4.031712055206298828, 0, 0, -0.90258502960205078, 0.430511653423309326, 120, 255, 1, "", 47720, NULL), +(83003, 180777, 1, 0, 0, 1, 1, 10146.330078125, 2574.490966796875, 1320.8231201171875, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, "", 47720, NULL), +(83004, 180777, 1, 0, 0, 1, 1, 10148.7431640625, 2592.296875, 1330.529541015625, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, "", 47720, NULL), +(83005, 180777, 1, 0, 0, 1, 1, 10155.396484375, 2593.673828125, 1330.4324951171875, 4.852017402648925781, 0, 0, -0.65605831146240234, 0.754710197448730468, 120, 255, 1, "", 47720, NULL), +(83006, 180881, 1, 0, 0, 1, 1, 10146.3076171875, 2573.47265625, 1322.492431640625, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 120, 255, 1, "", 47720, NULL), +(83007, 180882, 1, 0, 0, 1, 1, 10146.494140625, 2573.021728515625, 1322.4945068359375, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 120, 255, 1, "", 47720, NULL), +(83008, 180883, 1, 0, 0, 1, 1, 10145.7236328125, 2573.4013671875, 1322.4788818359375, 5.445427894592285156, 0, 0, -0.40673637390136718, 0.913545548915863037, 120, 255, 1, "", 47720, NULL), +(83009, 180883, 1, 0, 0, 1, 1, 10145.8720703125, 2572.74658203125, 1322.489013671875, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 120, 255, 1, "", 47720, NULL); + +-- disable guids from duplicate spawns +DELETE FROM `game_event_gameobject` WHERE (`eventEntry` = 7) +AND (`guid` IN (29454, 29457, 29471, 29483, 29502, 29511, 29515, 31167, 31181, 43392, 43400)); + +-- new spawns +DELETE FROM `gameobject` WHERE (`id` IN (180757, 180758, 180759, 180760, 180761, 180762, 180765, 180766, 180767, 180768, 180769, 180770, 180773, 180774, 180775, 180777, 180879, 180880, 180881, 180882, 180883, 180888)) +AND (`guid` BETWEEN 19446 AND 19836); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(19446, 180757, 0, 0, 0, 1, 1, -8570.0263671875, 816.55645751953125, 110.386749267578125, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 120, 255, 1, "", 52237, NULL), +(19447, 180757, 0, 0, 0, 1, 1, -8636.740234375, 418.08636474609375, 108.8900299072265625, 2.268925428390502929, 0, 0, 0.906307220458984375, 0.422619491815567016, 120, 255, 1, "", 52237, NULL), +(19448, 180757, 0, 0, 0, 1, 1, -9335.6455078125, 186.467010498046875, 64.32550811767578125, 4.136432647705078125, 0, 0, -0.87881660461425781, 0.477159708738327026, 120, 255, 1, "", 51943, NULL), +(19449, 180758, 1, 0, 0, 1, 1, 10055.2060546875, 2131.84716796875, 1330.3798828125, 2.844882726669311523, 0, 0, 0.989015579223632812, 0.147811368107795715, 120, 255, 1, "", 51943, NULL), +(19450, 180759, 1, 0, 0, 1, 1, 1184.2117919921875, -4470.56103515625, 21.98506927490234375, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, "", 51943, NULL), +(19451, 180760, 0, 0, 0, 1, 1, 1297.8819580078125, 342.78125, -61.32818603515625, 1.32644820213317871, 0, 0, 0.615660667419433593, 0.788011372089385986, 120, 255, 1, "", 47966, NULL), +(19452, 180760, 0, 0, 0, 1, 1, 1777.1180419921875, 219.3489532470703125, 60.5294952392578125, 0.139624491333961486, 0, 0, 0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 51943, NULL), +(19453, 180760, 1, 0, 0, 1, 1, -991.0555419921875, 232.5746612548828125, 120.415283203125, 6.230826377868652343, 0, 0, -0.02617645263671875, 0.999657332897186279, 120, 255, 1, "", 47720, NULL), +(19454, 180760, 1, 0, 0, 1, 1, -994.65802001953125, 264.432281494140625, 120.6520309448242187, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 120, 255, 1, "", 47720, NULL), +(19455, 180760, 1, 0, 0, 1, 1, -998.84027099609375, 244.1024322509765625, 121.9011764526367187, 0.925023794174194335, 0, 0, 0.446197509765625, 0.894934535026550292, 120, 255, 1, "", 47720, NULL), +(19456, 180761, 1, 0, 0, 1, 1, -1017.85162353515625, 236.701873779296875, 141.8155059814453125, 4.345870018005371093, 0, 0, -0.82412624359130859, 0.566406130790710449, 120, 255, 1, "", 47720, NULL), +(19457, 180761, 1, 0, 0, 1, 1, -1417.3408203125, -127.189666748046875, 166.3653411865234375, 0.366517573595046997, 0, 0, 0.182234764099121093, 0.98325502872467041, 120, 255, 1, "", 47720, NULL), +(19458, 180761, 1, 0, 0, 1, 1, -981.0867919921875, -79.579864501953125, 21.18675804138183593, 0.942476630210876464, 0, 0, 0.453989982604980468, 0.891006767749786376, 120, 255, 1, "", 46368, NULL), +(19459, 180762, 1, 0, 0, 1, 1, 1176.9097900390625, -4470.26416015625, 22.6003570556640625, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, "", 51943, NULL), +(19460, 180762, 1, 0, 0, 1, 1, 1496.6475830078125, -4227.66650390625, 47.26941299438476562, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 120, 255, 1, "", 47720, NULL), +(19461, 180765, 1, 0, 0, 1, 1, 10022.076171875, 1978.7491455078125, 1371.5069580078125, 3.45575571060180664, 0, 0, -0.98768806457519531, 0.156436234712600708, 120, 255, 1, "", 47720, NULL), +(19462, 180765, 1, 0, 0, 1, 1, 10022.177734375, 2020.394775390625, 1371.5494384765625, 3.996806621551513671, 0, 0, -0.90996074676513671, 0.414694398641586303, 120, 255, 1, "", 47720, NULL), +(19463, 180765, 1, 0, 0, 1, 1, 10024.7666015625, 1977.26953125, 1361.0245361328125, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, "", 47720, NULL), +(19464, 180765, 1, 0, 0, 1, 1, 10025.2783203125, 2022.224853515625, 1361.009765625, 0.349065244197845458, 0, 0, 0.173647880554199218, 0.984807789325714111, 120, 255, 1, "", 47720, NULL), +(19465, 180765, 1, 0, 0, 1, 1, 10040.3701171875, 2478.4267578125, 1353.9842529296875, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, "", 47720, NULL), +(19466, 180765, 1, 0, 0, 1, 1, 10050.6650390625, 2510.376220703125, 1353.9842529296875, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, "", 47720, NULL), +(19467, 180765, 1, 0, 0, 1, 1, 10080.890625, 2586.8662109375, 1340.5086669921875, 5.201082706451416015, 0, 0, -0.51503753662109375, 0.857167601585388183, 120, 255, 1, "", 47720, NULL), +(19468, 180765, 1, 0, 0, 1, 1, 10088.9482421875, 2580.3515625, 1341.7447509765625, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(19469, 180765, 1, 0, 0, 1, 1, 10106.8671875, 2600.882080078125, 1340.5501708984375, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 120, 255, 1, "", 47720, NULL), +(19470, 180765, 1, 0, 0, 1, 1, 10107.6796875, 2590.669677734375, 1341.8626708984375, 1.500982880592346191, 0, 0, 0.681998252868652343, 0.731353819370269775, 120, 255, 1, "", 47720, NULL), +(19471, 180765, 1, 0, 0, 1, 1, 10162.8349609375, 2569.221435546875, 1366.499267578125, 1.256635904312133789, 0, 0, 0.587784767150878906, 0.809017360210418701, 120, 255, 1, "", 47720, NULL), +(19472, 180765, 1, 0, 0, 1, 1, 10163.06640625, 2568.720947265625, 1353.59619140625, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, "", 47720, NULL), +(19473, 180765, 1, 0, 0, 1, 1, 10165.3525390625, 2580.4287109375, 1361.8843994140625, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, "", 47720, NULL), +(19474, 180765, 1, 0, 0, 1, 1, 10170.1591796875, 2554.2412109375, 1344.72705078125, 5.84685373306274414, 0, 0, -0.21643924713134765, 0.976296067237854003, 120, 255, 1, "", 47720, NULL), +(19475, 180765, 1, 0, 0, 1, 1, 10170.9248046875, 2556.4951171875, 1366.2369384765625, 2.635444164276123046, 0, 0, 0.96814727783203125, 0.250381410121917724, 120, 255, 1, "", 47720, NULL), +(19476, 180765, 1, 0, 0, 1, 1, 10180.69140625, 2583.703857421875, 1364.724853515625, 3.700104713439941406, 0, 0, -0.96126079559326171, 0.275640487670898437, 120, 255, 1, "", 47720, NULL), +(19477, 180765, 1, 0, 0, 1, 1, 10185.5595703125, 2561.108154296875, 1366.71533203125, 1.082102894783020019, 0, 0, 0.51503753662109375, 0.857167601585388183, 120, 255, 1, "", 47720, NULL), +(19478, 180765, 1, 0, 0, 1, 1, 10185.7666015625, 2575.524658203125, 1366.34619140625, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 120, 255, 1, "", 47720, NULL), +-- pooled entries +-- spawning one constellation for now +(19479, 180765, 1, 0, 0, 1, 1, 7472.892578125, -2651.32080078125, 455.138092041015625, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 120, 255, 1, "", 52237, NULL), +(19480, 180765, 1, 0, 0, 1, 1, 7478.55908203125, -2652.30859375, 455.144866943359375, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, "", 52237, NULL), +-- (19481, 180765, 1, 0, 0, 1, 1, 7526.86962890625, -2464.802978515625, 455.183013916015625, 0.087265998125076293, 0, 0, 0.043619155883789062, 0.999048233032226562, 120, 255, 1, "", 47720, NULL), +-- (19482, 180765, 1, 0, 0, 1, 1, 7532.15966796875, -2467.02197265625, 455.59124755859375, 0.855210542678833007, 0, 0, 0.414692878723144531, 0.909961462020874023, 120, 255, 1, "", 47720, NULL), +(19483, 180765, 1, 0, 0, 1, 1, 7547.994140625, -2399.727783203125, 456.72125244140625, 0.820303261280059814, 0, 0, 0.398748397827148437, 0.917060375213623046, 120, 255, 1, "", 47720, NULL), +(19484, 180765, 1, 0, 0, 1, 1, 7553.50341796875, -2401.662109375, 456.99365234375, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 120, 255, 1, "", 47720, NULL), +(19485, 180765, 1, 0, 0, 1, 1, 7764.7587890625, -2444.3134765625, 495.587249755859375, 4.555310726165771484, 0, 0, -0.76040554046630859, 0.649448513984680175, 120, 255, 1, "", 52237, NULL), +-- (19486, 180765, 1, 0, 0, 1, 1, 7770.7822265625, -2420.889892578125, 495.4761962890625, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 120, 255, 1, "", 47720, NULL), +-- (19487, 180765, 1, 0, 0, 1, 1, 7783.375, -2563.994384765625, 497.555023193359375, 3.892086982727050781, 0, 0, -0.93041706085205078, 0.366502493619918823, 120, 255, 1, "", 52237, NULL), +-- (19488, 180765, 1, 0, 0, 1, 1, 7792.21875, -2575.030029296875, 504.42974853515625, 3.78736734390258789, 0, 0, -0.94832324981689453, 0.317305892705917358, 120, 255, 1, "", 52237, NULL), +-- (19489, 180765, 1, 0, 0, 1, 1, 7827.3369140625, -2546.64306640625, 503.596832275390625, 1.047197580337524414, 0, 0, 0.5, 0.866025388240814208, 120, 255, 1, "", 52237, NULL), +-- (19490, 180765, 1, 0, 0, 1, 1, 7860.251953125, -2568.447998046875, 501.588104248046875, 6.056293010711669921, 0, 0, -0.11320304870605468, 0.993571877479553222, 120, 255, 1, "", 52237, NULL), +-- (19491, 180765, 1, 0, 0, 1, 1, 7861.15185546875, -2519.1142578125, 496.651702880859375, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 120, 255, 1, "", 47720, NULL), +-- (19492, 180765, 1, 0, 0, 1, 1, 7872.55029296875, -2478.9150390625, 498.779693603515625, 1.343901276588439941, 0, 0, 0.622513771057128906, 0.78260880708694458, 120, 255, 1, "", 47720, NULL), +-- (19493, 180765, 1, 0, 0, 1, 1, 7891.53564453125, -2477.243408203125, 498.728240966796875, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 120, 255, 1, "", 47720, NULL), +-- (19494, 180765, 1, 0, 0, 1, 1, 7898.0234375, -2476.247314453125, 498.772735595703125, 1.361356139183044433, 0, 0, 0.629320144653320312, 0.77714616060256958, 120, 255, 1, "", 52237, NULL), +-- (19495, 180765, 1, 0, 0, 1, 1, 7917.49560546875, -2513.798095703125, 496.710601806640625, 4.817109584808349609, 0, 0, -0.66913032531738281, 0.74314504861831665, 120, 255, 1, "", 47720, NULL), +-- (19496, 180765, 1, 0, 0, 1, 1, 7936.6162109375, -2400.23193359375, 498.442169189453125, 1.815141916275024414, 0, 0, 0.788010597229003906, 0.615661680698394775, 120, 255, 1, "", 47720, NULL), +(19497, 180765, 1, 0, 0, 1, 1, 7948.8056640625, -2575.666748046875, 516.4300537109375, 1.186823248863220214, 0, 0, 0.559192657470703125, 0.829037725925445556, 120, 255, 1, "", 52237, NULL), +-- (19498, 180765, 1, 0, 0, 1, 1, 8003.72314453125, -2672.30615234375, 538.656494140625, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 120, 255, 1, "", 47720, NULL), +-- (19499, 180765, 1, 0, 0, 1, 1, 8022.0634765625, -2671.010986328125, 521.28167724609375, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, "", 47720, NULL), +-- pooled end +(19500, 180765, 1, 0, 0, 1, 1, 9640.9296875, 2596.006103515625, 1356.52294921875, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 120, 255, 1, "", 52237, NULL), +(19501, 180765, 1, 0, 0, 1, 1, 9847.23828125, 2377.09375, 1345.2239990234375, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, "", 52237, NULL), +(19502, 180765, 1, 0, 0, 1, 1, 9849.5107421875, 2330.788330078125, 1337.10986328125, 0.785396754741668701, 0, 0, 0.38268280029296875, 0.923879802227020263, 120, 255, 1, "", 52237, NULL), +(19503, 180765, 1, 0, 0, 1, 1, 9850.0576171875, 2364.77587890625, 1330.8724365234375, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 120, 255, 1, "", 52237, NULL), +(19504, 180765, 1, 0, 0, 1, 1, 9851.2080078125, 2332.406494140625, 1330.73046875, 5.619962215423583984, 0, 0, -0.32556724548339843, 0.945518851280212402, 120, 255, 1, "", 52237, NULL), +(19505, 180765, 1, 0, 0, 1, 1, 9948.0537109375, 2022.9625244140625, 1361.0029296875, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 120, 255, 1, "", 47720, NULL), +(19506, 180765, 1, 0, 0, 1, 1, 9948.3720703125, 1978.558837890625, 1361.0804443359375, 1.361356139183044433, 0, 0, 0.629320144653320312, 0.77714616060256958, 120, 255, 1, "", 47720, NULL), +(19507, 180765, 1, 0, 0, 1, 1, 9950.7939453125, 1979.5279541015625, 1371.54150390625, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 120, 255, 1, "", 47720, NULL), +(19508, 180765, 1, 0, 0, 1, 1, 9951.2294921875, 2021.142333984375, 1371.543212890625, 0.122172988951206207, 0, 0, 0.061048507690429687, 0.998134791851043701, 120, 255, 1, "", 47720, NULL), +(19509, 180765, 571, 0, 0, 1, 1, 5670.34228515625, 779.5948486328125, 669.5634765625, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 120, 255, 1, "", 47720, NULL), +(19510, 180765, 571, 0, 0, 1, 1, 5731.9140625, 677.97515869140625, 653.337646484375, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 120, 255, 1, "", 47720, NULL), +(19511, 180765, 571, 0, 0, 1, 1, 5753.2939453125, 594.625244140625, 618.50567626953125, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 120, 255, 1, "", 47720, NULL), +(19512, 180765, 571, 0, 0, 1, 1, 5759.77197265625, 714.25347900390625, 653.22662353515625, 1.867502212524414062, 0, 0, 0.803856849670410156, 0.594822824001312255, 120, 255, 1, "", 47720, NULL), +(19513, 180765, 571, 0, 0, 1, 1, 5760.56103515625, 701.3275146484375, 623.34503173828125, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 120, 255, 1, "", 47720, NULL), +(19514, 180765, 571, 0, 0, 1, 1, 5819.91650390625, 557.65740966796875, 655.49127197265625, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, "", 47720, NULL), +(19515, 180766, 1, 0, 0, 1, 1, 7461.35595703125, -2813.8271484375, 462.374786376953125, 1.797688722610473632, 0, 0, 0.7826080322265625, 0.622514784336090087, 120, 255, 1, "", 47720, NULL), +(19516, 180766, 1, 0, 0, 1, 1, 7461.58349609375, -2802.853759765625, 462.13531494140625, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 120, 255, 1, "", 47720, NULL), +(19517, 180766, 1, 0, 0, 1, 1, 7463.90087890625, -2741.921142578125, 459.29449462890625, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 120, 255, 1, "", 47720, NULL), +(19518, 180766, 1, 0, 0, 1, 1, 7464.9375, -2691.611328125, 454.343597412109375, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 120, 255, 1, "", 47720, NULL), +(19519, 180766, 1, 0, 0, 1, 1, 7474.328125, -2795.222412109375, 462.480316162109375, 4.625123500823974609, 0, 0, -0.73727703094482421, 0.67559051513671875, 120, 255, 1, "", 47720, NULL), +(19520, 180766, 1, 0, 0, 1, 1, 7475.02783203125, -2597.744384765625, 452.832183837890625, 1.239183306694030761, 0, 0, 0.580702781677246093, 0.814115643501281738, 120, 255, 1, "", 47720, NULL), +(19521, 180766, 1, 0, 0, 1, 1, 7475.494140625, -2750.214111328125, 460.29156494140625, 4.625123500823974609, 0, 0, -0.73727703094482421, 0.67559051513671875, 120, 255, 1, "", 47720, NULL), +(19522, 180766, 1, 0, 0, 1, 1, 7479.21875, -2479.520751953125, 461.84088134765625, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 120, 255, 1, "", 47720, NULL), +(19523, 180766, 1, 0, 0, 1, 1, 7481.9228515625, -2829.69189453125, 461.2198486328125, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 120, 255, 1, "", 47720, NULL), +(19524, 180766, 1, 0, 0, 1, 1, 7483.90966796875, -2632.36376953125, 453.864654541015625, 4.415683269500732421, 0, 0, -0.80385684967041015, 0.594822824001312255, 120, 255, 1, "", 47720, NULL), +-- lunar fireworks event spawns +-- (19525, 180766, 1, 0, 0, 1, 1, 7491.3818359375, -2633.52294921875, 450.940948486328125, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 120, 255, 1, "", 52237, NULL), +(19526, 180766, 1, 0, 0, 1, 1, 7494.41259765625, -2822.019775390625, 461.34613037109375, 4.991643905639648437, 0, 0, -0.60181427001953125, 0.798636078834533691, 120, 255, 1, "", 47720, NULL), +(19527, 180766, 1, 0, 0, 1, 1, 7496.5244140625, -2532.186279296875, 452.831329345703125, 0.942476630210876464, 0, 0, 0.453989982604980468, 0.891006767749786376, 120, 255, 1, "", 47720, NULL), +(19528, 180766, 1, 0, 0, 1, 1, 7497.9287109375, -2564.247314453125, 454.282623291015625, 4.258606910705566406, 0, 0, -0.84804725646972656, 0.529920578002929687, 120, 255, 1, "", 47720, NULL), +(19529, 180766, 1, 0, 0, 1, 1, 7499.89697265625, -2487.68408203125, 457.292144775390625, 3.106652259826660156, 0, 0, 0.999847412109375, 0.017469281330704689, 120, 255, 1, "", 47720, NULL), +(19530, 180766, 1, 0, 0, 1, 1, 7520.41748046875, -2504.376953125, 454.129547119140625, 4.276057243347167968, 0, 0, -0.84339141845703125, 0.537299633026123046, 120, 255, 1, "", 47720, NULL), +-- (19531, 180766, 1, 0, 0, 1, 1, 7524.8603515625, -2600.5546875, 450.799957275390625, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 120, 255, 1, "", 52237, NULL), +(19532, 180766, 1, 0, 0, 1, 1, 7528.66162109375, -2481.22216796875, 454.338714599609375, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 120, 255, 1, "", 47720, NULL), +(19533, 180766, 1, 0, 0, 1, 1, 7533.19384765625, -2849.5556640625, 456.259002685546875, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, "", 47720, NULL), +(19534, 180766, 1, 0, 0, 1, 1, 7535.119140625, -2436.779052734375, 453.77215576171875, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 120, 255, 1, "", 47720, NULL), +-- (19535, 180766, 1, 0, 0, 1, 1, 7543.8271484375, -2567.7275390625, 450.712249755859375, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 120, 255, 1, "", 52237, NULL), +-- (19536, 180766, 1, 0, 0, 1, 1, 7553.666015625, -2536.9658203125, 451.032379150390625, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 120, 255, 1, "", 52237, NULL), +-- (19537, 180766, 1, 0, 0, 1, 1, 7559.12939453125, -2514.57763671875, 450.87542724609375, 2.600535154342651367, 0, 0, 0.963629722595214843, 0.26724100112915039, 120, 255, 1, "", 52237, NULL), +(19538, 180766, 1, 0, 0, 1, 1, 7560.0791015625, -2900.276611328125, 460.416717529296875, 2.949595451354980468, 0, 0, 0.995395660400390625, 0.095851235091686248, 120, 255, 1, "", 47720, NULL), +(19539, 180766, 1, 0, 0, 1, 1, 7562.2099609375, -2226.88720703125, 471.680023193359375, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 120, 255, 1, "", 47720, NULL), +(19540, 180766, 1, 0, 0, 1, 1, 7572.345703125, -2366.0400390625, 454.733489990234375, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(19541, 180766, 1, 0, 0, 1, 1, 7572.87841796875, -2900.664794921875, 460.201812744140625, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 120, 255, 1, "", 47720, NULL), +-- (19542, 180766, 1, 0, 0, 1, 1, 7573.7734375, -2501.1494140625, 450.272796630859375, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, "", 52237, NULL), +-- (19543, 180766, 1, 0, 0, 1, 1, 7581.15625, -2474.45654296875, 451.711822509765625, 4.59021615982055664, 0, 0, -0.74895572662353515, 0.662620067596435546, 120, 255, 1, "", 52237, NULL), +-- (19544, 180766, 1, 0, 0, 1, 1, 7594.10009765625, -2450.502197265625, 451.03778076171875, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, "", 52237, NULL), +-- (19545, 180766, 1, 0, 0, 1, 1, 7608.71728515625, -2440.04541015625, 451.532135009765625, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 52237, NULL), +-- (19546, 180766, 1, 0, 0, 1, 1, 7641.80029296875, -2430.874267578125, 450.33746337890625, 3.630291461944580078, 0, 0, -0.97029495239257812, 0.241925001144409179, 120, 255, 1, "", 52237, NULL), +-- (19547, 180766, 1, 0, 0, 1, 1, 7665.78662109375, -2415.58544921875, 451.304412841796875, 5.654868602752685546, 0, 0, -0.30901622772216796, 0.95105677843093872, 120, 255, 1, "", 52237, NULL), +-- (19548, 180766, 1, 0, 0, 1, 1, 7669.5537109375, -2773.706298828125, 452.10809326171875, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, "", 52237, NULL), +-- (19549, 180766, 1, 0, 0, 1, 1, 7674.5947265625, -2401.744873046875, 450.91912841796875, 1.867502212524414062, 0, 0, 0.803856849670410156, 0.594822824001312255, 120, 255, 1, "", 52237, NULL), +-- (19550, 180766, 1, 0, 0, 1, 1, 7696.7109375, -2776.4970703125, 452.15313720703125, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, "", 52237, NULL), +-- (19551, 180766, 1, 0, 0, 1, 1, 7708.88623046875, -2383.891845703125, 450.9805908203125, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, "", 52237, NULL), +-- (19552, 180766, 1, 0, 0, 1, 1, 7715.853515625, -2786.946533203125, 451.679168701171875, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 120, 255, 1, "", 52237, NULL), +-- (19553, 180766, 1, 0, 0, 1, 1, 7734.814453125, -2771.737060546875, 451.38482666015625, 4.258606910705566406, 0, 0, -0.84804725646972656, 0.529920578002929687, 120, 255, 1, "", 52237, NULL), +-- (19554, 180766, 1, 0, 0, 1, 1, 7739.3349609375, -2412.934814453125, 483.203887939453125, 4.834563255310058593, 0, 0, -0.66261959075927734, 0.748956084251403808, 120, 255, 1, "", 52237, NULL), +-- (19555, 180766, 1, 0, 0, 1, 1, 7744.6015625, -2424.31884765625, 483.6817626953125, 5.026549339294433593, 0, 0, -0.5877847671508789, 0.809017360210418701, 120, 255, 1, "", 52237, NULL), +-- (19556, 180766, 1, 0, 0, 1, 1, 7747.6787109375, -2437.37451171875, 481.160858154296875, 5.969027042388916015, 0, 0, -0.1564340591430664, 0.987688362598419189, 120, 255, 1, "", 52237, NULL), +-- (19557, 180766, 1, 0, 0, 1, 1, 7757.8984375, -2450.45654296875, 482.305389404296875, 2.042035102844238281, 0, 0, 0.852640151977539062, 0.522498607635498046, 120, 255, 1, "", 52237, NULL), +-- (19558, 180766, 1, 0, 0, 1, 1, 7758.6328125, -2558.444091796875, 474.78326416015625, 5.026549339294433593, 0, 0, -0.5877847671508789, 0.809017360210418701, 120, 255, 1, "", 52237, NULL), +-- (19559, 180766, 1, 0, 0, 1, 1, 7768.39306640625, -2589.85107421875, 455.68792724609375, 6.265733242034912109, 0, 0, -0.00872611999511718, 0.999961912631988525, 120, 255, 1, "", 52237, NULL), +-- (19560, 180766, 1, 0, 0, 1, 1, 7768.8115234375, -2468.573486328125, 475.610748291015625, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 120, 255, 1, "", 52237, NULL), +-- (19561, 180766, 1, 0, 0, 1, 1, 7797.81884765625, -2529.20361328125, 476.85205078125, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, "", 52237, NULL), +-- (19562, 180766, 1, 0, 0, 1, 1, 7798.89306640625, -2801.7861328125, 452.867095947265625, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, "", 52237, NULL), +-- (19563, 180766, 1, 0, 0, 1, 1, 7800.9296875, -2508.494873046875, 483.080902099609375, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, "", 52237, NULL), +-- (19564, 180766, 1, 0, 0, 1, 1, 7807.65966796875, -2641.603759765625, 461.6485595703125, 0.15707901120185852, 0, 0, 0.078458786010742187, 0.996917366981506347, 120, 255, 1, "", 52237, NULL), +-- (19565, 180766, 1, 0, 0, 1, 1, 7861.41259765625, -2753.021728515625, 471.12744140625, 5.619962215423583984, 0, 0, -0.32556724548339843, 0.945518851280212402, 120, 255, 1, "", 52237, NULL), +-- (19566, 180766, 1, 0, 0, 1, 1, 7889.63525390625, -2712.69482421875, 467.247344970703125, 5.829400539398193359, 0, 0, -0.22495079040527343, 0.974370121955871582, 120, 255, 1, "", 52237, NULL), +(19567, 180766, 530, 0, 0, 1, 1, -2907.525390625, 3972.318603515625, 0.090296998620033264, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 120, 255, 1, "", 50664, NULL), +(19568, 180766, 530, 0, 0, 1, 1, -2908.5078125, 3989.01220703125, 0.261703014373779296, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, "", 50664, NULL), +(19569, 180766, 530, 0, 0, 1, 1, -2940.097900390625, 4016.792236328125, -1.04020500183105468, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 50664, NULL), +(19570, 180766, 530, 0, 0, 1, 1, -2943.038330078125, 3907.9306640625, 2.621155977249145507, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 120, 255, 1, "", 50664, NULL), +(19571, 180766, 530, 0, 0, 1, 1, -2952.28173828125, 4081.577392578125, 2.854387998580932617, 5.253442287445068359, 0, 0, -0.49242305755615234, 0.870355963706970214, 120, 255, 1, "", 50664, NULL), +(19572, 180766, 530, 0, 0, 1, 1, -2952.33544921875, 4019.533447265625, -0.25977900624275207, 1.274088263511657714, 0, 0, 0.594821929931640625, 0.80385744571685791, 120, 255, 1, "", 50664, NULL), +(19573, 180766, 530, 0, 0, 1, 1, -2955.7822265625, 3911.447509765625, 2.564055919647216796, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, "", 50664, NULL), +(19574, 180766, 530, 0, 0, 1, 1, -2966.623291015625, 4073.059814453125, 2.941729068756103515, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 120, 255, 1, "", 50664, NULL), +(19575, 180767, 1, 0, 0, 1, 1, -1425.19921875, -108.27490234375, 169.1382598876953125, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 120, 255, 1, "", 47720, NULL), +-- pooled entries +-- spawning one constellation for now +-- (19576, 180767, 1, 0, 0, 1, 1, 7472.892578125, -2651.32080078125, 455.138092041015625, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 120, 255, 1, "", 47720, NULL), +-- (19577, 180767, 1, 0, 0, 1, 1, 7478.55908203125, -2652.30859375, 455.144866943359375, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, "", 47720, NULL), +(19578, 180767, 1, 0, 0, 1, 1, 7526.86962890625, -2464.802978515625, 455.183013916015625, 0.087265998125076293, 0, 0, 0.043619155883789062, 0.999048233032226562, 120, 255, 1, "", 47720, NULL), +(19579, 180767, 1, 0, 0, 1, 1, 7532.15966796875, -2467.02197265625, 455.59124755859375, 0.855210542678833007, 0, 0, 0.414692878723144531, 0.909961462020874023, 120, 255, 1, "", 52237, NULL), +-- (19580, 180767, 1, 0, 0, 1, 1, 7547.994140625, -2399.727783203125, 456.72125244140625, 0.820303261280059814, 0, 0, 0.398748397827148437, 0.917060375213623046, 120, 255, 1, "", 52237, NULL), +-- (19581, 180767, 1, 0, 0, 1, 1, 7553.50341796875, -2401.662109375, 456.99365234375, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 120, 255, 1, "", 47720, NULL), +-- (19582, 180767, 1, 0, 0, 1, 1, 7764.7587890625, -2444.3134765625, 495.587249755859375, 4.555310726165771484, 0, 0, -0.76040554046630859, 0.649448513984680175, 120, 255, 1, "", 47720, NULL), +(19583, 180767, 1, 0, 0, 1, 1, 7770.7822265625, -2420.889892578125, 495.4761962890625, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 120, 255, 1, "", 52237, NULL), +-- (19584, 180767, 1, 0, 0, 1, 1, 7785.37060546875, -2587.576416015625, 497.62396240234375, 1.884953022003173828, 0, 0, 0.809016227722167968, 0.587786316871643066, 120, 255, 1, "", 47720, NULL), +-- (19585, 180767, 1, 0, 0, 1, 1, 7789.0927734375, -2453.34716796875, 494.77301025390625, 5.532694816589355468, 0, 0, -0.3665008544921875, 0.93041771650314331, 120, 255, 1, "", 47720, NULL), +-- (19586, 180767, 1, 0, 0, 1, 1, 7826.32373046875, -2535.32666015625, 503.596832275390625, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 120, 255, 1, "", 47720, NULL), +-- (19587, 180767, 1, 0, 0, 1, 1, 7831.9541015625, -2594.871826171875, 503.596832275390625, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 120, 255, 1, "", 47720, NULL), +-- (19588, 180767, 1, 0, 0, 1, 1, 7833.26025390625, -2607.046875, 503.596832275390625, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, "", 47720, NULL), +-- (19589, 180767, 1, 0, 0, 1, 1, 7844.05224609375, -2569.990234375, 505.267303466796875, 0.418878614902496337, 0, 0, 0.207911491394042968, 0.978147625923156738, 120, 255, 1, "", 52237, NULL), +-- (19590, 180767, 1, 0, 0, 1, 1, 7846.74658203125, -2595.48095703125, 494.174102783203125, 3.176533222198486328, 0, 0, -0.999847412109375, 0.017469281330704689, 120, 255, 1, "", 47720, NULL), +-- (19591, 180767, 1, 0, 0, 1, 1, 7857.6328125, -2486.78125, 496.6710205078125, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 120, 255, 1, "", 52237, NULL), +-- (19592, 180767, 1, 0, 0, 1, 1, 7871.5791015625, -2470.440673828125, 498.78564453125, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 120, 255, 1, "", 52237, NULL), +-- (19593, 180767, 1, 0, 0, 1, 1, 7879.61279296875, -2478.378662109375, 498.8212890625, 4.241150379180908203, 0, 0, -0.85264015197753906, 0.522498607635498046, 120, 255, 1, "", 47720, NULL), +-- (19594, 180767, 1, 0, 0, 1, 1, 7887.9072265625, -2501.87109375, 501.987457275390625, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, "", 52237, NULL), +-- (19595, 180767, 1, 0, 0, 1, 1, 7897.0322265625, -2467.569580078125, 498.766937255859375, 4.066620349884033203, 0, 0, -0.89493370056152343, 0.44619917869567871, 120, 255, 1, "", 47720, NULL), +-- (19596, 180767, 1, 0, 0, 1, 1, 7914.283203125, -2481.3427734375, 496.647247314453125, 5.201082706451416015, 0, 0, -0.51503753662109375, 0.857167601585388183, 120, 255, 1, "", 47720, NULL), +-- (19597, 180767, 1, 0, 0, 1, 1, 7927.9130859375, -2401.150634765625, 498.45318603515625, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, "", 47720, NULL), +-- (19598, 180767, 1, 0, 0, 1, 1, 7931.38623046875, -2426.612548828125, 498.436859130859375, 0.680676698684692382, 0, 0, 0.333806037902832031, 0.942641794681549072, 120, 255, 1, "", 47720, NULL), +-- (19599, 180767, 1, 0, 0, 1, 1, 7939.9775390625, -2425.346923828125, 498.42132568359375, 3.700104713439941406, 0, 0, -0.96126079559326171, 0.275640487670898437, 120, 255, 1, "", 47720, NULL), +-- (19600, 180767, 1, 0, 0, 1, 1, 7941.814453125, -2383.61669921875, 496.2965087890625, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, "", 52237, NULL), +-- (19601, 180767, 1, 0, 0, 1, 1, 7948.8056640625, -2575.666748046875, 516.4300537109375, 1.186823248863220214, 0, 0, 0.559192657470703125, 0.829037725925445556, 120, 255, 1, "", 47720, NULL), +-- (19602, 180767, 1, 0, 0, 1, 1, 7972.67626953125, -2380.009521484375, 496.278656005859375, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 120, 255, 1, "", 47720, NULL), +-- (19603, 180767, 1, 0, 0, 1, 1, 7980.53466796875, -2436.577392578125, 496.33148193359375, 6.178466320037841796, 0, 0, -0.05233573913574218, 0.998629570007324218, 120, 255, 1, "", 47720, NULL), +-- (19604, 180767, 1, 0, 0, 1, 1, 8013.81103515625, -2638.38232421875, 521.009033203125, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, "", 52237, NULL), +-- (19605, 180767, 1, 0, 0, 1, 1, 8018.68310546875, -2687.18603515625, 521.24981689453125, 3.089183330535888671, 0, 0, 0.99965667724609375, 0.026201646775007247, 120, 255, 1, "", 52237, NULL), +-- pooled end +(19606, 180767, 571, 0, 0, 1, 1, 5770.01513671875, 581.1361083984375, 618.50830078125, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, "", 47720, NULL), +(19607, 180767, 571, 0, 0, 1, 1, 5774.22900390625, 717.9036865234375, 623.3555908203125, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(19608, 180767, 571, 0, 0, 1, 1, 5813.3076171875, 555.6400146484375, 655.50860595703125, 0.087265998125076293, 0, 0, 0.043619155883789062, 0.999048233032226562, 120, 255, 1, "", 47720, NULL), +(19609, 180767, 571, 0, 0, 1, 1, 5892.56787109375, 549.73272705078125, 648.2481689453125, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, "", 47720, NULL), +(19610, 180767, 571, 0, 0, 1, 1, 5897.853515625, 555.55224609375, 648.3433837890625, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, "", 47720, NULL), +(19611, 180768, 1, 0, 0, 1, 1, -1005.2410888671875, 303.381866455078125, 135.745941162109375, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, "", 47720, NULL), +(19612, 180768, 1, 0, 0, 1, 1, -1008.8856201171875, 258.38348388671875, 135.745941162109375, 5.445427894592285156, 0, 0, -0.40673637390136718, 0.913545548915863037, 120, 255, 1, "", 47720, NULL), +(19613, 180768, 1, 0, 0, 1, 1, -1017.32861328125, 278.512420654296875, 135.745941162109375, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, "", 47720, NULL), +(19614, 180768, 1, 0, 0, 1, 1, -956.791015625, 277.233367919921875, 135.745941162109375, 1.518436193466186523, 0, 0, 0.6883544921875, 0.725374460220336914, 120, 255, 1, "", 47720, NULL), +(19615, 180768, 1, 0, 0, 1, 1, -965.55255126953125, 300.288299560546875, 135.738250732421875, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(19616, 180768, 1, 0, 0, 1, 1, -982.03472900390625, 309.225799560546875, 135.745941162109375, 3.054326534271240234, 0, 0, 0.999048233032226562, 0.043619260191917419, 120, 255, 1, "", 47720, NULL), +(19617, 180768, 1, 0, 0, 1, 1, -988.8809814453125, 249.1998748779296875, 135.745941162109375, 6.178466320037841796, 0, 0, -0.05233573913574218, 0.998629570007324218, 120, 255, 1, "", 47720, NULL), +-- (19618, 180768, 1, 0, 0, 1, 1, 7520.31494140625, -2617.538330078125, 450.19854736328125, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, "", 52237, NULL), +-- (19619, 180768, 1, 0, 0, 1, 1, 7536.017578125, -2586.882080078125, 449.646392822265625, 5.986480236053466796, 0, 0, -0.14780902862548828, 0.989015936851501464, 120, 255, 1, "", 52237, NULL), +-- (19620, 180768, 1, 0, 0, 1, 1, 7550.1875, -2547.796142578125, 451.576385498046875, 1.85004889965057373, 0, 0, 0.798635482788085937, 0.60181504487991333, 120, 255, 1, "", 52237, NULL), +-- (19621, 180768, 1, 0, 0, 1, 1, 7554.98193359375, -2528.140625, 451.426666259765625, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 52237, NULL), +-- (19622, 180768, 1, 0, 0, 1, 1, 7563.55712890625, -2504.969970703125, 452.643829345703125, 3.577930212020874023, 0, 0, -0.97629547119140625, 0.216442063450813293, 120, 255, 1, "", 52237, NULL), +-- (19623, 180768, 1, 0, 0, 1, 1, 7563.90283203125, -2478.805419921875, 452.56805419921875, 4.677483558654785156, 0, 0, -0.71933937072753906, 0.694658815860748291, 120, 255, 1, "", 52237, NULL), +-- (19624, 180768, 1, 0, 0, 1, 1, 7584.67041015625, -2461.978759765625, 451.824127197265625, 1.204277276992797851, 0, 0, 0.56640625, 0.824126183986663818, 120, 255, 1, "", 52237, NULL), +-- (19625, 180768, 1, 0, 0, 1, 1, 7620.6474609375, -2441.090087890625, 451.07135009765625, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 120, 255, 1, "", 52237, NULL), +-- (19626, 180768, 1, 0, 0, 1, 1, 7631.892578125, -2440.189208984375, 450.67779541015625, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 120, 255, 1, "", 52237, NULL), +-- (19627, 180768, 1, 0, 0, 1, 1, 7648.09228515625, -2801.96533203125, 449.723175048828125, 0.471238493919372558, 0, 0, 0.233445167541503906, 0.972369968891143798, 120, 255, 1, "", 52237, NULL), +-- (19628, 180768, 1, 0, 0, 1, 1, 7656.5400390625, -2423.34765625, 451.3077392578125, 3.211419343948364257, 0, 0, -0.9993906021118164, 0.034906134009361267, 120, 255, 1, "", 52237, NULL), +-- (19629, 180768, 1, 0, 0, 1, 1, 7685.03369140625, -2772.595703125, 452.90008544921875, 1.553341388702392578, 0, 0, 0.700908660888671875, 0.713251054286956787, 120, 255, 1, "", 52237, NULL), +-- (19630, 180768, 1, 0, 0, 1, 1, 7694.71875, -2392.290771484375, 451.446929931640625, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 120, 255, 1, "", 52237, NULL), +-- (19631, 180768, 1, 0, 0, 1, 1, 7725.265625, -2427.9140625, 458.97998046875, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, "", 52237, NULL), +-- (19632, 180768, 1, 0, 0, 1, 1, 7735.74462890625, -2347.4580078125, 452.90191650390625, 3.595378875732421875, 0, 0, -0.97437000274658203, 0.224951311945915222, 120, 255, 1, "", 52237, NULL), +-- (19633, 180768, 1, 0, 0, 1, 1, 7738.6572265625, -2385.3330078125, 471.090728759765625, 6.230826377868652343, 0, 0, -0.02617645263671875, 0.999657332897186279, 120, 255, 1, "", 52237, NULL), +-- (19634, 180768, 1, 0, 0, 1, 1, 7739.564453125, -2460.68701171875, 463.761383056640625, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 120, 255, 1, "", 52237, NULL), +-- (19635, 180768, 1, 0, 0, 1, 1, 7745.24853515625, -2566.802001953125, 462.147186279296875, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, "", 52237, NULL), +-- (19636, 180768, 1, 0, 0, 1, 1, 7752.74658203125, -2764.292724609375, 450.983123779296875, 0.750490784645080566, 0, 0, 0.3665008544921875, 0.93041771650314331, 120, 255, 1, "", 52237, NULL), +-- (19637, 180768, 1, 0, 0, 1, 1, 7779.54931640625, -2786.561279296875, 452.141754150390625, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 120, 255, 1, "", 52237, NULL), +-- (19638, 180768, 1, 0, 0, 1, 1, 7787.3505859375, -2497.639404296875, 478.4132080078125, 2.652894020080566406, 0, 0, 0.970294952392578125, 0.241925001144409179, 120, 255, 1, "", 52237, NULL), +-- (19639, 180768, 1, 0, 0, 1, 1, 7794.49462890625, -2468.432373046875, 481.132232666015625, 5.305802345275878906, 0, 0, -0.46947097778320312, 0.882947921752929687, 120, 255, 1, "", 52237, NULL), +-- (19640, 180768, 1, 0, 0, 1, 1, 7797.37255859375, -2634.2900390625, 461.192779541015625, 5.201082706451416015, 0, 0, -0.51503753662109375, 0.857167601585388183, 120, 255, 1, "", 52237, NULL), +-- (19641, 180768, 1, 0, 0, 1, 1, 7873.27197265625, -2765.1484375, 478.988128662109375, 3.630291461944580078, 0, 0, -0.97029495239257812, 0.241925001144409179, 120, 255, 1, "", 52237, NULL), +-- (19642, 180768, 1, 0, 0, 1, 1, 7877.12841796875, -2755.783447265625, 480.8331298828125, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, "", 52237, NULL), +-- (19643, 180768, 1, 0, 0, 1, 1, 7877.1787109375, -2616.021728515625, 453.095458984375, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 52237, NULL), +-- (19644, 180768, 1, 0, 0, 1, 1, 7893.55322265625, -2691.899658203125, 454.543182373046875, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 120, 255, 1, "", 52237, NULL), +(19645, 180768, 530, 0, 0, 1, 1, -2576.479736328125, 4424.43115234375, 38.57500076293945312, 5.70722818374633789, 0, 0, -0.28401470184326171, 0.958819925785064697, 120, 255, 1, "", 45704, NULL), +(19646, 180768, 530, 0, 0, 1, 1, -2578.249267578125, 4380.33837890625, 30.05036163330078125, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 120, 255, 1, "", 45704, NULL), +(19647, 180768, 530, 0, 0, 1, 1, -2595.84228515625, 4374.36572265625, 29.80715370178222656, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, "", 45704, NULL), +(19648, 180768, 530, 0, 0, 1, 1, -2617.74267578125, 4417.2744140625, 36.13049697875976562, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, "", 45704, NULL), +(19649, 180768, 530, 0, 0, 1, 1, -2634.99609375, 4420.16162109375, 36.13532638549804687, 1.029743075370788574, 0, 0, 0.492423057556152343, 0.870355963706970214, 120, 255, 1, "", 45704, NULL), +(19650, 180768, 530, 0, 0, 1, 1, -2662.6962890625, 4401.04541015625, 36.85218429565429687, 3.054326534271240234, 0, 0, 0.999048233032226562, 0.043619260191917419, 120, 255, 1, "", 45704, NULL), +(19651, 180768, 530, 0, 0, 1, 1, -2669.31494140625, 4415.3447265625, 35.85213088989257812, 0.436331570148468017, 0, 0, 0.216439247131347656, 0.976296067237854003, 120, 255, 1, "", 45704, NULL), +(19652, 180769, 1, 0, 0, 1, 1, 7439.09912109375, -2809.767333984375, 473.928070068359375, 3.508116960525512695, 0, 0, -0.98325443267822265, 0.182238012552261352, 120, 255, 1, "", 47720, NULL), +(19653, 180769, 1, 0, 0, 1, 1, 7797.4833984375, -2417.39404296875, 497.05804443359375, 1.937312245368957519, 0, 0, 0.824125289916992187, 0.566407561302185058, 120, 255, 1, "", 47720, NULL), +(19654, 180769, 1, 0, 0, 1, 1, 7837.34130859375, -2197, 478.04388427734375, 2.548179388046264648, 0, 0, 0.956304550170898437, 0.292372345924377441, 120, 255, 1, "", 47720, NULL), +(19655, 180769, 1, 0, 0, 1, 1, 7868.9521484375, -2191.25341796875, 486.366546630859375, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 120, 255, 1, "", 47720, NULL), +(19656, 180769, 1, 0, 0, 1, 1, 7879.0869140625, -2219.161376953125, 479.285308837890625, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, "", 47720, NULL), +(19657, 180769, 571, 0, 0, 1, 1, 5671.9833984375, 646.46563720703125, 652.13043212890625, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 120, 255, 1, "", 47720, NULL), +(19658, 180769, 571, 0, 0, 1, 1, 5675.1728515625, 631.322265625, 652.21002197265625, 0.523597896099090576, 0, 0, 0.258818626403808593, 0.965925931930541992, 120, 255, 1, "", 47720, NULL), +(19659, 180769, 571, 0, 0, 1, 1, 5687.78564453125, 619.97088623046875, 652.2066650390625, 0.575957298278808593, 0, 0, 0.284014701843261718, 0.958819925785064697, 120, 255, 1, "", 47720, NULL), +(19660, 180769, 571, 0, 0, 1, 1, 5730.58154296875, 607.2877197265625, 652.46209716796875, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, "", 47720, NULL), +(19661, 180769, 571, 0, 0, 1, 1, 5750.35302734375, 646.97125244140625, 656.32904052734375, 2.478367090225219726, 0, 0, 0.94551849365234375, 0.325568377971649169, 120, 255, 1, "", 47720, NULL), +(19662, 180769, 571, 0, 0, 1, 1, 5753.37158203125, 616.36956787109375, 656.38848876953125, 4.049167633056640625, 0, 0, -0.89879322052001953, 0.438372820615768432, 120, 255, 1, "", 47720, NULL), +(19663, 180769, 571, 0, 0, 1, 1, 5768.03955078125, 709.34490966796875, 623.66021728515625, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, "", 47720, NULL), +(19664, 180769, 571, 0, 0, 1, 1, 5768.86572265625, 732.3944091796875, 645.67999267578125, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, "", 47720, NULL), +(19665, 180769, 571, 0, 0, 1, 1, 5769.89404296875, 668.66143798828125, 650.428466796875, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, "", 47720, NULL), +(19666, 180769, 571, 0, 0, 1, 1, 5783.13134765625, 561.61285400390625, 655.83538818359375, 0.855210542678833007, 0, 0, 0.414692878723144531, 0.909961462020874023, 120, 255, 1, "", 47720, NULL), +(19667, 180769, 571, 0, 0, 1, 1, 5786.9423828125, 691.6104736328125, 653.31787109375, 2.426007747650146484, 0, 0, 0.936672210693359375, 0.350207358598709106, 120, 255, 1, "", 47720, NULL), +(19668, 180769, 571, 0, 0, 1, 1, 5788.4375, 653.51043701171875, 654.60968017578125, 5.602506637573242187, 0, 0, -0.33380699157714843, 0.942641437053680419, 120, 255, 1, "", 47720, NULL), +(19669, 180769, 571, 0, 0, 1, 1, 5809.2568359375, 575.9974365234375, 656.72222900390625, 4.834563255310058593, 0, 0, -0.66261959075927734, 0.748956084251403808, 120, 255, 1, "", 47720, NULL), +(19670, 180769, 571, 0, 0, 1, 1, 5817.3720703125, 694.9447021484375, 653.33856201171875, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, "", 47720, NULL), +(19671, 180769, 571, 0, 0, 1, 1, 5835.0810546875, 719.89691162109375, 646.14447021484375, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(19672, 180769, 571, 0, 0, 1, 1, 5844.0615234375, 569.6258544921875, 656.828857421875, 2.478367090225219726, 0, 0, 0.94551849365234375, 0.325568377971649169, 120, 255, 1, "", 47720, NULL), +(19673, 180769, 571, 0, 0, 1, 1, 5852.462890625, 690.136962890625, 614.82574462890625, 4.031712055206298828, 0, 0, -0.90258502960205078, 0.430511653423309326, 120, 255, 1, "", 47720, NULL), +(19674, 180769, 571, 0, 0, 1, 1, 5855.79638671875, 664.7435302734375, 653.76885986328125, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 120, 255, 1, "", 47720, NULL), +(19675, 180769, 571, 0, 0, 1, 1, 5858.53466796875, 699.87677001953125, 647.41094970703125, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(19676, 180769, 571, 0, 0, 1, 1, 5859.03759765625, 634.49761962890625, 653.8648681640625, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, "", 47720, NULL), +(19677, 180769, 571, 0, 0, 1, 1, 5864.8759765625, 738.831298828125, 644.73956298828125, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 120, 255, 1, "", 47720, NULL), +(19678, 180769, 571, 0, 0, 1, 1, 5873.1396484375, 725.078125, 647.27862548828125, 1.780233979225158691, 0, 0, 0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 47720, NULL), +(19679, 180769, 571, 0, 0, 1, 1, 5881.34228515625, 611.06597900390625, 654.6136474609375, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, "", 47720, NULL), +(19680, 180769, 571, 0, 0, 1, 1, 5883.3779296875, 741.8603515625, 644.64208984375, 4.9218292236328125, 0, 0, -0.62932014465332031, 0.77714616060256958, 120, 255, 1, "", 47720, NULL), +(19681, 180769, 571, 0, 0, 1, 1, 5886.38720703125, 624.814697265625, 653.55303955078125, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, "", 47720, NULL), +(19682, 180769, 571, 0, 0, 1, 1, 5901.17724609375, 684.357666015625, 647.64324951171875, 2.391098499298095703, 0, 0, 0.930417060852050781, 0.366502493619918823, 120, 255, 1, "", 47720, NULL), +(19683, 180769, 571, 0, 0, 1, 1, 5901.751953125, 746.1671142578125, 645.92572021484375, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 47720, NULL), +(19684, 180769, 571, 0, 0, 1, 1, 5909.36474609375, 661.76910400390625, 649.1790771484375, 3.9793548583984375, 0, 0, -0.9135446548461914, 0.406738430261611938, 120, 255, 1, "", 47720, NULL), +(19685, 180769, 571, 0, 0, 1, 1, 5913.595703125, 558.0538330078125, 615.16204833984375, 1.274088263511657714, 0, 0, 0.594821929931640625, 0.80385744571685791, 120, 255, 1, "", 47720, NULL), +(19686, 180769, 571, 0, 0, 1, 1, 5915.08056640625, 710.20660400390625, 646.71710205078125, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 120, 255, 1, "", 47720, NULL), +(19687, 180769, 571, 0, 0, 1, 1, 5929.5625, 561.21875, 615.48876953125, 2.44346022605895996, 0, 0, 0.939692497253417968, 0.34202045202255249, 120, 255, 1, "", 47720, NULL), +(19688, 180769, 571, 0, 0, 1, 1, 5931.3427734375, 575.787841796875, 615.0650634765625, 3.857182979583740234, 0, 0, -0.93667125701904296, 0.350209832191467285, 120, 255, 1, "", 47720, NULL), +(19689, 180770, 0, 0, 0, 1, 1, -8608.75, 382.625, 113.878143310546875, 2.216565132141113281, 0, 0, 0.894933700561523437, 0.44619917869567871, 120, 255, 1, "", 52237, NULL), +(19690, 180770, 0, 0, 0, 1, 1, -8655.17578125, 670.12078857421875, 106.5109634399414062, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 120, 255, 1, "", 47720, NULL), +(19691, 180770, 0, 0, 0, 1, 1, -8668.03515625, 396.92535400390625, 109.2929229736328125, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 120, 255, 1, "", 52237, NULL), +(19692, 180770, 0, 0, 0, 1, 1, -8705.734375, 851.331298828125, 103.491363525390625, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, "", 47720, NULL), +(19693, 180770, 571, 0, 0, 1, 1, 5659.56884765625, 679.33795166015625, 662.2586669921875, 5.864306926727294921, 0, 0, -0.20791149139404296, 0.978147625923156738, 120, 255, 1, "", 47720, NULL), +(19694, 180770, 571, 0, 0, 1, 1, 5671.68896484375, 646.72802734375, 664.10369873046875, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 120, 255, 1, "", 47720, NULL), +(19695, 180770, 571, 0, 0, 1, 1, 5728.3798828125, 609.73895263671875, 668.4720458984375, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, "", 47720, NULL), +(19696, 180770, 571, 0, 0, 1, 1, 5783.65087890625, 561.3226318359375, 663.7340087890625, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, "", 47720, NULL), +(19697, 180770, 571, 0, 0, 1, 1, 5834.69287109375, 718.49200439453125, 659.24774169921875, 4.066620349884033203, 0, 0, -0.89493370056152343, 0.44619917869567871, 120, 255, 1, "", 47720, NULL), +(19698, 180770, 571, 0, 0, 1, 1, 5885.1728515625, 625.671875, 667.67633056640625, 5.637413978576660156, 0, 0, -0.31730461120605468, 0.948323667049407958, 120, 255, 1, "", 47720, NULL), +(19699, 180770, 571, 0, 0, 1, 1, 5948.265625, 620.9393310546875, 660.90771484375, 2.792518377304077148, 0, 0, 0.984807014465332031, 0.173652306199073791, 120, 255, 1, "", 47720, NULL), +(19700, 180773, 0, 0, 0, 1, 1, -4898.0849609375, -969.86212158203125, 508.09564208984375, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(19701, 180773, 0, 0, 0, 1, 1, -4909.1875, -877.80902099609375, 508.408538818359375, 5.096362113952636718, 0, 0, -0.55919265747070312, 0.829037725925445556, 120, 255, 1, "", 47720, NULL), +(19702, 180773, 0, 0, 0, 1, 1, -4911.4423828125, -980.86956787109375, 508.03363037109375, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 120, 255, 1, "", 52237, NULL), +(19703, 180773, 0, 0, 0, 1, 1, -5007.46435546875, -1240.84765625, 518.63848876953125, 0.698131442070007324, 0, 0, 0.342020034790039062, 0.939692676067352294, 120, 255, 1, "", 52237, NULL), +(19704, 180773, 0, 0, 0, 1, 1, -5020.66357421875, -834.8433837890625, 515.46832275390625, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, "", 47720, NULL), +(19705, 180773, 0, 0, 0, 1, 1, -8399.86328125, 677.2569580078125, 108.1270294189453125, 3.78736734390258789, 0, 0, -0.94832324981689453, 0.317305892705917358, 120, 255, 1, "", 52237, NULL), +(19706, 180773, 0, 0, 0, 1, 1, -8712.763671875, 465.376739501953125, 107.8306732177734375, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, "", 52237, NULL), +(19707, 180773, 0, 0, 0, 1, 1, -8763.1982421875, 724.888916015625, 104.2291107177734375, 0.680676698684692382, 0, 0, 0.333806037902832031, 0.942641794681549072, 120, 255, 1, "", 47720, NULL), +(19708, 180773, 0, 0, 0, 1, 1, -8854.5439453125, 662.6796875, 107.2023773193359375, 5.340708732604980468, 0, 0, -0.45398998260498046, 0.891006767749786376, 120, 255, 1, "", 47720, NULL), +(19709, 180773, 0, 0, 0, 1, 1, -8942.748046875, 987.95489501953125, 135.160858154296875, 5.340708732604980468, 0, 0, -0.45398998260498046, 0.891006767749786376, 120, 255, 1, "", 52237, NULL), +(19710, 180773, 1, 0, 0, 1, 1, 7562.60400390625, -2903.484375, 462.901214599609375, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 120, 255, 1, "", 47720, NULL), +(19711, 180773, 1, 0, 0, 1, 1, 7570.19873046875, -2903.755126953125, 462.81195068359375, 1.640606880187988281, 0, 0, 0.731352806091308593, 0.6819993257522583, 120, 255, 1, "", 47720, NULL), +(19712, 180773, 1, 0, 0, 1, 1, 9710.0869140625, 2525.442626953125, 1343.0679931640625, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, "", 52237, NULL), +(19713, 180773, 1, 0, 0, 1, 1, 9935.6044921875, 2509.44970703125, 1326.9095458984375, 3.857182979583740234, 0, 0, -0.93667125701904296, 0.350209832191467285, 120, 255, 1, "", 52237, NULL), +(19714, 180773, 1, 0, 0, 1, 1, 9986.3056640625, 1978.732666015625, 1342.181640625, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, "", 52237, NULL), +(19715, 180773, 1, 0, 0, 1, 1, 9986.775390625, 2022.328125, 1341.728271484375, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 255, 1, "", 52237, NULL), +(19716, 180773, 571, 0, 0, 1, 1, 5739.92724609375, 677.38018798828125, 648.57440185546875, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, "", 47720, NULL), +(19717, 180773, 571, 0, 0, 1, 1, 5828.04345703125, 504.603515625, 663.94207763671875, 5.009094715118408203, 0, 0, -0.59482288360595703, 0.80385679006576538, 120, 255, 1, "", 47720, NULL), +-- duplicate spawn +-- (19718, 180774, 0, 0, 0, 1, 1, -4634.31591796875, -1026.5972900390625, 511.7818603515625, 1.815141916275024414, 0, 0, 0.788010597229003906, 0.615661680698394775, 120, 255, 1, "", 52237, NULL), +-- (19719, 180774, 0, 0, 0, 1, 1, -4637.8662109375, -934.6649169921875, 517.1827392578125, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, "", 47720, NULL), +-- (19720, 180774, 0, 0, 0, 1, 1, -4640.94775390625, -1177.7257080078125, 511.82611083984375, 4.223697185516357421, 0, 0, -0.85716724395751953, 0.515038192272186279, 120, 255, 1, "", 52237, NULL), +-- (19721, 180774, 0, 0, 0, 1, 1, -4999.5625, -952.12152099609375, 508.382659912109375, 5.672322273254394531, 0, 0, -0.3007049560546875, 0.953717231750488281, 120, 255, 1, "", 47720, NULL), +-- (19722, 180774, 0, 0, 0, 1, 1, -8538.9580078125, 455.3336181640625, 113.5704116821289062, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, "", 52237, NULL), +-- (19723, 180774, 0, 0, 0, 1, 1, -8851.8330078125, 850.70489501953125, 108.8473587036132812, 5.410521507263183593, 0, 0, -0.42261791229248046, 0.906307935714721679, 120, 255, 1, "", 47720, NULL), +-- (19724, 180774, 0, 0, 0, 1, 1, -8859.9287109375, 584.9310302734375, 93.38101959228515625, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +-- (19725, 180774, 0, 0, 0, 1, 1, -8885.669921875, 594.6055908203125, 93.583526611328125, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, "", 52237, NULL), +-- (19726, 180774, 1, 0, 0, 1, 1, 9940.3740234375, 2509.09375, 1327.0860595703125, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 120, 255, 1, "", 52237, NULL), +-- (19727, 180774, 1, 0, 0, 1, 1, 9950.4228515625, 2339.038330078125, 1355.65625, 4.747295856475830078, 0, 0, -0.69465827941894531, 0.719339847564697265, 120, 255, 1, "", 52237, NULL), +-- (19728, 180774, 1, 0, 0, 1, 1, 9952.4931640625, 2258.6494140625, 1349.288330078125, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, "", 47720, NULL), +-- (19729, 180774, 1, 0, 0, 1, 1, 9986.3056640625, 1978.732666015625, 1342.181640625, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, "", 47720, NULL), +-- (19730, 180774, 1, 0, 0, 1, 1, 9986.775390625, 2022.328125, 1341.728271484375, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 255, 1, "", 47720, NULL), +(19731, 180775, 0, 0, 0, 1, 1, 1582.49609375, 227.3899688720703125, -45.8039360046386718, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(19732, 180775, 0, 0, 0, 1, 1, 1582.64453125, 253.4781951904296875, -45.6256942749023437, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, "", 47720, NULL), +(19733, 180775, 0, 0, 0, 1, 1, 1608.5423583984375, 227.2740325927734375, -46.2984237670898437, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 120, 255, 1, "", 47966, NULL), +(19734, 180775, 1, 0, 0, 1, 1, -1124.170166015625, 64.28125, 146.7425079345703125, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 120, 255, 1, "", 47720, NULL), +(19735, 180775, 1, 0, 0, 1, 1, -1420.32470703125, -111.116317749023437, 173.949981689453125, 5.672322273254394531, 0, 0, -0.3007049560546875, 0.953717231750488281, 120, 255, 1, "", 47720, NULL), +(19736, 180775, 1, 0, 0, 1, 1, 1386.3038330078125, -4382.35791015625, 38.70106124877929687, 3.263772249221801757, 0, 0, -0.99813461303710937, 0.061051756143569946, 120, 255, 1, "", 47720, NULL), +(19737, 180775, 571, 0, 0, 1, 1, 5837.24365234375, 507.428009033203125, 663.80596923828125, 5.044002056121826171, 0, 0, -0.58070278167724609, 0.814115643501281738, 120, 255, 1, "", 47720, NULL), +(19738, 180775, 571, 0, 0, 1, 1, 5847.90869140625, 588.421875, 654.30731201171875, 2.007128477096557617, 0, 0, 0.84339141845703125, 0.537299633026123046, 120, 255, 1, "", 47720, NULL), +(19739, 180775, 571, 0, 0, 1, 1, 5879.287109375, 527.8228759765625, 644.27728271484375, 1.762782454490661621, 0, 0, 0.771624565124511718, 0.636078238487243652, 120, 255, 1, "", 47720, NULL), +(19740, 180775, 571, 0, 0, 1, 1, 5888.6943359375, 530.01910400390625, 644.23553466796875, 1.832594871520996093, 0, 0, 0.793353080749511718, 0.608761727809906005, 120, 255, 1, "", 47720, NULL), +(19741, 180777, 0, 0, 0, 1, 1, -4647.05615234375, -954.090087890625, 502.146392822265625, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 120, 255, 1, "", 47720, NULL), +(19742, 180777, 0, 0, 0, 1, 1, -4657.755859375, -940.89898681640625, 502.145721435546875, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 120, 255, 1, "", 47720, NULL), +(19743, 180777, 0, 0, 0, 1, 1, -4657.8505859375, -970.8358154296875, 502.143463134765625, 1.780233979225158691, 0, 0, 0.7771453857421875, 0.629321098327636718, 120, 255, 1, "", 47720, NULL), +(19744, 180777, 0, 0, 0, 1, 1, -4676.447265625, -948.09820556640625, 502.14495849609375, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, "", 47720, NULL), +(19745, 180777, 0, 0, 0, 1, 1, -8736.921875, 1075.32666015625, 90.73262786865234375, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 120, 255, 1, "", 47720, NULL), +(19746, 180777, 0, 0, 0, 1, 1, -8744.134765625, 1009.6397705078125, 96.1605987548828125, 4.223697185516357421, 0, 0, -0.85716724395751953, 0.515038192272186279, 120, 255, 1, "", 47720, NULL), +(19747, 180777, 0, 0, 0, 1, 1, -8758.1220703125, 1068.5181884765625, 90.641632080078125, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, "", 47720, NULL), +(19748, 180777, 0, 0, 0, 1, 1, -8798.6240234375, 938.709228515625, 101.5633163452148437, 0.785396754741668701, 0, 0, 0.38268280029296875, 0.923879802227020263, 120, 255, 1, "", 47720, NULL), +(19749, 180777, 0, 0, 0, 1, 1, -8805.7099609375, 947.6453857421875, 101.5633087158203125, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 120, 255, 1, "", 47720, NULL), +(19750, 180777, 0, 0, 0, 1, 1, -8818.0048828125, 817.32281494140625, 99.18840789794921875, 1.658061861991882324, 0, 0, 0.737277030944824218, 0.67559051513671875, 120, 255, 1, "", 47720, NULL), +(19751, 180777, 0, 0, 0, 1, 1, -8818.8779296875, 684.4285888671875, 98.29520416259765625, 3.717553615570068359, 0, 0, -0.95881938934326171, 0.284016460180282592, 120, 255, 1, "", 47720, NULL), +(19752, 180777, 0, 0, 0, 1, 1, -8826.4892578125, 845.2611083984375, 99.518829345703125, 5.096362113952636718, 0, 0, -0.55919265747070312, 0.829037725925445556, 120, 255, 1, "", 47720, NULL), +(19753, 180777, 0, 0, 0, 1, 1, -8831.8603515625, 678.216796875, 98.31241607666015625, 3.682650327682495117, 0, 0, -0.96362972259521484, 0.26724100112915039, 120, 255, 1, "", 47720, NULL), +(19754, 180777, 0, 0, 0, 1, 1, -8834.6015625, 894.18292236328125, 97.85538482666015625, 5.288348197937011718, 0, 0, -0.4771585464477539, 0.878817260265350341, 120, 255, 1, "", 47720, NULL), +(19755, 180777, 0, 0, 0, 1, 1, -8834.625, 796.4873046875, 96.7004547119140625, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, "", 47720, NULL), +(19756, 180777, 0, 0, 0, 1, 1, -8842.263671875, 726.89434814453125, 97.08579254150390625, 2.129300594329833984, 0, 0, 0.874619483947753906, 0.484810054302215576, 120, 255, 1, "", 47720, NULL), +(19757, 180777, 0, 0, 0, 1, 1, -8846.701171875, 926.5528564453125, 101.9738235473632812, 0.593410074710845947, 0, 0, 0.292370796203613281, 0.95630502700805664, 120, 255, 1, "", 47720, NULL), +(19758, 180777, 0, 0, 0, 1, 1, -8851.84375, 934.48028564453125, 102.2765579223632812, 3.735006093978881835, 0, 0, -0.95630455017089843, 0.292372345924377441, 120, 255, 1, "", 47720, NULL), +(19759, 180777, 0, 0, 0, 1, 1, -8852.9638671875, 722.76397705078125, 97.05820465087890625, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, "", 47720, NULL), +(19760, 180777, 1, 0, 0, 1, 1, 7497.84130859375, -2203.225341796875, 480.22015380859375, 6.248279094696044921, 0, 0, -0.01745223999023437, 0.999847710132598876, 120, 255, 1, "", 47720, NULL), +(19761, 180777, 1, 0, 0, 1, 1, 7499.09814453125, -2191.630126953125, 480.451995849609375, 3.054326534271240234, 0, 0, 0.999048233032226562, 0.043619260191917419, 120, 255, 1, "", 47720, NULL), +(19762, 180777, 1, 0, 0, 1, 1, 7530.31005859375, -2850.197509765625, 458.60400390625, 2.513273954391479492, 0, 0, 0.951056480407714843, 0.309017121791839599, 120, 255, 1, "", 47720, NULL), +(19763, 180777, 1, 0, 0, 1, 1, 7532.81787109375, -2852.513427734375, 458.174957275390625, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 120, 255, 1, "", 47720, NULL), +(19764, 180777, 1, 0, 0, 1, 1, 7559.9072265625, -2871.457763671875, 460.619415283203125, 2.583080768585205078, 0, 0, 0.961260795593261718, 0.275640487670898437, 120, 255, 1, "", 47720, NULL), +(19765, 180777, 1, 0, 0, 1, 1, 7562.45166015625, -2873.018310546875, 460.910980224609375, 2.530723094940185546, 0, 0, 0.953716278076171875, 0.300707906484603881, 120, 255, 1, "", 47720, NULL), +(19766, 180777, 1, 0, 0, 1, 1, 7562.486328125, -2227.1787109375, 471.629547119140625, 3.595378875732421875, 0, 0, -0.97437000274658203, 0.224951311945915222, 120, 255, 1, "", 47720, NULL), +(19767, 180777, 1, 0, 0, 1, 1, 7571.57275390625, -2207.698486328125, 474.834686279296875, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 120, 255, 1, "", 47720, NULL), +(19768, 180777, 1, 0, 0, 1, 1, 7577.5068359375, -2201.813232421875, 475.4521484375, 5.532694816589355468, 0, 0, -0.3665008544921875, 0.93041771650314331, 120, 255, 1, "", 47720, NULL), +(19769, 180777, 1, 0, 0, 1, 1, 7580.08251953125, -2215.165771484375, 473.398223876953125, 2.391098499298095703, 0, 0, 0.930417060852050781, 0.366502493619918823, 120, 255, 1, "", 47720, NULL), +(19770, 180777, 1, 0, 0, 1, 1, 7585.20068359375, -2209.9462890625, 473.86236572265625, 5.532694816589355468, 0, 0, -0.3665008544921875, 0.93041771650314331, 120, 255, 1, "", 47720, NULL), +(19771, 180777, 1, 0, 0, 1, 1, 7586.01806640625, -2220.791015625, 471.576446533203125, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, "", 47720, NULL), +(19772, 180777, 1, 0, 0, 1, 1, 7587.34716796875, -2196.991943359375, 476.20404052734375, 1.343901276588439941, 0, 0, 0.622513771057128906, 0.78260880708694458, 120, 255, 1, "", 47720, NULL), +(19773, 180777, 1, 0, 0, 1, 1, 7591.07666015625, -2214.272705078125, 471.405914306640625, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, "", 47720, NULL), +(19774, 180777, 1, 0, 0, 1, 1, 7619.00537109375, -2221.212158203125, 469.807037353515625, 0.837757468223571777, 0, 0, 0.406736373901367187, 0.913545548915863037, 120, 255, 1, "", 47720, NULL), +(19775, 180777, 1, 0, 0, 1, 1, 7925.33251953125, -2550.147216796875, 486.068634033203125, 4.101525306701660156, 0, 0, -0.88701057434082031, 0.461749136447906494, 120, 255, 1, "", 47720, NULL), +(19776, 180777, 1, 0, 0, 1, 1, 7937.65966796875, -2362.064208984375, 488.5504150390625, 4.642575740814208984, 0, 0, -0.731353759765625, 0.681998312473297119, 120, 255, 1, "", 47720, NULL), +(19777, 180777, 1, 0, 0, 1, 1, 7948.85498046875, -2629.29736328125, 493.1260986328125, 1.361356139183044433, 0, 0, 0.629320144653320312, 0.77714616060256958, 120, 255, 1, "", 47720, NULL), +(19778, 180777, 1, 0, 0, 1, 1, 7951.52783203125, -2615.86669921875, 492.922637939453125, 1.710421562194824218, 0, 0, 0.754709243774414062, 0.656059443950653076, 120, 255, 1, "", 47720, NULL), +(19779, 180777, 1, 0, 0, 1, 1, 7960.4541015625, -2515.815673828125, 485.955413818359375, 5.340708732604980468, 0, 0, -0.45398998260498046, 0.891006767749786376, 120, 255, 1, "", 47720, NULL), +(19780, 180777, 1, 0, 0, 1, 1, 7971.509765625, -2352.850341796875, 488.270904541015625, 1.727874636650085449, 0, 0, 0.760405540466308593, 0.649448513984680175, 120, 255, 1, "", 47720, NULL), +(19781, 180777, 1, 0, 0, 1, 1, 7993.1337890625, -2468.05859375, 489.50836181640625, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 120, 255, 1, "", 47720, NULL), +(19782, 180879, 0, 0, 0, 1, 1, -8738.732421875, 1076.04345703125, 90.43314361572265625, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, "", 47720, NULL), +(19783, 180879, 1, 0, 0, 1, 1, 7592.4599609375, -2218.00341796875, 469.643280029296875, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, "", 47720, NULL), +(19784, 180879, 1, 0, 0, 1, 1, 7593.80712890625, -2222.592041015625, 469.157562255859375, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, "", 47720, NULL), +(19785, 180879, 1, 0, 0, 1, 1, 7595.4599609375, -2226.798095703125, 468.384918212890625, 4.764749526977539062, 0, 0, -0.6883544921875, 0.725374460220336914, 120, 255, 1, "", 47720, NULL), +(19786, 180879, 1, 0, 0, 1, 1, 7946.62158203125, -2621.15625, 492.354156494140625, 1.85004889965057373, 0, 0, 0.798635482788085937, 0.60181504487991333, 120, 255, 1, "", 47720, NULL), +(19787, 180880, 0, 0, 0, 1, 1, -4643.90087890625, -952.42218017578125, 502.605316162109375, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, "", 47720, NULL), +(19788, 180880, 0, 0, 0, 1, 1, -4644.11572265625, -952.0615234375, 502.61224365234375, 6.021387100219726562, 0, 0, -0.13052558898925781, 0.991444945335388183, 120, 255, 1, "", 47720, NULL), +(19789, 180880, 0, 0, 0, 1, 1, -8738.7744140625, 1075.6944580078125, 92.25988006591796875, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 120, 255, 1, "", 47720, NULL), +(19790, 180880, 0, 0, 0, 1, 1, 1647.6561279296875, 234.4007110595703125, 63.72351837158203125, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, "", 47720, NULL), +(19791, 180880, 0, 0, 0, 1, 1, 1648.06884765625, 234.2220001220703125, 63.71657180786132812, 1.361356139183044433, 0, 0, 0.629320144653320312, 0.77714616060256958, 120, 255, 1, "", 47720, NULL), +(19792, 180880, 1, 0, 0, 1, 1, -1044.06591796875, -217.742889404296875, 160.28411865234375, 1.274088263511657714, 0, 0, 0.594821929931640625, 0.80385744571685791, 120, 255, 1, "", 47720, NULL), +(19793, 180880, 1, 0, 0, 1, 1, 10146.447265625, 2572.517333984375, 1322.500732421875, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, "", 47720, NULL), +(19794, 180880, 1, 0, 0, 1, 1, 1969.0885009765625, -4258.66845703125, 33.10462188720703125, 1.989672422409057617, 0, 0, 0.838669776916503906, 0.544640243053436279, 120, 255, 1, "", 47720, NULL), +(19795, 180880, 1, 0, 0, 1, 1, 1969.454833984375, -4258.7880859375, 33.10087203979492187, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, "", 47720, NULL), +(19796, 180880, 1, 0, 0, 1, 1, 7591.9755859375, -2217.979736328125, 471.4844970703125, 1.466075778007507324, 0, 0, 0.669130325317382812, 0.74314504861831665, 120, 255, 1, "", 47720, NULL), +(19797, 180880, 1, 0, 0, 1, 1, 7593.197265625, -2221.986083984375, 470.99212646484375, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 120, 255, 1, "", 47720, NULL), +(19798, 180880, 1, 0, 0, 1, 1, 7593.20947265625, -2218.23779296875, 471.467926025390625, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 120, 255, 1, "", 47720, NULL), +(19799, 180880, 1, 0, 0, 1, 1, 7596.009765625, -2226.954833984375, 470.2149658203125, 4.782202720642089843, 0, 0, -0.68199825286865234, 0.731353819370269775, 120, 255, 1, "", 47720, NULL), +(19800, 180881, 0, 0, 0, 1, 1, -4644.55859375, -952.65008544921875, 502.59130859375, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 120, 255, 1, "", 47720, NULL), +(19801, 180881, 0, 0, 0, 1, 1, -4644.697265625, -951.6541748046875, 502.587310791015625, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, "", 47720, NULL), +(19802, 180881, 0, 0, 0, 1, 1, -8738.26953125, 1076.298583984375, 92.25734710693359375, 1.431168079376220703, 0, 0, 0.656058311462402343, 0.754710197448730468, 120, 255, 1, "", 47720, NULL), +(19803, 180881, 0, 0, 0, 1, 1, 1648.172119140625, 233.6341705322265625, 63.70268630981445312, 1.431168079376220703, 0, 0, 0.656058311462402343, 0.754710197448730468, 120, 255, 1, "", 47720, NULL), +(19804, 180881, 1, 0, 0, 1, 1, -1043.50244140625, -218.552688598632812, 160.2694854736328125, 0.209439441561698913, 0, 0, 0.104528427124023437, 0.994521915912628173, 120, 255, 1, "", 47720, NULL), +(19805, 180881, 1, 0, 0, 1, 1, 1969.625, -4257.75341796875, 33.0820770263671875, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 120, 255, 1, "", 47720, NULL), +(19806, 180881, 1, 0, 0, 1, 1, 1970.2882080078125, -4258.60791015625, 33.08863449096679687, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, "", 47720, NULL), +(19807, 180881, 1, 0, 0, 1, 1, 7592.4453125, -2217.558837890625, 471.4581298828125, 0.733038187026977539, 0, 0, 0.358367919921875, 0.933580458164215087, 120, 255, 1, "", 47720, NULL), +(19808, 180881, 1, 0, 0, 1, 1, 7592.76416015625, -2218.324462890625, 471.471954345703125, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, "", 47720, NULL), +(19809, 180881, 1, 0, 0, 1, 1, 7594.0625, -2222.04052734375, 470.986328125, 3.595378875732421875, 0, 0, -0.97437000274658203, 0.224951311945915222, 120, 255, 1, "", 47720, NULL), +(19810, 180881, 1, 0, 0, 1, 1, 7595.16259765625, -2227.191650390625, 470.1959228515625, 4.136432647705078125, 0, 0, -0.87881660461425781, 0.477159708738327026, 120, 255, 1, "", 47720, NULL), +(19811, 180881, 1, 0, 0, 1, 1, 7595.4755859375, -2226.666259765625, 470.208160400390625, 2.024578809738159179, 0, 0, 0.848047256469726562, 0.529920578002929687, 120, 255, 1, "", 47720, NULL), +(19812, 180882, 0, 0, 0, 1, 1, -4643.59716796875, -952.0538330078125, 502.58453369140625, 3.926995515823364257, 0, 0, -0.92387866973876953, 0.38268551230430603, 120, 255, 1, "", 47720, NULL), +(19813, 180882, 0, 0, 0, 1, 1, -4643.97314453125, -951.591796875, 502.591461181640625, 5.061456203460693359, 0, 0, -0.57357597351074218, 0.819152355194091796, 120, 255, 1, "", 47720, NULL), +(19814, 180882, 0, 0, 0, 1, 1, -8738.388671875, 1075.7413330078125, 92.249420166015625, 0.209439441561698913, 0, 0, 0.104528427124023437, 0.994521915912628173, 120, 255, 1, "", 47720, NULL), +(19815, 180882, 0, 0, 0, 1, 1, -8739.15625, 1075.7742919921875, 92.25446319580078125, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 120, 255, 1, "", 47720, NULL), +(19816, 180882, 0, 0, 0, 1, 1, 1647.689208984375, 233.98785400390625, 63.70268630981445312, 3.577930212020874023, 0, 0, -0.97629547119140625, 0.216442063450813293, 120, 255, 1, "", 47720, NULL), +(19817, 180882, 1, 0, 0, 1, 1, -1043.98876953125, -218.14703369140625, 160.267852783203125, 1.919861555099487304, 0, 0, 0.819151878356933593, 0.573576688766479492, 120, 255, 1, "", 47720, NULL), +(19818, 180882, 1, 0, 0, 1, 1, -1043.9993896484375, -218.598358154296875, 160.260986328125, 0.872663915157318115, 0, 0, 0.422617912292480468, 0.906307935714721679, 120, 255, 1, "", 47720, NULL), +(19819, 180882, 1, 0, 0, 1, 1, 1969.73095703125, -4258.3125, 33.08308792114257812, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 120, 255, 1, "", 47720, NULL), +(19820, 180882, 1, 0, 0, 1, 1, 1969.8489990234375, -4258.85595703125, 33.09189224243164062, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, "", 47720, NULL), +(19821, 180882, 1, 0, 0, 1, 1, 7592.15087890625, -2218.3037109375, 471.45562744140625, 2.181660413742065429, 0, 0, 0.887010574340820312, 0.461749136447906494, 120, 255, 1, "", 47720, NULL), +(19822, 180882, 1, 0, 0, 1, 1, 7592.40087890625, -2218.572998046875, 471.441619873046875, 2.914689540863037109, 0, 0, 0.993571281433105468, 0.113208353519439697, 120, 255, 1, "", 47720, NULL), +(19823, 180882, 1, 0, 0, 1, 1, 7593.6181640625, -2221.82568359375, 470.968963623046875, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 120, 255, 1, "", 47720, NULL), +(19824, 180882, 1, 0, 0, 1, 1, 7595.61962890625, -2227.267333984375, 470.2169189453125, 3.961898565292358398, 0, 0, -0.91705989837646484, 0.398749500513076782, 120, 255, 1, "", 47720, NULL), +(19825, 180882, 1, 0, 0, 1, 1, 7595.93408203125, -2226.4208984375, 470.189117431640625, 1.710421562194824218, 0, 0, 0.754709243774414062, 0.656059443950653076, 120, 255, 1, "", 47720, NULL), +(19826, 180883, 0, 0, 0, 1, 1, -4643.86181640625, -952.81622314453125, 502.5914306640625, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 120, 255, 1, "", 47720, NULL), +(19827, 180883, 0, 0, 0, 1, 1, -4644.57275390625, -952.23114013671875, 502.59130859375, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 120, 255, 1, "", 47720, NULL), +(19828, 180883, 0, 0, 0, 1, 1, -8738.8330078125, 1076.392333984375, 92.24471282958984375, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 120, 255, 1, "", 47720, NULL), +(19829, 180883, 0, 0, 0, 1, 1, 1647.146484375, 233.796600341796875, 63.70268630981445312, 0.767943859100341796, 0, 0, 0.374606132507324218, 0.927184045314788818, 120, 255, 1, "", 47720, NULL), +(19830, 180883, 1, 0, 0, 1, 1, -1043.544189453125, -217.953994750976562, 160.263214111328125, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 120, 255, 1, "", 47720, NULL), +(19831, 180883, 1, 0, 0, 1, 1, 1969.1336669921875, -4258.16650390625, 33.08469772338867187, 5.654868602752685546, 0, 0, -0.30901622772216796, 0.95105677843093872, 120, 255, 1, "", 47720, NULL), +(19832, 180883, 1, 0, 0, 1, 1, 7593.01220703125, -2217.75, 471.46685791015625, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 120, 255, 1, "", 47720, NULL), +(19833, 180883, 1, 0, 0, 1, 1, 7594.8212890625, -2226.713623046875, 470.199371337890625, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 120, 255, 1, "", 47720, NULL), +(19834, 180883, 1, 0, 0, 1, 1, 7595.267578125, -2226.15625, 470.204803466796875, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 120, 255, 1, "", 47720, NULL), +(19835, 180888, 1, 0, 0, 1, 1, -1043.4896240234375, -217.670135498046875, 159.5638885498046875, 5.986480236053466796, 0, 0, -0.14780902862548828, 0.989015936851501464, 120, 255, 1, "", 47720, NULL), +-- too low in the ground - probably needs manual z adjustment +(19836, 180888, 1, 0, 0, 1, 1, 1969.9249267578125, -4258.18603515625, 32.15699005126953125, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, "", 47720, NULL); + +-- enable all spawns for eventEntry 7 +DELETE FROM `game_event_gameobject` WHERE (`eventEntry` = 7) +AND (`guid` IN (SELECT `guid` FROM `gameobject` WHERE `id` IN (180757, 180758, 180759, 180760, 180761, 180762, 180765, 180766, 180767, 180768, 180769, 180770, 180773, 180774, 180775, 180777, 180778, 180878, 180879, 180880, 180881, 180882, 180883, 180888))); +INSERT INTO `game_event_gameobject` (SELECT 7, `guid` FROM `gameobject` WHERE `id` IN (180757, 180758, 180759, 180760, 180761, 180762, 180765, 180766, 180767, 180768, 180769, 180770, 180773, 180774, 180775, 180777, 180778, 180878, 180879, 180880, 180881, 180882, 180883, 180888)); From e3bcb6c14b4003578ba05623498195519b21ab6d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 30 Nov 2024 15:22:16 +0000 Subject: [PATCH 07/66] chore(DB): import pending files Referenced commit(s): 6ec4eb5ab6209fe89be0d8b3770c43ccf97b24e2 --- .../rev_1731870187134695200.sql => db_world/2024_11_30_02.sql} | 1 + .../rev_1732971648185284700.sql => db_world/2024_11_30_03.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/rev_1731870187134695200.sql => db_world/2024_11_30_02.sql} (99%) rename data/sql/updates/{pending_db_world/rev_1732971648185284700.sql => db_world/2024_11_30_03.sql} (98%) diff --git a/data/sql/updates/pending_db_world/rev_1731870187134695200.sql b/data/sql/updates/db_world/2024_11_30_02.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1731870187134695200.sql rename to data/sql/updates/db_world/2024_11_30_02.sql index 68c84fa6c2ec01..69e2e0a6904b44 100644 --- a/data/sql/updates/pending_db_world/rev_1731870187134695200.sql +++ b/data/sql/updates/db_world/2024_11_30_02.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_30_01 -> 2024_11_30_02 -- Update gameobject 'Lunar Festival' with sniffed values -- updated spawns DELETE FROM `gameobject` WHERE (`id` IN (180878, 180769, 180770, 180778, 180767, 180761, 180775, 180768, 180762, 180759, 180760, 180766, 180757, 180774, 180773, 180765, 180758, 180879, 180880, 180881, 180882, 180883, 180777, 180888)) diff --git a/data/sql/updates/pending_db_world/rev_1732971648185284700.sql b/data/sql/updates/db_world/2024_11_30_03.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1732971648185284700.sql rename to data/sql/updates/db_world/2024_11_30_03.sql index 6c6e400176462f..dbd1dd472c46e5 100644 --- a/data/sql/updates/pending_db_world/rev_1732971648185284700.sql +++ b/data/sql/updates/db_world/2024_11_30_03.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_30_02 -> 2024_11_30_03 -- Update gameobject 'Dwarf Hero / Gnome Hero' with sniffed values -- new spawns DELETE FROM `gameobject` WHERE (`id` IN (180755, 180756)) From 6b5f50cdbe145921ec921d2eed99c0e6ad7eb52a Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Sat, 30 Nov 2024 16:26:57 +0100 Subject: [PATCH 08/66] fix(Core/Database): prevent crash due to special chars in branch name (#20776) add prepared statements to escape special characters in branch name --- src/server/apps/worldserver/Main.cpp | 5 ++++- .../database/Database/Implementation/LoginDatabase.cpp | 2 ++ .../database/Database/Implementation/LoginDatabase.h | 2 ++ .../database/Database/Implementation/WorldDatabase.cpp | 1 + .../database/Database/Implementation/WorldDatabase.h | 1 + src/server/game/World/World.cpp | 7 +++++-- 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/server/apps/worldserver/Main.cpp b/src/server/apps/worldserver/Main.cpp index 68fb037e839ca5..01d182623dedb5 100644 --- a/src/server/apps/worldserver/Main.cpp +++ b/src/server/apps/worldserver/Main.cpp @@ -467,7 +467,10 @@ bool StartDB() ClearOnlineAccounts(); ///- Insert version info into DB - WorldDatabase.Execute("UPDATE version SET core_version = '{}', core_revision = '{}'", GitRevision::GetFullVersion(), GitRevision::GetHash()); // One-time query + WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_VERSION); + stmt->SetData(0, GitRevision::GetFullVersion()); + stmt->SetData(1, GitRevision::GetHash()); + WorldDatabase.Execute(stmt); sWorld->LoadDBVersion(); diff --git a/src/server/database/Database/Implementation/LoginDatabase.cpp b/src/server/database/Database/Implementation/LoginDatabase.cpp index 5b20d86930c5d6..79559524fdebe7 100644 --- a/src/server/database/Database/Implementation/LoginDatabase.cpp +++ b/src/server/database/Database/Implementation/LoginDatabase.cpp @@ -139,6 +139,8 @@ void LoginDatabaseConnection::DoPrepareStatements() PrepareStatement(LOGIN_SEL_ACCOUNT_TOTP_SECRET, "SELECT totp_secret FROM account WHERE id = ?", CONNECTION_SYNCH); PrepareStatement(LOGIN_UPD_ACCOUNT_TOTP_SECRET, "UPDATE account SET totp_secret = ? WHERE id = ?", CONNECTION_ASYNC); + + PrepareStatement(LOGIN_INS_UPTIME, "INSERT INTO uptime (realmid, starttime, uptime, revision) VALUES (?, ?, 0, ?)", CONNECTION_ASYNC); } LoginDatabaseConnection::LoginDatabaseConnection(MySQLConnectionInfo& connInfo) : MySQLConnection(connInfo) diff --git a/src/server/database/Database/Implementation/LoginDatabase.h b/src/server/database/Database/Implementation/LoginDatabase.h index 36509991352eef..713dc3b07c1062 100644 --- a/src/server/database/Database/Implementation/LoginDatabase.h +++ b/src/server/database/Database/Implementation/LoginDatabase.h @@ -119,6 +119,8 @@ enum LoginDatabaseStatements : uint32 LOGIN_SEL_ACCOUNT_TOTP_SECRET, LOGIN_UPD_ACCOUNT_TOTP_SECRET, + LOGIN_INS_UPTIME, + MAX_LOGINDATABASE_STATEMENTS }; diff --git a/src/server/database/Database/Implementation/WorldDatabase.cpp b/src/server/database/Database/Implementation/WorldDatabase.cpp index c6e1c5d0553b3d..323f4ccbd8d204 100644 --- a/src/server/database/Database/Implementation/WorldDatabase.cpp +++ b/src/server/database/Database/Implementation/WorldDatabase.cpp @@ -95,6 +95,7 @@ void WorldDatabaseConnection::DoPrepareStatements() PrepareStatement(WORLD_INS_GAMEOBJECT_ADDON, "INSERT INTO gameobject_addon (guid, invisibilityType, invisibilityValue) VALUES (?, 0, 0)", CONNECTION_ASYNC); // 0: uint8 PrepareStatement(WORLD_SEL_REQ_XP, "SELECT Experience FROM player_xp_for_level WHERE Level = ?", CONNECTION_SYNCH); + PrepareStatement(WORLD_UPD_VERSION, "UPDATE version SET core_version = ?, core_revision = ?", CONNECTION_ASYNC); } WorldDatabaseConnection::WorldDatabaseConnection(MySQLConnectionInfo& connInfo) : MySQLConnection(connInfo) diff --git a/src/server/database/Database/Implementation/WorldDatabase.h b/src/server/database/Database/Implementation/WorldDatabase.h index 527d74764b9f32..ebfdcfe0705bf2 100644 --- a/src/server/database/Database/Implementation/WorldDatabase.h +++ b/src/server/database/Database/Implementation/WorldDatabase.h @@ -100,6 +100,7 @@ enum WorldDatabaseStatements : uint32 WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA, WORLD_SEL_REQ_XP, WORLD_INS_GAMEOBJECT_ADDON, + WORLD_UPD_VERSION, MAX_WORLDDATABASE_STATEMENTS }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index fb910444ec49ba..5955ec6b5133a3 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2059,8 +2059,11 @@ void World::SetInitialWorldSettings() LOG_INFO("server.loading", "Initialize Game Time and Timers"); LOG_INFO("server.loading", " "); - LoginDatabase.Execute("INSERT INTO uptime (realmid, starttime, uptime, revision) VALUES ({}, {}, 0, '{}')", - realm.Id.Realm, uint32(GameTime::GetStartTime().count()), GitRevision::GetFullVersion()); // One-time query + LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_UPTIME); + stmt->SetData(0, realm.Id.Realm); + stmt->SetData(1, uint32(GameTime::GetStartTime().count())); + stmt->SetData(2, GitRevision::GetFullVersion()); + LoginDatabase.Execute(stmt); _timers[WUPDATE_WEATHERS].SetInterval(1 * IN_MILLISECONDS); _timers[WUPDATE_AUCTIONS].SetInterval(MINUTE * IN_MILLISECONDS); From afc81098f290b539a5812cc2a4d4ee076983e7a9 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 30 Nov 2024 12:28:19 -0300 Subject: [PATCH 09/66] =?UTF-8?q?fix(Scripts/ZulAman):=20Fix=20Vortex=20no?= =?UTF-8?q?t=20following=20players=20and=20also=20spell=E2=80=A6=20(#20780?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(Scripts/ZulAman): Fix Vortex not following players and also spell missing * Update boss_zuljin.cpp --- .../game/Spells/SpellInfoCorrections.cpp | 6 ++++ .../EasternKingdoms/ZulAman/boss_zuljin.cpp | 29 ++++++++++--------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 36015f5cf07aed..5896ee978adfdb 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4856,6 +4856,12 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->AuraInterruptFlags &= ~(AURA_INTERRUPT_FLAG_CHANGE_MAP | AURA_INTERRUPT_FLAG_TELEPORTED); }); + // Summon Cyclone + ApplySpellFix({ 43112 }, [](SpellInfo* spellInfo) + { + spellInfo->RequiresSpellFocus = 0; + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp index 852b5ae45eb905..19422f9f39adb5 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp @@ -314,17 +314,7 @@ struct boss_zuljin : public BossAI { me->SetCombatMovement(false); DoCastSelf(SPELL_ENERGY_STORM, true); // enemy aura - for (uint8 i = 0; i < 4; ++i) - { - if (Creature* vortex = DoSpawnCreature(CREATURE_FEATHER_VORTEX, 0, 0, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0)) - { - vortex->CastSpell(vortex, SPELL_CYCLONE_PASSIVE, true); - vortex->CastSpell(vortex, SPELL_CYCLONE_VISUAL, true); - vortex->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - vortex->SetSpeed(MOVE_RUN, 1.0f); - DoZoneInCombat(vortex); - } - } + DoCastAOE(SPELL_SUMMON_CYCLONE, true); } else { @@ -362,9 +352,18 @@ struct npc_zuljin_vortex : public ScriptedAI { npc_zuljin_vortex(Creature* creature) : ScriptedAI(creature) { } - void Reset() override { } - - void JustEngagedWith(Unit* /*target*/) override { } + void Reset() override + { + if (WorldObject* summoner = GetSummoner()) + if (Creature* zuljin = summoner->ToCreature()) + me->SetLevel(zuljin->GetLevel()); + + DoCastSelf(SPELL_CYCLONE_PASSIVE, true); + DoCastSelf(SPELL_CYCLONE_VISUAL, true); + me->SetSpeed(MOVE_RUN, 1.0f); + me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); + DoZoneInCombat(); + } void SpellHit(Unit* caster, SpellInfo const* spell) override { @@ -374,6 +373,8 @@ struct npc_zuljin_vortex : public ScriptedAI void UpdateAI(uint32 /*diff*/) override { + UpdateVictim(); + //if the vortex reach the target, it change his target to another player if (me->IsWithinMeleeRange(me->GetVictim())) AttackStart(SelectTarget(SelectTargetMethod::Random, 0)); From 00109faa86a8828e9d1db7a935db495ad1e8c808 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 30 Nov 2024 15:13:25 -0300 Subject: [PATCH 10/66] =?UTF-8?q?fix(Scripts/ZulAman):=20Reset=20threat=20?= =?UTF-8?q?after=20Zuljin=20does=20his=20phase=20transi=E2=80=A6=20(#20782?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(Scripts/ZulAman): Reset threat after Zuljin does his phase transition transformation --- src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp index 19422f9f39adb5..b78724e297312e 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp @@ -309,6 +309,7 @@ struct boss_zuljin : public BossAI me->m_Events.AddEventAtOffset([&] { me->SetReactState(REACT_AGGRESSIVE); DoCastSelf(Transform[_nextPhase].spell); + DoResetThreatList(); if (_nextPhase == PHASE_EAGLE) { @@ -331,7 +332,6 @@ struct boss_zuljin : public BossAI me->SetReactState(REACT_PASSIVE); DoStopAttack(); me->GetMotionMaster()->Clear(); - DoResetThreatList(); me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0); me->RemoveAurasDueToSpell(Transform[NextPhase].unaura); From e9137d4d4d2f89fca62ebdd54cc5392729b8bff8 Mon Sep 17 00:00:00 2001 From: "Riley S." Date: Sat, 30 Nov 2024 14:18:32 -0500 Subject: [PATCH 11/66] fix(Core/Spells): Resolve invalid spell casts on dead players when the cast is valid. (#20712) * Initial fix for #20509 * small revert * Two way visibility between ghosts. * clean up temporary changes. * clean up debug code. * small typo * revert .gitignore * fix codestyle * Add missing flag, resolve issue where cast was failing while alive. * Update SpellInfo.cpp Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> --------- Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> --- src/server/game/Entities/Creature/Creature.cpp | 4 +++- src/server/game/Spells/SpellInfo.cpp | 12 +++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 27c84183663823..6617ba0dad2568 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1201,8 +1201,10 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 phaseMask, u m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST); } else if (cinfo->type_flags & CREATURE_TYPE_FLAG_VISIBLE_TO_GHOSTS) // Xinef: Add ghost visibility for ghost units + { m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE | GHOST_VISIBILITY_GHOST); - + m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE | GHOST_VISIBILITY_GHOST); + } if (Entry == VISUAL_WAYPOINT) SetVisible(false); diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 2615535ec9d8c1..1e5ad942d3b97d 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1775,13 +1775,11 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, WorldObject const* ta return SPELL_FAILED_TARGET_AFFECTING_COMBAT; // only spells with SPELL_ATTR3_ONLY_ON_GHOSTS can target ghosts - if (((IsRequiringDeadTarget() != 0) != unitTarget->HasAuraType(SPELL_AURA_GHOST)) && !(IsDeathPersistent() && IsAllowingDeadTarget())) - { - if (AttributesEx3 & SPELL_ATTR3_ONLY_ON_GHOSTS) - return SPELL_FAILED_TARGET_NOT_GHOST; - else - return SPELL_FAILED_BAD_TARGETS; - } + if (IsRequiringDeadTarget() && !unitTarget->HasAuraType(SPELL_AURA_GHOST)) + return SPELL_FAILED_TARGET_NOT_GHOST; + + if (!IsDeathPersistent() && !IsAllowingDeadTarget()) + return SPELL_FAILED_BAD_TARGETS; if (caster != unitTarget) { From 4a8247824e5377b376e68b9bf760e0668d8bbe9a Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 30 Nov 2024 16:52:10 -0300 Subject: [PATCH 12/66] =?UTF-8?q?fix(Scripts/ZulAman):=20Hex=20Lord=20Mala?= =?UTF-8?q?crass=20shouldn't=20use=20previous=20class=E2=80=A6=20(#20784)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(Scripts/ZulAman): Hex Lord Malacrass shouldn't use previous class abilities after siphon --- .../EasternKingdoms/ZulAman/boss_hexlord.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp index 390df838feb1c0..ec5ca7e773fe00 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp @@ -134,7 +134,8 @@ enum Misc { MAX_ADD_COUNT = 4, ADDITIONAL_CLASS_SPRIEST = 11, - AURA_SHADOW_FORM = 15473 + AURA_SHADOW_FORM = 15473, + GROUP_CLASS_ABILITY = 1 }; enum AbilityTarget @@ -264,6 +265,7 @@ struct boss_hexlord_malacrass : public BossAI }); ScheduleTimedEvent(30s, [&]{ + scheduler.CancelGroup(GROUP_CLASS_ABILITY); DoCastSelf(SPELL_SPIRIT_BOLTS); scheduler.Schedule(10s, [this](TaskContext) { @@ -277,14 +279,12 @@ struct boss_hexlord_malacrass : public BossAI siphonTrigger->GetMotionMaster()->MoveFollow(me, 0.0f, 0.0f); if (Player* player = target->ToPlayer()) _currentClass = player->HasAura(AURA_SHADOW_FORM) ? uint8(ADDITIONAL_CLASS_SPRIEST) : player->getClass(); + + ScheduleClassAbility(); } } }); }, 40s); - ScheduleTimedEvent(_classAbilityTimer, [&]{ - if (_currentClass) - UseAbility(); - }, _classAbilityTimer); } void UseAbility() @@ -319,6 +319,15 @@ struct boss_hexlord_malacrass : public BossAI _classAbilityTimer = PlayerAbility[_currentClass][random].cooldown; } + void ScheduleClassAbility() + { + scheduler.Schedule(_classAbilityTimer, GROUP_CLASS_ABILITY, [this](TaskContext context) + { + UseAbility(); + context.Repeat(_classAbilityTimer); + }); + } + void KilledUnit(Unit* victim) override { BossAI::KilledUnit(victim); From bef9e46e9bfb7fa7e4cce8541d888f4f39b59fab Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 30 Nov 2024 16:52:57 -0300 Subject: [PATCH 13/66] refactor(Scripts/TheNexus): Update Command Kolurg script (#20783) --- .../boss_commander_stoutbeard_kolurg.cpp | 80 ++++++------------- 1 file changed, 23 insertions(+), 57 deletions(-) diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_stoutbeard_kolurg.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_stoutbeard_kolurg.cpp index 3e73dda8e4027d..6f7559285466f9 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_stoutbeard_kolurg.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_stoutbeard_kolurg.cpp @@ -27,15 +27,6 @@ enum Spells SPELL_WHIRLWIND = 38618 }; -enum Events -{ - EVENT_BATTLE_SHOUT = 1, - EVENT_FRIGHTENING_SHOUT = 2, - EVENT_WHIRLWIND = 3, - EVENT_COMMANDER_CHARGE = 4, - EVENT_KILL_TALK = 5 -}; - enum Says { SAY_AGGRO = 0, @@ -45,32 +36,40 @@ enum Says struct boss_commander_stoutbeard : public BossAI { - boss_commander_stoutbeard(Creature* creature) : BossAI(creature, DATA_COMMANDER_EVENT) {} - - void Reset() override - { - BossAI::Reset(); - } + boss_commander_stoutbeard(Creature* creature) : BossAI(creature, DATA_COMMANDER_EVENT) { } void JustEngagedWith(Unit* who) override { BossAI::JustEngagedWith(who); Talk(SAY_AGGRO); - events.ScheduleEvent(EVENT_BATTLE_SHOUT, 0ms); - events.ScheduleEvent(EVENT_FRIGHTENING_SHOUT, 10s); - events.ScheduleEvent(EVENT_WHIRLWIND, 15s); - events.ScheduleEvent(EVENT_COMMANDER_CHARGE, 1s); me->RemoveAllAuras(); + + ScheduleTimedEvent(1s, [&] + { + DoCastSelf(SPELL_BATTLE_SHOUT, true); + }, 2min); + + ScheduleTimedEvent(10s, [&] + { + DoCastVictim(SPELL_FRIGHTENING_SHOUT); + }, 15s, 20s); + + ScheduleTimedEvent(15s, [&] + { + DoCastAOE(SPELL_WHIRLWIND); + }, 16s); + + ScheduleTimedEvent(1s, [&] + { + if (Unit* target = SelectTarget(SelectTargetMethod::MinDistance, 0, 25.0f)) + DoCast(target, SPELL_CHARGE); + }, 20s); } void KilledUnit(Unit*) override { - if (events.GetNextEventTime(EVENT_KILL_TALK) == 0) - { - Talk(SAY_KILL); - events.ScheduleEvent(EVENT_KILL_TALK, 6s); - } + Talk(SAY_KILL); } void JustDied(Unit* killer) override @@ -78,39 +77,6 @@ struct boss_commander_stoutbeard : public BossAI BossAI::JustDied(killer); Talk(SAY_DEATH); } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - switch (events.ExecuteEvent()) - { - case EVENT_BATTLE_SHOUT: - me->CastSpell(me, SPELL_BATTLE_SHOUT, true); - events.ScheduleEvent(EVENT_BATTLE_SHOUT, 2min); - break; - case EVENT_FRIGHTENING_SHOUT: - me->CastSpell(me->GetVictim(), SPELL_FRIGHTENING_SHOUT, false); - events.ScheduleEvent(EVENT_FRIGHTENING_SHOUT, 15s, 20s); - break; - case EVENT_WHIRLWIND: - me->CastSpell(me, SPELL_WHIRLWIND, false); - events.ScheduleEvent(EVENT_WHIRLWIND, 16s); - break; - case EVENT_COMMANDER_CHARGE: - if (Unit* target = SelectTarget(SelectTargetMethod::MinDistance, 0, 25.0f)) - me->CastSpell(target, SPELL_CHARGE, false); - events.ScheduleEvent(EVENT_COMMANDER_CHARGE, 20s); - break; - } - - DoMeleeAttackIfReady(); - } }; void AddSC_boss_commander_stoutbeard() From 7d3b3ae72fde389cc4dd96b5e06db56d7854e269 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 30 Nov 2024 17:22:28 -0300 Subject: [PATCH 14/66] fix(DB/Creature): Fix Zul'jin formations (#20781) --- .../pending_db_world/rev_1732987456910406300.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1732987456910406300.sql diff --git a/data/sql/updates/pending_db_world/rev_1732987456910406300.sql b/data/sql/updates/pending_db_world/rev_1732987456910406300.sql new file mode 100644 index 00000000000000..0c626d43a783a6 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1732987456910406300.sql @@ -0,0 +1,12 @@ +-- +DELETE FROM `creature_formations` WHERE `leaderGUID` = 89358; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES +(89358, 89358, 0, 0, 27), +(89358, 12923, 0, 0, 27), +(89358, 12924, 0, 0, 27), +(89358, 9252, 0, 0, 27), +(89358, 4915, 0, 0, 27), +(89358, 12922, 0, 0, 27), +(89358, 12404, 0, 0, 27), +(89358, 11906, 0, 0, 27), +(89358, 10560, 0, 0, 27); From fc9e7309742c86de6aba3791d2cb2ff1ce910080 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 30 Nov 2024 20:23:24 +0000 Subject: [PATCH 15/66] chore(DB): import pending files Referenced commit(s): 7d3b3ae72fde389cc4dd96b5e06db56d7854e269 --- .../rev_1732987456910406300.sql => db_world/2024_11_30_04.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1732987456910406300.sql => db_world/2024_11_30_04.sql} (89%) diff --git a/data/sql/updates/pending_db_world/rev_1732987456910406300.sql b/data/sql/updates/db_world/2024_11_30_04.sql similarity index 89% rename from data/sql/updates/pending_db_world/rev_1732987456910406300.sql rename to data/sql/updates/db_world/2024_11_30_04.sql index 0c626d43a783a6..c0aec0a4f44472 100644 --- a/data/sql/updates/pending_db_world/rev_1732987456910406300.sql +++ b/data/sql/updates/db_world/2024_11_30_04.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_30_03 -> 2024_11_30_04 -- DELETE FROM `creature_formations` WHERE `leaderGUID` = 89358; INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES From 5e4f6ac57675c23fc4bc94d1b880f7b3270ba274 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sun, 1 Dec 2024 00:06:26 +0100 Subject: [PATCH 16/66] fix(Script/Commands): tele add should only check exact match (#20785) * fix(Script/Commands): tele add should only check exact match * closes https://github.com/azerothcore/azerothcore-wotlk/issues/20268 * better describe the variable --- src/server/game/Globals/ObjectMgr.cpp | 4 ++-- src/server/game/Globals/ObjectMgr.h | 2 +- src/server/scripts/Commands/cs_tele.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index a9266880399bad..95f9314398f668 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -8945,7 +8945,7 @@ void ObjectMgr::LoadGameTele() LOG_INFO("server.loading", " "); } -GameTele const* ObjectMgr::GetGameTele(std::string_view name) const +GameTele const* ObjectMgr::GetGameTele(std::string_view name, bool exactSearch) const { // explicit name case std::wstring wname; @@ -8961,7 +8961,7 @@ GameTele const* ObjectMgr::GetGameTele(std::string_view name) const { if (itr->second.wnameLow == wname) return &itr->second; - else if (!alt && itr->second.wnameLow.find(wname) != std::wstring::npos) + else if (!exactSearch && !alt && itr->second.wnameLow.find(wname) != std::wstring::npos) alt = &itr->second; } diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index f1d53892ed16a7..2b45f3ce1b0c46 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1347,7 +1347,7 @@ class ObjectMgr if (itr == _gameTeleStore.end()) return nullptr; return &itr->second; } - [[nodiscard]] GameTele const* GetGameTele(std::string_view name) const; + [[nodiscard]] GameTele const* GetGameTele(std::string_view name, bool exactSearch = false) const; [[nodiscard]] GameTeleContainer const& GetGameTeleMap() const { return _gameTeleStore; } bool AddGameTele(GameTele& data); bool DeleteGameTele(std::string_view name); diff --git a/src/server/scripts/Commands/cs_tele.cpp b/src/server/scripts/Commands/cs_tele.cpp index 259fd89ad71a3d..59ce640ea583cb 100644 --- a/src/server/scripts/Commands/cs_tele.cpp +++ b/src/server/scripts/Commands/cs_tele.cpp @@ -72,7 +72,7 @@ class tele_commandscript : public CommandScript if (!player) return false; - if (sObjectMgr->GetGameTele(name)) + if (sObjectMgr->GetGameTele(name, true)) { handler->SendErrorMessage(LANG_COMMAND_TP_ALREADYEXIST); return false; From a4a278a0e7fc8c908ad7ddb470f0af55710af774 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 30 Nov 2024 20:25:27 -0300 Subject: [PATCH 17/66] refactor(Scripts/UtgardeKeep): Upgrade scripts to new register method (#20795) --- .../UtgardeKeep/boss_ingvar_the_plunderer.cpp | 491 +++++++++--------- .../UtgardeKeep/UtgardeKeep/boss_keleseth.cpp | 403 +++++++------- .../UtgardeKeep/boss_skarvald_dalronn.cpp | 250 ++++----- .../UtgardeKeep/UtgardeKeep/utgarde_keep.cpp | 232 ++++----- .../UtgardeKeep/UtgardeKeep/utgarde_keep.h | 2 + 5 files changed, 646 insertions(+), 732 deletions(-) diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp index 7b44e22c6327a9..6d80f9216b1f09 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp @@ -99,299 +99,288 @@ enum eEvents EVENT_AXE_PICKUP, }; -class boss_ingvar_the_plunderer : public CreatureScript +struct boss_ingvar_the_plunderer : public ScriptedAI { -public: - boss_ingvar_the_plunderer() : CreatureScript("boss_ingvar_the_plunderer") { } + boss_ingvar_the_plunderer(Creature* c) : ScriptedAI(c), summons(me) + { + pInstance = c->GetInstanceScript(); + } + + InstanceScript* pInstance; + EventMap events; + SummonList summons; + ObjectGuid ValkyrGUID; + ObjectGuid ThrowGUID; - CreatureAI* GetAI(Creature* pCreature) const override + void Reset() override { - return GetUtgardeKeepAI(pCreature); + ValkyrGUID.Clear(); + ThrowGUID.Clear(); + events.Reset(); + summons.DespawnAll(); + me->SetDisplayId(DISPLAYID_DEFAULT); + me->LoadEquipment(1); + FeignDeath(false); + me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); + me->SetControlled(false, UNIT_STATE_ROOT); + me->DisableRotate(false); + + if (pInstance) + pInstance->SetData(DATA_INGVAR, NOT_STARTED); } - struct boss_ingvar_the_plundererAI : public ScriptedAI + void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override { - boss_ingvar_the_plundererAI(Creature* c) : ScriptedAI(c), summons(me) + if (me->GetDisplayId() == DISPLAYID_DEFAULT && damage >= me->GetHealth()) { - pInstance = c->GetInstanceScript(); + damage = 0; + me->InterruptNonMeleeSpells(true); + me->RemoveAllAuras(); + me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); + me->SetControlled(false, UNIT_STATE_ROOT); + me->DisableRotate(false); + me->GetMotionMaster()->MovementExpired(); + me->GetMotionMaster()->MoveIdle(); + me->StopMoving(); + FeignDeath(true); + events.Reset(); + events.RescheduleEvent(EVENT_START_RESURRECTION, 1s); + events.RescheduleEvent(EVENT_YELL_DEAD_1, 0ms); } + } - InstanceScript* pInstance; - EventMap events; - SummonList summons; - ObjectGuid ValkyrGUID; - ObjectGuid ThrowGUID; + void JustEngagedWith(Unit* /*who*/) override + { + events.Reset(); + // schedule Phase 1 abilities + events.RescheduleEvent(EVENT_SPELL_ROAR, 15s); + events.RescheduleEvent(EVENT_SPELL_CLEAVE_OR_WOE_STRIKE, 2s); + events.RescheduleEvent(EVENT_SPELL_SMASH, 5s); + events.RescheduleEvent(EVENT_SPELL_ENRAGE_OR_SHADOW_AXE, 10s); + + Talk(YELL_AGGRO_1); + me->LowerPlayerDamageReq(me->GetMaxHealth()); + + if (pInstance) + pInstance->SetData(DATA_INGVAR, IN_PROGRESS); + } - void Reset() override + void JustSummoned(Creature* s) override + { + summons.Summon(s); + if (s->GetEntry() == NPC_ANNHYLDE) { - ValkyrGUID.Clear(); - ThrowGUID.Clear(); - events.Reset(); - summons.DespawnAll(); - me->SetDisplayId(DISPLAYID_DEFAULT); - me->LoadEquipment(1); - FeignDeath(false); - me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - me->SetControlled(false, UNIT_STATE_ROOT); - me->DisableRotate(false); + ValkyrGUID = s->GetGUID(); + s->SetCanFly(true); + s->SetDisableGravity(true); + s->SetPosition(s->GetPositionX(), s->GetPositionY(), s->GetPositionZ() + 35.0f, s->GetOrientation()); + s->SetFacingTo(s->GetOrientation()); + } + else if (s->GetEntry() == NPC_THROW) + { + ThrowGUID = s->GetGUID(); + if (Unit* t = SelectTarget(SelectTargetMethod::Random, 0, 70.0f, true)) + s->GetMotionMaster()->MovePoint(0, t->GetPositionX(), t->GetPositionY(), t->GetPositionZ()); + } + } - if (pInstance) - pInstance->SetData(DATA_INGVAR, NOT_STARTED); + void KilledUnit(Unit* /*who*/) override + { + if (me->GetDisplayId() == DISPLAYID_DEFAULT) + Talk(YELL_KILL_2); + else + Talk(YELL_KILL_1); + } + + void FeignDeath(bool apply) + { + if (apply) + { + me->SetStandState(UNIT_STAND_STATE_DEAD); + me->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); + me->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); + me->SetDynamicFlag(UNIT_DYNFLAG_DEAD); } + else + { + me->SetStandState(UNIT_STAND_STATE_STAND); + me->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); + me->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); + me->RemoveDynamicFlag(UNIT_DYNFLAG_DEAD); + } + } - void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override + void JustDied(Unit* /*killer*/) override + { + events.Reset(); + summons.DespawnAll(); + Talk(YELL_DEAD_2); + if (pInstance) { - if (me->GetDisplayId() == DISPLAYID_DEFAULT && damage >= me->GetHealth()) - { - damage = 0; - me->InterruptNonMeleeSpells(true); - me->RemoveAllAuras(); - me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - me->SetControlled(false, UNIT_STATE_ROOT); - me->DisableRotate(false); - me->GetMotionMaster()->MovementExpired(); - me->GetMotionMaster()->MoveIdle(); - me->StopMoving(); - FeignDeath(true); - events.Reset(); - events.RescheduleEvent(EVENT_START_RESURRECTION, 1s); - events.RescheduleEvent(EVENT_YELL_DEAD_1, 0ms); - } + pInstance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, NPC_INGVAR_UNDEAD, 1); // undead entry needed for achievements + pInstance->SetData(DATA_INGVAR, DONE); } + } + + void EnterEvadeMode(EvadeReason why) override + { + me->SetControlled(false, UNIT_STATE_ROOT); + me->DisableRotate(false); + ScriptedAI::EnterEvadeMode(why); + } - void JustEngagedWith(Unit* /*who*/) override + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + switch (events.ExecuteEvent()) { - events.Reset(); - // schedule Phase 1 abilities + case 0: + break; + case EVENT_YELL_DEAD_1: + Talk(YELL_DEAD_1); + break; + case EVENT_START_RESURRECTION: + me->CastSpell(me, SPELL_SUMMON_VALKYR, true); + events.RescheduleEvent(EVENT_VALKYR_BEAM, 7s); + events.RescheduleEvent(EVENT_VALKYR_MOVE, 1ms); + events.RescheduleEvent(EVENT_ANNHYLDE_YELL, 3s); + break; + case EVENT_VALKYR_MOVE: + if (Creature* s = ObjectAccessor::GetCreature(*me, ValkyrGUID)) + s->GetMotionMaster()->MovePoint(1, s->GetPositionX(), s->GetPositionY(), s->GetPositionZ() - 15.0f); + break; + case EVENT_ANNHYLDE_YELL: + if (Creature* s = ObjectAccessor::GetCreature(*me, ValkyrGUID)) + s->AI()->Talk(YELL_ANHYLDE_2); + break; + case EVENT_VALKYR_BEAM: + me->RemoveAura(SPELL_SUMMON_VALKYR); + if (Creature* c = ObjectAccessor::GetCreature(*me, ValkyrGUID)) + c->CastSpell(me, SPELL_RESURRECTION_BEAM, false); + events.RescheduleEvent(EVENT_RESURRECTION_BALL, 4s); + break; + case EVENT_RESURRECTION_BALL: + me->CastSpell(me, SPELL_RESURRECTION_BALL, true); + events.RescheduleEvent(EVENT_RESURRECTION_HEAL, 4s); + break; + case EVENT_RESURRECTION_HEAL: + me->RemoveAura(SPELL_RESURRECTION_BALL); + me->CastSpell(me, SPELL_RESURRECTION_HEAL, true); + FeignDeath(false); + events.RescheduleEvent(EVENT_MORPH_TO_UNDEAD, 3s); + break; + case EVENT_MORPH_TO_UNDEAD: + me->CastSpell(me, SPELL_INGVAR_TRANSFORM, true); + events.RescheduleEvent(EVENT_START_PHASE_2, 1s); + break; + case EVENT_START_PHASE_2: + if (Creature* c = ObjectAccessor::GetCreature(*me, ValkyrGUID)) + { + c->DespawnOrUnsummon(); + summons.DespawnAll(); + } + me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); + AttackStart(me->GetVictim()); + me->GetMotionMaster()->MoveChase(me->GetVictim()); + Talk(YELL_AGGRO_2); + + // schedule Phase 2 abilities events.RescheduleEvent(EVENT_SPELL_ROAR, 15s); events.RescheduleEvent(EVENT_SPELL_CLEAVE_OR_WOE_STRIKE, 2s); events.RescheduleEvent(EVENT_SPELL_SMASH, 5s); events.RescheduleEvent(EVENT_SPELL_ENRAGE_OR_SHADOW_AXE, 10s); - Talk(YELL_AGGRO_1); - me->LowerPlayerDamageReq(me->GetMaxHealth()); + break; - if (pInstance) - pInstance->SetData(DATA_INGVAR, IN_PROGRESS); - } + // ABILITIES HERE: + case EVENT_UNROOT: + me->SetControlled(false, UNIT_STATE_ROOT); + me->DisableRotate(false); + break; + case EVENT_SPELL_ROAR: + Talk(EMOTE_ROAR); - void JustSummoned(Creature* s) override - { - summons.Summon(s); - if (s->GetEntry() == NPC_ANNHYLDE) + me->_AddCreatureSpellCooldown(SPELL_STAGGERING_ROAR, 0, 0); + me->_AddCreatureSpellCooldown(SPELL_DREADFUL_ROAR, 0, 0); + + if (me->GetDisplayId() == DISPLAYID_DEFAULT) + me->CastSpell((Unit*)nullptr, SPELL_STAGGERING_ROAR, false); + else + me->CastSpell((Unit*)nullptr, SPELL_DREADFUL_ROAR, false); + events.Repeat(15s, 20s); + break; + case EVENT_SPELL_CLEAVE_OR_WOE_STRIKE: + if (me->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID) == 0) { - ValkyrGUID = s->GetGUID(); - s->SetCanFly(true); - s->SetDisableGravity(true); - s->SetPosition(s->GetPositionX(), s->GetPositionY(), s->GetPositionZ() + 35.0f, s->GetOrientation()); - s->SetFacingTo(s->GetOrientation()); + events.Repeat(3s); + break; } - else if (s->GetEntry() == NPC_THROW) + if (me->GetDisplayId() == DISPLAYID_DEFAULT) + me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false); + else + me->CastSpell(me->GetVictim(), SPELL_WOE_STRIKE, false); + events.Repeat(3s, 7s); + break; + case EVENT_SPELL_SMASH: + if (me->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID) == 0) { - ThrowGUID = s->GetGUID(); - if (Unit* t = SelectTarget(SelectTargetMethod::Random, 0, 70.0f, true)) - s->GetMotionMaster()->MovePoint(0, t->GetPositionX(), t->GetPositionY(), t->GetPositionZ()); + events.Repeat(3s); + break; } - } - - void KilledUnit(Unit* /*who*/) override - { + me->SetControlled(true, UNIT_STATE_ROOT); + me->DisableRotate(true); + me->SendMovementFlagUpdate(); if (me->GetDisplayId() == DISPLAYID_DEFAULT) - Talk(YELL_KILL_2); + me->CastSpell((Unit*)nullptr, SPELL_SMASH, false); else - Talk(YELL_KILL_1); - } - - void FeignDeath(bool apply) - { - if (apply) + me->CastSpell((Unit*)nullptr, SPELL_DARK_SMASH, false); + events.Repeat(9s, 11s); + events.RescheduleEvent(EVENT_UNROOT, 3750ms); + break; + case EVENT_SPELL_ENRAGE_OR_SHADOW_AXE: + if (me->GetDisplayId() == DISPLAYID_DEFAULT) { - me->SetStandState(UNIT_STAND_STATE_DEAD); - me->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); - me->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); - me->SetDynamicFlag(UNIT_DYNFLAG_DEAD); + me->CastSpell(me, SPELL_ENRAGE, false); + events.Repeat(10s); } else { - me->SetStandState(UNIT_STAND_STATE_STAND); - me->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); - me->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); - me->RemoveDynamicFlag(UNIT_DYNFLAG_DEAD); + me->CastSpell((Unit*)nullptr, SPELL_SHADOW_AXE, true); + SetEquipmentSlots(false, EQUIP_UNEQUIP, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE); + events.Repeat(35s); + events.RescheduleEvent(EVENT_AXE_RETURN, 10s); } - } - - void JustDied(Unit* /*killer*/) override - { - events.Reset(); - summons.DespawnAll(); - Talk(YELL_DEAD_2); - if (pInstance) + break; + case EVENT_AXE_RETURN: + if (Creature* c = ObjectAccessor::GetCreature(*me, ThrowGUID)) + c->GetMotionMaster()->MoveCharge(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()); + events.RescheduleEvent(EVENT_AXE_PICKUP, 1500ms); + break; + case EVENT_AXE_PICKUP: + if (Creature* c = ObjectAccessor::GetCreature(*me, ThrowGUID)) { - pInstance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, NPC_INGVAR_UNDEAD, 1); // undead entry needed for achievements - pInstance->SetData(DATA_INGVAR, DONE); + c->DestroyForNearbyPlayers(); + c->DespawnOrUnsummon(); + summons.DespawnAll(); } + ThrowGUID.Clear(); + SetEquipmentSlots(true); + break; } - void EnterEvadeMode(EvadeReason why) override - { - me->SetControlled(false, UNIT_STATE_ROOT); - me->DisableRotate(false); - ScriptedAI::EnterEvadeMode(why); - } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - switch (events.ExecuteEvent()) - { - case 0: - break; - case EVENT_YELL_DEAD_1: - Talk(YELL_DEAD_1); - break; - case EVENT_START_RESURRECTION: - me->CastSpell(me, SPELL_SUMMON_VALKYR, true); - events.RescheduleEvent(EVENT_VALKYR_BEAM, 7s); - events.RescheduleEvent(EVENT_VALKYR_MOVE, 1ms); - events.RescheduleEvent(EVENT_ANNHYLDE_YELL, 3s); - break; - case EVENT_VALKYR_MOVE: - if (Creature* s = ObjectAccessor::GetCreature(*me, ValkyrGUID)) - s->GetMotionMaster()->MovePoint(1, s->GetPositionX(), s->GetPositionY(), s->GetPositionZ() - 15.0f); - break; - case EVENT_ANNHYLDE_YELL: - if (Creature* s = ObjectAccessor::GetCreature(*me, ValkyrGUID)) - s->AI()->Talk(YELL_ANHYLDE_2); - break; - case EVENT_VALKYR_BEAM: - me->RemoveAura(SPELL_SUMMON_VALKYR); - if (Creature* c = ObjectAccessor::GetCreature(*me, ValkyrGUID)) - c->CastSpell(me, SPELL_RESURRECTION_BEAM, false); - events.RescheduleEvent(EVENT_RESURRECTION_BALL, 4s); - break; - case EVENT_RESURRECTION_BALL: - me->CastSpell(me, SPELL_RESURRECTION_BALL, true); - events.RescheduleEvent(EVENT_RESURRECTION_HEAL, 4s); - break; - case EVENT_RESURRECTION_HEAL: - me->RemoveAura(SPELL_RESURRECTION_BALL); - me->CastSpell(me, SPELL_RESURRECTION_HEAL, true); - FeignDeath(false); - events.RescheduleEvent(EVENT_MORPH_TO_UNDEAD, 3s); - break; - case EVENT_MORPH_TO_UNDEAD: - me->CastSpell(me, SPELL_INGVAR_TRANSFORM, true); - events.RescheduleEvent(EVENT_START_PHASE_2, 1s); - break; - case EVENT_START_PHASE_2: - if (Creature* c = ObjectAccessor::GetCreature(*me, ValkyrGUID)) - { - c->DespawnOrUnsummon(); - summons.DespawnAll(); - } - me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - AttackStart(me->GetVictim()); - me->GetMotionMaster()->MoveChase(me->GetVictim()); - Talk(YELL_AGGRO_2); - - // schedule Phase 2 abilities - events.RescheduleEvent(EVENT_SPELL_ROAR, 15s); - events.RescheduleEvent(EVENT_SPELL_CLEAVE_OR_WOE_STRIKE, 2s); - events.RescheduleEvent(EVENT_SPELL_SMASH, 5s); - events.RescheduleEvent(EVENT_SPELL_ENRAGE_OR_SHADOW_AXE, 10s); - - break; - - // ABILITIES HERE: - case EVENT_UNROOT: - me->SetControlled(false, UNIT_STATE_ROOT); - me->DisableRotate(false); - break; - case EVENT_SPELL_ROAR: - Talk(EMOTE_ROAR); - - me->_AddCreatureSpellCooldown(SPELL_STAGGERING_ROAR, 0, 0); - me->_AddCreatureSpellCooldown(SPELL_DREADFUL_ROAR, 0, 0); - - if (me->GetDisplayId() == DISPLAYID_DEFAULT) - me->CastSpell((Unit*)nullptr, SPELL_STAGGERING_ROAR, false); - else - me->CastSpell((Unit*)nullptr, SPELL_DREADFUL_ROAR, false); - events.Repeat(15s, 20s); - break; - case EVENT_SPELL_CLEAVE_OR_WOE_STRIKE: - if (me->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID) == 0 ) - { - events.Repeat(3s); - break; - } - if (me->GetDisplayId() == DISPLAYID_DEFAULT) - me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false); - else - me->CastSpell(me->GetVictim(), SPELL_WOE_STRIKE, false); - events.Repeat(3s, 7s); - break; - case EVENT_SPELL_SMASH: - if (me->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID) == 0 ) - { - events.Repeat(3s); - break; - } - me->SetControlled(true, UNIT_STATE_ROOT); - me->DisableRotate(true); - me->SendMovementFlagUpdate(); - if (me->GetDisplayId() == DISPLAYID_DEFAULT) - me->CastSpell((Unit*)nullptr, SPELL_SMASH, false); - else - me->CastSpell((Unit*)nullptr, SPELL_DARK_SMASH, false); - events.Repeat(9s, 11s); - events.RescheduleEvent(EVENT_UNROOT, 3750ms); - break; - case EVENT_SPELL_ENRAGE_OR_SHADOW_AXE: - if (me->GetDisplayId() == DISPLAYID_DEFAULT) - { - me->CastSpell(me, SPELL_ENRAGE, false); - events.Repeat(10s); - } - else - { - me->CastSpell((Unit*)nullptr, SPELL_SHADOW_AXE, true); - SetEquipmentSlots(false, EQUIP_UNEQUIP, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE); - events.Repeat(35s); - events.RescheduleEvent(EVENT_AXE_RETURN, 10s); - } - break; - case EVENT_AXE_RETURN: - if (Creature* c = ObjectAccessor::GetCreature(*me, ThrowGUID)) - c->GetMotionMaster()->MoveCharge(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()); - events.RescheduleEvent(EVENT_AXE_PICKUP, 1500ms); - break; - case EVENT_AXE_PICKUP: - if (Creature* c = ObjectAccessor::GetCreature(*me, ThrowGUID)) - { - c->DestroyForNearbyPlayers(); - c->DespawnOrUnsummon(); - summons.DespawnAll(); - } - ThrowGUID.Clear(); - SetEquipmentSlots(true); - break; - } - - if (!me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE)) - DoMeleeAttackIfReady(); - } - }; + if (!me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE)) + DoMeleeAttackIfReady(); + } }; void AddSC_boss_ingvar_the_plunderer() { - new boss_ingvar_the_plunderer(); + RegisterUtgardeKeepCreatureAI(boss_ingvar_the_plunderer); } diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp index e03daa35b0bf7a..b51d5c4c9ad007 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp @@ -58,176 +58,154 @@ enum eEvents EVENT_SUMMON_SKELETONS, }; -class npc_frost_tomb : public CreatureScript +struct npc_frost_tomb : public NullCreatureAI { -public: - npc_frost_tomb() : CreatureScript("npc_frost_tomb") { } - - CreatureAI* GetAI(Creature* pCreature) const override - { - return GetUtgardeKeepAI(pCreature); - } - - struct npc_frost_tombAI : public NullCreatureAI + npc_frost_tomb(Creature* c) : NullCreatureAI(c) { - npc_frost_tombAI(Creature* c) : NullCreatureAI(c) - { - if (TempSummon* t = c->ToTempSummon()) - if (Unit* s = t->GetSummonerUnit()) + if (TempSummon* t = c->ToTempSummon()) + if (Unit* s = t->GetSummonerUnit()) + { + PrisonerGUID = s->GetGUID(); + if (me->GetInstanceScript() && me->GetInstanceScript()->instance->IsHeroic()) { - PrisonerGUID = s->GetGUID(); - if (me->GetInstanceScript() && me->GetInstanceScript()->instance->IsHeroic()) - { - const int32 dmg = 2000; - c->CastCustomSpell(s, SPELL_FROST_TOMB_AURA, nullptr, &dmg, nullptr, true); - } - else - c->CastSpell(s, SPELL_FROST_TOMB_AURA, true); + const int32 dmg = 2000; + c->CastCustomSpell(s, SPELL_FROST_TOMB_AURA, nullptr, &dmg, nullptr, true); } - } - ObjectGuid PrisonerGUID; + else + c->CastSpell(s, SPELL_FROST_TOMB_AURA, true); + } + } + ObjectGuid PrisonerGUID; - void JustDied(Unit* killer) override - { - if (killer && killer->GetGUID() != me->GetGUID()) - if (InstanceScript* pInstance = me->GetInstanceScript()) - pInstance->SetData(DATA_ON_THE_ROCKS_ACHIEV, 0); - - if (PrisonerGUID) - if (Unit* p = ObjectAccessor::GetUnit(*me, PrisonerGUID)) - p->RemoveAurasDueToSpell(SPELL_FROST_TOMB_AURA); - me->DespawnOrUnsummon(5000); - } + void JustDied(Unit* killer) override + { + if (killer && killer->GetGUID() != me->GetGUID()) + if (InstanceScript* pInstance = me->GetInstanceScript()) + pInstance->SetData(DATA_ON_THE_ROCKS_ACHIEV, 0); + + if (PrisonerGUID) + if (Unit* p = ObjectAccessor::GetUnit(*me, PrisonerGUID)) + p->RemoveAurasDueToSpell(SPELL_FROST_TOMB_AURA); + me->DespawnOrUnsummon(5000); + } - void UpdateAI(uint32 /*diff*/) override + void UpdateAI(uint32 /*diff*/) override + { + if (PrisonerGUID) { - if (PrisonerGUID) + if (Unit* p = ObjectAccessor::GetUnit(*me, PrisonerGUID)) { - if (Unit* p = ObjectAccessor::GetUnit(*me, PrisonerGUID)) - { - if (!p->HasAura(SPELL_FROST_TOMB_AURA)) - me->KillSelf(); - } - else + if (!p->HasAura(SPELL_FROST_TOMB_AURA)) me->KillSelf(); } + else + me->KillSelf(); } - }; + } }; -class boss_keleseth : public CreatureScript +struct boss_keleseth : public ScriptedAI { -public: - boss_keleseth() : CreatureScript("boss_keleseth") { } + boss_keleseth(Creature* c) : ScriptedAI(c) + { + pInstance = c->GetInstanceScript(); + } + + InstanceScript* pInstance; + EventMap events; - CreatureAI* GetAI(Creature* pCreature) const override + void Reset() override { - return GetUtgardeKeepAI(pCreature); + events.Reset(); + if (pInstance) + pInstance->SetData(DATA_KELESETH, NOT_STARTED); } - struct boss_kelesethAI : public ScriptedAI + void KilledUnit(Unit* victim) override { - boss_kelesethAI(Creature* c) : ScriptedAI(c) + if (victim->IsPlayer()) { - pInstance = c->GetInstanceScript(); + Talk(SAY_KILL); } + } - InstanceScript* pInstance; - EventMap events; + void JustDied(Unit* /*killer*/) override + { + Talk(SAY_DEATH); + if (pInstance) + pInstance->SetData(DATA_KELESETH, DONE); + } - void Reset() override - { - events.Reset(); - if (pInstance) - pInstance->SetData(DATA_KELESETH, NOT_STARTED); - } + void JustEngagedWith(Unit* /*who*/) override + { + events.Reset(); + events.RescheduleEvent(EVENT_SPELL_SHADOWBOLT, 0ms); + events.RescheduleEvent(EVENT_FROST_TOMB, 28s); + events.RescheduleEvent(EVENT_SUMMON_SKELETONS, 4s); - void KilledUnit(Unit* victim) override - { - if (victim->IsPlayer()) - { - Talk(SAY_KILL); - } - } + Talk(SAY_START_COMBAT); + DoZoneInCombat(); - void JustDied(Unit* /*killer*/) override - { - Talk(SAY_DEATH); - if (pInstance) - pInstance->SetData(DATA_KELESETH, DONE); - } + if (pInstance) + pInstance->SetData(DATA_KELESETH, IN_PROGRESS); + } - void JustEngagedWith(Unit* /*who*/) override - { - events.Reset(); - events.RescheduleEvent(EVENT_SPELL_SHADOWBOLT, 0ms); - events.RescheduleEvent(EVENT_FROST_TOMB, 28s); - events.RescheduleEvent(EVENT_SUMMON_SKELETONS, 4s); + void AttackStart(Unit* who) override + { + if (!who) + return; - Talk(SAY_START_COMBAT); - DoZoneInCombat(); + UnitAI::AttackStartCaster(who, 12.0f); + } - if (pInstance) - pInstance->SetData(DATA_KELESETH, IN_PROGRESS); - } + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; - void AttackStart(Unit* who) override - { - if (!who) - return; + events.Update(diff); - UnitAI::AttackStartCaster(who, 12.0f); - } + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - void UpdateAI(uint32 diff) override + switch (events.ExecuteEvent()) { - if (!UpdateVictim()) - return; - - events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - switch (events.ExecuteEvent()) - { - case 0: - break; - case EVENT_SPELL_SHADOWBOLT: - me->CastSpell(me->GetVictim(), SPELL_SHADOWBOLT, false); - events.Repeat(4s, 5s); - break; - case EVENT_FROST_TOMB: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, true)) - if (!target->HasAura(SPELL_FROST_TOMB_AURA)) - { - Talk(SAY_FROST_TOMB_EMOTE, target); - Talk(SAY_FROST_TOMB); - me->CastSpell(target, SPELL_FROST_TOMB, false); - events.Repeat(15s); - break; - } - events.Repeat(1s); + case 0: + break; + case EVENT_SPELL_SHADOWBOLT: + me->CastSpell(me->GetVictim(), SPELL_SHADOWBOLT, false); + events.Repeat(4s, 5s); + break; + case EVENT_FROST_TOMB: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, true)) + if (!target->HasAura(SPELL_FROST_TOMB_AURA)) + { + Talk(SAY_FROST_TOMB_EMOTE, target); + Talk(SAY_FROST_TOMB); + me->CastSpell(target, SPELL_FROST_TOMB, false); + events.Repeat(15s); break; - case EVENT_SUMMON_SKELETONS: - Talk(SAY_SUMMON_SKELETONS); - for (uint8 i = 0; i < 5; ++i) + } + events.Repeat(1s); + break; + case EVENT_SUMMON_SKELETONS: + Talk(SAY_SUMMON_SKELETONS); + for (uint8 i = 0; i < 5; ++i) + { + float dist = rand_norm() * 4 + 3.0f; + float angle = rand_norm() * 2 * M_PI; + if (Creature* c = me->SummonCreature(NPC_SKELETON, 156.2f + cos(angle) * dist, 259.1f + std::sin(angle) * dist, 42.9f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) + if (Unit* target = c->SelectNearestTarget(250.0f)) { - float dist = rand_norm() * 4 + 3.0f; - float angle = rand_norm() * 2 * M_PI; - if (Creature* c = me->SummonCreature(NPC_SKELETON, 156.2f + cos(angle) * dist, 259.1f + std::sin(angle) * dist, 42.9f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) - if (Unit* target = c->SelectNearestTarget(250.0f)) - { - c->AddThreat(target, 5.0f); - DoZoneInCombat(c); - } + c->AddThreat(target, 5.0f); + DoZoneInCombat(c); } - break; } - - DoMeleeAttackIfReady(); + break; } - }; + + DoMeleeAttackIfReady(); + } }; enum eSkeletonEnum @@ -242,105 +220,94 @@ enum eSkeletonEnum EVENT_RESURRECT_2, }; -class npc_vrykul_skeleton : public CreatureScript +struct npc_vrykul_skeleton : public ScriptedAI { -public: - npc_vrykul_skeleton() : CreatureScript("npc_vrykul_skeleton") { } - - CreatureAI* GetAI(Creature* pCreature) const override + npc_vrykul_skeleton(Creature* c) : ScriptedAI(c) { - return GetUtgardeKeepAI(pCreature); + pInstance = c->GetInstanceScript(); } - struct npc_vrykul_skeletonAI : public ScriptedAI - { - npc_vrykul_skeletonAI(Creature* c) : ScriptedAI(c) - { - pInstance = c->GetInstanceScript(); - } + InstanceScript* pInstance; + EventMap events; - InstanceScript* pInstance; - EventMap events; + void Reset() override + { + events.Reset(); + events.RescheduleEvent(EVENT_SPELL_DECREPIFY, 10s, 20s); + if (IsHeroic()) + events.RescheduleEvent(EVENT_SPELL_BONE_ARMOR, 25s, 120s); + } - void Reset() override + void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override + { + if (damage >= me->GetHealth()) { - events.Reset(); - events.RescheduleEvent(EVENT_SPELL_DECREPIFY, 10s, 20s); - if (IsHeroic()) - events.RescheduleEvent(EVENT_SPELL_BONE_ARMOR, 25s, 120s); + damage = 0; + me->InterruptNonMeleeSpells(true); + me->RemoveAllAuras(); + me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); + me->SetControlled(true, UNIT_STATE_ROOT); + me->GetMotionMaster()->MovementExpired(); + me->GetMotionMaster()->MoveIdle(); + me->StopMoving(); + me->SetStandState(UNIT_STAND_STATE_DEAD); + me->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); + me->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); + me->SetDynamicFlag(UNIT_DYNFLAG_DEAD); + events.RescheduleEvent(EVENT_RESURRECT, 12s); } + } - void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override + void UpdateAI(uint32 diff) override + { + if (pInstance && pInstance->GetData(DATA_KELESETH) != IN_PROGRESS) { - if (damage >= me->GetHealth()) - { - damage = 0; - me->InterruptNonMeleeSpells(true); - me->RemoveAllAuras(); - me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); - me->SetControlled(true, UNIT_STATE_ROOT); - me->GetMotionMaster()->MovementExpired(); - me->GetMotionMaster()->MoveIdle(); - me->StopMoving(); - me->SetStandState(UNIT_STAND_STATE_DEAD); - me->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); - me->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); - me->SetDynamicFlag(UNIT_DYNFLAG_DEAD); - events.RescheduleEvent(EVENT_RESURRECT, 12s); - } + if (me->IsAlive()) + me->KillSelf(); + return; } - void UpdateAI(uint32 diff) override - { - if (pInstance && pInstance->GetData(DATA_KELESETH) != IN_PROGRESS ) - { - if (me->IsAlive()) - me->KillSelf(); - return; - } - - if (!UpdateVictim()) - return; + if (!UpdateVictim()) + return; - events.Update(diff); + events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - switch (events.ExecuteEvent()) - { - case 0: - break; - case EVENT_SPELL_DECREPIFY: - if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE)) - me->CastSpell(me->GetVictim(), SPELL_DECREPIFY, false); - events.Repeat(15s, 25s); - break; - case EVENT_SPELL_BONE_ARMOR: - if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE)) - me->CastSpell((Unit*)nullptr, SPELL_BONE_ARMOR, false); - events.Repeat(40s, 120s); - break; - case EVENT_RESURRECT: - events.DelayEvents(3500ms); - DoCast(me, SPELL_SCOURGE_RESURRECTION, true); - me->SetStandState(UNIT_STAND_STATE_STAND); - me->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); - me->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); - me->RemoveDynamicFlag(UNIT_DYNFLAG_DEAD); - events.RescheduleEvent(EVENT_RESURRECT_2, 3s); - break; - case EVENT_RESURRECT_2: - me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); - me->SetControlled(false, UNIT_STATE_ROOT); - me->GetMotionMaster()->MoveChase(me->GetVictim()); - break; - } + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + switch (events.ExecuteEvent()) + { + case 0: + break; + case EVENT_SPELL_DECREPIFY: + if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE)) + me->CastSpell(me->GetVictim(), SPELL_DECREPIFY, false); + events.Repeat(15s, 25s); + break; + case EVENT_SPELL_BONE_ARMOR: if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE)) - DoMeleeAttackIfReady(); + me->CastSpell((Unit*)nullptr, SPELL_BONE_ARMOR, false); + events.Repeat(40s, 120s); + break; + case EVENT_RESURRECT: + events.DelayEvents(3500ms); + DoCast(me, SPELL_SCOURGE_RESURRECTION, true); + me->SetStandState(UNIT_STAND_STATE_STAND); + me->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); + me->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); + me->RemoveDynamicFlag(UNIT_DYNFLAG_DEAD); + events.RescheduleEvent(EVENT_RESURRECT_2, 3s); + break; + case EVENT_RESURRECT_2: + me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); + me->SetControlled(false, UNIT_STATE_ROOT); + me->GetMotionMaster()->MoveChase(me->GetVictim()); + break; } - }; + + if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE)) + DoMeleeAttackIfReady(); + } }; class spell_frost_tomb_aura : public AuraScript @@ -368,8 +335,8 @@ class spell_frost_tomb_aura : public AuraScript void AddSC_boss_keleseth() { - new boss_keleseth(); - new npc_frost_tomb(); - new npc_vrykul_skeleton(); + RegisterUtgardeKeepCreatureAI(boss_keleseth); + RegisterUtgardeKeepCreatureAI(npc_frost_tomb); + RegisterUtgardeKeepCreatureAI(npc_vrykul_skeleton); RegisterSpellScript(spell_frost_tomb_aura); } diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp index 4acb81dbd96390..6e3ea7f52f9856 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp @@ -66,182 +66,161 @@ enum eEvents EVENT_MATE_DIED }; -class boss_skarvald_the_constructor : public CreatureScript +struct boss_skarvald_the_constructor : public ScriptedAI { -public: - boss_skarvald_the_constructor() : CreatureScript("boss_skarvald_the_constructor") { } - - CreatureAI* GetAI(Creature* pCreature) const override + boss_skarvald_the_constructor(Creature* c) : ScriptedAI(c) { - return GetUtgardeKeepAI(pCreature); + pInstance = c->GetInstanceScript(); } - struct boss_skarvald_the_constructorAI : public ScriptedAI - { - boss_skarvald_the_constructorAI(Creature* c) : ScriptedAI(c) - { - pInstance = c->GetInstanceScript(); - } - - InstanceScript* pInstance; - EventMap events; + InstanceScript* pInstance; + EventMap events; - void Reset() override + void Reset() override + { + me->SetLootMode(0); + events.Reset(); + if (me->GetEntry() == NPC_SKARVALD) { - me->SetLootMode(0); - events.Reset(); - if (me->GetEntry() == NPC_SKARVALD) + if (pInstance) { - if (pInstance) - { - pInstance->SetData(DATA_DALRONN_AND_SKARVALD, NOT_STARTED); - } + pInstance->SetData(DATA_DALRONN_AND_SKARVALD, NOT_STARTED); } - else // NPC_SKARVALD_GHOST + } + else // NPC_SKARVALD_GHOST + { + if (Unit* target = me->SelectNearestTarget(50.0f)) { - if (Unit* target = me->SelectNearestTarget(50.0f)) - { - me->AddThreat(target, 0.0f); - AttackStart(target); - } + me->AddThreat(target, 0.0f); + AttackStart(target); } } + } - void DoAction(int32 param) override + void DoAction(int32 param) override + { + switch (param) { - switch (param) - { - case 1: - events.RescheduleEvent(EVENT_MATE_DIED, 3500ms); - break; - } + case 1: + events.RescheduleEvent(EVENT_MATE_DIED, 3500ms); + break; } + } - void JustEngagedWith(Unit* who) override + void JustEngagedWith(Unit* who) override + { + events.Reset(); + events.RescheduleEvent(EVENT_SHARVALD_CHARGE, 5s); + events.RescheduleEvent(EVENT_STONE_STRIKE, 10s); + if (me->GetEntry() == NPC_SKARVALD) { - events.Reset(); - events.RescheduleEvent(EVENT_SHARVALD_CHARGE, 5s); - events.RescheduleEvent(EVENT_STONE_STRIKE, 10s); - if (me->GetEntry() == NPC_SKARVALD) + Talk(YELL_SKARVALD_AGGRO); + if (IsHeroic()) { - Talk(YELL_SKARVALD_AGGRO); - if (IsHeroic()) - { - events.ScheduleEvent(EVENT_ENRAGE, 1s); - } + events.ScheduleEvent(EVENT_ENRAGE, 1s); } - if (pInstance) + } + if (pInstance) + { + pInstance->SetData(DATA_DALRONN_AND_SKARVALD, IN_PROGRESS); + if (Creature* dalronn = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_DALRONN))) { - pInstance->SetData(DATA_DALRONN_AND_SKARVALD, IN_PROGRESS); - if (Creature* dalronn = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_DALRONN))) + if (!dalronn->IsInCombat() && who) { - if (!dalronn->IsInCombat() && who) - { - dalronn->AddThreat(who, 0.0f); - dalronn->AI()->AttackStart(who); - } + dalronn->AddThreat(who, 0.0f); + dalronn->AI()->AttackStart(who); } } } + } - void KilledUnit(Unit* /*victim*/) override + void KilledUnit(Unit* /*victim*/) override + { + if (me->GetEntry() == NPC_SKARVALD) { - if (me->GetEntry() == NPC_SKARVALD) - { - Talk(YELL_SKARVALD_KILL); - } + Talk(YELL_SKARVALD_KILL); } + } - void JustDied(Unit* /*Killer*/) override - { - if (me->GetEntry() != NPC_SKARVALD) - return; + void JustDied(Unit* /*Killer*/) override + { + if (me->GetEntry() != NPC_SKARVALD) + return; - if (pInstance) + if (pInstance) + { + if (Creature* dalronn = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_DALRONN))) { - if (Creature* dalronn = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_DALRONN))) + if (dalronn->isDead()) { - if (dalronn->isDead()) - { - Talk(YELL_SKARVALD_SKA_DIEDFIRST); - pInstance->SetData(DATA_DALRONN_AND_SKARVALD, DONE); - pInstance->SetData(DATA_UNLOCK_SKARVALD_LOOT, 0); - return; - } - else - { - Talk(YELL_SKARVALD_DAL_DIED); - dalronn->AI()->DoAction(1); - } + Talk(YELL_SKARVALD_SKA_DIEDFIRST); + pInstance->SetData(DATA_DALRONN_AND_SKARVALD, DONE); + pInstance->SetData(DATA_UNLOCK_SKARVALD_LOOT, 0); + return; + } + else + { + Talk(YELL_SKARVALD_DAL_DIED); + dalronn->AI()->DoAction(1); } } - me->CastSpell((Unit*)nullptr, SPELL_SUMMON_SKARVALD_GHOST, true); } + me->CastSpell((Unit*)nullptr, SPELL_SUMMON_SKARVALD_GHOST, true); + } - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; - events.Update(diff); + events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - switch (events.ExecuteEvent()) + switch (events.ExecuteEvent()) + { + case 0: + break; + case EVENT_MATE_DIED: + Talk(YELL_SKARVALD_DAL_DIEDFIRST); + break; + case EVENT_SHARVALD_CHARGE: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, (IsHeroic() ? 100.0f : 30.0f), true)) { - case 0: - break; - case EVENT_MATE_DIED: - Talk(YELL_SKARVALD_DAL_DIEDFIRST); - break; - case EVENT_SHARVALD_CHARGE: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, (IsHeroic() ? 100.0f : 30.0f), true)) - { - DoResetThreatList(); - me->AddThreat(target, 10000.0f); - me->CastSpell(target, SPELL_CHARGE, false); - } - events.Repeat(5s, 10s); - break; - case EVENT_STONE_STRIKE: - if (me->GetVictim() && me->IsWithinMeleeRange(me->GetVictim())) - { - me->CastSpell(me->GetVictim(), SPELL_STONE_STRIKE, false); - events.Repeat(5s, 10s); - } - else - { - events.Repeat(3s); - } - break; - case EVENT_ENRAGE: - if (me->GetHealthPct() <= 60) - { - me->CastSpell(me, SPELL_ENRAGE, true); - break; - } - events.Repeat(1s); - break; + DoResetThreatList(); + me->AddThreat(target, 10000.0f); + me->CastSpell(target, SPELL_CHARGE, false); } - DoMeleeAttackIfReady(); + events.Repeat(5s, 10s); + break; + case EVENT_STONE_STRIKE: + if (me->GetVictim() && me->IsWithinMeleeRange(me->GetVictim())) + { + me->CastSpell(me->GetVictim(), SPELL_STONE_STRIKE, false); + events.Repeat(5s, 10s); + } + else + { + events.Repeat(3s); + } + break; + case EVENT_ENRAGE: + if (me->GetHealthPct() <= 60) + { + me->CastSpell(me, SPELL_ENRAGE, true); + break; + } + events.Repeat(1s); + break; } - }; -}; - -class boss_dalronn_the_controller : public CreatureScript -{ -public: - boss_dalronn_the_controller() : CreatureScript("boss_dalronn_the_controller") { } - - CreatureAI* GetAI(Creature* pCreature) const override - { - return GetUtgardeKeepAI(pCreature); + DoMeleeAttackIfReady(); } +}; - struct boss_dalronn_the_controllerAI : public ScriptedAI +struct boss_dalronn_the_controller : public ScriptedAI { - boss_dalronn_the_controllerAI(Creature* c) : ScriptedAI(c), summons(me) + boss_dalronn_the_controller(Creature* c) : ScriptedAI(c), summons(me) { pInstance = c->GetInstanceScript(); } @@ -397,10 +376,9 @@ class boss_dalronn_the_controller : public CreatureScript DoMeleeAttackIfReady(); } }; -}; void AddSC_boss_skarvald_dalronn() { - new boss_skarvald_the_constructor(); - new boss_dalronn_the_controller(); + RegisterUtgardeKeepCreatureAI(boss_skarvald_the_constructor); + RegisterUtgardeKeepCreatureAI(boss_dalronn_the_controller); } diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp index b85a73f23a9ead..62263725b5149a 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp @@ -23,72 +23,61 @@ #include "SpellScriptLoader.h" #include "Vehicle.h" -class npc_dragonflayer_forge_master : public CreatureScript +struct npc_dragonflayer_forge_master : public ScriptedAI { -public: - npc_dragonflayer_forge_master() : CreatureScript("npc_dragonflayer_forge_master") { } - - CreatureAI* GetAI(Creature* pCreature) const override + npc_dragonflayer_forge_master(Creature* c) : ScriptedAI(c) { - return GetUtgardeKeepAI(pCreature); - } + pInstance = c->GetInstanceScript(); - struct npc_dragonflayer_forge_masterAI : public ScriptedAI - { - npc_dragonflayer_forge_masterAI(Creature* c) : ScriptedAI(c) + float x = me->GetHomePosition().GetPositionX(); + float y = me->GetHomePosition().GetPositionY(); + if (x > 344.0f && x < 357.0f && y < -35.0f && y > -44.0f) { - pInstance = c->GetInstanceScript(); - - float x = me->GetHomePosition().GetPositionX(); - float y = me->GetHomePosition().GetPositionY(); - if (x > 344.0f && x < 357.0f && y < -35.0f && y > -44.0f) - { - dataId = DATA_FORGE_1; - prevDataId = 0; - } - else if (x > 380.0f && x < 389.0f && y < -12.0f && y > -21.0f) - { - dataId = DATA_FORGE_2; - prevDataId = DATA_FORGE_1; - } - else - { - dataId = DATA_FORGE_3; - prevDataId = DATA_FORGE_2; - } + dataId = DATA_FORGE_1; + prevDataId = 0; } - - InstanceScript* pInstance; - uint32 dataId; - uint32 prevDataId; - - void Reset() override + else if (x > 380.0f && x < 389.0f && y < -12.0f && y > -21.0f) { - if (pInstance) - pInstance->SetData(dataId, NOT_STARTED); + dataId = DATA_FORGE_2; + prevDataId = DATA_FORGE_1; } - - void JustDied(Unit* /*killer*/) override + else { - if (pInstance) - pInstance->SetData(dataId, DONE); - me->SaveRespawnTime(); + dataId = DATA_FORGE_3; + prevDataId = DATA_FORGE_2; } + } + + InstanceScript* pInstance; + uint32 dataId; + uint32 prevDataId; + + void Reset() override + { + if (pInstance) + pInstance->SetData(dataId, NOT_STARTED); + } + + void JustDied(Unit* /*killer*/) override + { + if (pInstance) + pInstance->SetData(dataId, DONE); + me->SaveRespawnTime(); + } - void JustEngagedWith(Unit* /*who*/) override + void JustEngagedWith(Unit* /*who*/) override + { + if (pInstance) { - if (pInstance) + if (prevDataId && !pInstance->GetData(prevDataId)) { - if (prevDataId && !pInstance->GetData(prevDataId)) - { - EnterEvadeMode(); - return; - } - pInstance->SetData(dataId, IN_PROGRESS); + EnterEvadeMode(); + return; } - me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); + pInstance->SetData(dataId, IN_PROGRESS); } - }; + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); + } }; enum EnslavedProtoDrake @@ -111,97 +100,86 @@ enum EnslavedProtoDrake const Position protodrakeCheckPos = {206.24f, -190.28f, 200.11f, 0.f}; -class npc_enslaved_proto_drake : public CreatureScript +struct npc_enslaved_proto_drake : public ScriptedAI { -public: - npc_enslaved_proto_drake() : CreatureScript("npc_enslaved_proto_drake") { } - - struct npc_enslaved_proto_drakeAI : public ScriptedAI + npc_enslaved_proto_drake(Creature* creature) : ScriptedAI(creature) { - npc_enslaved_proto_drakeAI(Creature* creature) : ScriptedAI(creature) - { - _setData = false; - } + _setData = false; + } - void Reset() override - { - _events.Reset(); - _events.ScheduleEvent(EVENT_REND, 2s, 3s); - _events.ScheduleEvent(EVENT_FLAME_BREATH, 5500ms, 7000ms); - _events.ScheduleEvent(EVENT_KNOCKAWAY, 3500ms, 6000ms); - } + void Reset() override + { + _events.Reset(); + _events.ScheduleEvent(EVENT_REND, 2s, 3s); + _events.ScheduleEvent(EVENT_FLAME_BREATH, 5500ms, 7000ms); + _events.ScheduleEvent(EVENT_KNOCKAWAY, 3500ms, 6000ms); + } - void MovementInform(uint32 type, uint32 id) override + void MovementInform(uint32 type, uint32 id) override + { + if (type == WAYPOINT_MOTION_TYPE && id == POINT_LAST) { - if (type == WAYPOINT_MOTION_TYPE && id == POINT_LAST) - { - me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.25f); - if (Vehicle* v = me->GetVehicleKit()) - if (Unit* p = v->GetPassenger(0)) - if (Creature* rider = p->ToCreature()) - rider->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.25f); - - me->SetCanFly(false); - me->SetDisableGravity(false); - me->SetFacingTo(0.25f); - me->SetImmuneToAll(false); - } + me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.25f); + if (Vehicle* v = me->GetVehicleKit()) + if (Unit* p = v->GetPassenger(0)) + if (Creature* rider = p->ToCreature()) + rider->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.25f); + + me->SetCanFly(false); + me->SetDisableGravity(false); + me->SetFacingTo(0.25f); + me->SetImmuneToAll(false); } + } - void SetData(uint32 type, uint32 data) override + void SetData(uint32 type, uint32 data) override + { + if (type == TYPE_PROTODRAKE_AT && data == DATA_PROTODRAKE_MOVE && !_setData && me->IsAlive() && me->GetDistance(protodrakeCheckPos) < 10.0f) { - if (type == TYPE_PROTODRAKE_AT && data == DATA_PROTODRAKE_MOVE && !_setData && me->IsAlive() && me->GetDistance(protodrakeCheckPos) < 10.0f) - { - _setData = true; - me->SetCanFly(true); - me->SetDisableGravity(true); - me->GetMotionMaster()->MovePath(PATH_PROTODRAKE, false); - } + _setData = true; + me->SetCanFly(true); + me->SetDisableGravity(true); + me->GetMotionMaster()->MovePath(PATH_PROTODRAKE, false); } + } - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; - _events.Update(diff); + _events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - while (uint32 eventid = _events.ExecuteEvent()) + while (uint32 eventid = _events.ExecuteEvent()) + { + switch (eventid) { - switch (eventid) - { - case EVENT_REND: - DoCast(SPELL_REND); - _events.ScheduleEvent(EVENT_REND, 15s, 20s); - break; - case EVENT_FLAME_BREATH: - DoCast(SPELL_FLAME_BREATH); - _events.ScheduleEvent(EVENT_FLAME_BREATH, 11s, 12s); - break; - case EVENT_KNOCKAWAY: - DoCast(SPELL_KNOCK_AWAY); - _events.ScheduleEvent(EVENT_KNOCKAWAY, 7000ms, 8500ms); - break; - default: - break; - } + case EVENT_REND: + DoCast(SPELL_REND); + _events.ScheduleEvent(EVENT_REND, 15s, 20s); + break; + case EVENT_FLAME_BREATH: + DoCast(SPELL_FLAME_BREATH); + _events.ScheduleEvent(EVENT_FLAME_BREATH, 11s, 12s); + break; + case EVENT_KNOCKAWAY: + DoCast(SPELL_KNOCK_AWAY); + _events.ScheduleEvent(EVENT_KNOCKAWAY, 7000ms, 8500ms); + break; + default: + break; } - - DoMeleeAttackIfReady(); } - private: - bool _setData; - EventMap _events; - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return GetUtgardeKeepAI(creature); + DoMeleeAttackIfReady(); } + +private: + bool _setData; + EventMap _events; }; enum TickingTimeBomb @@ -234,8 +212,8 @@ class spell_ticking_time_bomb_aura : public AuraScript void AddSC_utgarde_keep() { - new npc_dragonflayer_forge_master(); - new npc_enslaved_proto_drake(); + RegisterUtgardeKeepCreatureAI(npc_dragonflayer_forge_master); + RegisterUtgardeKeepCreatureAI(npc_enslaved_proto_drake); RegisterSpellScript(spell_ticking_time_bomb_aura); } diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h index 23f3bddb14f49f..a2da8425719c5e 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h @@ -83,4 +83,6 @@ inline AI* GetUtgardeKeepAI(T* obj) return GetInstanceAI(obj, UtgardeKeepScriptName); } +#define RegisterUtgardeKeepCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetUtgardeKeepAI) + #endif From 6c8c0cf69718f2ec9199f1c2f21212919f9d82de Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Sun, 1 Dec 2024 11:01:56 +0100 Subject: [PATCH 18/66] fix(DB/Creature) Scarlet Infantrymen. (#20768) * Create scarlet_infantrymen.sql Fix Scarlet Infantrymen. * Update scarlet_infantrymen.sql * Update scarlet_infantrymen.sql * Update scarlet_infantrymen.sql --- .../pending_db_world/scarlet_infantrymen.sql | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 data/sql/updates/pending_db_world/scarlet_infantrymen.sql diff --git a/data/sql/updates/pending_db_world/scarlet_infantrymen.sql b/data/sql/updates/pending_db_world/scarlet_infantrymen.sql new file mode 100644 index 00000000000000..3a03e3e1edfacb --- /dev/null +++ b/data/sql/updates/pending_db_world/scarlet_infantrymen.sql @@ -0,0 +1,89 @@ + +-- Delete Wrong npc (not found on official servers) + +DELETE FROM `creature` WHERE (`id1` = 28609) AND (`guid` IN (129280)); +DELETE FROM `creature_addon` WHERE (`guid` IN (129280)); + + +-- Update spawn points + +UPDATE `creature` SET `position_x` = 2143.90, `position_y` = -5675.58, `position_z` = 109.95, `orientation` = 0.3333 WHERE `guid` = 129270 AND `id1` = 28609; +UPDATE `creature` SET `position_x` = 2154.62, `position_y` = -5689.39, `position_z` = 105.75, `orientation` = 0.6432 WHERE `guid` = 129271 AND `id1` = 28609; +UPDATE `creature` SET `position_x` = 2221.08, `position_y` = -5885.01, `position_z` = 100.68, `orientation` = 3.1306 WHERE `guid` = 129282 AND `id1` = 28609; +UPDATE `creature` SET `position_x` = 2353.2, `position_y` = -5844.39, `position_z` = 101.593, `orientation` = 5.6188 WHERE `guid` = 129283 AND `id1` = 28609; +UPDATE `creature` SET `position_x` = 2392.12, `position_y` = -5844.45, `position_z` = 108.994, `orientation` = 3.0858 WHERE `guid` = 129284 AND `id1` = 28609; + + + +-- Waypoints + +DELETE FROM `waypoint_data` WHERE `id` IN (12927200, 12928200, 12928300, 12928400); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(12927200, 1, 2226.18, -5731.67, 102.017, NULL, 0, 0, 0, 100, 0), +(12927200, 2, 2234.35, -5738.26, 102.214, NULL, 0, 0, 0, 100, 0), +(12927200, 3, 2242.78, -5744.52, 102.309, NULL, 0, 0, 0, 100, 0), +(12927200, 4, 2250.79, -5752.1, 101.528, NULL, 0, 0, 0, 100, 0), +(12927200, 5, 2257.7, -5760, 101.073, NULL, 0, 0, 0, 100, 0), +(12927200, 6, 2266.39, -5770.03, 100.979, NULL, 0, 0, 0, 100, 0), +(12927200, 7, 2257.7, -5760, 101.073, NULL, 0, 0, 0, 100, 0), +(12927200, 8, 2250.79, -5752.1, 101.528, NULL, 0, 0, 0, 100, 0), +(12927200, 9, 2242.78, -5744.52, 102.309, NULL, 0, 0, 0, 100, 0), +(12927200, 10, 2234.35, -5738.26, 102.214, NULL, 0, 0, 0, 100, 0), +(12927200, 11, 2226.18, -5731.67, 102.017, NULL, 0, 0, 0, 100, 0), +(12927200, 12, 2219.23, -5726.22, 101.816, NULL, 0, 0, 0, 100, 0), + +(12928200, 1, 2214.83, -5884.92, 100.855, NULL, 0, 0, 0, 100, 0), +(12928200, 2, 2209.52, -5885, 101.008, NULL, 0, 0, 0, 100, 0), +(12928200, 3, 2204.1, -5883.88, 101.159, NULL, 0, 0, 0, 100, 0), +(12928200, 4, 2195.65, -5882.51, 101.208, NULL, 0, 0, 0, 100, 0), +(12928200, 5, 2187.06, -5880.64, 101.065, NULL, 0, 0, 0, 100, 0), +(12928200, 6, 2195.65, -5882.51, 101.208, NULL, 0, 0, 0, 100, 0), +(12928200, 7, 2204.1, -5883.88, 101.159, NULL, 0, 0, 0, 100, 0), +(12928200, 8, 2209.52, -5885, 101.008, NULL, 0, 0, 0, 100, 0), +(12928200, 9, 2214.83, -5884.92, 100.855, NULL, 0, 0, 0, 100, 0), +(12928200, 10, 2221.08, -5885.01, 100.68, NULL, 0, 0, 0, 100, 0), + +(12928300, 1, 2358.94, -5843.76, 103.624, NULL, 0, 0, 0, 100, 0), +(12928300, 2, 2367.94, -5842.23, 106.039, NULL, 0, 0, 0, 100, 0), +(12928300, 3, 2376.98, -5841.91, 108.059, NULL, 0, 0, 0, 100, 0), +(12928300, 4, 2385.39, -5843.93, 108.588, NULL, 0, 0, 0, 100, 0), +(12928300, 5, 2392.12, -5844.45, 108.994, NULL, 0, 0, 0, 100, 0), +(12928300, 6, 2385.39, -5843.93, 108.588, NULL, 0, 0, 0, 100, 0), +(12928300, 7, 2376.98, -5841.91, 108.059, NULL, 0, 0, 0, 100, 0), +(12928300, 8, 2367.94, -5842.23, 106.039, NULL, 0, 0, 0, 100, 0), +(12928300, 9, 2358.94, -5843.76, 103.624, NULL, 0, 0, 0, 100, 0), +(12928300, 10, 2353.2, -5844.39, 101.593, NULL, 0, 0, 0, 100, 0), + +(12928400, 1, 2385.39, -5843.93, 108.588, NULL, 0, 0, 0, 100, 0), +(12928400, 2, 2376.98, -5841.91, 108.059, NULL, 0, 0, 0, 100, 0), +(12928400, 3, 2367.94, -5842.23, 106.039, NULL, 0, 0, 0, 100, 0), +(12928400, 4, 2358.94, -5843.76, 103.624, NULL, 0, 0, 0, 100, 0), +(12928400, 5, 2353.2, -5844.39, 101.593, NULL, 0, 0, 0, 100, 0), +(12928400, 6, 2358.94, -5843.76, 103.624, NULL, 0, 0, 0, 100, 0), +(12928400, 7, 2367.94, -5842.23, 106.039, NULL, 0, 0, 0, 100, 0), +(12928400, 8, 2376.98, -5841.91, 108.059, NULL, 0, 0, 0, 100, 0), +(12928400, 9, 2385.39, -5843.93, 108.588, NULL, 0, 0, 0, 100, 0), +(12928400, 10, 2392.12, -5844.45, 108.994, NULL, 0, 0, 0, 100, 0); + + +-- Change movement type and wander distance + +UPDATE `creature` SET `wander_distance` = 0, `MovementType` = 2 WHERE `guid` IN (129272, 129282, 129283, 129284) AND `id1` = 28609; + + +-- Set path id + +UPDATE `creature_addon` SET `path_id` = 12927200 WHERE (`guid` IN (129272)); +UPDATE `creature_addon` SET `path_id` = 12928200 WHERE (`guid` IN (129282)); +UPDATE `creature_addon` SET `path_id` = 12928300 WHERE (`guid` IN (129283)); +UPDATE `creature_addon` SET `path_id` = 12928400 WHERE (`guid` IN (129284)); + + +-- Set bytes1 to 0 + +UPDATE `creature_addon` SET `bytes1` = 0 WHERE (`guid` IN (129272, 129282, 129283, 129284)); + + +-- Set Aura + +UPDATE `creature_addon` SET `auras` = 52103 WHERE (`guid` IN (129272, 129282, 129283, 129284)); From a9ff6f834cc967c5812e3b9c01d366eb712b22c5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 1 Dec 2024 10:02:53 +0000 Subject: [PATCH 19/66] chore(DB): import pending files Referenced commit(s): 6c8c0cf69718f2ec9199f1c2f21212919f9d82de --- .../scarlet_infantrymen.sql => db_world/2024_12_01_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/scarlet_infantrymen.sql => db_world/2024_12_01_00.sql} (99%) diff --git a/data/sql/updates/pending_db_world/scarlet_infantrymen.sql b/data/sql/updates/db_world/2024_12_01_00.sql similarity index 99% rename from data/sql/updates/pending_db_world/scarlet_infantrymen.sql rename to data/sql/updates/db_world/2024_12_01_00.sql index 3a03e3e1edfacb..e6e921eea037bd 100644 --- a/data/sql/updates/pending_db_world/scarlet_infantrymen.sql +++ b/data/sql/updates/db_world/2024_12_01_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_30_04 -> 2024_12_01_00 -- Delete Wrong npc (not found on official servers) From ae4e673713a066361b38d09d61c9109738615d56 Mon Sep 17 00:00:00 2001 From: Tereneckla Date: Sun, 1 Dec 2024 10:11:23 +0000 Subject: [PATCH 20/66] fix(Scripts/Commands) fix formatting in server debug (#20801) --- src/server/scripts/Commands/cs_server.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Commands/cs_server.cpp b/src/server/scripts/Commands/cs_server.cpp index 39d2fd8a90b119..795734d6fcfbbd 100644 --- a/src/server/scripts/Commands/cs_server.cpp +++ b/src/server/scripts/Commands/cs_server.cpp @@ -137,7 +137,7 @@ class server_commandscript : public CommandScript handler->PSendSysMessage("Compiled on: {}", GitRevision::GetHostOSVersion()); - handler->PSendSysMessage("Worldserver listening connections on port %" PRIu16, worldPort); + handler->PSendSysMessage("Worldserver listening connections on port {}", worldPort); handler->PSendSysMessage("{}", dbPortOutput); bool vmapIndoorCheck = sWorld->getBoolConfig(CONFIG_VMAP_INDOOR_CHECK); From 10a79441b6c0cb41d8a6237083f8c59866195a42 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sun, 1 Dec 2024 11:11:33 +0100 Subject: [PATCH 21/66] =?UTF-8?q?fix(Core/Spells):=20Logic=20misstake=20fo?= =?UTF-8?q?r=20spells=20that=20can=20be=20cast=20on=20dead=20=E2=80=A6=20(?= =?UTF-8?q?#20800)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Spells/SpellInfo.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 1e5ad942d3b97d..4630ac2bb26ca2 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1775,11 +1775,13 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, WorldObject const* ta return SPELL_FAILED_TARGET_AFFECTING_COMBAT; // only spells with SPELL_ATTR3_ONLY_ON_GHOSTS can target ghosts - if (IsRequiringDeadTarget() && !unitTarget->HasAuraType(SPELL_AURA_GHOST)) - return SPELL_FAILED_TARGET_NOT_GHOST; - - if (!IsDeathPersistent() && !IsAllowingDeadTarget()) - return SPELL_FAILED_BAD_TARGETS; + if (IsRequiringDeadTarget()) + { + if (!unitTarget->HasAuraType(SPELL_AURA_GHOST)) + return SPELL_FAILED_TARGET_NOT_GHOST; + if (!IsDeathPersistent() && !IsAllowingDeadTarget()) + return SPELL_FAILED_BAD_TARGETS; + } if (caster != unitTarget) { From 938c637c9affc26d98bc2e1de88577ed4dda7229 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 1 Dec 2024 08:47:52 -0300 Subject: [PATCH 22/66] =?UTF-8?q?refactor(Scripts/VioletHold):=20Move=20al?= =?UTF-8?q?l=20spells=20to=20spelldifficul=E2=80=A6=20(#20796)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor(Scripts/VioletHold): Move all spell scripts to spelldifficultydbc --- .../rev_1733008614260192200.sql | 28 +++++++++++++++++++ .../Northrend/VioletHold/boss_cyanigosa.cpp | 13 ++------- .../Northrend/VioletHold/boss_erekem.cpp | 9 ++---- .../Northrend/VioletHold/boss_ichoron.cpp | 13 ++------- .../Northrend/VioletHold/boss_lavanthor.cpp | 13 ++------- .../Northrend/VioletHold/boss_moragg.cpp | 9 ++---- .../Northrend/VioletHold/boss_xevozz.cpp | 13 ++------- .../Northrend/VioletHold/boss_zuramat.cpp | 8 ++---- 8 files changed, 46 insertions(+), 60 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1733008614260192200.sql diff --git a/data/sql/updates/pending_db_world/rev_1733008614260192200.sql b/data/sql/updates/pending_db_world/rev_1733008614260192200.sql new file mode 100644 index 00000000000000..cae25f780ede7b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1733008614260192200.sql @@ -0,0 +1,28 @@ +-- +DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN (58693, 58690, 58688, 54481, 54479, 54237, 54241, 54312, 54235, 54282, 54249, 54442, 54438, 54202, 54226, 54160, 54524, 54361); +INSERT INTO `spelldifficulty_dbc` (`ID`, `DifficultySpellID_1`, `DifficultySpellID_2`, `DifficultySpellID_3`, `DifficultySpellID_4`) VALUES +-- Cyanigosa +(58693, 58693, 59369, 0, 0), +(58690, 58690, 59283, 0, 0), +(58688, 58688, 59281, 0, 0), +-- Erekem +(54481, 54481, 59473, 0, 0), +(54479, 54479, 59471, 0, 0), +-- Ichoron +(54237, 54237, 59520, 0, 0), +(54241, 54241, 59521, 0, 0), +(54312, 54312, 59522, 0, 0), +-- Lavanthor +(54235, 54235, 59468, 0, 0), +(54282, 54282, 59469, 0, 0), +(54249, 54249, 59594, 0, 0), +-- Moragg +(54442, 54442, 59524, 0, 0), +(54438, 54438, 59523, 0, 0), +-- Xevozz +(54202, 54202, 59483, 0, 0), +(54226, 54226, 59485, 0, 0), +(54160, 54160, 59474, 0, 0), +-- Zuramat +(54524, 54524, 59745, 0, 0), +(54361, 54361, 59743, 0, 0); diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index da67718717f32d..1475b9a3e3a0e0 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -34,19 +34,12 @@ enum Yells enum eSpells { SPELL_ARCANE_VACUUM = 58694, - SPELL_BLIZZARD_N = 58693, - SPELL_BLIZZARD_H = 59369, + SPELL_BLIZZARD = 58693, SPELL_MANA_DESTRUCTION = 59374, - SPELL_TAIL_SWEEP_N = 58690, - SPELL_TAIL_SWEEP_H = 59283, - SPELL_UNCONTROLLABLE_ENERGY_N = 58688, - SPELL_UNCONTROLLABLE_ENERGY_H = 59281, + SPELL_TAIL_SWEEP = 58690, + SPELL_UNCONTROLLABLE_ENERGY = 58688 }; -#define SPELL_BLIZZARD DUNGEON_MODE(SPELL_BLIZZARD_N, SPELL_BLIZZARD_H) -#define SPELL_TAIL_SWEEP DUNGEON_MODE(SPELL_TAIL_SWEEP_N, SPELL_TAIL_SWEEP_H) -#define SPELL_UNCONTROLLABLE_ENERGY DUNGEON_MODE(SPELL_UNCONTROLLABLE_ENERGY_N, SPELL_UNCONTROLLABLE_ENERGY_H) - enum eEvents { EVENT_SPELL_ARCANE_VACUUM = 1, diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp index 2d34027916773d..24b352a9a9f1a5 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp @@ -23,10 +23,8 @@ enum eSpells { SPELL_BLOODLUST = 54516, SPELL_BREAK_BONDS = 59463, - SPELL_CHAIN_HEAL_N = 54481, - SPELL_CHAIN_HEAL_H = 59473, - SPELL_EARTH_SHIELD_N = 54479, - SPELL_EARTH_SHIELD_H = 59471, + SPELL_CHAIN_HEAL = 54481, + SPELL_EARTH_SHIELD = 54479, //SPELL_EARTH_SHIELD_TRIGGERED_N = 54480, //SPELL_EARTH_SHIELD_TRIGGERED_H = 59472, SPELL_EARTH_SHOCK = 54511, @@ -34,9 +32,6 @@ enum eSpells SPELL_STORMSTRIKE = 51876, }; -#define SPELL_CHAIN_HEAL DUNGEON_MODE(SPELL_CHAIN_HEAL_N, SPELL_CHAIN_HEAL_H) -#define SPELL_EARTH_SHIELD DUNGEON_MODE(SPELL_EARTH_SHIELD_N, SPELL_EARTH_SHIELD_H) - enum Yells { SAY_AGGRO = 0, diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index affe37877cf49b..6ac9bdbf37c0eb 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -53,23 +53,16 @@ enum eCreatures enum eSpells { SPELL_DRAINED = 59820, - SPELL_FRENZY_N = 54312, - SPELL_FRENZY_H = 59522, + SPELL_FRENZY = 54312, SPELL_PROTECTIVE_BUBBLE = 54306, - SPELL_WATER_BLAST_N = 54237, - SPELL_WATER_BLAST_H = 59520, - SPELL_WATER_BOLT_VOLLEY_N = 54241, - SPELL_WATER_BOLT_VOLLEY_H = 59521, + SPELL_WATER_BLAST = 54237, + SPELL_WATER_BOLT_VOLLEY = 54241, SPELL_SPLASH = 59516, // casted by globule upon death SPELL_WATER_GLOBULE = 54268, // casted when hit by visual SPELL_CREATE_GLOBULE_VISUAL = 54260, // tar 25 }; -#define SPELL_WATER_BLAST DUNGEON_MODE(SPELL_WATER_BLAST_N, SPELL_WATER_BLAST_H) -#define SPELL_WATER_BOLT_VOLLEY DUNGEON_MODE(SPELL_WATER_BOLT_VOLLEY_N, SPELL_WATER_BOLT_VOLLEY_H) -#define SPELL_FRENZY DUNGEON_MODE(SPELL_FRENZY_N, SPELL_FRENZY_H) - class boss_ichoron : public CreatureScript { public: diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp index a16341ced376cf..d3082aa82ef27e 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp @@ -22,18 +22,11 @@ enum eSpells { SPELL_CAUTERIZING_FLAMES = 59466, - SPELL_FIREBOLT_N = 54235, - SPELL_FIREBOLT_H = 59468, - SPELL_FLAME_BREATH_N = 54282, - SPELL_FLAME_BREATH_H = 59469, - SPELL_LAVA_BURN_N = 54249, - SPELL_LAVA_BURN_H = 59594, + SPELL_FIREBOLT = 54235, + SPELL_FLAME_BREATH = 54282, + SPELL_LAVA_BURN = 54249 }; -#define SPELL_FIREBOLT DUNGEON_MODE(SPELL_FIREBOLT_N, SPELL_FIREBOLT_H) -#define SPELL_FLAME_BREATH DUNGEON_MODE(SPELL_FLAME_BREATH_N, SPELL_FLAME_BREATH_H) -#define SPELL_LAVA_BURN DUNGEON_MODE(SPELL_LAVA_BURN_N, SPELL_LAVA_BURN_H) - enum eEvents { EVENT_SPELL_FIREBOLT = 1, diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp index 0b517c0c23c8e9..0fc29dab34c30e 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp @@ -24,12 +24,10 @@ enum eSpells { - SPELL_RAY_OF_SUFFERING_N = 54442, - SPELL_RAY_OF_SUFFERING_H = 59524, + SPELL_RAY_OF_SUFFERING = 54442, //SPELL_RAY_OF_SUFFERING_TRIGGERED = 54417, - SPELL_RAY_OF_PAIN_N = 54438, - SPELL_RAY_OF_PAIN_H = 59523, + SPELL_RAY_OF_PAIN = 54438, //SPELL_RAY_OF_PAIN_TRIGGERED_N = 54416, //SPELL_RAY_OF_PAIN_TRIGGERED_H = 59525, @@ -37,9 +35,6 @@ enum eSpells SPELL_OPTIC_LINK = 54396, }; -#define SPELL_RAY_OF_SUFFERING DUNGEON_MODE(SPELL_RAY_OF_SUFFERING_N, SPELL_RAY_OF_SUFFERING_H) -#define SPELL_RAY_OF_PAIN DUNGEON_MODE(SPELL_RAY_OF_PAIN_N, SPELL_RAY_OF_PAIN_H) - enum eEvents { EVENT_SPELL_CORROSIVE_SALIVA = 1, diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 69eb1b7be46428..27b354bee4439e 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -32,24 +32,17 @@ enum Yells enum eSpells { - SPELL_ARCANE_BARRAGE_VOLLEY_N = 54202, - SPELL_ARCANE_BARRAGE_VOLLEY_H = 59483, - SPELL_ARCANE_BUFFET_N = 54226, - SPELL_ARCANE_BUFFET_H = 59485, + SPELL_ARCANE_BARRAGE_VOLLEY = 54202, + SPELL_ARCANE_BUFFET = 54226, SPELL_SUMMON_ETHEREAL_SPHERE_1 = 54102, SPELL_SUMMON_ETHEREAL_SPHERE_2 = 54137, SPELL_SUMMON_ETHEREAL_SPHERE_3 = 54138, - SPELL_ARCANE_POWER_N = 54160, - SPELL_ARCANE_POWER_H = 59474, + SPELL_ARCANE_POWER = 54160 //SPELL_SUMMON_PLAYERS = 54164, // not used //SPELL_POWER_BALL_VISUAL = 54141, }; -#define SPELL_ARCANE_BARRAGE_VOLLEY DUNGEON_MODE(SPELL_ARCANE_BARRAGE_VOLLEY_N, SPELL_ARCANE_BARRAGE_VOLLEY_H) -#define SPELL_ARCANE_BUFFET DUNGEON_MODE(SPELL_ARCANE_BUFFET_N, SPELL_ARCANE_BUFFET_H) -#define SPELL_ARCANE_POWER DUNGEON_MODE(SPELL_ARCANE_POWER_N, SPELL_ARCANE_POWER_H) - enum eEvents { EVENT_SPELL_ARCANE_BARRAGE_VOLLEY = 1, diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index 96eed54b9f59a1..f7ec86e1b86a8a 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -32,10 +32,8 @@ enum Yells enum eSpells { - SPELL_SHROUD_OF_DARKNESS_N = 54524, - SPELL_SHROUD_OF_DARKNESS_H = 59745, - SPELL_VOID_SHIFT_N = 54361, - SPELL_VOID_SHIFT_H = 59743, + SPELL_SHROUD_OF_DARKNESS = 54524, + SPELL_VOID_SHIFT = 54361, SPELL_SUMMON_VOID_SENTRY = 54369, SPELL_SUMMON_VOID_SENTRY_BALL = 58650, @@ -44,8 +42,6 @@ enum eSpells }; #define NPC_VOID_SENTRY_BALL 29365 -#define SPELL_SHROUD_OF_DARKNESS DUNGEON_MODE(SPELL_SHROUD_OF_DARKNESS_N, SPELL_SHROUD_OF_DARKNESS_H) -#define SPELL_VOID_SHIFT DUNGEON_MODE(SPELL_VOID_SHIFT_N, SPELL_VOID_SHIFT_H) enum eEvents { From 55f6bd0972674965d3b8384692900374692a972d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 1 Dec 2024 11:48:51 +0000 Subject: [PATCH 23/66] chore(DB): import pending files Referenced commit(s): 938c637c9affc26d98bc2e1de88577ed4dda7229 --- .../rev_1733008614260192200.sql => db_world/2024_12_01_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1733008614260192200.sql => db_world/2024_12_01_01.sql} (95%) diff --git a/data/sql/updates/pending_db_world/rev_1733008614260192200.sql b/data/sql/updates/db_world/2024_12_01_01.sql similarity index 95% rename from data/sql/updates/pending_db_world/rev_1733008614260192200.sql rename to data/sql/updates/db_world/2024_12_01_01.sql index cae25f780ede7b..2052afe3eceb53 100644 --- a/data/sql/updates/pending_db_world/rev_1733008614260192200.sql +++ b/data/sql/updates/db_world/2024_12_01_01.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_01_00 -> 2024_12_01_01 -- DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN (58693, 58690, 58688, 54481, 54479, 54237, 54241, 54312, 54235, 54282, 54249, 54442, 54438, 54202, 54226, 54160, 54524, 54361); INSERT INTO `spelldifficulty_dbc` (`ID`, `DifficultySpellID_1`, `DifficultySpellID_2`, `DifficultySpellID_3`, `DifficultySpellID_4`) VALUES From ed008a878006ff4de18f07a8d00091bc864dfcf6 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sun, 1 Dec 2024 12:50:59 +0100 Subject: [PATCH 24/66] refactor(Core/Spells): Add helpers for HasAuraType (#20802) --- src/server/game/AI/CoreAI/PetAI.cpp | 2 +- .../game/Battlegrounds/Battleground.cpp | 4 +- .../Battlegrounds/Zones/BattlegroundSA.cpp | 2 +- .../game/Entities/Creature/Creature.cpp | 8 +-- src/server/game/Entities/Object/Object.cpp | 2 +- src/server/game/Entities/Player/Player.cpp | 40 ++++++------- .../game/Entities/Player/PlayerStorage.cpp | 2 +- .../game/Entities/Player/PlayerUpdates.cpp | 4 +- src/server/game/Entities/Unit/Unit.cpp | 60 +++++++++---------- src/server/game/Entities/Unit/Unit.h | 53 ++++++++++++++-- .../game/Grids/Notifiers/GridNotifiers.cpp | 2 +- .../game/Grids/Notifiers/GridNotifiers.h | 2 +- src/server/game/Handlers/CharacterHandler.cpp | 2 +- src/server/game/Handlers/MiscHandler.cpp | 4 +- src/server/game/Handlers/PetHandler.cpp | 6 +- src/server/game/Handlers/SpellHandler.cpp | 4 +- src/server/game/Server/WorldSession.cpp | 12 ++-- .../game/Spells/Auras/SpellAuraEffects.cpp | 36 +++++------ src/server/game/Spells/Spell.cpp | 2 +- src/server/game/Spells/SpellEffects.cpp | 4 +- src/server/game/Spells/SpellInfo.cpp | 4 +- src/server/game/Spells/SpellMgr.cpp | 6 +- src/server/scripts/Commands/cs_reset.cpp | 2 +- .../boss_broodlord_lashlayer.cpp | 2 +- src/server/scripts/Events/hallows_end.cpp | 6 +- src/server/scripts/Events/winter_veil.cpp | 2 +- .../RubySanctum/boss_halion.cpp | 2 +- .../boss_faction_champions.cpp | 2 +- .../TrialOfTheCrusader/boss_twin_valkyr.cpp | 2 +- .../HallsOfReflection/halls_of_reflection.cpp | 16 ++--- .../IcecrownCitadel/boss_lord_marrowgar.cpp | 2 +- .../IcecrownCitadel/boss_sindragosa.cpp | 2 +- .../IcecrownCitadel/icecrown_citadel.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_mimiron.cpp | 2 +- .../Ulduar/Ulduar/boss_yoggsaron.cpp | 2 +- .../scripts/Northrend/zone_storm_peaks.cpp | 2 +- src/server/scripts/Pet/pet_generic.cpp | 2 +- src/server/scripts/Spells/spell_dk.cpp | 2 +- src/server/scripts/Spells/spell_generic.cpp | 2 +- src/server/scripts/Spells/spell_item.cpp | 4 +- src/server/scripts/Spells/spell_quest.cpp | 6 +- 41 files changed, 183 insertions(+), 140 deletions(-) diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp index 4047ba8e194017..33fff5f7464b17 100644 --- a/src/server/game/AI/CoreAI/PetAI.cpp +++ b/src/server/game/AI/CoreAI/PetAI.cpp @@ -484,7 +484,7 @@ Unit* PetAI::SelectNextTarget(bool allowAutoSelect) const return myAttacker; // Check pet's attackers first to prevent dragging mobs back to owner - if (me->HasAuraType(SPELL_AURA_MOD_TAUNT)) + if (me->HasTauntAura()) { const Unit::AuraEffectList& tauntAuras = me->GetAuraEffectsByType(SPELL_AURA_MOD_TAUNT); if (!tauntAuras.empty()) diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 792e5434242087..454bb3e4f875c5 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -844,7 +844,7 @@ void Battleground::EndBattleground(PvPTeamId winnerTeamId) TeamId bgTeamId = player->GetBgTeamId(); // should remove spirit of redemption - if (player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (player->HasSpiritOfRedemptionAura()) player->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT); if (!player->IsAlive()) @@ -1008,7 +1008,7 @@ void Battleground::RemovePlayerAtLeave(Player* player) RemovePlayer(player); // should remove spirit of redemption - if (player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (player->HasSpiritOfRedemptionAura()) player->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT); // if the player was a match participant diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index 9d0a325220c7ba..443a8a46cff8a9 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -534,7 +534,7 @@ void BattlegroundSA::TeleportPlayers() if (Player* player = itr->second) { // should remove spirit of redemption - if (player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (player->HasSpiritOfRedemptionAura()) player->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT); if (!player->IsAlive()) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 6617ba0dad2568..7abedcae7e02ea 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1058,7 +1058,7 @@ void Creature::DoFleeToGetAssistance() if (!GetVictim()) return; - if (HasAuraType(SPELL_AURA_PREVENTS_FLEEING)) + if (HasPreventsFleeingAura()) return; float radius = sWorld->getFloatConfig(CONFIG_CREATURE_FAMILY_FLEE_ASSISTANCE_RADIUS); @@ -2669,7 +2669,7 @@ bool Creature::CanCreatureAttack(Unit const* victim, bool skipDistCheck) const // pussywizard: don't check distance to home position if recently damaged (allow kiting away from spawnpoint!) // xinef: this should include taunt auras - if (!isWorldBoss() && (GetLastLeashExtensionTime() + 12 > GameTime::GetGameTime().count() || HasAuraType(SPELL_AURA_MOD_TAUNT))) + if (!isWorldBoss() && (GetLastLeashExtensionTime() + 12 > GameTime::GetGameTime().count() || HasTauntAura())) return true; } @@ -3459,14 +3459,14 @@ void Creature::UpdateMovementFlags() else SetDisableGravity(true); - if (!HasAuraType(SPELL_AURA_HOVER)) + if (!HasHoverAura()) SetHover(false); } else { SetCanFly(false); SetDisableGravity(false); - if (IsAlive() && (CanHover() || HasAuraType(SPELL_AURA_HOVER))) + if (IsAlive() && (CanHover() || HasHoverAura())) SetHover(true); } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 8dc14fde373e82..b37efedcadd926 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -3128,7 +3128,7 @@ float WorldObject::GetMapHeight(float x, float y, float z, bool vmap/* = true*/, float WorldObject::GetMapWaterOrGroundLevel(float x, float y, float z, float* ground/* = nullptr*/) const { return GetMap()->GetWaterOrGroundLevel(GetPhaseMask(), x, y, z, ground, - IsUnit() ? !static_cast(this)->HasAuraType(SPELL_AURA_WATER_WALK) : false, + IsUnit() ? !static_cast(this)->HasWaterWalkAura() : false, std::max(GetCollisionHeight(), Z_OFFSET_FIND_HEIGHT)); } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index d8f33c6fe6acc1..30bc269ff50515 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -813,7 +813,7 @@ int32 Player::getMaxTimer(MirrorTimerType timer) return MINUTE * IN_MILLISECONDS; case BREATH_TIMER: { - if (!IsAlive() || HasAuraType(SPELL_AURA_WATER_BREATHING) || GetSession()->GetSecurity() >= AccountTypes(sWorld->getIntConfig(CONFIG_DISABLE_BREATHING))) + if (!IsAlive() || HasWaterBreathingAura() || GetSession()->GetSecurity() >= AccountTypes(sWorld->getIntConfig(CONFIG_DISABLE_BREATHING))) return DISABLED_MIRROR_TIMER; int32 UnderWaterTime = sWorld->getIntConfig(CONFIG_WATER_BREATH_TIMER); AuraEffectList const& mModWaterBreathing = GetAuraEffectsByType(SPELL_AURA_MOD_WATER_BREATHING); @@ -1787,8 +1787,8 @@ void Player::RegenerateAll() { // Not in combat or they have regeneration if (!IsInCombat() || IsPolymorphed() || m_baseHealthRegen || - HasAuraType(SPELL_AURA_MOD_REGEN_DURING_COMBAT) || - HasAuraType(SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT)) + HasRegenDuringCombatAura() || + HasHealthRegenInCombatAura()) { RegenerateHealth(); } @@ -1882,7 +1882,7 @@ void Player::Regenerate(Powers power) break; case POWER_RAGE: // Regenerate rage { - if (!IsInCombat() && !HasAuraType(SPELL_AURA_INTERRUPT_REGEN)) + if (!IsInCombat() && !HasInterruptRegenAura()) { float RageDecreaseRate = sWorld->getRate(RATE_POWER_RAGE_LOSS); addvalue += -20 * RageDecreaseRate; // 2 rage by tick (= 2 seconds => 1 rage/sec) @@ -1894,7 +1894,7 @@ void Player::Regenerate(Powers power) break; case POWER_RUNIC_POWER: { - if (!IsInCombat() && !HasAuraType(SPELL_AURA_INTERRUPT_REGEN)) + if (!IsInCombat() && !HasInterruptRegenAura()) { float RunicPowerDecreaseRate = sWorld->getRate(RATE_POWER_RUNICPOWER_LOSS); addvalue += -30 * RunicPowerDecreaseRate; // 3 RunicPower by tick @@ -2000,7 +2000,7 @@ void Player::RegenerateHealth() if (IsPolymorphed()) addvalue = (float)GetMaxHealth() / 3; // normal regen case (maybe partly in combat case) - else if (!IsInCombat() || HasAuraType(SPELL_AURA_MOD_REGEN_DURING_COMBAT)) + else if (!IsInCombat() || HasRegenDuringCombatAura()) { addvalue = OCTRegenHPPerSpirit() * HealthIncreaseRate; @@ -2019,7 +2019,7 @@ void Player::RegenerateHealth() { addvalue += GetTotalAuraModifier(SPELL_AURA_MOD_REGEN) * 2 * IN_MILLISECONDS / (5 * IN_MILLISECONDS); } - else if (HasAuraType(SPELL_AURA_MOD_REGEN_DURING_COMBAT)) + else if (HasRegenDuringCombatAura()) { ApplyPct(addvalue, GetTotalAuraModifier(SPELL_AURA_MOD_REGEN_DURING_COMBAT)); } @@ -4554,7 +4554,7 @@ void Player::KillPlayer() //SetUnitFlag(UNIT_FLAG_NOT_IN_PVP); ReplaceAllDynamicFlags(UNIT_DYNFLAG_NONE); - ApplyModFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTE_RELEASE_TIMER, !sMapStore.LookupEntry(GetMapId())->Instanceable() && !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)); + ApplyModFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTE_RELEASE_TIMER, !sMapStore.LookupEntry(GetMapId())->Instanceable() && !HasPreventResurectionAura()); // 6 minutes until repop at graveyard m_deathTimer = 6 * MINUTE * IN_MILLISECONDS; @@ -4779,10 +4779,8 @@ void Player::DurabilityPointsLossAll(int32 points, bool inventory) void Player::DurabilityPointsLoss(Item* item, int32 points) { - if (HasAuraType(SPELL_AURA_PREVENT_DURABILITY_LOSS)) - { + if (HasPreventDurabilityLossAura()) return; - } int32 pMaxDurability = item->GetUInt32Value(ITEM_FIELD_MAXDURABILITY); int32 pOldDurability = item->GetUInt32Value(ITEM_FIELD_DURABILITY); @@ -6110,7 +6108,7 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool awar if (honor_f <= 0) { - if (!uVictim || uVictim == this || uVictim->HasAuraType(SPELL_AURA_NO_PVP_CREDIT)) + if (!uVictim || uVictim == this || uVictim->HasNoPVPCreditAura()) return false; victim_guid = uVictim->GetGUID(); @@ -6223,7 +6221,7 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool awar if (sWorld->getBoolConfig(CONFIG_PVP_TOKEN_ENABLE)) { - if (!uVictim || uVictim == this || uVictim->HasAuraType(SPELL_AURA_NO_PVP_CREDIT)) + if (!uVictim || uVictim == this || uVictim->HasNoPVPCreditAura()) return true; if (uVictim->IsPlayer()) @@ -11666,7 +11664,7 @@ void Player::SendInitialPacketsAfterAddToMap() // Fix mount, update block gets messed somewhere { - if (!isBeingLoaded() && GetMountBlockId() && !HasAuraType(SPELL_AURA_MOUNTED)) + if (!isBeingLoaded() && GetMountBlockId() && !HasMountedAura()) { AddAura(GetMountBlockId(), this); SetMountBlockId(0); @@ -11678,11 +11676,11 @@ void Player::SendInitialPacketsAfterAddToMap() GetZoneAndAreaId(newzone, newarea); UpdateZone(newzone, newarea); // also call SendInitWorldStates(); - if (HasAuraType(SPELL_AURA_MOD_STUN)) + if (HasStunAura()) SetMovement(MOVE_ROOT); // manual send package (have code in HandleEffect(this, AURA_EFFECT_HANDLE_SEND_FOR_CLIENT, true); that must not be re-applied. - if (HasAuraType(SPELL_AURA_MOD_ROOT)) + if (HasRootAura()) { WorldPacket data2(SMSG_FORCE_MOVE_ROOT, 10); data2 << GetPackGUID(); @@ -12072,13 +12070,13 @@ void Player::GetAurasForTarget(Unit* target, bool force /*= false*/) /*! Blizz sends certain movement packets sometimes even before CreateObject These movement packets are usually found in SMSG_COMPRESSED_MOVES */ - if (target->HasAuraType(SPELL_AURA_FEATHER_FALL)) + if (target->HasFeatherFallAura()) target->SendMovementFeatherFall(this); - if (target->HasAuraType(SPELL_AURA_WATER_WALK)) + if (target->HasWaterWalkAura()) target->SendMovementWaterWalking(this); - if (target->HasAuraType(SPELL_AURA_HOVER)) + if (target->HasHoverAura()) target->SendMovementHover(this); WorldPacket data(SMSG_AURA_UPDATE_ALL); @@ -13863,8 +13861,8 @@ void Player::HandleFall(MovementInfo const& movementInfo) //Players with low fall distance, Feather Fall or physical immunity (charges used) are ignored // 14.57 can be calculated by resolving damageperc formula below to 0 if (z_diff >= 14.57f && !isDead() && !IsGameMaster() && !GetCommandStatus(CHEAT_GOD) && - !HasAuraType(SPELL_AURA_HOVER) && !HasAuraType(SPELL_AURA_FEATHER_FALL) && - !HasAuraType(SPELL_AURA_FLY)) + !HasHoverAura() && !HasFeatherFallAura() && + !HasFlyAura()) { //Safe fall, fall height reduction int32 safe_fall = GetTotalAuraModifier(SPELL_AURA_SAFE_FALL); diff --git a/src/server/game/Entities/Player/PlayerStorage.cpp b/src/server/game/Entities/Player/PlayerStorage.cpp index 66b6c142d9794b..8c7b9da6fa1059 100644 --- a/src/server/game/Entities/Player/PlayerStorage.cpp +++ b/src/server/game/Entities/Player/PlayerStorage.cpp @@ -5132,7 +5132,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons { // xinef: resurrect player, cant log in dead without corpse { - if (HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (HasSpiritOfRedemptionAura()) RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT); if (!IsAlive()) ResurrectPlayer(1.0f); diff --git a/src/server/game/Entities/Player/PlayerUpdates.cpp b/src/server/game/Entities/Player/PlayerUpdates.cpp index f03de45c755b7b..d173213487cdf5 100644 --- a/src/server/game/Entities/Player/PlayerUpdates.cpp +++ b/src/server/game/Entities/Player/PlayerUpdates.cpp @@ -356,7 +356,7 @@ void Player::Update(uint32 p_time) // not auto-free ghost from body in instances if (m_deathTimer > 0 && !GetMap()->Instanceable() && - !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)) + !HasPreventResurectionAura()) { if (p_time >= m_deathTimer) { @@ -1715,7 +1715,7 @@ void Player::UpdateTriggerVisibility() // Update fields of triggers, transformed units or unselectable // units (values dependent on GM state) if (!creature || (!creature->IsTrigger() && - !creature->HasAuraType(SPELL_AURA_TRANSFORM) && + !creature->HasTransformAura() && !creature->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))) continue; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c561dc3ad30148..40b36895d979d6 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2836,7 +2836,7 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst(Unit const* victim, WeaponAttackTy // Dodge chance // only players can't dodge if attacker is behind - if (victim->IsPlayer() && !victim->HasInArc(M_PI, this) && !victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION)) + if (victim->IsPlayer() && !victim->HasInArc(M_PI, this) && !victim->HasIgnoreHitDirectionAura()) { //LOG_DEBUG("entities.unit", "RollMeleeOutcomeAgainst: attack came from behind and victim was a player."); } @@ -2871,7 +2871,7 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst(Unit const* victim, WeaponAttackTy // parry & block chances // check if attack comes from behind, nobody can parry or block if attacker is behind - if (!victim->HasInArc(M_PI, this) && !victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION)) + if (!victim->HasInArc(M_PI, this) && !victim->HasIgnoreHitDirectionAura()) { LOG_DEBUG("entities.unit", "RollMeleeOutcomeAgainst: attack came from behind."); } @@ -3103,7 +3103,7 @@ bool Unit::isSpellBlocked(Unit* victim, SpellInfo const* spellProto, WeaponAttac if (spellProto && spellProto->HasAttribute(SPELL_ATTR0_NO_ACTIVE_DEFENSE)) return false; - if (victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION) || victim->HasInArc(M_PI, this)) + if (victim->HasIgnoreHitDirectionAura() || victim->HasInArc(M_PI, this)) { // Check creatures flags_extra for disable block if (victim->IsCreature() && @@ -3201,7 +3201,7 @@ SpellMissInfo Unit::MeleeSpellHitResult(Unit* victim, SpellInfo const* spellInfo if (attType == RANGED_ATTACK) { // only if in front - if (!victim->HasUnitState(UNIT_STATE_STUNNED) && (victim->HasInArc(M_PI, this) || victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION))) + if (!victim->HasUnitState(UNIT_STATE_STUNNED) && (victim->HasInArc(M_PI, this) || victim->HasIgnoreHitDirectionAura())) { int32 deflect_chance = victim->GetTotalAuraModifier(SPELL_AURA_DEFLECT_SPELLS) * 100; tmp += deflect_chance; @@ -3217,7 +3217,7 @@ SpellMissInfo Unit::MeleeSpellHitResult(Unit* victim, SpellInfo const* spellInfo // xinef: if from behind or spell requires cast from behind if (!victim->HasInArc(M_PI, this)) { - if (!victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION) || spellInfo->HasAttribute(SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET)) + if (!victim->HasIgnoreHitDirectionAura() || spellInfo->HasAttribute(SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET)) { // Can`t dodge from behind in PvP (but its possible in PvE) if (victim->IsPlayer()) @@ -3448,7 +3448,7 @@ SpellMissInfo Unit::MagicSpellHitResult(Unit* victim, SpellInfo const* spellInfo return SPELL_MISS_RESIST; // cast by caster in front of victim - if (!victim->HasUnitState(UNIT_STATE_STUNNED) && (victim->HasInArc(M_PI, this) || victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION))) + if (!victim->HasUnitState(UNIT_STATE_STUNNED) && (victim->HasInArc(M_PI, this) || victim->HasIgnoreHitDirectionAura())) { int32 deflect_chance = victim->GetTotalAuraModifier(SPELL_AURA_DEFLECT_SPELLS) * 100; tmp += deflect_chance; @@ -10315,11 +10315,11 @@ bool Unit::Attack(Unit* victim, bool meleeAttack) } // Unit with SPELL_AURA_SPIRIT_OF_REDEMPTION can not attack - if (HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (HasSpiritOfRedemptionAura()) return false; // remove SPELL_AURA_MOD_UNATTACKABLE at attack (in case non-interruptible spells stun aura applied also that not let attack) - if (HasAuraType(SPELL_AURA_MOD_UNATTACKABLE)) + if (HasUnattackableAura()) RemoveAurasByType(SPELL_AURA_MOD_UNATTACKABLE); if (m_attacking) @@ -10996,7 +10996,7 @@ bool RedirectSpellEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) if (Unit* auraOwner = ObjectAccessor::GetUnit(_self, _auraOwnerGUID)) { // Xinef: already removed - if (!auraOwner->HasAuraType(SPELL_AURA_SPELL_MAGNET)) + if (!auraOwner->HasSpellMagnetAura()) return true; Unit::AuraEffectList const& magnetAuras = auraOwner->GetAuraEffectsByType(SPELL_AURA_SPELL_MAGNET); @@ -11873,7 +11873,7 @@ uint32 Unit::SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, ui } // xinef: sanctified wrath talent - if (caster && TakenTotalMod < 1.0f && caster->HasAuraType(SPELL_AURA_MOD_IGNORE_TARGET_RESIST)) + if (caster && TakenTotalMod < 1.0f && caster->HasIgnoreTargetResistAura()) { float ignoreModifier = 1.0f - TakenTotalMod; bool addModifier = false; @@ -12080,7 +12080,7 @@ float Unit::SpellTakenCritChance(Unit const* caster, SpellInfo const* spellProto { // Modify critical chance by victim SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE // xinef: apply max and min only - if (HasAuraType(SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE)) + if (HasAttackerSpellCritChanceAura()) { crit_chance += GetMaxNegativeAuraModifierByMiscMask(SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE, schoolMask); crit_chance += GetMaxPositiveAuraModifierByMiscMask(SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE, schoolMask); @@ -12762,7 +12762,7 @@ bool Unit::IsImmunedToDamage(SpellInfo const* spellInfo) const return false; } - if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasSpiritOfRedemptionAura()) { return false; } @@ -12795,7 +12795,7 @@ bool Unit::IsImmunedToDamage(Spell const* spell) const return false; } - if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasSpiritOfRedemptionAura()) { return false; } @@ -12842,7 +12842,7 @@ bool Unit::IsImmunedToSchool(SpellSchoolMask meleeSchoolMask) const bool Unit::IsImmunedToSchool(SpellInfo const* spellInfo) const { - if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasSpiritOfRedemptionAura()) return false; uint32 schoolMask = spellInfo->GetSchoolMask(); @@ -12866,7 +12866,7 @@ bool Unit::IsImmunedToSchool(SpellInfo const* spellInfo) const bool Unit::IsImmunedToSchool(Spell const* spell) const { SpellInfo const* spellInfo = spell->GetSpellInfo(); - if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasSpiritOfRedemptionAura()) { return false; } @@ -12929,7 +12929,7 @@ bool Unit::IsImmunedToSpell(SpellInfo const* spellInfo, Spell const* spell) return true; } - if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasSpiritOfRedemptionAura()) return false; if (spellInfo->Dispel) @@ -13007,7 +13007,7 @@ bool Unit::IsImmunedToSpellEffect(SpellInfo const* spellInfo, uint32 index) cons if (spellInfo->HasAttribute(SPELL_ATTR4_OWNER_POWER_SCALING)) return false; - if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) && !HasSpiritOfRedemptionAura()) return false; //If m_immuneToEffect type contain this effect type, IMMUNE effect. @@ -13349,7 +13349,7 @@ uint32 Unit::MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage, WeaponAttackT } // xinef: sanctified wrath talent - if (TakenTotalMod < 1.0f && attacker->HasAuraType(SPELL_AURA_MOD_IGNORE_TARGET_RESIST)) + if (TakenTotalMod < 1.0f && attacker->HasIgnoreTargetResistAura()) { float ignoreModifier = 1.0f - TakenTotalMod; bool addModifier = false; @@ -14635,7 +14635,7 @@ bool Unit::CanHaveThreatList(bool skipAliveCheck) const float Unit::ApplyTotalThreatModifier(float fThreat, SpellSchoolMask schoolMask) { - if (!HasAuraType(SPELL_AURA_MOD_THREAT) || fThreat < 0) + if (!HasThreatAura() || fThreat < 0) return fThreat; SpellSchools school = GetFirstSchoolInMask(schoolMask); @@ -17838,7 +17838,7 @@ void Unit::Kill(Unit* killer, Unit* victim, bool durabilityLoss, WeaponAttackTyp if (AuraEffect* aurEff = victim->GetAuraEffectDummy(20711)) { // Xinef: aura_spirit_of_redemption is triggered by 27827 shapeshift - if (victim->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION) || victim->HasAura(27827)) + if (victim->HasSpiritOfRedemptionAura() || victim->HasAura(27827)) { /*LOG_INFO("misc", "Player ({}) died with spirit of redemption. Killer (Entry: {}, Name: {}), Map: {}, x: {}, y: {}, z: {}", victim->GetGUID().ToString(), killer ? killer->GetEntry() : 1, killer ? killer->GetName() : "", victim->GetMapId(), victim->GetPositionX(), @@ -18082,7 +18082,7 @@ void Unit::SetControlled(bool apply, UnitState state, Unit* source /*= nullptr*/ switch (state) { case UNIT_STATE_STUNNED: - if (HasAuraType(SPELL_AURA_MOD_STUN)) + if (HasStunAura()) return; ClearUnitState(state); SetStunned(false); @@ -18097,19 +18097,19 @@ void Unit::SetControlled(bool apply, UnitState state, Unit* source /*= nullptr*/ } } - if (HasAuraType(SPELL_AURA_MOD_ROOT) || GetVehicle()) + if (HasRootAura() || GetVehicle()) return; ClearUnitState(state); SetRooted(false); break; case UNIT_STATE_CONFUSED: - if (HasAuraType(SPELL_AURA_MOD_CONFUSE)) + if (HasConfuseAura()) return; ClearUnitState(state); SetConfused(false); break; case UNIT_STATE_FLEEING: - if (HasAuraType(SPELL_AURA_MOD_FEAR)) + if (HasFearAura()) return; ClearUnitState(state); SetFeared(false); @@ -18120,19 +18120,19 @@ void Unit::SetControlled(bool apply, UnitState state, Unit* source /*= nullptr*/ //ClearUnitState(state); - if (HasUnitState(UNIT_STATE_STUNNED) || HasAuraType(SPELL_AURA_MOD_STUN)) + if (HasUnitState(UNIT_STATE_STUNNED) || HasStunAura()) SetStunned(true); else { - if (HasUnitState(UNIT_STATE_ROOT) || HasAuraType(SPELL_AURA_MOD_ROOT)) + if (HasUnitState(UNIT_STATE_ROOT) || HasRootAura()) SetRooted(true); - if (HasUnitState(UNIT_STATE_CONFUSED) || HasAuraType(SPELL_AURA_MOD_CONFUSE)) + if (HasUnitState(UNIT_STATE_CONFUSED) || HasConfuseAura()) SetConfused(true); - else if (HasUnitState(UNIT_STATE_FLEEING) || HasAuraType(SPELL_AURA_MOD_FEAR)) + else if (HasUnitState(UNIT_STATE_FLEEING) || HasFearAura()) { bool isFear = false; - if (HasAuraType(SPELL_AURA_MOD_FEAR)) + if (HasFearAura()) { isFear = true; source = ObjectAccessor::GetUnit(*this, GetAuraEffectsByType(SPELL_AURA_MOD_FEAR).front()->GetCasterGUID()); @@ -19168,7 +19168,7 @@ void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ) player->GetSession()->SendPacket(&data); - if (player->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) || player->HasAuraType(SPELL_AURA_FLY)) + if (player->HasIncreaseMountedFlightSpeedAura() || player->HasFlyAura()) player->SetCanFly(true, true); player->SetCanKnockback(true); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index c8ebb0926731c6..48c31dbe2abed9 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1567,8 +1567,6 @@ class Unit : public WorldObject /*********************************************************/ /*** METHODS RELATED TO MOVEMENTS ***/ /*********************************************************/ - [[nodiscard]] bool isFeared() const { return HasAuraType(SPELL_AURA_MOD_FEAR); } - [[nodiscard]] bool isInRoots() const { return HasAuraType(SPELL_AURA_MOD_ROOT); } [[nodiscard]] bool IsPolymorphed() const; [[nodiscard]] bool isFrozen() const; [[nodiscard]] bool IsInFlight() const { return HasUnitState(UNIT_STATE_IN_FLIGHT); } @@ -1639,8 +1637,6 @@ class Unit : public WorldObject // SheathState [[nodiscard]] SheathState GetSheath() const { return SheathState(GetByteValue(UNIT_FIELD_BYTES_2, 0)); } virtual void SetSheath(SheathState sheathed) { SetByteValue(UNIT_FIELD_BYTES_2, 0, sheathed); } - [[nodiscard]] bool HasStealthAura() const { return HasAuraType(SPELL_AURA_MOD_STEALTH); } - [[nodiscard]] bool HasInvisibilityAura() const { return HasAuraType(SPELL_AURA_MOD_INVISIBILITY); } // StandState [[nodiscard]] uint8 getStandState() const { return GetByteValue(UNIT_FIELD_BYTES_1, 0); } @@ -1659,6 +1655,55 @@ class Unit : public WorldObject [[nodiscard]] bool isDying() const { return (m_deathState == DeathState::JustDied); }; [[nodiscard]] bool isDead() const { return (m_deathState == DeathState::Dead || m_deathState == DeathState::Corpse); }; + // Spell Aura helpers + [[nodiscard]] bool HasGhostAura() const { return HasAuraType(SPELL_AURA_GHOST); }; + [[nodiscard]] bool HasMountedAura() const { return HasAuraType(SPELL_AURA_MOUNTED); }; + [[nodiscard]] bool HasWaterWalkAura() const { return HasAuraType(SPELL_AURA_WATER_WALK); }; + [[nodiscard]] bool HasFeatherFallAura() const { return HasAuraType(SPELL_AURA_FEATHER_FALL); }; + [[nodiscard]] bool HasHoverAura() const { return HasAuraType(SPELL_AURA_HOVER); }; + [[nodiscard]] bool HasFlyAura() const { return HasAuraType(SPELL_AURA_FLY); }; + [[nodiscard]] bool HasSpiritOfRedemptionAura() const { return HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION); }; + [[nodiscard]] bool HasPreventsFleeingAura() const { return HasAuraType(SPELL_AURA_PREVENTS_FLEEING); }; + [[nodiscard]] bool HasPreventDurabilityLossAura() const { return HasAuraType(SPELL_AURA_PREVENT_DURABILITY_LOSS); }; + [[nodiscard]] bool HasPreventResurectionAura() const { return HasAuraType(SPELL_AURA_PREVENT_RESURRECTION); }; + [[nodiscard]] bool HasTransformAura() const { return HasAuraType(SPELL_AURA_TRANSFORM); }; + [[nodiscard]] bool HasInterruptRegenAura() const { return HasAuraType(SPELL_AURA_INTERRUPT_REGEN); }; + [[nodiscard]] bool HasNoPVPCreditAura() const { return HasAuraType(SPELL_AURA_NO_PVP_CREDIT); }; + [[nodiscard]] bool HasWaterBreathingAura() const { return HasAuraType(SPELL_AURA_WATER_BREATHING); }; + [[nodiscard]] bool HasIgnoreHitDirectionAura() const { return HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION); }; + [[nodiscard]] bool HasSpellMagnetAura() const { return HasAuraType(SPELL_AURA_SPELL_MAGNET); }; + [[nodiscard]] bool HasOpenStableAura() const { return HasAuraType(SPELL_AURA_OPEN_STABLE); }; + [[nodiscard]] bool HasCloneCasterAura() const { return HasAuraType(SPELL_AURA_CLONE_CASTER); }; + [[nodiscard]] bool HasReflectSpellsAura() const { return HasAuraType(SPELL_AURA_REFLECT_SPELLS); }; + [[nodiscard]] bool HasDetectAmoreAura() const { return HasAuraType(SPELL_AURA_DETECT_AMORE); }; + [[nodiscard]] bool HasAllowOnlyAbilityAura() const { return HasAuraType(SPELL_AURA_ALLOW_ONLY_ABILITY); }; + [[nodiscard]] bool HasPeriodicDummyAura() const { return HasAuraType(SPELL_AURA_PERIODIC_DUMMY); }; + [[nodiscard]] bool HasControlVehicleAura() const { return HasAuraType(SPELL_AURA_CONTROL_VEHICLE); }; + [[nodiscard]] bool HasAOECharmAura() const { return HasAuraType(SPELL_AURA_AOE_CHARM); }; + [[nodiscard]] bool HasDetectSpellsAura() const { return HasAuraType(SPELL_AURA_DEFLECT_SPELLS); }; + [[nodiscard]] bool HasPacifySilenceAura() const { return HasAuraType(SPELL_AURA_MOD_PACIFY_SILENCE); } + [[nodiscard]] bool HasSilenceAura() const { return HasAuraType(SPELL_AURA_MOD_SILENCE); } + [[nodiscard]] bool HasShapeshiftAura() const { return HasAuraType(SPELL_AURA_MOD_SHAPESHIFT); } + [[nodiscard]] bool HasDecreaseSpeedAura() const { return HasAuraType(SPELL_AURA_MOD_DECREASE_SPEED); } + [[nodiscard]] bool HasPacifyAura() const { return HasAuraType(SPELL_AURA_MOD_PACIFY); } + [[nodiscard]] bool HasIgnoreTargetResistAura() const { return HasAuraType(SPELL_AURA_MOD_IGNORE_TARGET_RESIST); } + [[nodiscard]] bool HasIncreaseMountedSpeedAura() const { return HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED); } + [[nodiscard]] bool HasIncreaseMountedFlightSpeedAura() const { return HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED); } + [[nodiscard]] bool HasThreatAura() const { return HasAuraType(SPELL_AURA_MOD_THREAT); } + [[nodiscard]] bool HasAttackerSpellCritChanceAura() const { return HasAuraType(SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE); } + [[nodiscard]] bool HasUnattackableAura() const { return HasAuraType(SPELL_AURA_MOD_UNATTACKABLE); } + [[nodiscard]] bool HasHealthRegenInCombatAura() const { return HasAuraType(SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT); } + [[nodiscard]] bool HasRegenDuringCombatAura() const { return HasAuraType(SPELL_AURA_MOD_REGEN_DURING_COMBAT); } + [[nodiscard]] bool HasFearAura() const { return HasAuraType(SPELL_AURA_MOD_FEAR); } + [[nodiscard]] bool HasConfuseAura() const { return HasAuraType(SPELL_AURA_MOD_CONFUSE); } + [[nodiscard]] bool HasRootAura() const { return HasAuraType(SPELL_AURA_MOD_ROOT); } + [[nodiscard]] bool HasStunAura() const { return HasAuraType(SPELL_AURA_MOD_STUN); } + [[nodiscard]] bool HasTauntAura() const { return HasAuraType(SPELL_AURA_MOD_TAUNT); } + [[nodiscard]] bool HasStealthAura() const { return HasAuraType(SPELL_AURA_MOD_STEALTH); } + [[nodiscard]] bool HasStealthDetectAura() const { return HasAuraType(SPELL_AURA_MOD_STEALTH_DETECT); } + [[nodiscard]] bool HasInvisibilityAura() const { return HasAuraType(SPELL_AURA_MOD_INVISIBILITY); } + [[nodiscard]] bool HasInvisibilityDetectAura() const { return HasAuraType(SPELL_AURA_MOD_INVISIBILITY_DETECT); } + // React methods bool IsHostileTo(Unit const* unit) const; [[nodiscard]] bool IsHostileToPlayers() const; diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.cpp b/src/server/game/Grids/Notifiers/GridNotifiers.cpp index 23b130b2ac7526..586e1336b78681 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.cpp +++ b/src/server/game/Grids/Notifiers/GridNotifiers.cpp @@ -369,7 +369,7 @@ void ObjectUpdater::Visit(GridRefMgr& m) bool AnyDeadUnitObjectInRangeCheck::operator()(Player* u) { - return !u->IsAlive() && !u->HasAuraType(SPELL_AURA_GHOST) && i_searchObj->IsWithinDistInMap(u, i_range); + return !u->IsAlive() && !u->HasGhostAura() && i_searchObj->IsWithinDistInMap(u, i_range); } bool AnyDeadUnitObjectInRangeCheck::operator()(Corpse* u) diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index 58a1069a4534e7..42f657f9bb836c 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -821,7 +821,7 @@ namespace Acore bool operator()(Unit* u) { if (u->IsAlive() && u->IsInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) && - (u->isFeared() || u->IsCharmed() || u->isFrozen() || u->HasUnitState(UNIT_STATE_STUNNED) || u->HasUnitState(UNIT_STATE_CONFUSED))) + (u->HasFearAura() || u->IsCharmed() || u->isFrozen() || u->HasUnitState(UNIT_STATE_STUNNED) || u->HasUnitState(UNIT_STATE_CONFUSED))) { return true; } diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index ba650b87103cac..b7e809e9c80f3e 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1068,7 +1068,7 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder const& holder) // Xinef: fix vendors falling of player vehicle, due to isBeingLoaded checks if (pCurrChar->IsInWorld()) { - if (pCurrChar->GetMountBlockId() && !pCurrChar->HasAuraType(SPELL_AURA_MOUNTED)) + if (pCurrChar->GetMountBlockId() && !pCurrChar->HasMountedAura()) { pCurrChar->CastSpell(pCurrChar, pCurrChar->GetMountBlockId(), true); pCurrChar->SetMountBlockId(0); diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 9d0cfbe65f21ad..b2f4647e464b54 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -63,7 +63,7 @@ void WorldSession::HandleRepopRequestOpcode(WorldPacket& recv_data) if (GetPlayer()->IsAlive() || GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_GHOST)) return; - if (GetPlayer()->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)) + if (GetPlayer()->HasPreventResurectionAura()) return; // silently return, client should display the error by itself // the world update order is sessions, players, creatures @@ -674,7 +674,7 @@ void WorldSession::HandleResurrectResponseOpcode(WorldPacket& recv_data) recv_data >> status; // Xinef: Prevent resurrect with prevent resurrection aura - if (GetPlayer()->IsAlive() || GetPlayer()->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)) + if (GetPlayer()->IsAlive() || GetPlayer()->HasPreventResurectionAura()) return; if (status == 0) diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 31bbfd07ed1150..d7cf92181e74f5 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -209,7 +209,7 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe case COMMAND_ATTACK: //spellId=1792 //ATTACK { // Can't attack if owner is pacified - if (_player->HasAuraType(SPELL_AURA_MOD_PACIFY)) + if (_player->HasPacifyAura()) { //pet->SendPetCastFail(spellId, SPELL_FAILED_PACIFIED); //TODO: Send proper error message to client @@ -467,7 +467,7 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe spell->finish(false); delete spell; - if (_player->HasAuraType(SPELL_AURA_MOD_PACIFY)) + if (_player->HasPacifyAura()) return; bool tempspellIsPositive = false; @@ -653,7 +653,7 @@ bool WorldSession::CheckStableMaster(ObjectGuid guid) // spell case or GM if (guid == GetPlayer()->GetGUID()) { - if (!GetPlayer()->IsGameMaster() && !GetPlayer()->HasAuraType(SPELL_AURA_OPEN_STABLE)) + if (!GetPlayer()->IsGameMaster() && !GetPlayer()->HasOpenStableAura()) { LOG_DEBUG("network.opcode", "Player ({}) attempt open stable in cheating way.", guid.ToString()); return false; diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index bfeb29179ad70f..3bf37668844bc5 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -633,7 +633,7 @@ void WorldSession::HandleSelfResOpcode(WorldPacket& /*recvData*/) if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(_player->GetUInt32Value(PLAYER_SELF_RES_SPELL))) { - if (_player->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION) && !spell->HasAttribute(SPELL_ATTR7_BYPASS_NO_RESURRECTION_AURA)) + if (_player->HasPreventResurectionAura() && !spell->HasAttribute(SPELL_ATTR7_BYPASS_NO_RESURRECTION_AURA)) { return; // silent return, client should display error by itself and not send this opcode } @@ -672,7 +672,7 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPacket& recvData) if (!unit) return; - if (!unit->HasAuraType(SPELL_AURA_CLONE_CASTER)) + if (!unit->HasCloneCasterAura()) return; // Get creator of the unit (SPELL_AURA_CLONE_CASTER does not stack) diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 769985848b3192..73d7b89a6dbb32 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -595,7 +595,7 @@ void WorldSession::LogoutPlayer(bool save) _player->BuildPlayerRepop(); _player->RepopAtGraveyard(); } - else if (_player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + else if (_player->HasSpiritOfRedemptionAura()) { // this will kill character by SPELL_AURA_SPIRIT_OF_REDEMPTION _player->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT); @@ -1019,7 +1019,7 @@ void WorldSession::ReadMovementInfo(WorldPacket& data, MovementInfo* mi) MOVEMENTFLAG_ROOT); //! Cannot hover without SPELL_AURA_HOVER - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_HOVER) && !GetPlayer()->HasAuraType(SPELL_AURA_HOVER), + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_HOVER) && !GetPlayer()->HasHoverAura(), MOVEMENTFLAG_HOVER); //! Cannot ascend and descend at the same time @@ -1044,12 +1044,12 @@ void WorldSession::ReadMovementInfo(WorldPacket& data, MovementInfo* mi) //! Cannot walk on water without SPELL_AURA_WATER_WALK REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_WATERWALKING) && - !GetPlayer()->HasAuraType(SPELL_AURA_WATER_WALK) && - !GetPlayer()->HasAuraType(SPELL_AURA_GHOST), + !GetPlayer()->HasWaterWalkAura() && + !GetPlayer()->HasGhostAura(), MOVEMENTFLAG_WATERWALKING); //! Cannot feather fall without SPELL_AURA_FEATHER_FALL - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FALLING_SLOW) && !GetPlayer()->HasAuraType(SPELL_AURA_FEATHER_FALL), + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FALLING_SLOW) && !GetPlayer()->HasFeatherFallAura(), MOVEMENTFLAG_FALLING_SLOW); /*! Cannot fly if no fly auras present. Exception is being a GM. @@ -1058,7 +1058,7 @@ void WorldSession::ReadMovementInfo(WorldPacket& data, MovementInfo* mi) e.g. aerial combat. */ - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY) && GetSecurity() == SEC_PLAYER && !GetPlayer()->m_mover->HasAuraType(SPELL_AURA_FLY) && !GetPlayer()->m_mover->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED), + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY) && GetSecurity() == SEC_PLAYER && !GetPlayer()->m_mover->HasFlyAura() && !GetPlayer()->m_mover->HasIncreaseMountedFlightSpeedAura(), MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY); //! Cannot fly and fall at the same time diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index b25ddd08baf759..8297d7ca5adaf6 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -1536,7 +1536,7 @@ void AuraEffect::HandleModInvisibilityDetect(AuraApplication const* aurApp, uint } else { - if (!target->HasAuraType(SPELL_AURA_MOD_INVISIBILITY_DETECT)) + if (!target->HasInvisibilityDetectAura()) target->m_invisibilityDetect.DelFlag(type); target->m_invisibilityDetect.AddValue(type, -GetAmount()); @@ -1565,7 +1565,7 @@ void AuraEffect::HandleModInvisibility(AuraApplication const* aurApp, uint8 mode } else { - if (!target->HasAuraType(SPELL_AURA_MOD_INVISIBILITY)) + if (!target->HasInvisibilityAura()) { // if not have different invisibility auras. // always remove glow vision @@ -1628,7 +1628,7 @@ void AuraEffect::HandleModStealthDetect(AuraApplication const* aurApp, uint8 mod } else { - if (!target->HasAuraType(SPELL_AURA_MOD_STEALTH_DETECT)) + if (!target->HasStealthDetectAura()) target->m_stealthDetect.DelFlag(type); target->m_stealthDetect.AddValue(type, -GetAmount()); @@ -1666,7 +1666,7 @@ void AuraEffect::HandleModStealth(AuraApplication const* aurApp, uint8 mode, boo { target->m_stealth.AddValue(type, -GetAmount()); - if (!target->HasAuraType(SPELL_AURA_MOD_STEALTH)) // if last SPELL_AURA_MOD_STEALTH + if (!target->HasStealthAura()) // if last SPELL_AURA_MOD_STEALTH { target->m_stealth.DelFlag(type); @@ -1723,7 +1723,7 @@ void AuraEffect::HandleDetectAmore(AuraApplication const* aurApp, uint8 mode, bo } else { - if (target->HasAuraType(SPELL_AURA_DETECT_AMORE)) + if (target->HasDetectAmoreAura()) { Unit::AuraEffectList const& amoreAuras = target->GetAuraEffectsByType(SPELL_AURA_DETECT_AMORE); for (AuraEffect const* aurEff : amoreAuras) @@ -1790,7 +1790,7 @@ void AuraEffect::HandleAuraGhost(AuraApplication const* aurApp, uint8 mode, bool } else { - if (target->HasAuraType(SPELL_AURA_GHOST)) + if (target->HasGhostAura()) return; target->ToPlayer()->RemovePlayerFlag(PLAYER_FLAGS_GHOST); @@ -2025,7 +2025,7 @@ void AuraEffect::HandleAuraModShapeshift(AuraApplication const* aurApp, uint8 mo { // reset model id if no other auras present // may happen when aura is applied on linked event on aura removal - if (!target->HasAuraType(SPELL_AURA_MOD_SHAPESHIFT)) + if (!target->HasShapeshiftAura()) { target->SetShapeshiftForm(FORM_NONE); if (target->IsClass(CLASS_DRUID, CLASS_CONTEXT_ABILITY)) @@ -2933,7 +2933,7 @@ void AuraEffect::HandleModUnattackable(AuraApplication const* aurApp, uint8 mode Unit* target = aurApp->GetTarget(); // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit - if (!apply && target->HasAuraType(SPELL_AURA_MOD_UNATTACKABLE)) + if (!apply && target->HasUnattackableAura()) return; target->ApplyModFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE, apply); @@ -3035,7 +3035,7 @@ void AuraEffect::HandleAuraModSilence(AuraApplication const* aurApp, uint8 mode, else { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit - if (target->HasAuraType(SPELL_AURA_MOD_SILENCE) || target->HasAuraType(SPELL_AURA_MOD_PACIFY_SILENCE)) + if (target->HasSilenceAura() || target->HasPacifySilenceAura()) return; target->RemoveUnitFlag(UNIT_FLAG_SILENCED); @@ -3057,7 +3057,7 @@ void AuraEffect::HandleAuraModPacify(AuraApplication const* aurApp, uint8 mode, else { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit - if (target->HasAuraType(SPELL_AURA_MOD_PACIFY) || target->HasAuraType(SPELL_AURA_MOD_PACIFY_SILENCE)) + if (target->HasPacifyAura() || target->HasPacifySilenceAura()) return; target->RemoveUnitFlag(UNIT_FLAG_PACIFIED); } @@ -3073,7 +3073,7 @@ void AuraEffect::HandleAuraModPacifyAndSilence(AuraApplication const* aurApp, ui if (!(apply)) { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit - if (target->HasAuraType(SPELL_AURA_MOD_PACIFY_SILENCE)) + if (target->HasPacifySilenceAura()) return; } HandleAuraModPacify(aurApp, mode, apply); @@ -3094,7 +3094,7 @@ void AuraEffect::HandleAuraAllowOnlyAbility(AuraApplication const* aurApp, uint8 else { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit - if (target->HasAuraType(SPELL_AURA_ALLOW_ONLY_ABILITY)) + if (target->HasAllowOnlyAbilityAura()) return; target->ToPlayer()->RemovePlayerFlag(PLAYER_ALLOW_ONLY_ABILITY); } @@ -3312,7 +3312,7 @@ void AuraEffect::HandleAuraAllowFlight(AuraApplication const* aurApp, uint8 mode if (!apply) { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit - if (target->HasAuraType(GetAuraType()) || target->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) + if (target->HasAuraType(GetAuraType()) || target->HasIncreaseMountedFlightSpeedAura()) return; } @@ -3526,7 +3526,7 @@ void AuraEffect::HandlePreventFleeing(AuraApplication const* aurApp, uint8 mode, Unit* target = aurApp->GetTarget(); // Since patch 3.0.2 this mechanic no longer affects fear effects. It will ONLY prevent humanoids from fleeing due to low health. - if (target->IsPlayer() || !apply || target->HasAuraType(SPELL_AURA_MOD_FEAR)) + if (target->IsPlayer() || !apply || target->HasFearAura()) return; /// @todo: find a way to cancel fleeing for assistance. /// Currently this will only stop creatures fleeing due to low health that could not find nearby allies to flee towards. @@ -3721,7 +3721,7 @@ void AuraEffect::HandleAuraModIncreaseFlightSpeed(AuraApplication const* aurApp, if (GetAuraType() == SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit - if (mode & AURA_EFFECT_HANDLE_SEND_FOR_CLIENT_MASK && (apply || (!target->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) && !target->HasAuraType(SPELL_AURA_FLY)))) + if (mode & AURA_EFFECT_HANDLE_SEND_FOR_CLIENT_MASK && (apply || (!target->HasIncreaseMountedFlightSpeedAura() && !target->HasFlyAura()))) { target->SetCanFly(apply); @@ -5767,12 +5767,12 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool } break; case 62061: // Festive Holiday Mount - if (target->HasAuraType(SPELL_AURA_MOUNTED)) + if (target->HasMountedAura()) { uint32 creatureEntry = 0; if (apply) { - if (target->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) + if (target->HasIncreaseMountedFlightSpeedAura()) creatureEntry = 24906; else creatureEntry = 15665; @@ -5790,7 +5790,7 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool } break; case FRESH_BREWFEST_HOPS: // Festive Brewfest Mount - if (target->HasAuraType(SPELL_AURA_MOUNTED) && !target->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) + if (target->HasMountedAura() && !target->HasIncreaseMountedFlightSpeedAura()) { uint32 creatureEntry = 0; diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 932704c0195229..7e70af2be80133 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3105,7 +3105,7 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA // Xinef: Do not increase diminishing level for self cast m_diminishGroup = GetDiminishingReturnsGroupForSpell(m_spellInfo, m_triggeredByAuraSpell.spellInfo); // xinef: do not increase diminish level for bosses (eg. Void Reaver silence is never diminished) - if (((m_spellFlags & SPELL_FLAG_REFLECTED) && !(unit->HasAuraType(SPELL_AURA_REFLECT_SPELLS))) || (aura_effmask && m_diminishGroup && unit != m_caster && (!m_caster->IsCreature() || !m_caster->ToCreature()->isWorldBoss()))) + if (((m_spellFlags & SPELL_FLAG_REFLECTED) && !(unit->HasReflectSpellsAura())) || (aura_effmask && m_diminishGroup && unit != m_caster && (!m_caster->IsCreature() || !m_caster->ToCreature()->isWorldBoss()))) { m_diminishLevel = unit->GetDiminishing(m_diminishGroup); DiminishingReturnsType type = GetDiminishingReturnsGroupType(m_diminishGroup); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 4e8e9e507b227d..e34918ac19b6db 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3498,7 +3498,7 @@ void Spell::EffectWeaponDmg(SpellEffIndex effIndex) // Glyph of Blood Strike if (m_caster->GetAuraEffect(59332, EFFECT_0)) - if (unitTarget->HasAuraType(SPELL_AURA_MOD_DECREASE_SPEED)) + if (unitTarget->HasDecreaseSpeedAura()) AddPct(totalDamagePercentMod, 20.0f); break; } @@ -4199,7 +4199,7 @@ void Spell::EffectStuck(SpellEffIndex /*effIndex*/) // xinef: if player is dead - teleport to graveyard if (!target->IsAlive()) { - if (target->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)) + if (target->HasPreventResurectionAura()) return; // xinef: player is in corpse diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 4630ac2bb26ca2..9716102a5cdf9c 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1777,7 +1777,7 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, WorldObject const* ta // only spells with SPELL_ATTR3_ONLY_ON_GHOSTS can target ghosts if (IsRequiringDeadTarget()) { - if (!unitTarget->HasAuraType(SPELL_AURA_GHOST)) + if (!unitTarget->HasGhostAura()) return SPELL_FAILED_TARGET_NOT_GHOST; if (!IsDeathPersistent() && !IsAllowingDeadTarget()) return SPELL_FAILED_BAD_TARGETS; @@ -1923,7 +1923,7 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, WorldObject const* ta if (ExcludeTargetAuraSpell && unitTarget->HasAura(sSpellMgr->GetSpellIdForDifficulty(ExcludeTargetAuraSpell, caster))) return SPELL_FAILED_TARGET_AURASTATE; - if (unitTarget->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION) && !HasAttribute(SPELL_ATTR7_BYPASS_NO_RESURRECTION_AURA)) + if (unitTarget->HasPreventResurectionAura() && !HasAttribute(SPELL_ATTR7_BYPASS_NO_RESURRECTION_AURA)) if (HasEffect(SPELL_EFFECT_SELF_RESURRECT) || HasEffect(SPELL_EFFECT_RESURRECT) || HasEffect(SPELL_EFFECT_RESURRECT_NEW)) return SPELL_FAILED_TARGET_CANNOT_BE_RESURRECTED; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 7548c552ff7779..781976ccfaf2b6 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -1111,10 +1111,10 @@ bool SpellArea::IsFitToRequirements(Player const* player, uint32 newZone, uint32 AreaTableEntry const* pArea = sAreaTableStore.LookupEntry(player->GetAreaId()); if (!(pArea && pArea->flags & AREA_FLAG_NO_FLY_ZONE)) return false; - if (!player->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) && !player->HasAuraType(SPELL_AURA_FLY)) + if (!player->HasIncreaseMountedFlightSpeedAura() && !player->HasFlyAura()) return false; // Xinef: Underbelly elixir - if (player->GetPositionZ() < 637.0f && player->HasAuraType(SPELL_AURA_TRANSFORM)) + if (player->GetPositionZ() < 637.0f && player->HasTransformAura()) return false; break; } @@ -1124,7 +1124,7 @@ bool SpellArea::IsFitToRequirements(Player const* player, uint32 newZone, uint32 return false; Battlefield* Bf = sBattlefieldMgr->GetBattlefieldToZoneId(player->GetZoneId()); - if (!Bf || Bf->CanFlyIn() || (!player->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) && !player->HasAuraType(SPELL_AURA_FLY))) + if (!Bf || Bf->CanFlyIn() || (!player->HasIncreaseMountedFlightSpeedAura() && !player->HasFlyAura())) return false; break; } diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp index 646f8a79352f93..e90da5af4a2439 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -117,7 +117,7 @@ class reset_commandscript : public CommandScript uint8 powerType = classEntry->powerType; // reset m_form if no aura - if (!player->HasAuraType(SPELL_AURA_MOD_SHAPESHIFT)) + if (!player->HasShapeshiftAura()) player->SetShapeshiftForm(FORM_NONE); player->SetFactionForRace(player->getRace()); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp index a103a521c99376..b0164e2cf7c7d0 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp @@ -259,7 +259,7 @@ class spell_suppression_aura : public SpellScript targets.remove_if([&](WorldObject* target) -> bool { Unit* unit = target->ToUnit(); - return !unit || unit->HasAuraType(SPELL_AURA_MOD_STEALTH); + return !unit || unit->HasStealthAura(); }); } diff --git a/src/server/scripts/Events/hallows_end.cpp b/src/server/scripts/Events/hallows_end.cpp index 15e10a2e213504..40af139344a0f1 100644 --- a/src/server/scripts/Events/hallows_end.cpp +++ b/src/server/scripts/Events/hallows_end.cpp @@ -725,7 +725,7 @@ struct npc_hallows_end_soh : public ScriptedAI bool checkBurningTriggers = false; for (ObjectGuid const& guid : unitList) if (Unit* c = ObjectAccessor::GetUnit(*me, guid)) - if (c->HasAuraType(SPELL_AURA_PERIODIC_DUMMY)) + if (c->HasPeriodicDummyAura()) { checkBurningTriggers = true; break; @@ -743,7 +743,7 @@ struct npc_hallows_end_soh : public ScriptedAI bool failed = false; for (ObjectGuid const& guid : unitList) if (Unit* c = ObjectAccessor::GetUnit(*me, guid)) - if (c->HasAuraType(SPELL_AURA_PERIODIC_DUMMY)) + if (c->HasPeriodicDummyAura()) { failed = true; break; @@ -791,7 +791,7 @@ struct npc_hallows_end_soh : public ScriptedAI { if (Unit* c = ObjectAccessor::GetUnit(*me, guid)) { - if (!c->HasAuraType(SPELL_AURA_PERIODIC_DUMMY)) + if (!c->HasPeriodicDummyAura()) { tmpList.push_back(c); } diff --git a/src/server/scripts/Events/winter_veil.cpp b/src/server/scripts/Events/winter_veil.cpp index ddd027e1a13559..6a66ed29e67dc9 100644 --- a/src/server/scripts/Events/winter_veil.cpp +++ b/src/server/scripts/Events/winter_veil.cpp @@ -82,7 +82,7 @@ class spell_winter_wondervolt_trap : public SpellScript if (Player* target = GetHitPlayer()) { // check presence - if (target->HasAuraType(SPELL_AURA_TRANSFORM)) + if (target->HasTransformAura()) return; uint32 spellId = 0; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index a63f52bdaa3489..64a6de9a39c339 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -268,7 +268,7 @@ class boss_halion : public CreatureScript Map::PlayerList const& playerList = me->GetMap()->GetPlayers(); for(Map::PlayerList::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr) if (Player* player = itr->GetSource()) - if (!player->IsGameMaster() && player->IsAlive() && me->GetHomePosition().GetExactDist2d(player) < 52.0f && me->IsWithinLOSInMap(player) && !player->HasAuraType(SPELL_AURA_MOD_INVISIBILITY) && !player->HasAuraType(SPELL_AURA_MOD_STEALTH) && !player->HasAuraType(SPELL_AURA_MOD_UNATTACKABLE)) + if (!player->IsGameMaster() && player->IsAlive() && me->GetHomePosition().GetExactDist2d(player) < 52.0f && me->IsWithinLOSInMap(player) && !player->HasInvisibilityAura() && !player->HasStealthAura() && !player->HasUnattackableAura()) return true; return false; } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp index 936b11db22bcdc..0a44e0f9d1454a 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp @@ -146,7 +146,7 @@ struct boss_faction_championsAI : public ScriptedAI { // check for stun, fear, etc. // for casting, silence, disarm check individually in the ai - if (me->isFeared() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) + if (me->HasFearAura() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) { if (!IsHeroic()) return true; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index fb1025276e18ce..372081fe049815 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -831,7 +831,7 @@ class spell_valkyr_touch_aura : public AuraScript Map::PlayerList const& pl = caster->GetMap()->GetPlayers(); for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr ) if (Player* plr = itr->GetSource()) - if (plr->IsAlive() && !plr->HasAura(excludedID) && !plr->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (plr->IsAlive() && !plr->HasAura(excludedID) && !plr->HasSpiritOfRedemptionAura()) { uint32 absorb = 0; uint32 resist = 0; diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index 6af907e2d452b2..c4b0bdcc7dea29 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -957,7 +957,7 @@ class npc_ghostly_priest : public CreatureScript events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING) || me->isFeared() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) + if (me->HasUnitState(UNIT_STATE_CASTING) || me->HasFearAura() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) return; switch (events.ExecuteEvent()) @@ -1065,7 +1065,7 @@ class npc_phantom_mage : public CreatureScript events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING) || me->isFeared() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) + if (me->HasUnitState(UNIT_STATE_CASTING) || me->HasFearAura() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) return; switch (events.ExecuteEvent()) @@ -1219,7 +1219,7 @@ class npc_shadowy_mercenary : public CreatureScript events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING) || me->isFeared() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) + if (me->HasUnitState(UNIT_STATE_CASTING) || me->HasFearAura() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) return; switch (events.ExecuteEvent()) @@ -1324,7 +1324,7 @@ class npc_spectral_footman : public CreatureScript events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING) || me->isFeared() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) + if (me->HasUnitState(UNIT_STATE_CASTING) || me->HasFearAura() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) return; switch (events.ExecuteEvent()) @@ -1418,7 +1418,7 @@ class npc_tortured_rifleman : public CreatureScript events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING) || me->isFeared() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) + if (me->HasUnitState(UNIT_STATE_CASTING) || me->HasFearAura() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) return; switch (events.ExecuteEvent()) @@ -2152,7 +2152,7 @@ class npc_hor_raging_ghoul : public CreatureScript if (!UpdateVictim()) return; - if (me->HasUnitState(UNIT_STATE_CASTING) || me->isFeared() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) + if (me->HasUnitState(UNIT_STATE_CASTING) || me->HasFearAura() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) return; if (!leaped) @@ -2211,7 +2211,7 @@ class npc_hor_risen_witch_doctor : public CreatureScript events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING) || me->isFeared() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) + if (me->HasUnitState(UNIT_STATE_CASTING) || me->HasFearAura() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) return; switch (events.ExecuteEvent()) @@ -2280,7 +2280,7 @@ class npc_hor_lumbering_abomination : public CreatureScript events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING) || me->isFeared() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) + if (me->HasUnitState(UNIT_STATE_CASTING) || me->HasFearAura() || me->IsCharmed() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED)) return; switch (events.ExecuteEvent()) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index f67ad63330bc8c..1f26e1b7955c9b 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -443,7 +443,7 @@ class npc_bone_spike : public CreatureScript { if (Unit* trapped = summ->GetSummonerUnit()) { - if (!trapped->IsOnVehicle(me) || !trapped->IsAlive() || !me->GetInstanceScript() || me->GetInstanceScript()->GetBossState(DATA_LORD_MARROWGAR) != IN_PROGRESS || trapped->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (!trapped->IsOnVehicle(me) || !trapped->IsAlive() || !me->GetInstanceScript() || me->GetInstanceScript()->GetBossState(DATA_LORD_MARROWGAR) != IN_PROGRESS || trapped->HasSpiritOfRedemptionAura()) { DoAction(-1337); return; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 1bda7c69eb827f..d5107bdbc74b00 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -260,7 +260,7 @@ struct LastPhaseIceTombTargetSelector if (target->HasAura(SPELL_FROST_IMBUED_BLADE)) return false; - if (target->IsImmunedToDamageOrSchool(SPELL_SCHOOL_MASK_ALL) || target->HasAura(SPELL_ICE_TOMB_UNTARGETABLE) || target->HasAura(SPELL_ICE_TOMB_DAMAGE) || target->HasAura(SPELL_TANK_MARKER_AURA) || target->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) + if (target->IsImmunedToDamageOrSchool(SPELL_SCHOOL_MASK_ALL) || target->HasAura(SPELL_ICE_TOMB_UNTARGETABLE) || target->HasAura(SPELL_ICE_TOMB_DAMAGE) || target->HasAura(SPELL_TANK_MARKER_AURA) || target->HasSpiritOfRedemptionAura()) return false; return target != _source->GetVictim(); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 385150c1708fde..fbc510668bed58 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -1684,7 +1684,7 @@ class npc_frostwing_vrykul : public CreatureScript events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING) || me->isFeared() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED) || ((me->GetEntry() == NPC_YMIRJAR_DEATHBRINGER || me->GetEntry() == NPC_YMIRJAR_FROSTBINDER) && me->HasUnitFlag(UNIT_FLAG_SILENCED))) + if (me->HasUnitState(UNIT_STATE_CASTING) || me->HasFearAura() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED) || ((me->GetEntry() == NPC_YMIRJAR_DEATHBRINGER || me->GetEntry() == NPC_YMIRJAR_FROSTBINDER) && me->HasUnitFlag(UNIT_FLAG_SILENCED))) return; switch (events.ExecuteEvent()) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index d306053870f965..26f94defe68dad 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -1129,7 +1129,7 @@ class npc_ulduar_leviathan_mkii : public CreatureScript DoMeleeAttackIfReady(); Unit* cannon = GetS3(); - if (!cannon || cannon->HasUnitState(UNIT_STATE_CASTING) || me->HasUnitState(UNIT_STATE_CASTING) || me->HasAuraType(SPELL_AURA_MOD_SILENCE)) + if (!cannon || cannon->HasUnitState(UNIT_STATE_CASTING) || me->HasUnitState(UNIT_STATE_CASTING) || me->HasSilenceAura()) return; switch (events.ExecuteEvent()) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp index 68702d31384e4b..e2c684870c6fde 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp @@ -2603,7 +2603,7 @@ class spell_yogg_saron_insane_periodic_trigger : public SpellScript { std::list tmplist; for (std::list::iterator itr = targets.begin(); itr != targets.end(); ++itr) - if ((*itr)->IsPlayer() && !(*itr)->ToPlayer()->HasAuraType(SPELL_AURA_AOE_CHARM) && !(*itr)->ToPlayer()->HasAura(SPELL_SANITY)) + if ((*itr)->IsPlayer() && !(*itr)->ToPlayer()->HasAOECharmAura() && !(*itr)->ToPlayer()->HasAura(SPELL_SANITY)) tmplist.push_back(*itr); targets.clear(); diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index df5621f74bac4e..b3317b9df26a8b 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -350,7 +350,7 @@ class npc_wild_wyrm : public CreatureScript void EnterEvadeMode(EvadeReason why) override { - if (switching || me->HasAuraType(SPELL_AURA_CONTROL_VEHICLE)) + if (switching || me->HasControlVehicleAura()) return; ScriptedAI::EnterEvadeMode(why); } diff --git a/src/server/scripts/Pet/pet_generic.cpp b/src/server/scripts/Pet/pet_generic.cpp index 539b29bc159d15..6e91d2a19ae94e 100644 --- a/src/server/scripts/Pet/pet_generic.cpp +++ b/src/server/scripts/Pet/pet_generic.cpp @@ -597,7 +597,7 @@ struct npc_pet_gen_wind_rider_cub : public NullCreatureAI checkTimer2 = 0; if (Unit* owner = me->GetOwner()) { - if (owner->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) || owner->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED)) + if (owner->HasIncreaseMountedFlightSpeedAura() || owner->HasIncreaseMountedSpeedAura()) { isFlying = true; me->SetCanFly(true); diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index b16a931eff5b14..0ec9a5fcddabbd 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -1373,7 +1373,7 @@ class spell_dk_death_grip : public SpellScript float casterZ = GetCaster()->GetPositionZ(); // for Ring of Valor WorldLocation gripPos = *GetExplTargetDest(); if (Unit* target = GetHitUnit()) - if (!target->HasAuraType(SPELL_AURA_DEFLECT_SPELLS) || target->HasUnitState(UNIT_STATE_STUNNED)) // Deterrence + if (!target->HasDetectSpellsAura() || target->HasUnitState(UNIT_STATE_STUNNED)) // Deterrence { if (target != GetCaster()) { diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 04986c8c65bb26..b2981852203299 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -517,7 +517,7 @@ class spell_gen_grow_flower_patch : public SpellScript SpellCastResult CheckCast() { - if (GetCaster()->HasAuraType(SPELL_AURA_MOD_STEALTH) || GetCaster()->HasAuraType(SPELL_AURA_MOD_INVISIBILITY)) + if (GetCaster()->HasStealthAura() || GetCaster()->HasInvisibilityAura()) return SPELL_FAILED_DONT_REPORT; return SPELL_CAST_OK; diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 6441d772649436..c5d16318ccc15d 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -2881,7 +2881,7 @@ class spell_item_reindeer_transformation : public SpellScript void HandleDummy(SpellEffIndex /* effIndex */) { Unit* caster = GetCaster(); - if (caster->HasAuraType(SPELL_AURA_MOUNTED)) + if (caster->HasMountedAura()) { float flyspeed = caster->GetSpeedRate(MOVE_FLIGHT); float speed = caster->GetSpeedRate(MOVE_RUN); @@ -3172,7 +3172,7 @@ class spell_item_brewfest_mount_transformation : public SpellScript return; } - if (caster->HasAuraType(SPELL_AURA_MOUNTED)) + if (caster->HasMountedAura()) { caster->RemoveAurasByType(SPELL_AURA_MOUNTED); uint32 spell_id; diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index c0a18506b4b5db..02f5105f0d9c99 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1830,7 +1830,7 @@ class spell_q11010_q11102_q11023_aggro_check : public SpellScript { if (Player* playerTarget = GetHitPlayer()) // Check if found player target is on fly mount or using flying form - if (playerTarget->HasAuraType(SPELL_AURA_FLY) || playerTarget->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) + if (playerTarget->HasFlyAura() || playerTarget->HasIncreaseMountedFlightSpeedAura()) playerTarget->CastSpell(playerTarget, SPELL_FLAK_CANNON_TRIGGER, TRIGGERED_FULL_MASK); } @@ -1873,7 +1873,7 @@ class spell_q11010_q11102_q11023_choose_loc : public SpellScript Cell::VisitWorldObjects(caster, searcher, 65.0f); for (std::list::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr) // Check if found player target is on fly mount or using flying form - if ((*itr)->HasAuraType(SPELL_AURA_FLY) || (*itr)->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) + if ((*itr)->HasFlyAura() || (*itr)->HasIncreaseMountedFlightSpeedAura()) // Summom Fel Cannon (bunny version) at found player caster->SummonCreature(NPC_FEL_CANNON2, (*itr)->GetPositionX(), (*itr)->GetPositionY(), (*itr)->GetPositionZ()); } @@ -1894,7 +1894,7 @@ class spell_q11010_q11102_q11023_q11008_check_fly_mount : public SpellScript { Unit* caster = GetCaster(); // This spell will be cast only if caster has one of these auras - if (!(caster->HasAuraType(SPELL_AURA_FLY) || caster->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED))) + if (!(caster->HasFlyAura() || caster->HasIncreaseMountedFlightSpeedAura())) return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; return SPELL_CAST_OK; } From 81d1fcad6512debdd4205703ed9adae3227fe3c4 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Sun, 1 Dec 2024 12:52:44 +0100 Subject: [PATCH 25/66] fix(Scripts/ZulAman): eagle gauntlet (#20719) * sql * add script handling https://github.com/cmangos/mangos-wotlk/commit/4b890a4096153686f97c0faa3f6196b27205cc8a Co-authored-by: MantisLord * set Akilzon call for help boss should pull trash * style: remove blank lines * add passiveAI header and sort * Revert "set Akilzon call for help" This reverts commit 99143339a9f00f048d9bc707d5b8d348e8f6bbd4. line of sight blocks call for help --------- Co-authored-by: MantisLord --- .../rev_1732461302175126777.sql | 55 ++++++ .../ZulAman/instance_zulaman.cpp | 91 +++++++++- .../EasternKingdoms/ZulAman/zulaman.cpp | 160 +++++++++++++++++- .../scripts/EasternKingdoms/ZulAman/zulaman.h | 13 +- 4 files changed, 312 insertions(+), 7 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1732461302175126777.sql diff --git a/data/sql/updates/pending_db_world/rev_1732461302175126777.sql b/data/sql/updates/pending_db_world/rev_1732461302175126777.sql new file mode 100644 index 00000000000000..4b3fa0b631f5ee --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1732461302175126777.sql @@ -0,0 +1,55 @@ +-- +-- lookout +-- spawn coords, hp 58682 from 75449 +DELETE FROM `creature` WHERE (`id1` = 24175) AND (`guid` = 89281); +INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(89281, 24175, 0, 0, 568, 0, 0, 1, 1, 1, 206.92128, 1473.4196, 26.000067, 3.9619, 7200, 0, 0, 58682, 0, 0, 0, 0, 0, '', 0); + +UPDATE `creature_template` SET `unit_flags` = `unit_flags` | (64 | 32768) WHERE (`entry` = 24175); + +UPDATE `creature_template_model` SET `VerifiedBuild` = 53788 WHERE (`CreatureID` = 24175) AND `Idx` = 0; + +DELETE FROM `waypoint_data` WHERE `id` = 2417500; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `move_type`) VALUES +(2417500, 1, 226.08507, 1461.7535, 25.916739, NULL, 1), +(2417500, 2, 228.17633, 1433.8473, 27.119087, NULL, 1), +(2417500, 3, 227.73102, 1412.5535, 34.49932, NULL, 1), +(2417500, 4, 228.17111, 1388.2885, 42.451878, NULL, 1), +(2417500, 5, 232.54265, 1374.3815, 47.329865, NULL, 1), +(2417500, 6, 263.18665, 1376.4918, 49.32171, NULL, 1), +(2417500, 7, 281.35666, 1378.9646, 49.32171, NULL, 1), +(2417500, 8, 312.53738, 1389.2349, 57.287518, NULL, 1), +(2417500, 9, 330.47836, 1394.2004, 71.362785, NULL, 1); + +-- summon amani eagle at Akil'zon +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` = 43487); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 43487, 0, 0, 31, 0, 3, 23574, 0, 0, 0, 0, '', 'Summon Amani Eagle target Akil\'zon'); + +-- summon amani warrior at Eagle Troll Spawn Target +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` = 43486); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 43486, 0, 0, 31, 0, 3, 24325, 0, 0, 0, 0, '', 'Summon Amani Eagle target Eagle Troll Spawn Target'); + +DELETE FROM `creature_text` WHERE (`CreatureID` = 24175) AND (`GroupID` = 0); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(24175, 0, 0, 'Akil\'zon, the invaders approach!', 14, 0, 100, 5, 0, 0, 22971, 0, 'Amani\'shi Lookout'); + +UPDATE `creature_template` SET `ScriptName` = 'npc_amanishi_lookout' WHERE (`entry` = 24175); +UPDATE `creature_template` SET `ScriptName` = 'npc_eagle_trash_aggro_trigger' WHERE (`entry` = 24223); +UPDATE `creature_template` SET `ScriptName` = 'npc_amanishi_tempest' WHERE (`entry` = 24549); + +-- add missing wind walker and protector spawns +SET @GUID:= 93762; +SET @VERIFIED_BUILD:=0; +DELETE FROM `creature` WHERE (`id1` = 24179) AND (`guid` BETWEEN @GUID+0 AND @GUID+3); +DELETE FROM `creature` WHERE (`id1` = 24180) AND (`guid` BETWEEN @GUID+4 AND @GUID+7); +INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(@GUID+0, 24179, 0, 0, 568, 0, 0, 1, 1, 1, 284.0440, 1372.3200, 49.4050, 2.77507, 1800, 0, 0, @VERIFIED_BUILD, 0, 0, 0, 0, 0, '', 0), +(@GUID+1, 24179, 0, 0, 568, 0, 0, 1, 1, 1, 231.7970, 1393.4200, 40.5887, 1.69297, 1800, 0, 0, @VERIFIED_BUILD, 0, 0, 0, 0, 0, '', 0), +(@GUID+2, 24179, 0, 0, 568, 0, 0, 1, 1, 1, 244.8070, 1367.6600, 48.9498, 2.61799, 1800, 0, 0, @VERIFIED_BUILD, 0, 0, 0, 0, 0, '', 0), +(@GUID+3, 24179, 0, 0, 568, 0, 0, 1, 1, 1, 232.7490, 1428.7000, 28.8242, 1.83260, 1800, 0, 0, @VERIFIED_BUILD, 0, 0, 0, 0, 0, '', 0), +(@GUID+4, 24180, 0, 0, 568, 0, 0, 1, 1, 1, 274.3580, 1385.1600, 49.4050, 3.75246, 1800, 0, 0, @VERIFIED_BUILD, 0, 0, 0, 0, 0, '', 0), +(@GUID+5, 24180, 0, 0, 568, 0, 0, 1, 1, 1, 223.8010, 1424.9400, 29.4699, 1.16937, 1800, 0, 0, @VERIFIED_BUILD, 0, 0, 0, 0, 0, '', 0), +(@GUID+6, 24180, 0, 0, 568, 0, 0, 1, 1, 1, 224.0690, 1394.2600, 40.1985, 1.30900, 1800, 0, 0, @VERIFIED_BUILD, 0, 0, 0, 0, 0, '', 0), +(@GUID+7, 24180, 0, 0, 568, 0, 0, 1, 1, 1, 246.9080, 1375.1500, 49.4050, 2.89725, 1800, 0, 0, @VERIFIED_BUILD, 0, 0, 0, 0, 0, '', 0); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index 6d56638772cd6a..bfc5ddf2f60e9f 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -59,10 +59,11 @@ DoorData const doorData[] = ObjectData const creatureData[] = { - { NPC_JANALAI, DATA_JANALAI }, - { NPC_SPIRIT_LYNX, DATA_SPIRIT_LYNX }, - { NPC_HARRISON_JONES, DATA_HARRISON_JONES }, - { 0, 0 } + { NPC_JANALAI, DATA_JANALAI }, + { NPC_SPIRIT_LYNX, DATA_SPIRIT_LYNX }, + { NPC_HARRISON_JONES, DATA_HARRISON_JONES }, + { NPC_AMINISHI_LOOKOUT, DATA_LOOKOUT }, + { 0, 0 } }; ObjectData const gameObjectData[] = @@ -113,6 +114,29 @@ class instance_zulaman : public InstanceMapScript DoAction(ACTION_START_TIMED_RUN); } + void OnCreatureCreate(Creature* creature) override + { + switch (creature->GetEntry()) + { + // Akil'zon gauntlet + case NPC_AMINISHI_TEMPEST: + if (creature->GetPositionZ() >= 50.0f) // excludes Tempest in Hexlord Malacrass' trash + AkilzonTrash.insert(creature->GetGUID()); + break; + case NPC_AMINISHI_LOOKOUT: + case NPC_AMINISHI_PROTECTOR: + case NPC_EAGLE_TRASH_AGGRO_TRIGGER: + AkilzonTrash.insert(creature->GetGUID()); + break; + case NPC_AMANISHI_WIND_WALKER: + if (creature->GetPositionZ() >= 26.0f) // excludes Wind Walker in first patrol + AkilzonTrash.insert(creature->GetGUID()); + break; + } + + InstanceScript::OnCreatureCreate(creature); + } + void OnGameObjectCreate(GameObject* go) override { if (go->GetEntry() == GO_GATE_HEXLORD) @@ -167,6 +191,61 @@ class instance_zulaman : public InstanceMapScript RandVendor[0] = data; else if (type == TYPE_RAND_VENDOR_2) RandVendor[1] = data; + else if (type == TYPE_AKILZON_GAUNTLET) + { + if (data == IN_PROGRESS) + StartAkilzonGauntlet(); + else if (data == NOT_STARTED) + ResetAkilzonGauntlet(); + else if (data == DONE) + _akilzonGauntlet = DONE; + } + } + + void StartAkilzonGauntlet() + { + _akilzonGauntlet = IN_PROGRESS; + for (ObjectGuid const& guid : AkilzonTrash) + if (Creature* creature = instance->GetCreature(guid)) + switch (creature->GetEntry()) + { + case NPC_EAGLE_TRASH_AGGRO_TRIGGER: + creature->DisappearAndDie(); + break; + case NPC_AMINISHI_LOOKOUT: + case NPC_AMINISHI_TEMPEST: + creature->AI()->DoAction(ACTION_START_AKILZON_GAUNTLET); + break; + default: + break; + } + } + + void ResetAkilzonGauntlet() + { + _akilzonGauntlet = NOT_STARTED; + for (ObjectGuid guid : AkilzonTrash) + if (Creature* creature = instance->GetCreature(guid)) + if (!creature->IsAlive()) + creature->Respawn(); + if (Creature* creature = GetCreature(DATA_LOOKOUT)) + if (creature->isMoving()) + creature->Respawn(true); + } + + void OnCreatureEvade(Creature* creature) override + { + switch (creature->GetEntry()) + { + case NPC_AMINISHI_TEMPEST: + case NPC_AMINISHI_PROTECTOR: + case NPC_AMANISHI_WIND_WALKER: + if (AkilzonTrash.contains(creature->GetGUID())) + ResetAkilzonGauntlet(); + break; + default: + break; + } } bool SetBossState(uint32 type, EncounterState state) override @@ -234,6 +313,8 @@ class instance_zulaman : public InstanceMapScript return RandVendor[0]; else if (type == TYPE_RAND_VENDOR_2) return RandVendor[1]; + else if (type == TYPE_AKILZON_GAUNTLET) + return _akilzonGauntlet; return 0; } @@ -245,6 +326,8 @@ class instance_zulaman : public InstanceMapScript private: uint32 RandVendor[RAND_VENDOR]; + GuidSet AkilzonTrash; + EncounterState _akilzonGauntlet = NOT_STARTED; }; InstanceScript* GetInstanceScript(InstanceMap* map) const override diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index da714fb7b5ec35..ddb9bc6fd33938 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -15,14 +15,15 @@ * with this program. If not, see . */ -#include "zulaman.h" #include "CreatureScript.h" +#include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" #include "SpellInfo.h" #include "SpellScript.h" #include "SpellScriptLoader.h" +#include "zulaman.h" /*###### ## npc_forest_frog @@ -530,10 +531,167 @@ class spell_ritual_of_power : public SpellScript } }; +enum AmanishiLookout +{ + PATH_LOOKOUT = 2417500, + SAY_INVADERS = 0, +}; + +struct npc_amanishi_lookout : public NullCreatureAI +{ + npc_amanishi_lookout(Creature* creature) : NullCreatureAI(creature), _instance(creature->GetInstanceScript()) {} + + void Reset() override + { + me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); + me->RemoveUnitFlag(UNIT_FLAG_RENAME); + } + + void MoveInLineOfSight(Unit* who) override + { + if (!me->IsWithinDist(who, 25.0f, false)) // distance not confirmed + return; + + Player* player = who->GetCharmerOrOwnerPlayerOrPlayerItself(); + if (!player || player->IsGameMaster()) + return; + + if (!who->IsWithinLOSInMap(me)) + return; + + if (_instance->GetData(TYPE_AKILZON_GAUNTLET) == NOT_STARTED) + _instance->SetData(TYPE_AKILZON_GAUNTLET, IN_PROGRESS); + } + + void DoAction(int32 action) override + { + if (action == ACTION_START_AKILZON_GAUNTLET) + { + Talk(SAY_INVADERS); + me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); + me->SetUnitFlag(UNIT_FLAG_RENAME); + me->GetMotionMaster()->MovePath(PATH_LOOKOUT, false); + } + } + + void MovementInform(uint32 type, uint32 id) override + { + // at boss + if (type == WAYPOINT_MOTION_TYPE && id == 8) // should despawn with waypoint script + me->DespawnOrUnsummon(0s, 0s); + } +private: + InstanceScript* _instance; +}; + +enum AmanishiTempest +{ + ACTION_START_GAUNTLET = 1, + GROUP_AKILZON_GAUNTLET = 1, + SPELL_SUMMON_EAGLE = 43487, + SPELL_SUMMON_WARRIOR = 43486, + SPELL_THUNDERCLAP = 44033, +}; + +struct npc_amanishi_tempest : public ScriptedAI +{ + npc_amanishi_tempest(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()), _summons(creature) { } + + void Reset() override + { + _summons.DespawnAll(); + scheduler.CancelAll(); + scheduler.Schedule(9s, 11s, [this](TaskContext context) + { + DoCastVictim(SPELL_THUNDERCLAP); + context.Repeat(); + }); + } + + void JustSummoned(Creature* summon) override + { + _summons.Summon(summon); + summon->SetNoCallAssistance(true); // prevent eagles from pulling boss + summon->SetInCombatWithZone(); + } + + void JustDied(Unit* killer) override + { + ScriptedAI::JustDied(killer); + _instance->SetData(TYPE_AKILZON_GAUNTLET, DONE); + } + + void DoAction(int32 action) override + { + if (action == ACTION_START_GAUNTLET) + ScheduleEvents(); + } + + void EnterEvadeMode(EvadeReason why) override + { + ScriptedAI::EnterEvadeMode(why); + scheduler.CancelAll(); + } + + void ScheduleEvents() + { + me->SetInCombatWithZone(); + scheduler.Schedule(29s, 53s, GROUP_AKILZON_GAUNTLET, [this](TaskContext context) + { + for (uint8 i = 0; i < 5; ++i) + DoCastAOE(SPELL_SUMMON_EAGLE, true); + context.Repeat(); + }).Schedule(40s, GROUP_AKILZON_GAUNTLET, [this](TaskContext context) + { + for (uint8 i = 0; i < 2; ++i) + DoCastAOE(SPELL_SUMMON_WARRIOR, true); + context.Repeat(); + }); + } + + void UpdateAI(uint32 diff) override + { + scheduler.Update(diff); + if (!me->IsEngaged()) + return; + Unit* victim = me->SelectVictim(); + if (!victim || me->GetExactDist(victim) > me->GetAggroRange(victim)) + return; + ScriptedAI::UpdateAI(diff); + } + +private: + InstanceScript* _instance; + SummonList _summons; +}; + +struct npc_eagle_trash_aggro_trigger : public ScriptedAI +{ + npc_eagle_trash_aggro_trigger(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) {} + + void MoveInLineOfSight(Unit* who) override + { + if (!me->IsWithinDist(who, 10.0f, false)) // distance not confirmed + return; + + Player* player = who->GetCharmerOrOwnerPlayerOrPlayerItself(); + if (!player || player->IsGameMaster()) + return; + + if (_instance->GetData(TYPE_AKILZON_GAUNTLET) == NOT_STARTED) + _instance->SetData(TYPE_AKILZON_GAUNTLET, IN_PROGRESS); + } +private: + InstanceScript* _instance; +}; + void AddSC_zulaman() { RegisterZulAmanCreatureAI(npc_forest_frog); new npc_zulaman_hostage(); RegisterZulAmanCreatureAI(npc_harrison_jones); RegisterSpellScript(spell_ritual_of_power); + RegisterZulAmanCreatureAI(npc_amanishi_lookout); + RegisterZulAmanCreatureAI(npc_amanishi_tempest); + RegisterZulAmanCreatureAI(npc_eagle_trash_aggro_trigger); } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h index 247c458bddab94..f0f86ad0b0fd72 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h @@ -38,7 +38,9 @@ enum DataTypes DATA_STRANGE_GONG = 10, DATA_MASSIVE_GATE = 11, DATA_HEXLORD_GATE = 12, - DATA_HARRISON_JONES = 13 + DATA_HARRISON_JONES = 13, + TYPE_AKILZON_GAUNTLET = 14, + DATA_LOOKOUT = 15, }; enum CreatureIds @@ -54,7 +56,13 @@ enum CreatureIds NPC_AMANISHI_TRIBESMAN = 23582, NPC_AMANISHI_MEDICINE_MAN = 23581, NPC_AMANISHI_AXE_THROWER = 23542, - NPC_AMANI_HATCHLING = 23598 // 42493 + NPC_AMANI_HATCHLING = 23598, // 42493 + // Akil'zon gauntlet + NPC_AMANISHI_WIND_WALKER = 24179, + NPC_AMINISHI_LOOKOUT = 24175, + NPC_AMINISHI_PROTECTOR = 24180, + NPC_AMINISHI_TEMPEST = 24549, + NPC_EAGLE_TRASH_AGGRO_TRIGGER = 24223 }; enum GameobjectIds @@ -77,6 +85,7 @@ enum MiscIds { DATA_TIMED_RUN = 0, ACTION_START_TIMED_RUN = 0, + ACTION_START_AKILZON_GAUNTLET = 1, GROUP_TIMED_RUN = 1 }; From 9ff887d00177401f763c4f239f28f66e4a040844 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 1 Dec 2024 11:53:38 +0000 Subject: [PATCH 26/66] chore(DB): import pending files Referenced commit(s): 81d1fcad6512debdd4205703ed9adae3227fe3c4 --- .../rev_1732461302175126777.sql => db_world/2024_12_01_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1732461302175126777.sql => db_world/2024_12_01_02.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1732461302175126777.sql b/data/sql/updates/db_world/2024_12_01_02.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1732461302175126777.sql rename to data/sql/updates/db_world/2024_12_01_02.sql index 4b3fa0b631f5ee..3a57c693aeec02 100644 --- a/data/sql/updates/pending_db_world/rev_1732461302175126777.sql +++ b/data/sql/updates/db_world/2024_12_01_02.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_01_01 -> 2024_12_01_02 -- -- lookout -- spawn coords, hp 58682 from 75449 From 490c90bdd72dab91d9d8506caff68259f242c89d Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sun, 1 Dec 2024 17:57:39 +0100 Subject: [PATCH 27/66] feat(Core/SAI): Add pet variable to SMART_TARGET_INVOKER_PARTY (#20804) * feat(Core/SAI): Add pet variable to SMART_TARGET_INVOKER_PARTY * closes https://github.com/azerothcore/azerothcore-wotlk/issues/15755 * mb --- src/server/game/AI/SmartScripts/SmartScript.cpp | 7 +++++++ src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 2 +- src/server/game/AI/SmartScripts/SmartScriptMgr.h | 7 ++++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 122c640d004727..7f4b8e996542e0 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3511,8 +3511,15 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, { for (GroupReference* groupRef = group->GetFirstMember(); groupRef != nullptr; groupRef = groupRef->next()) if (Player* member = groupRef->GetSource()) + { if (member->IsInMap(player)) targets.push_back(member); + + if (e.target.invokerParty.includePets) + if (Creature* pet = ObjectAccessor::GetCreatureOrPetOrVehicle(*member, member->GetPetGUID())) + if (pet->IsPet() && pet->IsInMap(player)) + targets.push_back(pet); + } } // We still add the player to the list if there is no group. If we do // this even if there is a group (thus the else-check), it will add the diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 4d4a3541639348..4544f73c876a4e 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -908,7 +908,7 @@ bool SmartAIMgr::CheckUnusedTargetParams(SmartScriptHolder const& e) case SMART_TARGET_GAMEOBJECT_RANGE: return sizeof(SmartTarget::goRange); case SMART_TARGET_GAMEOBJECT_GUID: return sizeof(SmartTarget::goGUID); case SMART_TARGET_GAMEOBJECT_DISTANCE: return sizeof(SmartTarget::goDistance); - case SMART_TARGET_INVOKER_PARTY: return NO_PARAMS; + case SMART_TARGET_INVOKER_PARTY: return sizeof(SmartTarget::invokerParty); case SMART_TARGET_PLAYER_RANGE: return sizeof(SmartTarget::playerRange); case SMART_TARGET_PLAYER_DISTANCE: return sizeof(SmartTarget::playerDistance); case SMART_TARGET_CLOSEST_CREATURE: return sizeof(SmartTarget::unitClosest); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index bf414f532c0122..3a31acbcf7ecf7 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1533,7 +1533,7 @@ enum SMARTAI_TARGETS SMART_TARGET_GAMEOBJECT_RANGE = 13, // entry(0any), min, max SMART_TARGET_GAMEOBJECT_GUID = 14, // guid, entry SMART_TARGET_GAMEOBJECT_DISTANCE = 15, // entry(0any), maxDist - SMART_TARGET_INVOKER_PARTY = 16, // invoker's party members + SMART_TARGET_INVOKER_PARTY = 16, // includePets(0 - false, 1 - true) SMART_TARGET_PLAYER_RANGE = 17, // min, max, maxCount (maxCount by pussywizard), set target.o to 1 if u want to search for all in range if min, max fails SMART_TARGET_PLAYER_DISTANCE = 18, // maxDist SMART_TARGET_CLOSEST_CREATURE = 19, // CreatureEntry(0any), maxDist, dead? @@ -1736,6 +1736,11 @@ struct SmartTarget uint32 index; uint32 type; } instanceStorage; + + struct + { + SAIBool includePets; + } invokerParty; }; }; From 4ef0a02fc4f8f98e6c1e7f72a1cef0c38ded91eb Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 1 Dec 2024 14:07:53 -0300 Subject: [PATCH 28/66] fix(Scripts/ZulAman): Delay static disruption by 3s after storm (#20809) --- .../scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp index bab5e26021b4f0..65c6112b0b455b 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp @@ -53,7 +53,8 @@ enum Says enum Misc { ACTION_STORM_EXPIRE = 1, - GROUP_ELECTRICAL_STORM = 1 + GROUP_ELECTRICAL_STORM = 1, + GROUP_STATIC_DISRUPTION = 2 }; constexpr auto NPC_SOARING_EAGLE = 24858; @@ -79,7 +80,8 @@ struct boss_akilzon : public BossAI { _JustEngagedWith(); - ScheduleTimedEvent(10s, 20s, [&] { + scheduler.Schedule(10s, 20s, GROUP_STATIC_DISRUPTION, [this](TaskContext context) + { Unit* target = SelectTarget(SelectTargetMethod::Random, 1); if (!target) target = me->GetVictim(); @@ -89,7 +91,9 @@ struct boss_akilzon : public BossAI DoCast(target, SPELL_STATIC_DISRUPTION, false); me->SetInFront(me->GetVictim()); } - }, 10s, 18s); + + context.Repeat(10s, 18s); + }); ScheduleTimedEvent(20s, 30s, [&] { if (scheduler.GetNextGroupOcurrence(GROUP_ELECTRICAL_STORM) > 5s) @@ -175,6 +179,7 @@ struct boss_akilzon : public BossAI { if (actionId == ACTION_STORM_EXPIRE) { + scheduler.DelayGroup(GROUP_STATIC_DISRUPTION, 3s); me->m_Events.AddEventAtOffset([&] { SummonEagles(); }, 5s); From af3ded6889960858a696cf0223461d9dad852a59 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 1 Dec 2024 14:08:11 -0300 Subject: [PATCH 29/66] fix(Scripts/ZulAman): Fix Zuljin targetting players during eagle phase (#20808) --- .../scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp index b78724e297312e..66959734b83b3b 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp @@ -15,12 +15,6 @@ * with this program. If not, see . */ -/* ScriptData -SDName: Boss_ZulJin -SD%Complete: 85% -SDComment: -EndScriptData */ - #include "CreatureScript.h" #include "Player.h" #include "ScriptedCreature.h" @@ -307,7 +301,6 @@ struct boss_zuljin : public BossAI Talk(Transform[_nextPhase].text); me->m_Events.AddEventAtOffset([&] { - me->SetReactState(REACT_AGGRESSIVE); DoCastSelf(Transform[_nextPhase].spell); DoResetThreatList(); @@ -316,9 +309,11 @@ struct boss_zuljin : public BossAI me->SetCombatMovement(false); DoCastSelf(SPELL_ENERGY_STORM, true); // enemy aura DoCastAOE(SPELL_SUMMON_CYCLONE, true); + me->SetFacingTo(me->GetHomePosition().GetOrientation()); } else { + me->SetReactState(REACT_AGGRESSIVE); me->SetCombatMovement(true); me->ResumeChasingVictim(); } From ffe7d428312f7dab8c447cd45f92f20e0e731d46 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 1 Dec 2024 16:57:06 -0300 Subject: [PATCH 30/66] chore(Scripts/Karazhan): Remove unused variables (#20810) --- .../Karazhan/instance_karazhan.cpp | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp index 95d0ccd44d4b45..ddc653f32d928c 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp @@ -97,15 +97,6 @@ class instance_karazhan : public InstanceMapScript { switch (creature->GetEntry()) { - case NPC_KILREK: - m_uiKilrekGUID = creature->GetGUID(); - break; - case NPC_TERESTIAN_ILLHOOF: - m_uiTerestianGUID = creature->GetGUID(); - break; - case NPC_MOROES: - m_uiMoroesGUID = creature->GetGUID(); - break; case NPC_NIGHTBANE: m_uiNightBaneGUID = creature->GetGUID(); break; @@ -369,9 +360,6 @@ class instance_karazhan : public InstanceMapScript else go->RemoveGameObjectFlag(GO_FLAG_LOCKED); break; - case GO_GAMESMAN_HALL_DOOR: - m_uiGamesmansDoor = go->GetGUID(); - break; case GO_GAMESMAN_HALL_EXIT_DOOR: m_uiGamesmansExitDoor = go->GetGUID(); break; @@ -464,12 +452,6 @@ class instance_karazhan : public InstanceMapScript { switch (data) { - case DATA_KILREK: - return m_uiKilrekGUID; - case DATA_TERESTIAN: - return m_uiTerestianGUID; - case DATA_MOROES: - return m_uiMoroesGUID; case DATA_GO_STAGEDOORLEFT: return m_uiStageDoorLeftGUID; case DATA_GO_STAGEDOORRIGHT: @@ -480,10 +462,6 @@ class instance_karazhan : public InstanceMapScript return m_uiLibraryDoor; case DATA_GO_MASSIVE_DOOR: return m_uiMassiveDoor; - case DATA_GO_GAME_DOOR: - return m_uiGamesmansDoor; - case DATA_GO_GAME_EXIT_DOOR: - return m_uiGamesmansExitDoor; case DATA_IMAGE_OF_MEDIVH: return ImageGUID; case DATA_NIGHTBANE: @@ -508,13 +486,9 @@ class instance_karazhan : public InstanceMapScript ObjectGuid m_uiCurtainGUID; ObjectGuid m_uiStageDoorLeftGUID; ObjectGuid m_uiStageDoorRightGUID; - ObjectGuid m_uiKilrekGUID; - ObjectGuid m_uiTerestianGUID; - ObjectGuid m_uiMoroesGUID; ObjectGuid m_uiNightBaneGUID; ObjectGuid m_uiLibraryDoor; // Door at Shade of Aran ObjectGuid m_uiMassiveDoor; // Door at Netherspite - ObjectGuid m_uiGamesmansDoor; // Door before Chess ObjectGuid m_uiGamesmansExitDoor; // Door after Chess ObjectGuid ImageGUID; ObjectGuid DustCoveredChest; From cf7959238ad3a375a3549f4087ee18a35df0776b Mon Sep 17 00:00:00 2001 From: gontrannopier <66059606+gontrannopier@users.noreply.github.com> Date: Sun, 1 Dec 2024 21:09:26 +0100 Subject: [PATCH 31/66] fix(Core/Players): don't set full heath/mana/rage while Dead (#20723) fix level up while dead -> check if player is not dead, then update health/mana/rage/.. Co-authored-by: gontrannopier --- src/server/game/Entities/Player/Player.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 30bc269ff50515..b16b5a253a4939 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2507,14 +2507,17 @@ void Player::GiveLevel(uint8 level) _ApplyAllLevelScaleItemMods(true); - // set current level health and mana/energy to maximum after applying all mods. - SetFullHealth(); - SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); - SetPower(POWER_ENERGY, GetMaxPower(POWER_ENERGY)); - if (GetPower(POWER_RAGE) > GetMaxPower(POWER_RAGE)) - SetPower(POWER_RAGE, GetMaxPower(POWER_RAGE)); - SetPower(POWER_FOCUS, 0); - SetPower(POWER_HAPPINESS, 0); + if (!isDead()) + { + // set current level health and mana/energy to maximum after applying all mods. + SetFullHealth(); + SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); + SetPower(POWER_ENERGY, GetMaxPower(POWER_ENERGY)); + if (GetPower(POWER_RAGE) > GetMaxPower(POWER_RAGE)) + SetPower(POWER_RAGE, GetMaxPower(POWER_RAGE)); + SetPower(POWER_FOCUS, 0); + SetPower(POWER_HAPPINESS, 0); + } // update level to hunter/summon pet if (Pet* pet = GetPet()) From 2d616ce0e84dbead46460d32670862ac0ad1461d Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Sun, 1 Dec 2024 21:09:47 +0100 Subject: [PATCH 32/66] fix(Core/Vmaps): Do not ignore model rotation when calculating liquid level (#20760) cherry-picked from: https://github.com/TrinityCore/TrinityCore/commit/53b4501ce9b072cfffe7de7f348094f443e36950 Co-authored-by: Shauren --- src/common/Collision/Models/ModelInstance.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/common/Collision/Models/ModelInstance.cpp b/src/common/Collision/Models/ModelInstance.cpp index 4a540a7857d1a6..a18d5d4f9f70c0 100644 --- a/src/common/Collision/Models/ModelInstance.cpp +++ b/src/common/Collision/Models/ModelInstance.cpp @@ -150,8 +150,7 @@ namespace VMAP if (info.hitModel->GetLiquidLevel(pModel, zDist)) { // calculate world height (zDist in model coords): - // assume WMO not tilted (wouldn't make much sense anyway) - liqHeight = zDist * iScale + iPos.z; + liqHeight = (Vector3(pModel.x, pModel.y, zDist) * iInvRot * iScale + iPos).z; return true; } return false; From 8e080f1e60a8c1900c32c2cce110fee32786b5af Mon Sep 17 00:00:00 2001 From: Tereneckla Date: Sun, 1 Dec 2024 20:16:13 +0000 Subject: [PATCH 33/66] fix(Core/Pet): Remove unnecessary Pet Class reassignments (#20614) remove unnecessary class assignment --- src/server/game/Entities/Pet/Pet.cpp | 6 ------ src/server/game/Entities/Player/Player.cpp | 1 - 2 files changed, 7 deletions(-) diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 141eab8813a1e3..5f4d3057a586b9 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -306,12 +306,6 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c { case SUMMON_PET: petlevel = owner->GetLevel(); - - if (IsPetGhoul()) - SetUInt32Value(UNIT_FIELD_BYTES_0, 0x400); // class = rogue - else - SetUInt32Value(UNIT_FIELD_BYTES_0, 0x800); // class = mage - ReplaceAllUnitFlags(UNIT_FLAG_PLAYER_CONTROLLED); // this enables popup window (pet dismiss, cancel) break; case HUNTER_PET: diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b16b5a253a4939..feecb2e8f31e56 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -9019,7 +9019,6 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy pet->GetCharmInfo()->SetPetNumber(pet_number, false); } - pet->SetUInt32Value(UNIT_FIELD_BYTES_0, 2048); pet->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0); pet->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, 1000); pet->SetFullHealth(); From 4f23dbbb03294e9e3279fa2ea1829cac67360721 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Sun, 1 Dec 2024 21:29:35 +0100 Subject: [PATCH 34/66] refactor(Apps/Startup): replace 'set logging on` command with 'set logging enabled on' (#20778) refactor: replace deprecated 'set logging on' --- apps/startup-scripts/gdb.conf | 2 +- apps/startup-scripts/starter | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/startup-scripts/gdb.conf b/apps/startup-scripts/gdb.conf index 34c1829fd4960a..d6802a56b6e06d 100644 --- a/apps/startup-scripts/gdb.conf +++ b/apps/startup-scripts/gdb.conf @@ -1,4 +1,4 @@ -set logging on +set logging enabled on set debug timestamp run bt diff --git a/apps/startup-scripts/starter b/apps/startup-scripts/starter index d1768667e67c32..47bbedce752b14 100644 --- a/apps/startup-scripts/starter +++ b/apps/startup-scripts/starter @@ -9,7 +9,7 @@ CRASHES_PATH="$7" if [ $GDB_ENABLED -eq 1 ]; then echo "set logging file "$CRASHES_PATH"/gdb-$(date +%Y-%m-%d-%H-%M-%S).txt" > "$GDB_FILE" - echo "set logging on" >> "$GDB_FILE" + echo "set logging enabled on" >> "$GDB_FILE" echo "set debug timestamp" >> "$GDB_FILE" echo "run -c $3" >> "$GDB_FILE" echo "bt" >> "$GDB_FILE" From 125900a20e514a70cc8a723470175fc36b73a3de Mon Sep 17 00:00:00 2001 From: FlyingArowana Date: Sun, 1 Dec 2024 21:17:30 +0000 Subject: [PATCH 35/66] fix(DB/Quest) - Add the missing NPC Starters for Regthar Deathgate (#20762) * Added NPC Starters * Added delete to the new NPCs --- .../updates/pending_db_world/rev_1732828124635270700.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1732828124635270700.sql diff --git a/data/sql/updates/pending_db_world/rev_1732828124635270700.sql b/data/sql/updates/pending_db_world/rev_1732828124635270700.sql new file mode 100644 index 00000000000000..4ad76983c5bbfe --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1732828124635270700.sql @@ -0,0 +1,6 @@ +-- +DELETE FROM `creature_queststarter` WHERE `id` IN (4485, 10540) AND `quest` = 1361; +-- Adds NPCs Vol'jin and Belgrom Rockmaul as Quest Starters for Regthar Deathgate +INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES +(4485, 1361), +(10540, 1361); From 0846c8aa742fad6733dd6de30f4c0c1b1b8db523 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 1 Dec 2024 21:18:25 +0000 Subject: [PATCH 36/66] chore(DB): import pending files Referenced commit(s): 125900a20e514a70cc8a723470175fc36b73a3de --- .../rev_1732828124635270700.sql => db_world/2024_12_01_03.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1732828124635270700.sql => db_world/2024_12_01_03.sql} (85%) diff --git a/data/sql/updates/pending_db_world/rev_1732828124635270700.sql b/data/sql/updates/db_world/2024_12_01_03.sql similarity index 85% rename from data/sql/updates/pending_db_world/rev_1732828124635270700.sql rename to data/sql/updates/db_world/2024_12_01_03.sql index 4ad76983c5bbfe..3b8786e4bdbe13 100644 --- a/data/sql/updates/pending_db_world/rev_1732828124635270700.sql +++ b/data/sql/updates/db_world/2024_12_01_03.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_01_02 -> 2024_12_01_03 -- DELETE FROM `creature_queststarter` WHERE `id` IN (4485, 10540) AND `quest` = 1361; -- Adds NPCs Vol'jin and Belgrom Rockmaul as Quest Starters for Regthar Deathgate From 7f44962d25579907b8f8983ddd20da9a852a5ca4 Mon Sep 17 00:00:00 2001 From: sudlud Date: Mon, 2 Dec 2024 02:34:46 +0100 Subject: [PATCH 37/66] fix(DB/Gameobject): Sniffed Values for 'Log Pile' spawns (#20812) --- .../pending_db_world/rev_1733085332800762800.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1733085332800762800.sql diff --git a/data/sql/updates/pending_db_world/rev_1733085332800762800.sql b/data/sql/updates/pending_db_world/rev_1733085332800762800.sql new file mode 100644 index 00000000000000..b41f2e424be1f6 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1733085332800762800.sql @@ -0,0 +1,13 @@ +-- Update gameobject 'Log Pile' with sniffed values +-- new spawns +DELETE FROM `gameobject` WHERE (`id` IN (194393)) +AND (`guid` BETWEEN 447 AND 454); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(447, 194393, 571, 0, 0, 1, 1, 5395.54931640625, 376.720916748046875, 171.0152587890625, 0, 0, 0, 0, 1, 120, 255, 1, "", 46158, NULL), +(448, 194393, 571, 0, 0, 1, 1, 5408.78369140625, 369.265045166015625, 167.706939697265625, 0, 0, 0, 0, 1, 120, 255, 1, "", 46158, NULL), +(449, 194393, 571, 0, 0, 1, 1, 5412.72265625, 353.712310791015625, 165.7215118408203125, 0, 0, 0, 0, 1, 120, 255, 1, "", 46158, NULL), +(450, 194393, 571, 0, 0, 1, 1, 5415.166015625, 439.096954345703125, 170.508514404296875, 0, 0, 0, 0, 1, 120, 255, 1, "", 46158, NULL), +(451, 194393, 571, 0, 0, 1, 1, 5426.10205078125, 441.95147705078125, 169.2211456298828125, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, "", 46158, NULL), +(452, 194393, 571, 0, 0, 1, 1, 5427.91064453125, 359.82086181640625, 163.087860107421875, 0, 0, 0, 0, 1, 120, 255, 1, "", 46158, NULL), +(453, 194393, 571, 0, 0, 1, 1, 5459.66748046875, 424.607940673828125, 163.53369140625, 0, 0, 0, 0, 1, 120, 255, 1, "", 46158, NULL), +(454, 194393, 571, 0, 0, 1, 1, 5468.80615234375, 373.03546142578125, 158.4355926513671875, 0, 0, 0, 0, 1, 120, 255, 1, "", 46158, NULL); From 4644856fae3f574d19aa3565149c0903b6d9e130 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 2 Dec 2024 01:35:42 +0000 Subject: [PATCH 38/66] chore(DB): import pending files Referenced commit(s): 7f44962d25579907b8f8983ddd20da9a852a5ca4 --- .../rev_1733085332800762800.sql => db_world/2024_12_02_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1733085332800762800.sql => db_world/2024_12_02_00.sql} (97%) diff --git a/data/sql/updates/pending_db_world/rev_1733085332800762800.sql b/data/sql/updates/db_world/2024_12_02_00.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1733085332800762800.sql rename to data/sql/updates/db_world/2024_12_02_00.sql index b41f2e424be1f6..ac93827e52465d 100644 --- a/data/sql/updates/pending_db_world/rev_1733085332800762800.sql +++ b/data/sql/updates/db_world/2024_12_02_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_01_03 -> 2024_12_02_00 -- Update gameobject 'Log Pile' with sniffed values -- new spawns DELETE FROM `gameobject` WHERE (`id` IN (194393)) From 48805ee1cfb0bc0ba0ae3537cd6b7a87c18e48ac Mon Sep 17 00:00:00 2001 From: FlyingArowana Date: Mon, 2 Dec 2024 10:39:51 +0000 Subject: [PATCH 39/66] fix(DB/Quest) - Remove breadcrumb quest from The Crown of Will (2/5) (#20814) * File create * Remove breadcrumb quest --- data/sql/updates/pending_db_world/rev_1733102613803729900.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1733102613803729900.sql diff --git a/data/sql/updates/pending_db_world/rev_1733102613803729900.sql b/data/sql/updates/pending_db_world/rev_1733102613803729900.sql new file mode 100644 index 00000000000000..d8ae07fcdf047e --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1733102613803729900.sql @@ -0,0 +1,3 @@ +-- +-- The Crown of Will (1/5) requirement removed from The Crown of Will (2/5) +UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 518); From 3c706a8efca2c3b819f6ac538fd8bee84eaea9d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 2 Dec 2024 10:40:47 +0000 Subject: [PATCH 40/66] chore(DB): import pending files Referenced commit(s): 48805ee1cfb0bc0ba0ae3537cd6b7a87c18e48ac --- .../rev_1733102613803729900.sql => db_world/2024_12_02_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1733102613803729900.sql => db_world/2024_12_02_01.sql} (77%) diff --git a/data/sql/updates/pending_db_world/rev_1733102613803729900.sql b/data/sql/updates/db_world/2024_12_02_01.sql similarity index 77% rename from data/sql/updates/pending_db_world/rev_1733102613803729900.sql rename to data/sql/updates/db_world/2024_12_02_01.sql index d8ae07fcdf047e..5640d3bcb60629 100644 --- a/data/sql/updates/pending_db_world/rev_1733102613803729900.sql +++ b/data/sql/updates/db_world/2024_12_02_01.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_02_00 -> 2024_12_02_01 -- -- The Crown of Will (1/5) requirement removed from The Crown of Will (2/5) UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 518); From 0f1618faf5b0c8b187240a6823b6393ee84764fe Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Mon, 2 Dec 2024 08:11:18 -0300 Subject: [PATCH 41/66] =?UTF-8?q?feat(Core/Scripting):=20Implement=20SetAu?= =?UTF-8?q?toAttackAllowed()=20to=20disable=20aut=E2=80=A6=20(#20805)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(Core/Scripting): Implement SetAutoAttackAllowed() to disable autoattacks * Update ScriptedCreature.cpp --- src/server/game/AI/ScriptedAI/ScriptedCreature.cpp | 7 +++++-- src/server/game/AI/ScriptedAI/ScriptedCreature.h | 5 +++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index 50a7f8a8b4d101..64678db31ee65c 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -195,6 +195,7 @@ ScriptedAI::ScriptedAI(Creature* creature) : CreatureAI(creature), _isHeroic = me->GetMap()->IsHeroic(); _difficulty = Difficulty(me->GetMap()->GetSpawnMode()); _invincible = false; + _canAutoAttack = true; } void ScriptedAI::AttackStartNoMove(Unit* who) @@ -220,7 +221,8 @@ void ScriptedAI::UpdateAI(uint32 /*diff*/) if (!UpdateVictim()) return; - DoMeleeAttackIfReady(); + if (IsAutoAttackAllowed()) + DoMeleeAttackIfReady(); } void ScriptedAI::DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damagetype*/, SpellSchoolMask /*damageSchoolMask*/) @@ -739,7 +741,8 @@ void BossAI::UpdateAI(uint32 diff) } } - DoMeleeAttackIfReady(); + if (IsAutoAttackAllowed()) + DoMeleeAttackIfReady(); } void BossAI::DamageTaken(Unit* attacker, uint32& damage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask) diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index 0fd1c861b3783a..d5f7f729f7ca1d 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -442,10 +442,15 @@ struct ScriptedAI : public CreatureAI void SetInvincibility(bool apply) { _invincible = apply; }; [[nodiscard]] bool IsInvincible() const { return _invincible; }; + // Disables creature auto attacks. + void SetAutoAttackAllowed(bool allow) { _canAutoAttack = allow; }; + [[nodiscard]] bool IsAutoAttackAllowed() const { return _canAutoAttack; }; + private: Difficulty _difficulty; bool _isHeroic; bool _invincible; + bool _canAutoAttack; std::unordered_set _uniqueTimedEvents; }; From 8c387fa2b8b4d1dac8902a3b3dc33bf24210fbb6 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Mon, 2 Dec 2024 08:17:16 -0300 Subject: [PATCH 42/66] refactor(Scripts/UtgardeKeep): Modernize Prince Keleseth script (#20806) --- .../UtgardeKeep/UtgardeKeep/boss_keleseth.cpp | 120 +++++------------- .../UtgardeKeep/instance_utgarde_keep.cpp | 21 ++- .../UtgardeKeep/UtgardeKeep/utgarde_keep.h | 4 + 3 files changed, 52 insertions(+), 93 deletions(-) diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp index b51d5c4c9ad007..a3d0626fa1ad88 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp @@ -51,30 +51,24 @@ enum eSpells #define SPELL_SHADOWBOLT DUNGEON_MODE(SPELL_SHADOWBOLT_N, SPELL_SHADOWBOLT_H) -enum eEvents -{ - EVENT_SPELL_SHADOWBOLT = 1, - EVENT_FROST_TOMB, - EVENT_SUMMON_SKELETONS, -}; - struct npc_frost_tomb : public NullCreatureAI { npc_frost_tomb(Creature* c) : NullCreatureAI(c) { - if (TempSummon* t = c->ToTempSummon()) - if (Unit* s = t->GetSummonerUnit()) + if (WorldObject* summoner = GetSummoner()) + if (Unit* summonerUnit = summoner->ToUnit()) { - PrisonerGUID = s->GetGUID(); + PrisonerGUID = summonerUnit->GetGUID(); if (me->GetInstanceScript() && me->GetInstanceScript()->instance->IsHeroic()) { const int32 dmg = 2000; - c->CastCustomSpell(s, SPELL_FROST_TOMB_AURA, nullptr, &dmg, nullptr, true); + c->CastCustomSpell(summonerUnit, SPELL_FROST_TOMB_AURA, nullptr, &dmg, nullptr, true); } else - c->CastSpell(s, SPELL_FROST_TOMB_AURA, true); + c->CastSpell(summonerUnit, SPELL_FROST_TOMB_AURA, true); } } + ObjectGuid PrisonerGUID; void JustDied(Unit* killer) override @@ -104,107 +98,57 @@ struct npc_frost_tomb : public NullCreatureAI } }; -struct boss_keleseth : public ScriptedAI +struct boss_keleseth : public BossAI { - boss_keleseth(Creature* c) : ScriptedAI(c) - { - pInstance = c->GetInstanceScript(); - } - - InstanceScript* pInstance; - EventMap events; - - void Reset() override - { - events.Reset(); - if (pInstance) - pInstance->SetData(DATA_KELESETH, NOT_STARTED); - } + boss_keleseth(Creature* creature) : BossAI(creature, DATA_KELESETH) { } void KilledUnit(Unit* victim) override { if (victim->IsPlayer()) - { Talk(SAY_KILL); - } } void JustDied(Unit* /*killer*/) override { + _JustDied(); Talk(SAY_DEATH); - if (pInstance) - pInstance->SetData(DATA_KELESETH, DONE); } void JustEngagedWith(Unit* /*who*/) override { - events.Reset(); - events.RescheduleEvent(EVENT_SPELL_SHADOWBOLT, 0ms); - events.RescheduleEvent(EVENT_FROST_TOMB, 28s); - events.RescheduleEvent(EVENT_SUMMON_SKELETONS, 4s); - + _JustEngagedWith(); Talk(SAY_START_COMBAT); - DoZoneInCombat(); - - if (pInstance) - pInstance->SetData(DATA_KELESETH, IN_PROGRESS); - } - - void AttackStart(Unit* who) override - { - if (!who) - return; - - UnitAI::AttackStartCaster(who, 12.0f); - } - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - events.Update(diff); + ScheduleTimedEvent(1s, [&] { + DoCastVictim(SPELL_SHADOWBOLT); + }, 4s, 5s); - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; + ScheduleTimedEvent(28s, [&] { + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, true, -SPELL_FROST_TOMB_AURA)) + { + Talk(SAY_FROST_TOMB_EMOTE, target); + Talk(SAY_FROST_TOMB); + DoCast(target, SPELL_FROST_TOMB); + } + }, 15s); - switch (events.ExecuteEvent()) - { - case 0: - break; - case EVENT_SPELL_SHADOWBOLT: - me->CastSpell(me->GetVictim(), SPELL_SHADOWBOLT, false); - events.Repeat(4s, 5s); - break; - case EVENT_FROST_TOMB: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, true)) - if (!target->HasAura(SPELL_FROST_TOMB_AURA)) - { - Talk(SAY_FROST_TOMB_EMOTE, target); - Talk(SAY_FROST_TOMB); - me->CastSpell(target, SPELL_FROST_TOMB, false); - events.Repeat(15s); - break; - } - events.Repeat(1s); - break; - case EVENT_SUMMON_SKELETONS: + me->m_Events.AddEventAtOffset([this]() { Talk(SAY_SUMMON_SKELETONS); for (uint8 i = 0; i < 5; ++i) { float dist = rand_norm() * 4 + 3.0f; float angle = rand_norm() * 2 * M_PI; - if (Creature* c = me->SummonCreature(NPC_SKELETON, 156.2f + cos(angle) * dist, 259.1f + std::sin(angle) * dist, 42.9f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) - if (Unit* target = c->SelectNearestTarget(250.0f)) - { - c->AddThreat(target, 5.0f); - DoZoneInCombat(c); - } + me->SummonCreature(NPC_SKELETON, 156.2f + cos(angle) * dist, 259.1f + std::sin(angle) * dist, 42.9f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); } - break; - } + }, 4s); + } - DoMeleeAttackIfReady(); + void AttackStart(Unit* who) override + { + if (!who) + return; + + UnitAI::AttackStartCaster(who, 12.0f); } }; @@ -260,7 +204,7 @@ struct npc_vrykul_skeleton : public ScriptedAI void UpdateAI(uint32 diff) override { - if (pInstance && pInstance->GetData(DATA_KELESETH) != IN_PROGRESS) + if (pInstance && pInstance->GetBossState(DATA_KELESETH) != IN_PROGRESS) { if (me->IsAlive()) me->KillSelf(); diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp index 475fa0c2e9100f..6425e73608d3ba 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp @@ -44,6 +44,8 @@ class instance_utgarde_keep : public InstanceMapScript { instance_utgarde_keep_InstanceMapScript(Map* pMap) : InstanceScript(pMap) { + SetHeaders(DataHeader); + SetBossNumber(EncounterCount); LoadObjectData(creatureData, nullptr); } @@ -69,12 +71,26 @@ class instance_utgarde_keep : public InstanceMapScript bool IsEncounterInProgress() const override { + if (InstanceScript::IsEncounterInProgress()) + return true; + for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) if (m_auiEncounter[i] == IN_PROGRESS) return true; return false; } + bool SetBossState(uint32 type, EncounterState state) override + { + if (!InstanceScript::SetBossState(type, state)) + return false; + + if (type == DATA_KELESETH && state == NOT_STARTED) + bRocksAchiev = true; + + return true; + } + void OnPlayerEnter(Player* plr) override { if (Creature* c = GetCreature(DATA_DARK_RANGER_MARRAH)) @@ -160,11 +176,6 @@ class instance_utgarde_keep : public InstanceMapScript { switch (type) { - case DATA_KELESETH: - m_auiEncounter[0] = data; - if (data == NOT_STARTED) - bRocksAchiev = true; - break; case DATA_ON_THE_ROCKS_ACHIEV: bRocksAchiev = false; break; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h index a2da8425719c5e..9ba762751242db 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h @@ -22,6 +22,10 @@ #define UtgardeKeepScriptName "instance_utgarde_keep" +#define DataHeader "UK" + +uint32 const EncounterCount = 3; + enum eData { DATA_KELESETH, From a704556ae8daed89504c8d74999c0e58797f91cf Mon Sep 17 00:00:00 2001 From: Nathan Handley Date: Mon, 2 Dec 2024 08:40:13 -0600 Subject: [PATCH 43/66] fix(Tools/MapExtractor) Update MPQ patch iterator to also load patch files 4 through 9 (#20815) --- src/tools/map_extractor/System.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp index 6f9806e3476f25..0b0f744f419686 100644 --- a/src/tools/map_extractor/System.cpp +++ b/src/tools/map_extractor/System.cpp @@ -1144,7 +1144,7 @@ void LoadLocaleMPQFiles(int const locale) sprintf(filename, "%s/Data/%s/locale-%s.MPQ", input_path, langs[locale], langs[locale]); new MPQArchive(filename); - for (int i = 1; i < 5; ++i) + for (int i = 1; i <= 9; ++i) { char ext[3] = ""; if (i > 1) From 3a9e8c09408d386ae12fbdde1602fd436e047772 Mon Sep 17 00:00:00 2001 From: Tereneckla Date: Mon, 2 Dec 2024 15:20:28 +0000 Subject: [PATCH 44/66] fix(DB/Loot): Critters are not skinnable (#20817) --- .../updates/pending_db_world/rev_1733152346182084675.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1733152346182084675.sql diff --git a/data/sql/updates/pending_db_world/rev_1733152346182084675.sql b/data/sql/updates/pending_db_world/rev_1733152346182084675.sql new file mode 100644 index 00000000000000..e93b412397ddb2 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1733152346182084675.sql @@ -0,0 +1,6 @@ +-- Critter: 883, 890, 2098, 2620, 1933, 4166, 721, 2442, 10780, 12298, 5951, 17467, 12296, 17467 +-- Human Royal Guard... : 1756 loot probably incorrect as well, I assume it came from the transformed guards for the Onyxia quest + +UPDATE `creature_template` SET `skinloot` = 0 WHERE `entry` IN (883, 890, 2098, 2620, 1933, 4166, 721, 2442, 10780, 12298, 5951, 17467, 12296, 17467, 1756); + +DELETE FROM `skinning_loot_template` WHERE `entry` IN (883, 890, 2098, 2620, 1933, 4166, 721, 2442, 10780, 12298, 5951, 17467, 12296, 17467, 1756); From 0a66daa00573008840b3539f4986160f8d58c85a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 2 Dec 2024 15:21:22 +0000 Subject: [PATCH 45/66] chore(DB): import pending files Referenced commit(s): 3a9e8c09408d386ae12fbdde1602fd436e047772 --- .../rev_1733152346182084675.sql => db_world/2024_12_02_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1733152346182084675.sql => db_world/2024_12_02_02.sql} (92%) diff --git a/data/sql/updates/pending_db_world/rev_1733152346182084675.sql b/data/sql/updates/db_world/2024_12_02_02.sql similarity index 92% rename from data/sql/updates/pending_db_world/rev_1733152346182084675.sql rename to data/sql/updates/db_world/2024_12_02_02.sql index e93b412397ddb2..5af96019d01a9a 100644 --- a/data/sql/updates/pending_db_world/rev_1733152346182084675.sql +++ b/data/sql/updates/db_world/2024_12_02_02.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_02_01 -> 2024_12_02_02 -- Critter: 883, 890, 2098, 2620, 1933, 4166, 721, 2442, 10780, 12298, 5951, 17467, 12296, 17467 -- Human Royal Guard... : 1756 loot probably incorrect as well, I assume it came from the transformed guards for the Onyxia quest From 02cacd234198e97099c934fcddfecc24ec5754f4 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Mon, 2 Dec 2024 16:34:24 -0300 Subject: [PATCH 46/66] feat(Core/Unit): Implement GetCompanionPet() helper (#20819) --- src/server/game/Entities/Unit/Unit.cpp | 7 ++++++- src/server/game/Entities/Unit/Unit.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 40b36895d979d6..f5f29962584b4e 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -9028,7 +9028,7 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg if (!victim) return false; - if (Creature* cr = ObjectAccessor::GetCreature(*this, m_SummonSlot[SUMMON_SLOT_MINIPET])) + if (Creature* cr = GetCompanionPet()) cr->CastSpell(victim, 50101, true); return false; @@ -10663,6 +10663,11 @@ Guardian* Unit::GetGuardianPet() const return nullptr; } +Creature* Unit::GetCompanionPet() const +{ + return ObjectAccessor::GetCreature(*this, m_SummonSlot[SUMMON_SLOT_MINIPET]); +} + Unit* Unit::GetCharm() const { if (ObjectGuid charm_guid = GetCharmGUID()) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 48c31dbe2abed9..af6c71e416fc4e 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1758,6 +1758,7 @@ class Unit : public WorldObject // Pets, guardians, minions... [[nodiscard]] Guardian* GetGuardianPet() const; [[nodiscard]] Minion* GetFirstMinion() const; + [[nodiscard]] Creature* GetCompanionPet() const; Pet* CreateTamedPetFrom(Creature* creatureTarget, uint32 spell_id = 0); Pet* CreateTamedPetFrom(uint32 creatureEntry, uint32 spell_id = 0); From 9187f93a42ed41feebb628180b73c1e1160518dc Mon Sep 17 00:00:00 2001 From: FlyingArowana Date: Mon, 2 Dec 2024 19:36:27 +0000 Subject: [PATCH 47/66] fix(DB/Creature) - Eydis Darkbane no longer stuck under the ground (#20813) * File Created * Correct Z-axis * Add id1 to the query --- data/sql/updates/pending_db_world/rev_1733101752745206200.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1733101752745206200.sql diff --git a/data/sql/updates/pending_db_world/rev_1733101752745206200.sql b/data/sql/updates/pending_db_world/rev_1733101752745206200.sql new file mode 100644 index 00000000000000..924fd8a73172de --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1733101752745206200.sql @@ -0,0 +1,3 @@ +-- +-- Corrected Z-axis of Eydis Darkbane (to match Fjola Lightbane's Z-axis). +UPDATE `creature` SET `position_z` = 558.16 WHERE `guid` = 85120 AND `id1` = 36066; From 2005aa88974366db6dcadb92da75867237fa3ebb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 2 Dec 2024 19:37:24 +0000 Subject: [PATCH 48/66] chore(DB): import pending files Referenced commit(s): 9187f93a42ed41feebb628180b73c1e1160518dc --- .../rev_1733101752745206200.sql => db_world/2024_12_02_03.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1733101752745206200.sql => db_world/2024_12_02_03.sql} (78%) diff --git a/data/sql/updates/pending_db_world/rev_1733101752745206200.sql b/data/sql/updates/db_world/2024_12_02_03.sql similarity index 78% rename from data/sql/updates/pending_db_world/rev_1733101752745206200.sql rename to data/sql/updates/db_world/2024_12_02_03.sql index 924fd8a73172de..f0dbcf39fd376a 100644 --- a/data/sql/updates/pending_db_world/rev_1733101752745206200.sql +++ b/data/sql/updates/db_world/2024_12_02_03.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_02_02 -> 2024_12_02_03 -- -- Corrected Z-axis of Eydis Darkbane (to match Fjola Lightbane's Z-axis). UPDATE `creature` SET `position_z` = 558.16 WHERE `guid` = 85120 AND `id1` = 36066; From 777c9d4eeed78c1b67cc18d561a3f339d97bf78c Mon Sep 17 00:00:00 2001 From: FlyingArowana Date: Mon, 2 Dec 2024 20:33:32 +0000 Subject: [PATCH 49/66] Fix(DB/SAI) - Quest: "Escape from Silverbrook" [WotLK] (#20211) * Fixed Quest: 12308 Issue: #20127 * Reverted Back to AC with Corrections @skelUA suggestion --- .../updates/pending_db_world/rev_1728987186504078200.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1728987186504078200.sql diff --git a/data/sql/updates/pending_db_world/rev_1728987186504078200.sql b/data/sql/updates/pending_db_world/rev_1728987186504078200.sql new file mode 100644 index 00000000000000..6f752992f79d4e --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1728987186504078200.sql @@ -0,0 +1,9 @@ +-- + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 27499; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 27499); +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 +(27499, 0, 0, 1, 19, 0, 100, 0, 12308, 0, 0, 0, 0, 0, 86, 48710, 0, 19, 24042, 0, 0, 19, 24042, 20, 0, 0, 0, 0, 0, 0, 'Caged Prisoner - On Quest \'Escape from Silverbrook\' Taken - Cast \'Summon Freed Alliance Scout\''), +(27499, 0, 1, 2, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 15, 188706, 10, 0, 0, 0, 0, 0, 0, 'Caged Prisoner - On Quest \'Escape from Silverbrook\' Taken - Activate Gameobject'), +(27499, 0, 2, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 41, 500, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Caged Prisoner - On Quest \'Escape from Silverbrook\' Taken - Despawn In 500 ms'); From ebd4aa2f8ad9451ffc63d7486a4214f01afaa2d7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 2 Dec 2024 20:34:27 +0000 Subject: [PATCH 50/66] chore(DB): import pending files Referenced commit(s): 777c9d4eeed78c1b67cc18d561a3f339d97bf78c --- .../rev_1728987186504078200.sql => db_world/2024_12_02_04.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1728987186504078200.sql => db_world/2024_12_02_04.sql} (96%) diff --git a/data/sql/updates/pending_db_world/rev_1728987186504078200.sql b/data/sql/updates/db_world/2024_12_02_04.sql similarity index 96% rename from data/sql/updates/pending_db_world/rev_1728987186504078200.sql rename to data/sql/updates/db_world/2024_12_02_04.sql index 6f752992f79d4e..d9a3179d685e42 100644 --- a/data/sql/updates/pending_db_world/rev_1728987186504078200.sql +++ b/data/sql/updates/db_world/2024_12_02_04.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_02_03 -> 2024_12_02_04 -- UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 27499; From f94388fbd1153cb7d16c499c39f432ed2bf74a45 Mon Sep 17 00:00:00 2001 From: Tereneckla Date: Mon, 2 Dec 2024 23:04:50 +0000 Subject: [PATCH 51/66] fix (DB/Loot) Old Hillsbrad Foothills guards should not skinnable (#20818) --- data/sql/updates/pending_db_world/rev_1733154050654802692.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1733154050654802692.sql diff --git a/data/sql/updates/pending_db_world/rev_1733154050654802692.sql b/data/sql/updates/pending_db_world/rev_1733154050654802692.sql new file mode 100644 index 00000000000000..56c171f41da3bd --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1733154050654802692.sql @@ -0,0 +1,4 @@ +-- +UPDATE `creature_template` SET `skinloot` = 0 WHERE `entry` IN (18094, 18093, 18092); + +DELETE FROM `skinning_loot_template` WHERE `entry` IN (18094, 18093, 18092); From 6cd9f953c0c43552a165094b9f441c8bfeb52d3d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 2 Dec 2024 23:05:43 +0000 Subject: [PATCH 52/66] chore(DB): import pending files Referenced commit(s): f94388fbd1153cb7d16c499c39f432ed2bf74a45 --- .../rev_1733154050654802692.sql => db_world/2024_12_02_05.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1733154050654802692.sql => db_world/2024_12_02_05.sql} (79%) diff --git a/data/sql/updates/pending_db_world/rev_1733154050654802692.sql b/data/sql/updates/db_world/2024_12_02_05.sql similarity index 79% rename from data/sql/updates/pending_db_world/rev_1733154050654802692.sql rename to data/sql/updates/db_world/2024_12_02_05.sql index 56c171f41da3bd..82c93598883d19 100644 --- a/data/sql/updates/pending_db_world/rev_1733154050654802692.sql +++ b/data/sql/updates/db_world/2024_12_02_05.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_02_04 -> 2024_12_02_05 -- UPDATE `creature_template` SET `skinloot` = 0 WHERE `entry` IN (18094, 18093, 18092); From 69c85ca8a2387498d87730b4a4791aa3c56200ba Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Tue, 3 Dec 2024 13:57:14 -0300 Subject: [PATCH 53/66] fix(Scripts/ZulAman): Overpower spell cooldown (#20828) --- .../scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp index 66959734b83b3b..0f6bdb587de04d 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp @@ -178,11 +178,9 @@ struct boss_zuljin : public BossAI }, 20s); ScheduleTimedEvent(1s, [&] { - if (!me->HasSpellCooldown(SPELL_OVERPOWER)) - { - if (me->GetVictim() && me->GetComboPoints()) - DoCastVictim(SPELL_OVERPOWER); - } + if (!me->HasSpellCooldown(SPELL_OVERPOWER) && me->GetVictim() && me->GetComboPoints()) + if (DoCastVictim(SPELL_OVERPOWER) == SPELL_CAST_OK) + me->AddSpellCooldown(SPELL_OVERPOWER, 0, 5000); }, 1s); }); From 6f824ee856b2b30c40abfe36d7d5da20804f0a9e Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Tue, 3 Dec 2024 21:56:31 +0200 Subject: [PATCH 54/66] fix(DB/Conditions): 'Zeth'Gor Must Burn!' setting the sky on fire (#20447) --- .../updates/pending_db_world/rev_1730814217046191100.sql | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1730814217046191100.sql diff --git a/data/sql/updates/pending_db_world/rev_1730814217046191100.sql b/data/sql/updates/pending_db_world/rev_1730814217046191100.sql new file mode 100644 index 00000000000000..bf98271669ea43 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1730814217046191100.sql @@ -0,0 +1,7 @@ +-- Marking a tower for Zeth'Gor Must Burn! +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 17) AND (`SourceGroup` = 0) AND (`SourceEntry` = 36325); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 36325, 0, 0, 29, 0, 21182, 25, 0, 0, 0, 0, '', 'Cast \' They Must Burn Bomb Drop (DND)\' only if within 25 of dummy target'), +(17, 0, 36325, 0, 1, 29, 0, 22401, 25, 0, 0, 0, 0, '', 'Cast \' They Must Burn Bomb Drop (DND)\' only if within 25 of dummy target'), +(17, 0, 36325, 0, 2, 29, 0, 22402, 25, 0, 0, 0, 0, '', 'Cast \' They Must Burn Bomb Drop (DND)\' only if within 25 of dummy target'), +(17, 0, 36325, 0, 3, 29, 0, 22403, 25, 0, 0, 0, 0, '', 'Cast \' They Must Burn Bomb Drop (DND)\' only if within 25 of dummy target'); From 26518b37900fa731e186571c5653a0762085bf2f Mon Sep 17 00:00:00 2001 From: DuckBone <129666049+Kacsacsont@users.noreply.github.com> Date: Tue, 3 Dec 2024 20:57:11 +0100 Subject: [PATCH 55/66] Fix(DB/Script): Halls of Stone, Brann escort (#20312) * Fix(DB/Script): Halls of Stone, Brann escort - escort, tribunal, bjonnir code completion Closes issue #13079 * Fix(DB/Script): Halls of Stone, Brann escort * Fix(DB/Script): Halls of Stone, Brann escort * Fix(DB/Script): Halls of Stone, Brann escort * Fix(DB/Script): Halls of Stone, Brann escort * Fix(DB/Script): Halls of Stone, Brann escort * Fix(DB/Script): Halls of Stone, Brann escort * Update rev_1729968739299017200.sql * Fix(DB/Script): Halls of Stone, Brann escort fix * Fix(DB/Script): Halls of Stone, Brann escort fix 2 * Fix(DB/Script): Halls of Stone, Brann escort brackets format * Fix(DB/Script): Halls of Stone, Brann escort remove whitespace * Fix(DB/Script): Halls of Stone, Brann escort remove last whitespace --------- Co-authored-by: zalazoltan86 --- .../rev_1729968739299017200.sql | 49 ++ .../Ulduar/HallsOfStone/boss_sjonnir.cpp | 17 +- .../Ulduar/HallsOfStone/brann_bronzebeard.cpp | 644 +++++++++++++----- .../Ulduar/HallsOfStone/halls_of_stone.h | 26 + .../HallsOfStone/instance_halls_of_stone.cpp | 90 ++- 5 files changed, 626 insertions(+), 200 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1729968739299017200.sql diff --git a/data/sql/updates/pending_db_world/rev_1729968739299017200.sql b/data/sql/updates/pending_db_world/rev_1729968739299017200.sql new file mode 100644 index 00000000000000..1f5a9398a28414 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1729968739299017200.sql @@ -0,0 +1,49 @@ +DELETE FROM `spell_script_names` WHERE `spell_id`=51000; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (51000, 'spell_hos_dark_matter_size'); + +DELETE FROM `spell_script_names` WHERE `spell_id`=51001; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (51001, 'spell_hos_dark_matter'); + +DELETE FROM `script_waypoint` WHERE `entry` IN (28070); +INSERT INTO `script_waypoint` (`entry`, `pointid`, `location_x`, `location_y`, `location_z`, `waittime`, `point_comment`) +VALUES +(28070, 1, 1064.12, 474.883, 207.721, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 2, 1045.25, 471.345, 208.611, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 3, 1022.27, 458.81, 207.72, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 4, 995.493, 432.994, 207.413, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 5, 982.247, 421.768, 205.994, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 6, 977.403, 420.578, 205.994, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 7, 968.479, 421.992, 205.994, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 8, 959.337, 420.403, 205.994, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 9, 949.226, 413.964, 205.994, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 10, 944.901, 401.561, 205.994, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 11, 943.739, 394.289, 205.994, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 12, 943.949, 383.505, 206.696, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 13, 942.623, 378.852, 207.423, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 14, 937.271, 373.627, 207.422, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 15, 926.094, 362.071, 203.706, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 16, 897.082, 332.612, 203.706, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 17, 916.701, 352.318, 203.706, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 18, 946.597, 383.533, 205.994, 2000, 'Brann Bronzebeard - Halls of Stone'), +(28070, 19, 973.525, 379.987, 205.994, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 20, 982.317, 390.587, 205.994, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 21, 984.925, 406.454, 205.994, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 22, 999.096, 433.512, 207.412, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 23, 1023.27, 457.194, 207.719, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 24, 1046.27, 479.728, 207.748, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 25, 1064.12, 474.883, 207.721, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 26, 1047.91, 521.103, 207.719, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 27, 1048.57, 622.492, 207.719, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 28, 1048.86, 662.867, 201.672, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 29, 1105.7, 662.475, 202.871, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 30, 1121.44, 662.366, 196.235, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 31, 1138.58, 632.499, 196.235, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 32, 1164.78, 637.113, 196.294, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 33, 1199.88, 667.139, 196.242, 2000, 'Brann Bronzebeard - Halls of Stone'), +(28070, 34, 1202.49, 667.226, 196.243, 2000, 'Brann Bronzebeard - Halls of Stone'), +(28070, 35, 1230.13, 666.967, 189.607, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 36, 1256.34, 666.921, 189.611, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 37, 1282.12, 666.744, 189.607, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 38, 1307.56, 666.938, 189.607, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 39, 1306.05, 666.85, 189.607, 0, 'Brann Bronzebeard - Halls of Stone'), +(28070, 40, 1307.56, 666.938, 189.607, 0, 'Brann Bronzebeard - Halls of Stone'); diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp index da0e324cac4775..d51461f6a6da0b 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp @@ -145,8 +145,6 @@ class boss_sjonnir : public CreatureScript if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) == DONE) { me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - if (GameObject* doors = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_SJONNIR_DOOR))) - doors->SetGoState(GO_STATE_ACTIVE); if (GameObject* console = me->GetMap()->GetGameObject( pInstance->GetGuidData(GO_SJONNIR_CONSOLE))) console->SetGoState(GO_STATE_READY); @@ -155,7 +153,7 @@ class boss_sjonnir : public CreatureScript { brann->setDeathState(DeathState::JustDied); brann->Respawn(); - brann->AI()->DoAction(5); + brann->AI()->DoAction(ACTION_SJONNIR_WIPE_START); } } } @@ -183,7 +181,7 @@ class boss_sjonnir : public CreatureScript if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) == DONE) if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN))) - brann->AI()->DoAction(3); + brann->AI()->DoAction(ACTION_START_SJONNIR_FIGHT); } } @@ -220,8 +218,7 @@ class boss_sjonnir : public CreatureScript if (pInstance) if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN))) { - brann->Yell("What in the name o' Madoran did THAT do? Oh! Wait: I just about got it...", LANG_UNIVERSAL); - brann->PlayDirectSound(14276); + brann->AI()->Talk(SAY_BRANN_SPAWN_OOZE); } } @@ -229,8 +226,7 @@ class boss_sjonnir : public CreatureScript { if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN))) { - brann->Yell("Ha, that did it! Help's a-comin'! Take this, ya glowin' iron brute!", LANG_UNIVERSAL); - brann->PlayDirectSound(14277); + brann->AI()->Talk(SAY_BRANN_SPAWN_EARTHEN); } SummonPhase = PHASE_SUMMON_FRIENDLY_DWARFES; me->CastSpell(me, SPELL_FRENZY, false); @@ -276,8 +272,7 @@ class boss_sjonnir : public CreatureScript { if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN))) { - brann->Yell("This is a wee bit trickier that before... Oh, bloody--incomin'!", LANG_UNIVERSAL); - brann->PlayDirectSound(14275); + brann->AI()->Talk(SAY_BRANN_SPAWN_TROGG); } break; @@ -331,7 +326,7 @@ class boss_sjonnir : public CreatureScript sd->SetGoState(GO_STATE_ACTIVE); if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN))) - brann->AI()->DoAction(4); + brann->AI()->DoAction(ACTION_SJONNIR_DEAD); } } diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp index 83da968533f121..8202f673a7fae0 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp @@ -28,14 +28,19 @@ #define GOSSIP_ITEM_2 "Let's move Brann, enough of the history lessons!" #define GOSSIP_ITEM_3 "There will be plenty of time for this later Brann, we need to get moving!" #define GOSSIP_ITEM_4 "We're with you Brann! Open it!" -#define TEXT_ID_START 13100 +#define TEXT_ID_START 13100 +#define TEXT_ID_TRIBUNAL_START 13101 +#define TEXT_ID_TRIBUNAL_END 14176 +#define TEXT_ID_SJONNIR_DOOR 13883 +#define TEXT_ID_SJONNIR_END 13308 enum NPCs { NPC_DARK_RUNE_PROTECTOR = 27983, NPC_DARK_RUNE_STORMCALLER = 27984, NPC_IRON_GOLEM_CUSTODIAN = 27985, - NPC_DARK_MATTER_TRIGGER = 28237, + NPC_DARK_MATTER = 28235, + NPC_DARK_MATTER_TARGET = 28237, NPC_SEARING_GAZE_TRIGGER = 28265, }; @@ -44,7 +49,8 @@ enum Misc // BRANN EVENT SPELL_GLARE_OF_THE_TRIBUNAL = 50988, SPELL_GLARE_OF_THE_TRIBUNAL_H = 59870, - SPELL_DARK_MATTER_VISUAL = 51001, + SPELL_DARK_MATTER_VISUAL = 51000, + SPELL_DARK_MATTER_VISUAL_CHANNEL= 51001, SPELL_DARK_MATTER = 51012, SPELL_DARK_MATTER_H = 59868, SPELL_SEARING_GAZE = 51136, @@ -65,46 +71,49 @@ enum Misc SPELL_IGC_GROUND_SMASH = 12734, SPELL_IGC_GROUND_SMASH_H = 59865, - // ACTIONS - ACTION_START_EVENT = 0, - ACTION_START_TRIBUNAL = 1, - ACTION_GO_TO_SJONNIR = 2, - ACTION_START_SJONNIR_FIGHT = 3, - ACTION_SJONNIR_DEAD = 4, - ACTION_ENTEREVADEMODE = 5, - ACTION_WIPE_START = 6, - ACTION_OPEN_DOOR = 7, - // QUESTS QUEST_HALLS_OF_STONE = 13207, }; enum events { - // BRANN - EVENT_KADDRAK_HEAD = 1, - EVENT_MARNAK_HEAD = 2, - EVENT_ABEDNEUM_HEAD = 3, - EVENT_SUMMON_MONSTERS = 4, - EVENT_TRIBUNAL_END = 5, - EVENT_GO_TO_SJONNIR = 6, - EVENT_END = 7, - EVENT_KADDRAK_VISUAL = 8, - EVENT_MARNAK_VISUAL = 9, - EVENT_ABEDNEUM_VISUAL = 10, - EVENT_KADDRAK_SWITCH_EYE = 11, + // BRANN AND TRIBUNAL + EVENT_ABEDNEUM_VISUAL = 1, + EVENT_KADDRAK_VISUAL = 2, + EVENT_MARNAK_VISUAL = 3, + EVENT_ABEDNEUM_HEAD = 4, + EVENT_KADDRAK_HEAD = 5, + EVENT_MARNAK_HEAD = 6, + EVENT_KADDRAK_SWITCH_EYE = 7, + EVENT_SUMMON_MONSTERS = 8, + EVENT_SUMMON_STORMCALLER = 9, + EVENT_SUMMON_CUSTODIAN = 10, + EVENT_DARK_MATTER_START = 11, + EVENT_DARK_MATTER_END = 12, // DARK RUNE PROTECTOR - EVENT_DRP_CHARGE = 15, - EVENT_DRP_CLEAVE = 16, + EVENT_DRP_CHARGE = 13, + EVENT_DRP_CLEAVE = 14, // DARK RUNE STORMCALLER - EVENT_DRS_LIGHTNING_BOLD = 20, - EVENT_DRS_SHADOW_WORD_PAIN = 21, + EVENT_DRS_LIGHTNING_BOLD = 15, + EVENT_DRS_SHADOW_WORD_PAIN = 16, // IRON GOLEM CUSTODIAN - EVENT_IGC_CRUSH = 30, - EVENT_IGC_GROUND_SMASH = 31, + EVENT_IGC_CRUSH = 17, + EVENT_IGC_GROUND_SMASH = 18, + + EVENT_TRIBUNAL_END = 19, + EVENT_BREEN_WAITING = 20, + EVENT_TALK_FACE_CHANGE = 21, + EVENT_SKY_ROOM_FLOOR_CHANGE = 22, + + //BRANN AND SJONNIR + EVENT_GO_TO_SJONNIR = 23, + EVENT_DOOR_OPEN = 24, + EVENT_RESUME_ESCORT = 25, + EVENT_SJONNIR_END_BRANN_YELL = 26, + EVENT_SJONNIR_END_BRANN_LAST_YELL = 27, }; struct Yells @@ -116,46 +125,45 @@ struct Yells static Yells Conversation[] = { - {14259, "Time to get some answers! Let's get this show on the road!", NPC_BRANN, 0}, - {14247, "Take a moment and relish this with me. Soon... all will be revealed. Okay then, let's do this!", NPC_BRANN, 5000}, - {14248, "Now keep an eye out! I'll have this licked in two shakes of a--", NPC_BRANN, 17000}, - {13765, "Warning: life form pattern not recognized. Archival processing terminated. Continued interference will result in targeted response.", NPC_ABEDNEUM, 20500}, - {14249, "Oh, that doesn't sound good. We might have a complication or two...", NPC_BRANN, 32000}, - {13756, "Security breach in progress. Analysis of historical archives transferred to lower-priority queue. Countermeasures engaged.", NPC_KADDRAK, 37000}, - {14250, "Ah, you want to play hardball, eh? That's just my game!", NPC_BRANN, 49000}, - {14251, "Couple more minutes and I'll--", NPC_BRANN, 100000}, + {14248, "Now keep an eye out! I'll have this licked in two shakes of a--", NPC_BRANN, 8000}, + {13765, "Warning: life form pattern not recognized. Archival processing terminated. Continued interference will result in targeted response.", NPC_ABEDNEUM, 13000}, + {14249, "Oh, that doesn't sound good. We might have a complication or two...", NPC_BRANN, 24000}, + {13756, "Security breach in progress. Analysis of historical archives transferred to lower-priority queue. Countermeasures engaged.", NPC_KADDRAK, 30500}, + {14250, "Ah, you want to play hardball, eh? That's just my game!", NPC_BRANN, 42000}, + {14251, "Couple more minutes and I'll--", NPC_BRANN, 102000}, {13761, "Threat index threshold exceeded. Celestial archive aborted. Security level heightened.", NPC_MARNAK, 105000}, - {14252, "Heightened? What's the good news?", NPC_BRANN, 116000}, - {14253, "So that was the problem? Now I'm makin' progress...", NPC_BRANN, 195000}, - {13767, "Critical threat index. Void analysis diverted. Initiating sanitization protocol.", NPC_ABEDNEUM, 205000}, - {14254, "Hang on! Nobody's gonna' be sanitized as long as I have a say in it!", NPC_BRANN, 215000}, - {14255, "Ha! The old magic fingers finally won through! Now let's get down to--", NPC_BRANN, 295000}, - {13768, "Alert: security fail-safes deactivated. Beginning memory purge and... ", NPC_ABEDNEUM, 303000}, - //The fight is completed at this point. - {14256, "Purge? No no no no no.. where did I-- Aha, this should do the trick...", NPC_BRANN, 310000}, - {13769, "System online. Life form pattern recognized. Welcome, Branbronzan. Query?", NPC_ABEDNEUM, 321000}, - {14263, "Query? What do you think I'm here for, tea and biscuits? Spill the beans already!", NPC_BRANN, 329000}, + {14252, "Heightened? What's the good news?", NPC_BRANN, 113000}, + {14253, "So that was the problem? Now I'm makin' progress...", NPC_BRANN, 201000}, + {13767, "Critical threat index. Void analysis diverted. Initiating sanitization protocol.", NPC_ABEDNEUM, 207500 }, + {14254, "Hang on! Nobody's gonna' be sanitized as long as I have a say in it!", NPC_BRANN, 214000}, + {14255, "Ha! The old magic fingers finally won through! Now let's get down to--", NPC_BRANN, 305000}, + {13768, "Alert: security fail-safes deactivated. Beginning memory purge and... ", NPC_ABEDNEUM, 310000}, + //The fight is completed at this point.d + {14256, "Purge? No no no no no.. where did I-- Aha, this should do the trick...", NPC_BRANN, 316000}, + {13769, "System online. Life form pattern recognized. Welcome, Branbronzan. Query?", NPC_ABEDNEUM, 322000}, + {14263, "Query? What do you think I'm here for, tea and biscuits? Spill the beans already!", NPC_BRANN, 330000}, {14264, "Tell me how the dwarves came to be, and start at the beginning!", NPC_BRANN, 336000}, - {13770, "Accessing prehistoric data... retrieved. In the beginning the earthen were created to--", NPC_ABEDNEUM, 342000}, + {13770, "Accessing prehistoric data... retrieved. In the beginning the earthen were created to--", NPC_ABEDNEUM, 341000}, {14265, "Right, right... I know the earthen were made from stone to shape the deep regions o' the world. But what about the anomalies? Matrix non-stabilizin' and what-not?", NPC_BRANN, 348000}, {13771, "Accessing... In the early stages of it's development cycle, Azeroth suffered infection by parasitic necrophotic symbiotes.", NPC_ABEDNEUM, 360000}, - {14266, "Necrowhatinthe-- Speak bloody Common, will ye?", NPC_BRANN, 373500}, - {13772, "Designation: Old Gods. Old Gods rendered all systems, including earthen, defenseless in order to facilitate assimilation. This matrix destabilization has been termed the Curse of Flesh. Effects of destabilization increased over time.", NPC_ABEDNEUM, 380000}, - {14267, "Old Gods, huh? So they zapped the earthen with this Curse of Flesh... and then what?", NPC_BRANN, 399500}, - {13757, "Accessing... Creators arrived to extirpate symbiotic infection. Assessment revealed that Old God infestation had grown malignant. Excising parasites would result in loss of host--", NPC_KADDRAK, 406000}, + {14266, "Necrowhatinthe-- Speak bloody Common, will ye?", NPC_BRANN, 372000}, + {13772, "Designation: Old Gods. Old Gods rendered all systems, including earthen, defenseless in order to facilitate assimilation. This matrix destabilization has been termed the Curse of Flesh. Effects of destabilization increased over time.", NPC_ABEDNEUM, 377000}, + {14267, "Old Gods, huh? So they zapped the earthen with this Curse of Flesh... and then what?", NPC_BRANN, 400000}, + {13757, "Accessing... Creators arrived to extirpate symbiotic infection. Assessment revealed that Old God infestation had grown malignant. Excising parasites would result in loss of host--", NPC_KADDRAK, 407500}, {14268, "If they killed the Old Gods, Azeroth would've been destroyed...", NPC_BRANN, 424000}, - {13758, "Correct. Creators neutralized parasitic threat and contained it within the host. Forge of Wills and other systems were instituted to create new earthen. Safeguards were implemented, and protectors were appointed.", NPC_KADDRAK, 429000}, - {14269, "What protectors?", NPC_BRANN, 449000}, - {13759, "Designations: Aesir and Vanir. Or in the common nomenclature, storm and earth giants. Sentinel Loken designated supreme. Dragon Aspects appointed to monitor evolution on Azeroth.", NPC_KADDRAK, 452000}, - {14270, "Aesir and Vanir... Okay, so the Forge o' Wills started makin' new earthen... but what happened to the old ones?", NPC_BRANN, 471000}, - {13762, "Additional background is relevant to your query: following global combat between Aesir and Vanir--", NPC_MARNAK, 482000}, + {13758, "Correct. Creators neutralized parasitic threat and contained it within the host. Forge of Wills and other systems were instituted to create new earthen. Safeguards were implemented, and protectors were appointed.", NPC_KADDRAK, 431000}, + {14269, "What protectors?", NPC_BRANN, 450000}, + {13759, "Designations: Aesir and Vanir. Or in the common nomenclature, storm and earth giants. Sentinel Loken designated supreme. Dragon Aspects appointed to monitor evolution on Azeroth.", NPC_KADDRAK, 453000}, + {14270, "Aesir and Vanir... Okay, so the Forge o' Wills started makin' new earthen... but what happened to the old ones?", NPC_BRANN, 472000}, + {13762, "Additional background is relevant to your query: following global combat between Aesir and Vanir--", NPC_MARNAK, 483000}, {14271, "Hold everything! The Aesir and Vanir went to war? Why?", NPC_BRANN, 489000}, - {13763, "Unknown. Data suggests that impetus for global combat originated with prime designate Loken, who neutralized all remaining Aesir and Vanir, affecting termination of conflict. Prime designate Loken then initiated stasis of several seed races, including earthen, giants and vrykul, at designated holding facilities.", NPC_MARNAK, 494000}, + {13763, "Unknown. Data suggests that impetus for global combat originated with prime designate Loken, who neutralized all remaining Aesir and Vanir, affecting termination of conflict. Prime designate Loken then initiated stasis of several seed races, including earthen, giants and vrykul, at designated holding facilities.", NPC_MARNAK, 495000}, {14272, "This Loken sounds like a nasty character. Glad we don't have to worry about the likes o' him anymore. So... if I'm understandin' ye right, the original earthen eventually woke up from this stasis, and by that time the destabili-whatever had turned 'em into proper dwarves. Or at least... dwarf ancestors.", NPC_BRANN, 519000}, {13764, "Essentially that is correct.", NPC_MARNAK, 543000}, - {14273, "Well, now... that's a lot to digest. I'm gonna need some time to take all this in. Thank ye.", NPC_BRANN, 549000}, - {13773, "Acknowledged, Branbronzan. Session terminated.", NPC_ABEDNEUM, 559000}, - {0, "I think it's time to see what's behind the door near the entrance. I'm going to sneak over there, nice and quiet. Meet me at the door and I'll get us in.", NPC_BRANN, 574000}, + {14273, "Well, now... that's a lot to digest. I'm gonna need some time to take all this in. Thank ye.", NPC_BRANN, 546000}, + {13773, "Acknowledged, Branbronzan. Session terminated.", NPC_ABEDNEUM, 554000}, + //Go to Sjonnir's door + {0, "I think it's time to see what's behind the door near the entrance. I'm going to sneak over there, nice and quiet. Meet me at the door and I'll get us in.", NPC_BRANN, 561000}, }; class brann_bronzebeard : public CreatureScript @@ -176,24 +184,27 @@ class brann_bronzebeard : public CreatureScript { case 1: AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + SendGossipMenuFor(player, TEXT_ID_START, creature->GetGUID()); break; case 2: AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + SendGossipMenuFor(player, TEXT_ID_TRIBUNAL_START, creature->GetGUID()); break; case 3: AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + SendGossipMenuFor(player, TEXT_ID_TRIBUNAL_END, creature->GetGUID()); break; case 4: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); + AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); + SendGossipMenuFor(player, TEXT_ID_SJONNIR_DOOR, creature->GetGUID()); break; case 5: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); + SendGossipMenuFor(player, TEXT_ID_SJONNIR_END, creature->GetGUID()); break; default: break; } } - SendGossipMenuFor(player, TEXT_ID_START, creature->GetGUID()); return true; } @@ -204,7 +215,7 @@ class brann_bronzebeard : public CreatureScript switch (action) { case GOSSIP_ACTION_INFO_DEF+1: - creature->AI()->DoAction(ACTION_START_EVENT); + creature->AI()->DoAction(ACTION_START_ESCORT_EVENT); CloseGossipMenuFor(player); break; case GOSSIP_ACTION_INFO_DEF+2: @@ -216,10 +227,6 @@ class brann_bronzebeard : public CreatureScript CloseGossipMenuFor(player); break; case GOSSIP_ACTION_INFO_DEF+4: - creature->AI()->DoAction(ACTION_WIPE_START); - CloseGossipMenuFor(player); - break; - case GOSSIP_ACTION_INFO_DEF+5: creature->AI()->DoAction(ACTION_OPEN_DOOR); CloseGossipMenuFor(player); break; @@ -246,10 +253,13 @@ class brann_bronzebeard : public CreatureScript ObjectGuid AbedneumGUID; ObjectGuid MarnakGUID; ObjectGuid KaddrakGUID; + ObjectGuid darkMatterTargetGUID; + uint8 WaveNum; bool TalkEvent; uint32 SpeechCount, SpeechPause; + bool canExecuteEvents = true; void DespawnHeads() { @@ -257,6 +267,7 @@ class brann_bronzebeard : public CreatureScript if ((cr = GetAbedneum())) cr->DespawnOrUnsummon(); if ((cr = GetMarnak())) cr->DespawnOrUnsummon(); if ((cr = GetKaddrak())) cr->DespawnOrUnsummon(); + SwitchHeadVisaul(0x7, false); } @@ -268,15 +279,46 @@ class brann_bronzebeard : public CreatureScript GameObject* go = nullptr; if (headMask & 0x1) // Kaddrak if ((go = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_KADDRAK)))) - activate ? go->SendCustomAnim(0) : go->SetGoState(GO_STATE_READY); - + { + if (activate) + { + go->SendCustomAnim(0); + } + else + { + go->SendCustomAnim(1); + if (go->GetGoState() == GO_STATE_ACTIVE) + go->SetGoState(GO_STATE_READY); + } + } if (headMask & 0x2) // Marnak if ((go = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_MARNAK)))) - activate ? go->SendCustomAnim(0) : go->SetGoState(GO_STATE_READY); - + { + if (activate) + { + go->SendCustomAnim(0); + } + else + { + go->SendCustomAnim(1); + if (go->GetGoState() == GO_STATE_ACTIVE) + go->SetGoState(GO_STATE_READY); + } + } if (headMask & 0x4) // Abedneum if ((go = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_ABEDNEUM)))) - activate ? go->SendCustomAnim(0) : go->SetGoState(GO_STATE_READY); + { + if (activate) + { + go->SendCustomAnim(0); + } + else + { + go->SendCustomAnim(1); + if (go->GetGoState() == GO_STATE_ACTIVE) + go->SetGoState(GO_STATE_READY); + } + } } void ResetEvent() @@ -284,6 +326,9 @@ class brann_bronzebeard : public CreatureScript if (GameObject* tribunal = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_TRIBUNAL_CONSOLE))) tribunal->SetGoState(GO_STATE_READY); + if (GameObject* tribunalSkyFloor = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SKY_FLOOR))) + tribunalSkyFloor->SetGoState(GO_STATE_READY); + events.Reset(); summons.DespawnAll(); DespawnHeads(); @@ -301,7 +346,8 @@ class brann_bronzebeard : public CreatureScript Creature* GetMarnak() { return ObjectAccessor::GetCreature(*me, MarnakGUID); } Creature* GetKaddrak() { return ObjectAccessor::GetCreature(*me, KaddrakGUID); } - void MoveInLineOfSight(Unit* /*pWho*/) override { } + bool leftEye = true; + void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override { if (damage && pInstance) @@ -325,7 +371,18 @@ class brann_bronzebeard : public CreatureScript pInstance->SetData(DATA_BRANN_ACHIEVEMENT, true); if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) == DONE) - pInstance->SetData(BRANN_BRONZEBEARD, (pInstance->GetData(BOSS_SJONNIR) == DONE) ? 5 : 4); + { + pInstance->SetData(BRANN_BRONZEBEARD, 4); + if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_TRIBUNAL_ACCESS_DOOR))) + door->SetGoState(GO_STATE_ACTIVE); + } + + if (pInstance->GetData(BOSS_SJONNIR) == DONE) + { + pInstance->SetData(BRANN_BRONZEBEARD, 5); + if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SJONNIR_DOOR))) + door->SetGoState(GO_STATE_ACTIVE); + } } } @@ -333,58 +390,79 @@ class brann_bronzebeard : public CreatureScript { switch (action) { - case ACTION_START_EVENT: + case ACTION_START_ESCORT_EVENT: Start(false, true, ObjectGuid::Empty, 0, true, false); + Talk(SAY_BRANN_ESCORT_START); + me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE); + me->SetReactState(REACT_AGGRESSIVE); + me->SetRegeneratingHealth(false); break; case ACTION_START_TRIBUNAL: - { - Map::PlayerList const& PlayerList = me->GetMap()->GetPlayers(); - if (!PlayerList.IsEmpty()) - for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) - { - me->SetFaction(i->GetSource()->GetFaction()); - break; - } + { + me->SetReactState(REACT_PASSIVE); + Map::PlayerList const& PlayerList = me->GetMap()->GetPlayers(); + if (!PlayerList.IsEmpty()) + for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) + { + me->SetFaction(i->GetSource()->GetFaction()); + break; + } - SetEscortPaused(false); - InitializeEvent(); - me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); - break; - } + SetEscortPaused(false); + InitializeEvent(); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); + break; + } + case ACTION_TRIBUNAL_WIPE_START: + SetNextWaypoint(1, false); + SetEscortPaused(false); + ResetEvent(); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); + break; case ACTION_GO_TO_SJONNIR: + Talk(SAY_BRANN_ENTRANCE_MEET); + me->SetFaction(FACTION_FRIENDLY); + me->SetReactState(REACT_PASSIVE); + me->SetRegeneratingHealth(true); SetEscortPaused(false); ResetEvent(); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); + DoCast(me, 58506, false); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY_UNARMED); + me->SendMovementFlagUpdate(); break; case ACTION_START_SJONNIR_FIGHT: me->SetFaction(FACTION_FRIENDLY); - me->Yell("Don't worry! Ol' Brann's got yer back! Keep that metal monstrosity busy, and I'll see if I can't sweet talk this machine into helping ye!", LANG_UNIVERSAL); - me->PlayDirectSound(14274); SetEscortPaused(false); break; case ACTION_SJONNIR_DEAD: - me->Yell("Loken? That's downright bothersome... We might've neutralized the iron dwarves, but I'd lay odds there's another machine somewhere else churnin' out a whole mess o' these iron vrykul!", LANG_UNIVERSAL); - me->PlayDirectSound(14278); - events.ScheduleEvent(EVENT_END, 14000); + if (pInstance) + pInstance->SetData(BRANN_BRONZEBEARD, 5); + SetEscortPaused(false); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_STAND); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + me->SetOrientation(3.132660f); + me->SendMovementFlagUpdate(); + events.ScheduleEvent(EVENT_SJONNIR_END_BRANN_YELL, 10000ms); + events.ScheduleEvent(EVENT_SJONNIR_END_BRANN_LAST_YELL, 22000ms); break; - case ACTION_ENTEREVADEMODE: - RemoveEscortState(0x7); // all states - me->SetHomePosition(1077.41f, 474.16f, 207.8f, 2.70526f); - me->UpdatePosition(1077.41f, 474.16f, 207.9f, 2.70526f, true); - me->StopMovingOnCurrentPos(); + case ACTION_SJONNIR_WIPE_START: Reset(); - break; - case ACTION_WIPE_START: - Start(false, true, ObjectGuid::Empty, 0, true, false); - SetNextWaypoint(20, false); - ResetEvent(); - me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); + SetNextWaypoint(33, true); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY_UNARMED); + me->StopMovingOnCurrentPos(); + DoCast(me, 58506, false); + if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SJONNIR_DOOR))) + door->SetGoState(GO_STATE_READY); break; case ACTION_OPEN_DOOR: - if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SJONNIR_DOOR))) - door->SetGoState(GO_STATE_ACTIVE); + Start(false, true, ObjectGuid::Empty, 0, true, false); + SetNextWaypoint(34, false); SetEscortPaused(false); me->RemoveAura(58506); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); + me->SetWalk(true); + me->SetSpeed(MOVE_WALK, 1.0f); break; } } @@ -400,68 +478,130 @@ class brann_bronzebeard : public CreatureScript void UpdateEscortAI(uint32 diff) override { events.Update(diff); - switch (events.ExecuteEvent()) + + if (uint32 eventId = events.ExecuteEvent()) { - case EVENT_KADDRAK_VISUAL: + switch (eventId) + { + case EVENT_KADDRAK_VISUAL: { SwitchHeadVisaul(0x1, true); break; } - case EVENT_MARNAK_VISUAL: + case EVENT_MARNAK_VISUAL: { SwitchHeadVisaul(0x2, true); break; } - case EVENT_ABEDNEUM_VISUAL: + case EVENT_ABEDNEUM_VISUAL: { SwitchHeadVisaul(0x4, true); break; } - case EVENT_KADDRAK_HEAD: // First + case EVENT_KADDRAK_HEAD: // Phase 1 { + if (!canExecuteEvents) + return; if (Creature* kaddrak = GetKaddrak()) { if (Player* plr = SelectTargetFromPlayerList(100.0f)) kaddrak->CastSpell(plr, DUNGEON_MODE(SPELL_GLARE_OF_THE_TRIBUNAL, SPELL_GLARE_OF_THE_TRIBUNAL_H), true); } - events.RescheduleEvent(EVENT_KADDRAK_SWITCH_EYE, 1500ms); - events.Repeat(2s, 4s); + events.RescheduleEvent(EVENT_KADDRAK_SWITCH_EYE, 1000ms); + events.Repeat(1500ms); break; } - case EVENT_KADDRAK_SWITCH_EYE: + case EVENT_KADDRAK_SWITCH_EYE: { + if (!canExecuteEvents) + return; if (Creature* kaddrak = GetKaddrak()) { - if (urand(0, 1)) + if (leftEye) kaddrak->UpdatePosition(927.9f, 330.9f, 219.4f, 2.4f, true); else kaddrak->UpdatePosition(923.7f, 326.9f, 219.5f, 2.1f, true); + leftEye = !leftEye; kaddrak->StopMovingOnCurrentPos(); } break; } - case EVENT_MARNAK_HEAD: // Second + case EVENT_MARNAK_HEAD: // Phase 2 { + if (!canExecuteEvents) + return; + if (Creature* marnak = GetMarnak()) { - if (Creature* cr = me->SummonCreature(NPC_DARK_MATTER_TRIGGER, marnak->GetPositionX(), marnak->GetPositionY(), marnak->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 7000)) + if (Creature* cr = me->SummonCreature(NPC_DARK_MATTER_TARGET, 899.843f, 355.271f, 214.301f, 0, TEMPSUMMON_TIMED_DESPAWN, 10000)) + { + cr->SetCanFly(true); + + //right eye + if (Creature* cra = me->SummonCreature(NPC_DARK_MATTER, marnak->GetPositionX(), marnak->GetPositionY(), marnak->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN, 5000)) + cra->CastSpell(cra, SPELL_DARK_MATTER_VISUAL_CHANNEL, false); + + //left eye + if (Creature* crb = me->SummonCreature(NPC_DARK_MATTER, 891.543f, 359.5252f, 219.338f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 5000)) + crb->CastSpell(crb, SPELL_DARK_MATTER_VISUAL_CHANNEL, false); + + darkMatterTargetGUID = cr->GetGUID(); + + events.RescheduleEvent(EVENT_DARK_MATTER_START, 5000ms); + } + } + events.Repeat(30s); + break; + } + case EVENT_DARK_MATTER_START: + { + if (Creature* darkMatterTarget = ObjectAccessor::GetCreature(*me, darkMatterTargetGUID)) + { + darkMatterTarget->CastSpell(darkMatterTarget, SPELL_DARK_MATTER_VISUAL, false); + if (Player* plr = SelectTargetFromPlayerList(100.0f)) { - cr->CastSpell(cr, SPELL_DARK_MATTER_VISUAL, true); - if (Player* plr = SelectTargetFromPlayerList(100.0f)) + if (!plr) + return; //no target + + float speed = 10.0f; + float tooFarAwaySpeed = me->GetDistance(plr->GetPositionX(), plr->GetPositionY(), plr->GetPositionZ()) / (5000.0f * 0.001f); + if (speed < tooFarAwaySpeed) + speed = tooFarAwaySpeed; + + darkMatterTarget->MonsterMoveWithSpeed(plr->GetPositionX(), plr->GetPositionY(), plr->GetPositionZ(), speed); + + if (darkMatterTarget->GetDistance(plr) < 15.0f) + { + events.RescheduleEvent(EVENT_DARK_MATTER_END, 3000ms); + } + else if (darkMatterTarget->GetDistance(plr) < 30.0f) + { + events.RescheduleEvent(EVENT_DARK_MATTER_END, 3500ms); + } + else { - float speed = me->GetDistance(plr->GetPositionX(), plr->GetPositionY(), plr->GetPositionZ()) / (4000.0f * 0.001f); - cr->MonsterMoveWithSpeed(plr->GetPositionX(), plr->GetPositionY(), plr->GetPositionZ(), speed); + events.RescheduleEvent(EVENT_DARK_MATTER_END, 4500ms); } } } - events.Repeat(20s); break; } - case EVENT_ABEDNEUM_HEAD: // Third + case EVENT_DARK_MATTER_END: { + if (Creature* darkMatterTarget = ObjectAccessor::GetCreature(*me, darkMatterTargetGUID)) + { + darkMatterTarget->CastSpell(darkMatterTarget, darkMatterTarget->GetMap()->IsHeroic() ? SPELL_DARK_MATTER_H : SPELL_DARK_MATTER, true); + darkMatterTarget->DespawnOrUnsummon(500); + } + break; + } + case EVENT_ABEDNEUM_HEAD: // Phase 3 + { + if (!canExecuteEvents) + return; if (GetAbedneum()) { Player* plr = SelectTargetFromPlayerList(100.0f); @@ -475,38 +615,50 @@ class brann_bronzebeard : public CreatureScript cr->CastSpell(cr, DUNGEON_MODE(SPELL_SEARING_GAZE, SPELL_SEARING_GAZE_H), true); } } - events.Repeat(30s); + events.Repeat(15s); break; } - case EVENT_SUMMON_MONSTERS: + case EVENT_SUMMON_MONSTERS: { - uint32 Time = 45000 - (2500 * WaveNum); - SummonCreatures(NPC_DARK_RUNE_PROTECTOR, 3); + if (!canExecuteEvents) + return; + uint32 Time = 40000 - (2500 * WaveNum); + SummonCreatures(NPC_DARK_RUNE_PROTECTOR, 3, 0); if (WaveNum > 2) - SummonCreatures(NPC_DARK_RUNE_STORMCALLER, 2); + events.ScheduleEvent(EVENT_SUMMON_STORMCALLER, urand(10 - WaveNum, 15 - WaveNum) * 1000); if (WaveNum > 5) - SummonCreatures(NPC_IRON_GOLEM_CUSTODIAN, 1); + events.ScheduleEvent(EVENT_SUMMON_CUSTODIAN, urand(10 - WaveNum, 15 - WaveNum) * 1000); WaveNum++; events.RepeatEvent(Time); break; } - case EVENT_TRIBUNAL_END: + case EVENT_SUMMON_STORMCALLER: { + if (!canExecuteEvents) + return; + + SummonCreatures(NPC_DARK_RUNE_STORMCALLER, 2, 1); + + break; + } + case EVENT_SUMMON_CUSTODIAN: + { + if (!canExecuteEvents) + return; + + SummonCreatures(NPC_IRON_GOLEM_CUSTODIAN, 1, 1); + + break; + } + case EVENT_TRIBUNAL_END: + { + canExecuteEvents = false; // Has to be here! events.Reset(); //DespawnHeads(); summons.DespawnAll(); - if (pInstance) - { - pInstance->SetData(BOSS_TRIBUNAL_OF_AGES, DONE); - pInstance->SetData(BRANN_BRONZEBEARD, 3); - me->CastSpell(me, 59046, true); // credit - } - - me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); - // Spawn Chest and quest credit if (Player* plr = SelectTargetFromPlayerList(200.0f)) { @@ -520,31 +672,89 @@ class brann_bronzebeard : public CreatureScript plr->GroupEventHappens(QUEST_HALLS_OF_STONE, me); } - events.ScheduleEvent(EVENT_GO_TO_SJONNIR, 279s); + events.ScheduleEvent(EVENT_BREEN_WAITING, 11s); + events.ScheduleEvent(EVENT_SKY_ROOM_FLOOR_CHANGE, 92s); + events.ScheduleEvent(EVENT_TALK_FACE_CHANGE, 97s); //kaddrak speaks + events.ScheduleEvent(EVENT_SKY_ROOM_FLOOR_CHANGE, 168s); + events.ScheduleEvent(EVENT_TALK_FACE_CHANGE, 173s); //marnak speaks + events.ScheduleEvent(EVENT_SKY_ROOM_FLOOR_CHANGE, 239s); + events.ScheduleEvent(EVENT_TALK_FACE_CHANGE, 244s); //abedneum speaks + events.ScheduleEvent(EVENT_GO_TO_SJONNIR, 251s); + events.ScheduleEvent(EVENT_SKY_ROOM_FLOOR_CHANGE, 253s); break; } - case EVENT_GO_TO_SJONNIR: + case EVENT_BREEN_WAITING: { - if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SJONNIR_DOOR))) - door->SetGoState(GO_STATE_ACTIVE); SetEscortPaused(false); - ResetEvent(); - me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); + if (pInstance) + { + pInstance->SetData(BOSS_TRIBUNAL_OF_AGES, DONE); + pInstance->SetData(BRANN_BRONZEBEARD, 3); + me->CastSpell(me, 59046, true); // credit + } + + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_STAND); + me->SendMovementFlagUpdate(); + break; } - case EVENT_END: + case EVENT_TALK_FACE_CHANGE: { - events.Reset(); if (pInstance) - pInstance->SetData(BRANN_BRONZEBEARD, 6); + pInstance->SetData(BOSS_TRIBUNAL_OF_AGES, DONE); + break; + } + case EVENT_SKY_ROOM_FLOOR_CHANGE: + { + if (pInstance) + pInstance->SetData(BOSS_TRIBUNAL_OF_AGES, SPECIAL); + break; + } + case EVENT_GO_TO_SJONNIR: + { + me->AI()->DoAction(ACTION_GO_TO_SJONNIR); + break; + } + case EVENT_DOOR_OPEN: + { + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); + me->AddUnitMovementFlag(MOVEMENTFLAG_NONE); + + if (pInstance) + { + if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SJONNIR_DOOR))) + { + door->SetGoState(GO_STATE_ACTIVE); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY_UNARMED); + me->SendMovementFlagUpdate(); + } + } - me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); - me->Yell("I'll use the forge to make batches o' earthen to stand guard... But our greatest challenge still remains: find and stop Loken!", LANG_UNIVERSAL); - me->PlayDirectSound(14279); break; } + case EVENT_RESUME_ESCORT: + { + SetEscortPaused(false); + break; + } + case EVENT_SJONNIR_END_BRANN_YELL: + { + Talk(SAY_BRANN_VICTORY_SJONNIR_1); + break; + } + case EVENT_SJONNIR_END_BRANN_LAST_YELL: + { + events.Reset(); + SetEscortPaused(false); + Talk(SAY_BRANN_VICTORY_SJONNIR_2); + break; + } + } } + npc_escortAI::UpdateEscortAI(diff); + if (TalkEvent) { SpeechPause += diff; @@ -581,11 +791,16 @@ class brann_bronzebeard : public CreatureScript } } - void SummonCreatures(uint32 entry, uint8 count) + void SummonCreatures(uint32 entry, uint8 count, uint8 pos) { + Creature* cr; for (int i = 0; i < count; ++i) { - Creature* cr = me->SummonCreature(entry, 946.5971f + urand(0, 6), 383.5330f + urand(0, 6), 205.9943f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); + if (pos == 0) + cr = me->SummonCreature(entry, 943.088f + urand(0, 5), 401.378f + urand(0, 5), 206.078f, 3.8f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); //left + else + cr = me->SummonCreature(entry, 964.302f + urand(0, 4), 378.942f + urand(0, 4), 206.078f, 3.85f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); //right + if (cr) { cr->AI()->AttackStart(me); @@ -602,9 +817,18 @@ class brann_bronzebeard : public CreatureScript { if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN))) { + brann->HandleEmoteCommand(EMOTE_STATE_DEAD); brann->setDeathState(DeathState::JustDied); brann->Respawn(); - brann->AI()->DoAction(5); + if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) != DONE) + { + brann->AI()->DoAction(ACTION_TRIBUNAL_WIPE_START); + pInstance->SetData(BOSS_TRIBUNAL_OF_AGES, FAIL); + } + if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) == DONE) + { + brann->AI()->DoAction(ACTION_SJONNIR_WIPE_START); + } } if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) != DONE) pInstance->SetData(BOSS_TRIBUNAL_OF_AGES, NOT_STARTED); @@ -635,16 +859,18 @@ void brann_bronzebeard::brann_bronzebeardAI::InitializeEvent() TalkEvent = true; events.Reset(); - events.ScheduleEvent(EVENT_SUMMON_MONSTERS, 21s); - events.ScheduleEvent(EVENT_KADDRAK_HEAD, 20s); - events.ScheduleEvent(EVENT_MARNAK_HEAD, 105s); - events.ScheduleEvent(EVENT_ABEDNEUM_HEAD, 205s); - events.ScheduleEvent(EVENT_TRIBUNAL_END, 315s); // Viusals - events.ScheduleEvent(EVENT_KADDRAK_VISUAL, 20s); + events.ScheduleEvent(EVENT_KADDRAK_VISUAL, 30s); events.ScheduleEvent(EVENT_MARNAK_VISUAL, 105s); - events.ScheduleEvent(EVENT_ABEDNEUM_VISUAL, 205s); + events.ScheduleEvent(EVENT_ABEDNEUM_VISUAL, 207s); + + // Fight + events.ScheduleEvent(EVENT_SUMMON_MONSTERS, 47s); + events.ScheduleEvent(EVENT_KADDRAK_HEAD, 47s); + events.ScheduleEvent(EVENT_MARNAK_HEAD, 115s); + events.ScheduleEvent(EVENT_ABEDNEUM_HEAD, 217s); + events.ScheduleEvent(EVENT_TRIBUNAL_END, 310s); } void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id) @@ -652,46 +878,89 @@ void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id) switch (id) { // Stop before stairs and ask to start - case 9: + case 14: SetEscortPaused(true); - me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); if (pInstance) + { + me->HandleEmoteCommand(EMOTE_ONESHOT_CHEER); + Talk(SAY_BRANN_EVENT_INTRO_1); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); pInstance->SetData(BRANN_BRONZEBEARD, 2); - + } break; // In front of Console - case 11: + case 16: SetEscortPaused(true); if (pInstance) { pInstance->SetData(BOSS_TRIBUNAL_OF_AGES, IN_PROGRESS); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING); if (GameObject* tribunal = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_TRIBUNAL_CONSOLE))) tribunal->SetGoState(GO_STATE_ACTIVE); } break; - // Before Sjonnir's door - case 27: + //Tribunal end, stand in the middle of the sky room + case 17: + SetEscortPaused(true); + me->SetOrientation(3.91672f); + me->SendMovementFlagUpdate(); + break; + //Run to the skyroom door and then teleport before Sjonnir's door + case 18: SetEscortPaused(true); + SetNextWaypoint(33, false); if (pInstance) { - pInstance->SetData(BRANN_BRONZEBEARD, 5); + pInstance->SetData(BRANN_BRONZEBEARD, 4); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_SJONNIR))) cr->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); me->SetOrientation(3.132660f); DoCast(me, 58506, false); + me->SendMovementFlagUpdate(); + me->SetHomePosition(1199.8f, 667.138f, 196.242f, 3.12967f); + me->Relocate(1199.8f, 667.138f, 196.242f, 3.12967f); } break; - case 28: + // Before Sjonnir's door + case 33: + SetEscortPaused(true); + break; + //Walk to the door, run after opening it + case 34: + SetEscortPaused(true); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING); + me->SendMovementFlagUpdate(); + events.ScheduleEvent(EVENT_DOOR_OPEN, 1500); + me->SetWalk(false); + me->SetSpeed(MOVE_RUN, 1.0f, false); + events.ScheduleEvent(EVENT_RESUME_ESCORT, 3500); + break; + //Brann stops in front of Sjonnir and awaits the start of the battle. + case 36: SetEscortPaused(true); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY_UNARMED); + me->SendMovementFlagUpdate(); + Talk(SAY_BRANN_FRONT_OF_SJONNIR); break; - case 29: + //Brann steps back and uses the Sjonnir console. + case 38: SetEscortPaused(true); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING); if (pInstance) + { if (GameObject* console = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SJONNIR_CONSOLE))) console->SetGoState(GO_STATE_ACTIVE); - + } + break; + //After Sjonnir's death, Brann steps away from the console and talk. + case 39: + SetEscortPaused(true); + break; + //Brann steps back and uses the Sjonnir console. + case 40: + SetEscortPaused(true); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING); break; } } @@ -864,9 +1133,9 @@ class iron_golem_custodian : public CreatureScript }; }; -class spell_hos_dark_matter_aura : public AuraScript +class spell_hos_dark_matter : public AuraScript { - PrepareAuraScript(spell_hos_dark_matter_aura); + PrepareAuraScript(spell_hos_dark_matter); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -881,7 +1150,23 @@ class spell_hos_dark_matter_aura : public AuraScript void Register() override { - OnEffectRemove += AuraEffectRemoveFn(spell_hos_dark_matter_aura::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + OnEffectRemove += AuraEffectRemoveFn(spell_hos_dark_matter::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +class spell_hos_dark_matter_size : public SpellScript +{ + PrepareSpellScript(spell_hos_dark_matter_size); + + void HandleApplyTouch() + { + if (Unit* target = GetHitUnit()) + target->SetObjectScale(0.35f); + } + + void Register() override + { + AfterHit += SpellHitFn(spell_hos_dark_matter_size::HandleApplyTouch); } }; @@ -891,5 +1176,6 @@ void AddSC_brann_bronzebeard() new dark_rune_protectors(); new dark_rune_stormcaller(); new iron_golem_custodian(); - RegisterSpellScript(spell_hos_dark_matter_aura); + RegisterSpellScript(spell_hos_dark_matter); + RegisterSpellScript(spell_hos_dark_matter_size); } diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h index f027fa0146822c..c9188b35e2c425 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h @@ -24,6 +24,23 @@ #define HallsOfStoneScriptName "instance_halls_of_stone" +enum Texts +{ + SAY_BRANN_KILL = 0, + SAY_BRANN_LOW_HEALTH = 1, + SAY_BRANN_DEATH = 2, + SAY_BRANN_PLAYER_DEATH = 3, + SAY_BRANN_ESCORT_START = 4, + SAY_BRANN_FRONT_OF_SJONNIR = 5, + SAY_BRANN_SPAWN_TROGG = 6, + SAY_BRANN_SPAWN_OOZE = 7, + SAY_BRANN_SPAWN_EARTHEN = 8, + SAY_BRANN_EVENT_INTRO_1 = 9, + SAY_BRANN_VICTORY_SJONNIR_1 = 30, + SAY_BRANN_VICTORY_SJONNIR_2 = 31, + SAY_BRANN_ENTRANCE_MEET = 32, +}; + enum Encounter { BOSS_KRYSTALLUS = 0, @@ -61,6 +78,15 @@ enum npcs NPC_ABEDNEUM = 30899, NPC_SJONNIR = 27978, NPC_BRANN = 28070, + + ACTION_START_ESCORT_EVENT = 0, + ACTION_START_TRIBUNAL = 1, + ACTION_TRIBUNAL_WIPE_START = 2, + ACTION_GO_TO_SJONNIR = 3, + ACTION_OPEN_DOOR = 4, + ACTION_START_SJONNIR_FIGHT = 5, + ACTION_SJONNIR_DEAD = 6, + ACTION_SJONNIR_WIPE_START = 7, }; template diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp index 619d5e724e54b5..968d95126168c5 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp @@ -157,6 +157,8 @@ class instance_halls_of_stone : public InstanceMapScript return goMarnakGUID; case GO_ABEDNEUM: return goAbedneumGUID; + case GO_SKY_FLOOR: + return goSkyRoomFloorGUID; case NPC_SJONNIR: return SjonnirGUID; @@ -210,23 +212,91 @@ class instance_halls_of_stone : public InstanceMapScript if (GameObject* tribunalDoor = instance->GetGameObject(goTribunalDoorGUID)) tribunalDoor->SetGoState(GO_STATE_ACTIVE); + if (type == BOSS_TRIBUNAL_OF_AGES && data == SPECIAL) + { + if (GameObject* pSkyRoomFloor = instance->GetGameObject(goSkyRoomFloorGUID)) + pSkyRoomFloor->SetGoState(GO_STATE_READY); + } + if (type == BOSS_TRIBUNAL_OF_AGES && data == DONE) { - if (GameObject* pA = instance->GetGameObject(goAbedneumGUID)) - pA->SetGoState(GO_STATE_ACTIVE); - if (GameObject* pF = instance->GetGameObject(goSkyRoomFloorGUID)) - pF->SetGoState(GO_STATE_ACTIVE); + GameObject* pAbedneum = instance->GetGameObject(goAbedneumGUID); + GameObject* pKaddrak = instance->GetGameObject(goKaddrakGUID); + GameObject* pMarnak = instance->GetGameObject(goMarnakGUID); + + GameObject* pSkyRoomFloor = instance->GetGameObject(goSkyRoomFloorGUID); + bool skyRoomDown = false; + + if (pAbedneum && pKaddrak && pMarnak && pSkyRoomFloor) + { + if (pAbedneum->GetGoState() != GO_STATE_ACTIVE) + { + if (pKaddrak->GetGoState() != GO_STATE_ACTIVE && pMarnak->GetGoState() != GO_STATE_ACTIVE) + { + //Abedneum first talk + pAbedneum->SetGoState(GO_STATE_ACTIVE); + } + else if (pMarnak->GetGoState() == GO_STATE_ACTIVE) + { + //Abedneum second talk + pAbedneum->SetGoState(GO_STATE_ACTIVE); + pMarnak->SetGoState(GO_STATE_READY); + pSkyRoomFloor->SetGoState(GO_STATE_READY); + skyRoomDown = true; + } + else + { + //Marnak talk + if (pKaddrak->GetGoState() == GO_STATE_ACTIVE) + { + pMarnak->SetGoState(GO_STATE_ACTIVE); + pKaddrak->SetGoState(GO_STATE_READY); + pSkyRoomFloor->SetGoState(GO_STATE_READY); + } + } + } + else + { + //Kaddrak talk + if (pKaddrak->GetGoState() != GO_STATE_ACTIVE) + { + pAbedneum->SetGoState(GO_STATE_READY); + pKaddrak->SetGoState(GO_STATE_ACTIVE); + pSkyRoomFloor->SetGoState(GO_STATE_READY); + } + } + + if (!skyRoomDown) + pSkyRoomFloor->SetGoState(GO_STATE_ACTIVE); + } // Make sjonnir attackable - if (Creature* cr = instance->GetCreature(SjonnirGUID)) - cr->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); + if (Creature* cSjonnir = instance->GetCreature(SjonnirGUID)) + cSjonnir->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); } + if (type == BOSS_TRIBUNAL_OF_AGES && data == NOT_STARTED) { - if (GameObject* pA = instance->GetGameObject(goAbedneumGUID)) - pA->SetGoState(GO_STATE_READY); - if (GameObject* pF = instance->GetGameObject(goSkyRoomFloorGUID)) - pF->SetGoState(GO_STATE_READY); + if (GameObject* pAbedneum = instance->GetGameObject(goAbedneumGUID)) + pAbedneum->SetGoState(GO_STATE_READY); + if (GameObject* pKaddrak = instance->GetGameObject(goKaddrakGUID)) + pKaddrak->SetGoState(GO_STATE_READY); + if (GameObject* pMarnak = instance->GetGameObject(goMarnakGUID)) + pMarnak->SetGoState(GO_STATE_READY); + if (GameObject* pSkyRoomFloor = instance->GetGameObject(goSkyRoomFloorGUID)) + pSkyRoomFloor->SetGoState(GO_STATE_READY); + } + + if (type == BOSS_TRIBUNAL_OF_AGES && data == FAIL) + { + if (GameObject* pAbedneum = instance->GetGameObject(goAbedneumGUID)) + pAbedneum->SetGoState(GO_STATE_ACTIVE); + if (GameObject* pKaddrak = instance->GetGameObject(goKaddrakGUID)) + pKaddrak->SetGoState(GO_STATE_ACTIVE); + if (GameObject* pMarnak = instance->GetGameObject(goMarnakGUID)) + pMarnak->SetGoState(GO_STATE_ACTIVE); + if (GameObject* pSkyRoomFloor = instance->GetGameObject(goSkyRoomFloorGUID)) + pSkyRoomFloor->SetGoState(GO_STATE_READY); } if (type == DATA_BRANN_ACHIEVEMENT) From b6a4ececebb154853948a3e6ce9c4934132595ca Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 3 Dec 2024 19:57:26 +0000 Subject: [PATCH 56/66] chore(DB): import pending files Referenced commit(s): 6f824ee856b2b30c40abfe36d7d5da20804f0a9e --- .../rev_1729968739299017200.sql => db_world/2024_12_03_00.sql} | 1 + .../rev_1730814217046191100.sql => db_world/2024_12_03_01.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/rev_1729968739299017200.sql => db_world/2024_12_03_00.sql} (98%) rename data/sql/updates/{pending_db_world/rev_1730814217046191100.sql => db_world/2024_12_03_01.sql} (95%) diff --git a/data/sql/updates/pending_db_world/rev_1729968739299017200.sql b/data/sql/updates/db_world/2024_12_03_00.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1729968739299017200.sql rename to data/sql/updates/db_world/2024_12_03_00.sql index 1f5a9398a28414..bf48e53da9563e 100644 --- a/data/sql/updates/pending_db_world/rev_1729968739299017200.sql +++ b/data/sql/updates/db_world/2024_12_03_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_02_05 -> 2024_12_03_00 DELETE FROM `spell_script_names` WHERE `spell_id`=51000; INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (51000, 'spell_hos_dark_matter_size'); diff --git a/data/sql/updates/pending_db_world/rev_1730814217046191100.sql b/data/sql/updates/db_world/2024_12_03_01.sql similarity index 95% rename from data/sql/updates/pending_db_world/rev_1730814217046191100.sql rename to data/sql/updates/db_world/2024_12_03_01.sql index bf98271669ea43..5cac7db01e918b 100644 --- a/data/sql/updates/pending_db_world/rev_1730814217046191100.sql +++ b/data/sql/updates/db_world/2024_12_03_01.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_03_00 -> 2024_12_03_01 -- Marking a tower for Zeth'Gor Must Burn! DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 17) AND (`SourceGroup` = 0) AND (`SourceEntry` = 36325); INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES From 97937d1724668b4c3d5b0779ff42a23886cd9f01 Mon Sep 17 00:00:00 2001 From: "Riley S." Date: Tue, 3 Dec 2024 15:02:59 -0500 Subject: [PATCH 57/66] request(git): Update .gitignore (#20748) Update .gitignore Ignores .vs (Visual Studio) and /out/* (Default build directory when unspecified (Visual Studio).) --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 92e08b0b14ad4e..8d6ed8f648bd59 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,9 @@ !.gitkeep +# default build directory if not specified by CMAKE configuration +/out/* + # #Generic # @@ -63,6 +66,7 @@ nbproject/ .idea cmake-build-*/* coverage-report/ +.vs # # Eclipse From ca009110c78fbcbb971a3eca7a5c7000a5c45b28 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Wed, 4 Dec 2024 00:07:26 +0100 Subject: [PATCH 58/66] fix(DB/SAI): Swiftmane Waypoint ReactState (#20833) fix(DB/SAI)SwiftmaneWaypointReactState --- .../pending_db_world/rev_1733253947081144253.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1733253947081144253.sql diff --git a/data/sql/updates/pending_db_world/rev_1733253947081144253.sql b/data/sql/updates/pending_db_world/rev_1733253947081144253.sql new file mode 100644 index 00000000000000..693a39d9a44856 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1733253947081144253.sql @@ -0,0 +1,10 @@ +-- +-- delete unused waypoint_data for swiftmane +DELETE FROM `waypoint_data` WHERE `id` = 204330; +-- set idle movement +UPDATE `creature_template` SET `MovementType` = 0 WHERE (`entry` = 5831); +UPDATE `creature` SET `MovementType` = 0 WHERE `guid` = 20433 AND `id1` = 5831; +-- defensive reactstate +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 5831) AND (`source_type` = 0) AND (`id` = 1); +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 +(5831, 0, 1, 0, 25, 0, 100, 512, 0, 0, 0, 0, 0, 0, 53, 1, 5831, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Swiftmane - On Reset - Start Patrol Path 5831'); From 7f0a178c4ef86c2eb710c76b59b4385f83b82b98 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 3 Dec 2024 23:08:20 +0000 Subject: [PATCH 59/66] chore(DB): import pending files Referenced commit(s): ca009110c78fbcbb971a3eca7a5c7000a5c45b28 --- .../rev_1733253947081144253.sql => db_world/2024_12_03_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1733253947081144253.sql => db_world/2024_12_03_02.sql} (95%) diff --git a/data/sql/updates/pending_db_world/rev_1733253947081144253.sql b/data/sql/updates/db_world/2024_12_03_02.sql similarity index 95% rename from data/sql/updates/pending_db_world/rev_1733253947081144253.sql rename to data/sql/updates/db_world/2024_12_03_02.sql index 693a39d9a44856..957607c5251c34 100644 --- a/data/sql/updates/pending_db_world/rev_1733253947081144253.sql +++ b/data/sql/updates/db_world/2024_12_03_02.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_03_01 -> 2024_12_03_02 -- -- delete unused waypoint_data for swiftmane DELETE FROM `waypoint_data` WHERE `id` = 204330; From 63bf4058fc306b4602e3b2549323d57081135fd2 Mon Sep 17 00:00:00 2001 From: sudlud Date: Wed, 4 Dec 2024 07:53:48 +0100 Subject: [PATCH 60/66] fix(CI): make tools build able to run on PRs again (#20831) --- .github/workflows/tools_build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/tools_build.yml b/.github/workflows/tools_build.yml index 91dd7c4dccdd3b..875a99417c0737 100644 --- a/.github/workflows/tools_build.yml +++ b/.github/workflows/tools_build.yml @@ -4,6 +4,11 @@ on: branches: - 'master' pull_request: + types: + - labeled + - opened + - reopened + - synchronize concurrency: group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) From 47580c0fab3d704ca5b2e4618984712e52e38950 Mon Sep 17 00:00:00 2001 From: sudlud Date: Wed, 4 Dec 2024 07:54:00 +0100 Subject: [PATCH 61/66] =?UTF-8?q?fix(CI/nopch-modules):=20bump=20to=20ubun?= =?UTF-8?q?tu-24.04/clang-18,=20align=20with=20nopc=E2=80=A6=20(#20832)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/core_modules_build.yml | 25 +++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/.github/workflows/core_modules_build.yml b/.github/workflows/core_modules_build.yml index 090ceae92092f7..a0381601dc41b9 100644 --- a/.github/workflows/core_modules_build.yml +++ b/.github/workflows/core_modules_build.yml @@ -4,7 +4,11 @@ on: branches: - 'master' pull_request: - types: ['labeled', 'opened', 'synchronize', 'reopened'] + types: + - labeled + - opened + - reopened + - synchronize concurrency: group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) @@ -12,10 +16,17 @@ concurrency: jobs: build-modules: - runs-on: ubuntu-latest - name: modules build on latest ubuntu - if: | - github.repository == 'azerothcore/azerothcore-wotlk' + strategy: + fail-fast: true + matrix: + include: + - os: ubuntu-24.04 + compiler: + CC: clang-18 + CXX: clang++-18 + runs-on: ${{ matrix.os }} + name: ${{ matrix.os }}-${{ matrix.compiler.CC }}-nopch-modules + if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft && ( github.ref_name == 'master' @@ -33,7 +44,7 @@ jobs: run: bash -x ./apps/ci/ci-install-modules.sh - uses: ./.github/actions/linux-build with: - CC: clang-15 - CXX: clang++-15 + CC: ${{ matrix.compiler.CC }} + CXX: ${{ matrix.compiler.CXX }} modules: true pch: false From 3f5ac98bdb72a3f496a62d0de5361b49c64efe49 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Wed, 4 Dec 2024 20:14:39 +0100 Subject: [PATCH 62/66] fix(Scripts/Karazhan): Nightbane Speed (#20838) fix(Scripts/Karazhan)NightbaneSpeed revert speed to before 7e0dff58392f11ea969a41f4e780292dd63f80d0 --- src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp index 000d7088d721dc..1dc1995f4fb831 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp @@ -124,7 +124,7 @@ struct boss_nightbane : public BossAI _triggerCountTakeOffWhileFlying = 0; _airPhasesCompleted = 0; - me->SetSpeed(MOVE_RUN, me->GetCreatureTemplate()->speed_run); + me->SetSpeed(MOVE_RUN, 2.0f); me->SetCanFly(true); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetReactState(REACT_PASSIVE); @@ -300,7 +300,6 @@ struct boss_nightbane : public BossAI { me->ClearUnitState(UNIT_STATE_IGNORE_PATHFINDING); me->GetMotionMaster()->MovePoint(POINT_INTRO_LAND, introLandPos); - me->SetSpeed(MOVE_RUN, 2.0f); }).Schedule(3s, [this](TaskContext /*context*/) { me->SetDisableGravity(false); From 0d0e3a6ce1d7d14cd4719186593adc39cc1ca8f4 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Thu, 5 Dec 2024 05:17:18 -0300 Subject: [PATCH 63/66] fix(Scripts/ZulAman): Zul'jin gate should be unlocked instead auto open (#20841) --- .../scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp | 7 ++++++- src/server/scripts/EasternKingdoms/ZulAman/zulaman.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index bfc5ddf2f60e9f..f86186b4031c7e 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -53,7 +53,6 @@ DoorData const doorData[] = { GO_DOOR_HALAZZI, DATA_HALAZZI, DOOR_TYPE_PASSAGE }, { GO_LYNX_TEMPLE_ENTRANCE, DATA_HALAZZI, DOOR_TYPE_ROOM }, { GO_DOOR_AKILZON, DATA_AKILZON, DOOR_TYPE_ROOM }, - { GO_GATE_ZULJIN, DATA_HEXLORD, DOOR_TYPE_PASSAGE }, { 0, 0, DOOR_TYPE_ROOM } // END }; @@ -71,6 +70,7 @@ ObjectData const gameObjectData[] = { GO_STRANGE_GONG, DATA_STRANGE_GONG }, { GO_MASSIVE_GATE, DATA_MASSIVE_GATE }, { GO_GATE_HEXLORD, DATA_HEXLORD_GATE }, + { GO_GATE_ZULJIN, DATA_ZULJIN_GATE }, { 0, 0 } }; @@ -290,6 +290,11 @@ class instance_zulaman : public InstanceMapScript HandleGameObject(ObjectGuid::Empty, false, GetGameObject(DATA_HEXLORD_GATE)); else if (state == NOT_STARTED) CheckInstanceStatus(); + else if (state == DONE) + { + if (GameObject* zuljinGate = GetGameObject(DATA_ZULJIN_GATE)) + zuljinGate->RemoveGameObjectFlag(GO_FLAG_LOCKED); + } break; } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h index f0f86ad0b0fd72..8ed6eb1310893f 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h @@ -41,6 +41,7 @@ enum DataTypes DATA_HARRISON_JONES = 13, TYPE_AKILZON_GAUNTLET = 14, DATA_LOOKOUT = 15, + DATA_ZULJIN_GATE = 16 }; enum CreatureIds From 00c0e202ef3b036bc7ffb67549105418e485b0c0 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Thu, 5 Dec 2024 09:46:07 -0300 Subject: [PATCH 64/66] fix(Scripts/ZulAman): Akil'zon storm damage should multiply per tick (#20842) --- .../rev_1733366049086007200.sql | 4 ++++ .../EasternKingdoms/ZulAman/boss_akilzon.cpp | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1733366049086007200.sql diff --git a/data/sql/updates/pending_db_world/rev_1733366049086007200.sql b/data/sql/updates/pending_db_world/rev_1733366049086007200.sql new file mode 100644 index 00000000000000..b51b0598bb67cb --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1733366049086007200.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id` = 43657; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(43657, 'spell_electrical_storm_proc'); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp index 65c6112b0b455b..7a8fc0ac251494 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp @@ -20,6 +20,8 @@ #include "GridNotifiers.h" #include "GridNotifiersImpl.h" #include "ScriptedCreature.h" +#include "SpellAuras.h" +#include "SpellAuraEffects.h" #include "SpellScript.h" #include "SpellScriptLoader.h" #include "Weather.h" @@ -321,9 +323,30 @@ class spell_electrial_storm : public AuraScript } }; +// 43657 - Electrical Storm +class spell_electrical_storm_proc : public SpellScript +{ + PrepareSpellScript(spell_electrical_storm_proc); + + void HandleDamageCalc(SpellEffIndex /*effIndex*/) + { + if (Aura* aura = GetCaster()->GetAura(SPELL_ELECTRICAL_STORM)) + { + uint8 multiplier = aura->GetEffect(EFFECT_1)->GetTickNumber(); + SetHitDamage(GetHitDamage() * multiplier); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_electrical_storm_proc::HandleDamageCalc, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + void AddSC_boss_akilzon() { RegisterZulAmanCreatureAI(boss_akilzon); RegisterZulAmanCreatureAI(npc_akilzon_eagle); RegisterSpellScript(spell_electrial_storm); + RegisterSpellScript(spell_electrical_storm_proc); } From 70bc19d00085f350a8cf7b0521df9fed1a63ce5a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 5 Dec 2024 12:47:09 +0000 Subject: [PATCH 65/66] chore(DB): import pending files Referenced commit(s): 00c0e202ef3b036bc7ffb67549105418e485b0c0 --- .../rev_1733366049086007200.sql => db_world/2024_12_05_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1733366049086007200.sql => db_world/2024_12_05_00.sql} (79%) diff --git a/data/sql/updates/pending_db_world/rev_1733366049086007200.sql b/data/sql/updates/db_world/2024_12_05_00.sql similarity index 79% rename from data/sql/updates/pending_db_world/rev_1733366049086007200.sql rename to data/sql/updates/db_world/2024_12_05_00.sql index b51b0598bb67cb..323a7ac3d2edc6 100644 --- a/data/sql/updates/pending_db_world/rev_1733366049086007200.sql +++ b/data/sql/updates/db_world/2024_12_05_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_12_03_02 -> 2024_12_05_00 -- DELETE FROM `spell_script_names` WHERE `spell_id` = 43657; INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES From 00eeb0051a2ab8a28730d1967c593b2a3897e525 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Fri, 6 Dec 2024 12:19:03 +0100 Subject: [PATCH 66/66] fix(Core/SpellAuraEffects): use caster's level to scale amount to break crowd control auras (#20153) --- .../game/Spells/Auras/SpellAuraEffects.cpp | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 8297d7ca5adaf6..033891ee342483 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -494,28 +494,33 @@ int32 AuraEffect::CalculateAmount(Unit* caster) case SPELL_AURA_MOD_STUN: case SPELL_AURA_MOD_ROOT: case SPELL_AURA_TRANSFORM: + { m_canBeRecalculated = false; if (!m_spellInfo->ProcFlags || m_spellInfo->HasAura(SPELL_AURA_PROC_TRIGGER_SPELL)) // xinef: skip auras with proctriggerspell, they must have procflags... break; - amount = int32(GetBase()->GetUnitOwner()->CountPctFromMaxHealth(10)); - if (caster) + if (!caster) + break; + // not impacted by gear + // not impacted by target level + // not impacted by rank + // asumption - depends on caster level + amount = sObjectMgr->GetCreatureBaseStats(caster->GetLevel(), Classes::CLASS_WARRIOR)->BaseHealth[EXPANSION_WRATH_OF_THE_LICH_KING] / 4.75f; + // Glyphs increasing damage cap + Unit::AuraEffectList const& overrideClassScripts = caster->GetAuraEffectsByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS); + for (Unit::AuraEffectList::const_iterator itr = overrideClassScripts.begin(); itr != overrideClassScripts.end(); ++itr) { - // Glyphs increasing damage cap - Unit::AuraEffectList const& overrideClassScripts = caster->GetAuraEffectsByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS); - for (Unit::AuraEffectList::const_iterator itr = overrideClassScripts.begin(); itr != overrideClassScripts.end(); ++itr) + if ((*itr)->IsAffectedOnSpell(m_spellInfo)) { - if ((*itr)->IsAffectedOnSpell(m_spellInfo)) + // Glyph of Fear, Glyph of Frost nova and similar auras + if ((*itr)->GetMiscValue() == 7801) { - // Glyph of Fear, Glyph of Frost nova and similar auras - if ((*itr)->GetMiscValue() == 7801) - { - AddPct(amount, (*itr)->GetAmount()); - break; - } + AddPct(amount, (*itr)->GetAmount()); + break; } } } break; + } case SPELL_AURA_SCHOOL_ABSORB: case SPELL_AURA_MANA_SHIELD: m_canBeRecalculated = false;