From 5d229d47f8dec5d8229e7daf926c856a4900b770 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Mon, 25 Nov 2024 10:33:11 -0300 Subject: [PATCH 01/81] fix(DB/SAI): Fix Grimtotem Raider using net under crowd control effects (#20733) --- data/sql/updates/pending_db_world/rev_1732503730550901400.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1732503730550901400.sql diff --git a/data/sql/updates/pending_db_world/rev_1732503730550901400.sql b/data/sql/updates/pending_db_world/rev_1732503730550901400.sql new file mode 100644 index 000000000..1b7dc1c18 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1732503730550901400.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 7725) AND (`source_type` = 0) AND (`id` IN (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 +(7725, 0, 1, 0, 0, 0, 100, 512, 2000, 5000, 5000, 8000, 0, 0, 11, 6533, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Grimtotem Raider - In Combat - Cast \'Net\''); From 1d69ff706e06cf479545bedcd6ad3ce887abf4c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 25 Nov 2024 13:34:04 +0000 Subject: [PATCH 02/81] chore(DB): import pending files Referenced commit(s): 5d229d47f8dec5d8229e7daf926c856a4900b770 --- .../rev_1732503730550901400.sql => db_world/2024_11_25_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1732503730550901400.sql => db_world/2024_11_25_00.sql} (94%) diff --git a/data/sql/updates/pending_db_world/rev_1732503730550901400.sql b/data/sql/updates/db_world/2024_11_25_00.sql similarity index 94% rename from data/sql/updates/pending_db_world/rev_1732503730550901400.sql rename to data/sql/updates/db_world/2024_11_25_00.sql index 1b7dc1c18..ca5a30873 100644 --- a/data/sql/updates/pending_db_world/rev_1732503730550901400.sql +++ b/data/sql/updates/db_world/2024_11_25_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_24_07 -> 2024_11_25_00 -- DELETE FROM `smart_scripts` WHERE (`entryorguid` = 7725) AND (`source_type` = 0) AND (`id` IN (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 From 96ec2dc626f05ce45de6f89bc3ae0c20c6c6d1d9 Mon Sep 17 00:00:00 2001 From: FlyingArowana Date: Mon, 25 Nov 2024 13:35:23 +0000 Subject: [PATCH 03/81] fix(DB/Creature): Taunt Immunity to Boss: "Hex Lord Malacrass" (Zul'aman) (#20737) --- data/sql/updates/pending_db_world/rev_1732540722483734200.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1732540722483734200.sql diff --git a/data/sql/updates/pending_db_world/rev_1732540722483734200.sql b/data/sql/updates/pending_db_world/rev_1732540722483734200.sql new file mode 100644 index 000000000..92ebb8a4c --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1732540722483734200.sql @@ -0,0 +1,3 @@ +-- +-- Adds "Taunt Immunity" to Boss "Hex Lord Malacrass" (Zul'aman) +UPDATE `creature_template` SET `flags_extra` = `flags_extra` | 256 WHERE `entry` = 24239; From 42879621e4365eb730238515ecd795f6ce510074 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 25 Nov 2024 13:36:22 +0000 Subject: [PATCH 04/81] chore(DB): import pending files Referenced commit(s): 96ec2dc626f05ce45de6f89bc3ae0c20c6c6d1d9 --- .../rev_1732540722483734200.sql => db_world/2024_11_25_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1732540722483734200.sql => db_world/2024_11_25_01.sql} (78%) diff --git a/data/sql/updates/pending_db_world/rev_1732540722483734200.sql b/data/sql/updates/db_world/2024_11_25_01.sql similarity index 78% rename from data/sql/updates/pending_db_world/rev_1732540722483734200.sql rename to data/sql/updates/db_world/2024_11_25_01.sql index 92ebb8a4c..9e0a607d0 100644 --- a/data/sql/updates/pending_db_world/rev_1732540722483734200.sql +++ b/data/sql/updates/db_world/2024_11_25_01.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_25_00 -> 2024_11_25_01 -- -- Adds "Taunt Immunity" to Boss "Hex Lord Malacrass" (Zul'aman) UPDATE `creature_template` SET `flags_extra` = `flags_extra` | 256 WHERE `entry` = 24239; From 3d5d300f766dd9ac67df1eb3b71e1104b8933571 Mon Sep 17 00:00:00 2001 From: FlyingArowana Date: Tue, 26 Nov 2024 10:49:19 +0000 Subject: [PATCH 05/81] fix(DB/Creature) - Adds "Disarm" Immunity to Boss: Nalorakk [Zul'Aman] (#20746) * File created * Added Disarm immunity * The mighty newline --- data/sql/updates/pending_db_world/rev_1732609621113544900.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1732609621113544900.sql diff --git a/data/sql/updates/pending_db_world/rev_1732609621113544900.sql b/data/sql/updates/pending_db_world/rev_1732609621113544900.sql new file mode 100644 index 000000000..7fd5a8481 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1732609621113544900.sql @@ -0,0 +1,3 @@ +-- +-- Adds "Disarm" immunity to Creautre (Boss) "Nalorakk" - [Zul'Aman] +UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask` | 4 WHERE `entry` = 23576; From e5b83b29deb3b530329a56693f8a1cdfa4bf2a1b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 26 Nov 2024 10:50:13 +0000 Subject: [PATCH 06/81] chore(DB): import pending files Referenced commit(s): 3d5d300f766dd9ac67df1eb3b71e1104b8933571 --- .../rev_1732609621113544900.sql => db_world/2024_11_26_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1732609621113544900.sql => db_world/2024_11_26_00.sql} (80%) diff --git a/data/sql/updates/pending_db_world/rev_1732609621113544900.sql b/data/sql/updates/db_world/2024_11_26_00.sql similarity index 80% rename from data/sql/updates/pending_db_world/rev_1732609621113544900.sql rename to data/sql/updates/db_world/2024_11_26_00.sql index 7fd5a8481..7b77674e5 100644 --- a/data/sql/updates/pending_db_world/rev_1732609621113544900.sql +++ b/data/sql/updates/db_world/2024_11_26_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_25_01 -> 2024_11_26_00 -- -- Adds "Disarm" immunity to Creautre (Boss) "Nalorakk" - [Zul'Aman] UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask` | 4 WHERE `entry` = 23576; From 2649ca2d652b6ab7e186667d8988db6a90e87c46 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Tue, 26 Nov 2024 12:17:02 -0300 Subject: [PATCH 07/81] feat(Core/Spells): Allow modifying MiscValues during cast (#20731) --- src/server/game/Spells/Spell.cpp | 13 +++++++++++++ src/server/game/Spells/Spell.h | 1 + src/server/game/Spells/SpellDefines.h | 5 ++++- src/server/game/Spells/SpellEffects.cpp | 4 ++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 8e8bbf6e3..932704c01 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -556,7 +556,11 @@ void SpellCastTargets::OutDebug() const SpellValue::SpellValue(SpellInfo const* proto) { for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i) + { EffectBasePoints[i] = proto->Effects[i].BasePoints; + MiscVal[i] = 0; + } + MaxAffectedTargets = proto->MaxAffectedTargets; RadiusMod = 1.0f; AuraStackAmount = 1; @@ -8458,6 +8462,15 @@ void Spell::SetSpellValue(SpellValueMod mod, int32 value) case SPELLVALUE_FORCED_CRIT_RESULT: m_spellValue->ForcedCritResult = (bool)value; break; + case SPELLVALUE_MISCVALUE0: + m_spellValue->MiscVal[0] = value; + break; + case SPELLVALUE_MISCVALUE1: + m_spellValue->MiscVal[1] = value; + break; + case SPELLVALUE_MISCVALUE2: + m_spellValue->MiscVal[2] = value; + break; } } diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 45ae57194..4d44af2e4 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -218,6 +218,7 @@ struct SpellValue uint8 AuraStackAmount; int32 AuraDuration; bool ForcedCritResult; + uint32 MiscVal[MAX_SPELL_EFFECTS]; }; enum SpellState diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index 4da855467..22caee957 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -117,7 +117,10 @@ enum SpellValueMod SPELLVALUE_MAX_TARGETS, SPELLVALUE_AURA_STACK, SPELLVALUE_AURA_DURATION, - SPELLVALUE_FORCED_CRIT_RESULT + SPELLVALUE_FORCED_CRIT_RESULT, + SPELLVALUE_MISCVALUE0, + SPELLVALUE_MISCVALUE1, + SPELLVALUE_MISCVALUE2, }; enum SpellFacingFlags diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index ace8a1b51..4e8e9e507 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2332,6 +2332,10 @@ void Spell::EffectSummonType(SpellEffIndex effIndex) return; uint32 entry = m_spellInfo->Effects[effIndex].MiscValue; + + if (m_spellValue->MiscVal[effIndex]) + entry = m_spellValue->MiscVal[effIndex]; + if (!entry) return; From 7fc938dfcb985652b0113aeb37e465be986449cf Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Tue, 26 Nov 2024 16:00:46 -0300 Subject: [PATCH 08/81] =?UTF-8?q?fix(DB/Spells):=20Malacrass=20Drain=20Pow?= =?UTF-8?q?er=20should=20stack=20from=20different=20cas=E2=80=A6=20(#20749?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(DB/Spells): Malacrass Drain Power should stack from different casters --- data/sql/updates/pending_db_world/mala.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/mala.sql diff --git a/data/sql/updates/pending_db_world/mala.sql b/data/sql/updates/pending_db_world/mala.sql new file mode 100644 index 000000000..c35d5c0b0 --- /dev/null +++ b/data/sql/updates/pending_db_world/mala.sql @@ -0,0 +1,2 @@ +DELETE FROM `spell_custom_attr` WHERE `spell_id`=44132; +INSERT INTO `spell_custom_attr` (`spell_id`, `attributes`) VALUES (44132, 4194304); From 6ab70f0926079b3c64d95666c6192c4d88019197 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 26 Nov 2024 19:01:50 +0000 Subject: [PATCH 09/81] chore(DB): import pending files Referenced commit(s): 7fc938dfcb985652b0113aeb37e465be986449cf --- .../{pending_db_world/mala.sql => db_world/2024_11_26_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/mala.sql => db_world/2024_11_26_01.sql} (76%) diff --git a/data/sql/updates/pending_db_world/mala.sql b/data/sql/updates/db_world/2024_11_26_01.sql similarity index 76% rename from data/sql/updates/pending_db_world/mala.sql rename to data/sql/updates/db_world/2024_11_26_01.sql index c35d5c0b0..b7d416fcd 100644 --- a/data/sql/updates/pending_db_world/mala.sql +++ b/data/sql/updates/db_world/2024_11_26_01.sql @@ -1,2 +1,3 @@ +-- DB update 2024_11_26_00 -> 2024_11_26_01 DELETE FROM `spell_custom_attr` WHERE `spell_id`=44132; INSERT INTO `spell_custom_attr` (`spell_id`, `attributes`) VALUES (44132, 4194304); From 1de7a9505451a5ff10e6193c019d8a715050b2ca Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Tue, 26 Nov 2024 20:02:51 +0100 Subject: [PATCH 10/81] Fix(DB/Spawn/WP) Scarlet Captains. (#20720) Create Scarlet_Captains.sql Fix for Scarlet Captains in DK Starting Area. --- .../pending_db_world/Scarlet_Captains.sql | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 data/sql/updates/pending_db_world/Scarlet_Captains.sql diff --git a/data/sql/updates/pending_db_world/Scarlet_Captains.sql b/data/sql/updates/pending_db_world/Scarlet_Captains.sql new file mode 100644 index 000000000..29b2894c9 --- /dev/null +++ b/data/sql/updates/pending_db_world/Scarlet_Captains.sql @@ -0,0 +1,137 @@ + +-- Remove Wrong Guids + +DELETE FROM `creature` WHERE (`id1` = 28611) AND (`guid` IN (129294, 129297, 129298, 129300, 129303)); + + +-- Add Waypoints + +DELETE FROM `waypoint_data` WHERE `id` IN (12929200, 12929300, 12929500, 12929600, 12929900, 12930100, 12930200, 12930400, 12930500); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(12930500, 1, 2374.73, -5855.05, 105.204, NULL, 0, 0, 0, 100, 0), +(12930500, 2, 2359.39, -5856.19, 103.536, NULL, 0, 0, 0, 100, 0), +(12930500, 3, 2343.31, -5854.01, 101.126, NULL, 0, 0, 0, 100, 0), +(12930500, 4, 2332.27, -5850.46, 100.934, NULL, 0, 0, 0, 100, 0), +(12930500, 5, 2316.51, -5848.56, 100.935, NULL, 0, 0, 0, 100, 0), +(12930500, 6, 2332.27, -5850.46, 100.934, NULL, 0, 0, 0, 100, 0), +(12930500, 7, 2343.31, -5854.01, 101.126, NULL, 0, 0, 0, 100, 0), +(12930500, 8, 2359.39, -5856.19, 103.536, NULL, 0, 0, 0, 100, 0), +(12930500, 9, 2374.73, -5855.05, 105.204, NULL, 0, 0, 0, 100, 0), +(12930500, 10, 2395.31, -5848.83, 107.756, NULL, 0, 0, 0, 100, 0), +(12930400, 1, 2412.42, -5854.43, 106.352, NULL, 0, 0, 0, 100, 0), +(12930400, 2, 2402.93, -5842.97, 109.672, NULL, 0, 0, 0, 100, 0), +(12930400, 3, 2412.42, -5854.43, 106.352, NULL, 0, 0, 0, 100, 0), +(12930400, 4, 2422.19, -5860.64, 105.745, NULL, 0, 0, 0, 100, 0), +(12930100, 1, 2282.34, -5879.39, 100.511, NULL, 0, 0, 0, 100, 0), +(12930100, 2, 2298.16, -5877.04, 100.659, NULL, 0, 0, 0, 100, 0), +(12930100, 3, 2332.68, -5870.94, 101.275, NULL, 0, 0, 0, 100, 0), +(12930100, 4, 2343.74, -5873.16, 103.259, NULL, 0, 0, 0, 100, 0), +(12930100, 5, 2359.56, -5876.34, 104.555, NULL, 0, 0, 0, 100, 0), +(12930100, 6, 2373.53, -5899.89, 107.302, NULL, 0, 0, 0, 100, 0), +(12930100, 7, 2383.58, -5923.9, 110.248, NULL, 0, 0, 0, 100, 0), +(12930100, 8, 2373.53, -5899.89, 107.302, NULL, 0, 0, 0, 100, 0), +(12930100, 9, 2359.56, -5876.34, 104.555, NULL, 0, 0, 0, 100, 0), +(12930100, 10, 2343.74, -5873.16, 103.259, NULL, 0, 0, 0, 100, 0), +(12930100, 11, 2332.68, -5870.94, 101.275, NULL, 0, 0, 0, 100, 0), +(12930100, 12, 2298.16, -5877.04, 100.659, NULL, 0, 0, 0, 100, 0), +(12930100, 13, 2282.34, -5879.39, 100.511, NULL, 0, 0, 0, 100, 0), +(12930100, 14, 2261.25, -5882.46, 101.871, NULL, 0, 0, 0, 100, 0), +(12929500, 1, 2270.25, -5814.23, 100.935, NULL, 0, 0, 0, 100, 0), +(12929500, 2, 2258.81, -5827.16, 101.01, NULL, 0, 0, 0, 100, 0), +(12929500, 3, 2263.75, -5846.31, 100.946, NULL, 0, 0, 0, 100, 0), +(12929500, 4, 2277.02, -5851.78, 100.956, NULL, 0, 0, 0, 100, 0), +(12929500, 5, 2287.03, -5859.74, 100.932, NULL, 0, 0, 0, 100, 0), +(12929500, 6, 2301.7, -5860.49, 100.934, NULL, 0, 0, 0, 100, 0), +(12929500, 7, 2304.83, -5844.42, 100.934, NULL, 0, 0, 0, 100, 0), +(12929500, 8, 2307.86, -5827.64, 101.103, NULL, 0, 0, 0, 100, 0), +(12929500, 9, 2291.21, -5815.83, 101.052, NULL, 0, 0, 0, 100, 0), +(12929200, 1, 2192.48, -5751.67, 102.118, NULL, 0, 0, 0, 100, 0), +(12929200, 2, 2202.8, -5748.1, 102.467, NULL, 0, 0, 0, 100, 0), +(12929200, 3, 2211.03, -5751.19, 102.489, NULL, 0, 0, 0, 100, 0), +(12929200, 4, 2226.86, -5757.15, 101.971, NULL, 0, 0, 0, 100, 0), +(12929200, 5, 2222.44, -5771.2, 101.682, NULL, 0, 0, 0, 100, 0), +(12929200, 6, 2212.7, -5784.32, 101.645, NULL, 0, 0, 0, 100, 0), +(12929200, 7, 2196.78, -5777.67, 101.373, NULL, 0, 0, 0, 100, 0), +(12929200, 8, 2181.33, -5770.79, 101.357, NULL, 0, 0, 0, 100, 0), +(12929200, 9, 2178.22, -5758.94, 101.309, NULL, 0, 0, 0, 100, 0), +(12929600, 1, 2071.02, -5751.46, 98.8196, NULL, 0, 0, 0, 100, 0), +(12929600, 2, 2068.28, -5740.5, 99.1555, NULL, 0, 0, 0, 100, 0), +(12929600, 3, 2078.86, -5724.54, 101.533, NULL, 0, 0, 0, 100, 0), +(12929600, 4, 2094.46, -5726.09, 100.311, NULL, 0, 0, 0, 100, 0), +(12929600, 5, 2105.5, -5731.14, 100.3, NULL, 0, 0, 0, 100, 0), +(12929600, 6, 2114.52, -5751.33, 99.0498, NULL, 0, 0, 0, 100, 0), +(12929600, 7, 2115.35, -5761.94, 98.3894, NULL, 0, 0, 0, 100, 0), +(12929600, 8, 2116.15, -5772.22, 98.1393, NULL, 0, 0, 0, 100, 0), +(12929600, 9, 2103.76, -5770.65, 98.6399, NULL, 0, 0, 0, 100, 0), +(12929600, 10, 2089.87, -5770.89, 99.1377, NULL, 0, 0, 0, 100, 0), +(12930200, 1, 2135.82, -5800.13, 99.739, NULL, 0, 0, 0, 100, 0), +(12930200, 2, 2143.67, -5816.31, 100.827, NULL, 0, 0, 0, 100, 0), +(12930200, 3, 2143.72, -5829.03, 101.223, NULL, 0, 0, 0, 100, 0), +(12930200, 4, 2142.77, -5854.49, 101.349, NULL, 0, 0, 0, 100, 0), +(12930200, 5, 2161.43, -5866.23, 101.331, NULL, 0, 0, 0, 100, 0), +(12930200, 6, 2181.55, -5871.43, 101.271, NULL, 0, 0, 0, 100, 0), +(12930200, 7, 2161.43, -5866.23, 101.331, NULL, 0, 0, 0, 100, 0), +(12930200, 8, 2142.77, -5854.49, 101.349, NULL, 0, 0, 0, 100, 0), +(12930200, 9, 2143.72, -5829.03, 101.223, NULL, 0, 0, 0, 100, 0), +(12930200, 10, 2143.67, -5816.31, 100.827, NULL, 0, 0, 0, 100, 0), +(12930200, 11, 2135.82, -5800.13, 99.739, NULL, 0, 0, 0, 100, 0), +(12930200, 12, 2129.66, -5787.29, 98.852, NULL, 0, 0, 0, 100, 0), +(12929900, 1, 2146.6, -5758.24, 99.7128, NULL, 0, 0, 0, 100, 0), +(12929900, 2, 2146.64, -5747.25, 99.9351, NULL, 0, 0, 0, 100, 0), +(12929900, 3, 2146.47, -5736.57, 100.398, NULL, 0, 0, 0, 100, 0), +(12929900, 4, 2141.57, -5729.49, 100.39, NULL, 0, 0, 0, 100, 0), +(12929900, 5, 2136.73, -5722.5, 100.563, NULL, 0, 0, 0, 100, 0), +(12929900, 6, 2128.72, -5710.92, 100.776, NULL, 0, 0, 0, 100, 0), +(12929900, 7, 2136.73, -5722.5, 100.563, NULL, 0, 0, 0, 100, 0), +(12929900, 8, 2141.57, -5729.49, 100.39, NULL, 0, 0, 0, 100, 0), +(12929900, 9, 2146.47, -5736.57, 100.398, NULL, 0, 0, 0, 100, 0), +(12929900, 10, 2146.64, -5747.25, 99.9351, NULL, 0, 0, 0, 100, 0), +(12929900, 11, 2146.6, -5758.24, 99.7128, NULL, 0, 0, 0, 100, 0), +(12929900, 12, 2146.88, -5768.92, 99.848, NULL, 0, 0, 0, 100, 0), +(12929300, 1, 2163.01, -5915.32, 100.19, NULL, 0, 0, 0, 100, 0), +(12929300, 2, 2181.89, -5919.04, 100.921, NULL, 0, 0, 0, 100, 0), +(12929300, 3, 2189.84, -5910.22, 100.848, NULL, 0, 0, 0, 100, 0), +(12929300, 4, 2185.54, -5897.07, 100.693, NULL, 0, 0, 0, 100, 0), +(12929300, 5, 2177.43, -5894.1, 101.309, NULL, 0, 0, 0, 100, 0), +(12929300, 6, 2167.9, -5893.54, 101.112, NULL, 0, 0, 0, 100, 0), +(12929300, 7, 2141.5, -5901.44, 102.039, NULL, 0, 0, 0, 100, 0), +(12929300, 8, 2134.57, -5895.35, 102.476, NULL, 0, 0, 0, 100, 0), +(12929300, 9, 2124.09, -5885.86, 102.768, NULL, 0, 0, 0, 100, 0), +(12929300, 10, 2127.24, -5862.9, 101.846, NULL, 0, 0, 0, 100, 0), +(12929300, 11, 2144.77, -5853.55, 101.35, NULL, 0, 0, 0, 100, 0), +(12929300, 12, 2160.56, -5868.36, 101.312, NULL, 0, 0, 0, 100, 0), +(12929300, 13, 2159.3, -5877.75, 101.317, NULL, 0, 0, 0, 100, 0); + + +-- Update Spawn-Points + +UPDATE `creature` SET `position_x` = 2177.7983, `position_y` = -5758.793, `position_z` = 101.29145, `orientation` = 0.51258016 WHERE `guid` = 129292 AND `id1` = 28611; +UPDATE `creature` SET `position_x` = 2158, `position_y` = -5887.69, `position_z` = 101.37, `orientation` = 4.47917 WHERE `guid` = 129293 AND `id1` = 28611; +UPDATE `creature` SET `position_x` = 2291.298, `position_y` = -5815.7197, `position_z` = 101.05994, `orientation` = 2.814103 WHERE `guid` = 129295 AND `id1` = 28611; +UPDATE `creature` SET `position_x` = 2089.395, `position_y` = -5771.01, `position_z` = 99.147934, `orientation` = 2.3090818 WHERE `guid` = 129296 AND `id1` = 28611; +UPDATE `creature` SET `position_x` = 2146.8882, `position_y` = -5768.9214, `position_z` = 99.84805, `orientation` = 1.5770894 WHERE `guid` = 129299 AND `id1` = 28611; +UPDATE `creature` SET `position_x` = 2261.2556, `position_y` = -5882.462, `position_z` = 101.87194, `orientation` = 0.29108763 WHERE `guid` = 129301 AND `id1` = 28611; +UPDATE `creature` SET `position_x` = 2129.6663, `position_y` = -5787.2954, `position_z` = 98.85208, `orientation` = 5.258737 WHERE `guid` = 129302 AND `id1` = 28611; +UPDATE `creature` SET `position_x` = 2422.1914, `position_y` = -5860.641, `position_z` = 105.74505, `orientation` = 2.593869 WHERE `guid` = 129304 AND `id1` = 28611; +UPDATE `creature` SET `position_x` = 2395.3108, `position_y` = -5848.834, `position_z` = 107.756935, `orientation` = 3.5421836 WHERE `guid` = 129305 AND `id1` = 28611; + + +-- Update Movement Type and Wander Distance + +UPDATE `creature` SET `MovementType` = 2 WHERE (`guid` IN (129292, 129293, 129295, 129296, 129299, 129301, 129302, 129304, 129305)); +UPDATE `creature` SET `wander_distance` = 0 WHERE (`guid` IN (129292, 129293, 129295, 129296, 129299, 129301, 129302, 129304, 129305)); + + +-- Add Spawn Addon + +DELETE FROM `creature_addon` WHERE (`guid` IN (129292, 129293, 129295, 129296, 129299, 129301, 129302, 129304, 129305)); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(129292, 12929200, 2404, 0, 1, 0, 0, NULL), +(129293, 12929300, 2404, 0, 1, 0, 0, NULL), +(129295, 12929500, 2404, 0, 1, 0, 0, NULL), +(129296, 12929600, 2404, 0, 1, 0, 0, NULL), +(129299, 12929900, 2404, 0, 1, 0, 0, NULL), +(129301, 12930100, 2404, 0, 1, 0, 0, NULL), +(129302, 12930200, 2404, 0, 1, 0, 0, NULL), +(129304, 12930400, 2404, 0, 1, 0, 0, NULL), +(129305, 12930500, 2404, 0, 1, 0, 0, NULL); From 4703bf08d0ad27f75591e613bb11cd40ab0f946d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 26 Nov 2024 19:02:56 +0000 Subject: [PATCH 11/81] chore(DB): import pending files Referenced commit(s): 6ab70f0926079b3c64d95666c6192c4d88019197 --- .../Scarlet_Captains.sql => db_world/2024_11_26_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/Scarlet_Captains.sql => db_world/2024_11_26_02.sql} (99%) diff --git a/data/sql/updates/pending_db_world/Scarlet_Captains.sql b/data/sql/updates/db_world/2024_11_26_02.sql similarity index 99% rename from data/sql/updates/pending_db_world/Scarlet_Captains.sql rename to data/sql/updates/db_world/2024_11_26_02.sql index 29b2894c9..c56afc032 100644 --- a/data/sql/updates/pending_db_world/Scarlet_Captains.sql +++ b/data/sql/updates/db_world/2024_11_26_02.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_26_01 -> 2024_11_26_02 -- Remove Wrong Guids From 8a2ffc7a584505ecea17c7b0f1c67c02b00a323c Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Wed, 27 Nov 2024 08:41:04 +0100 Subject: [PATCH 12/81] Fix(DB/Spawn/WP) Scarlet Medics. (#20738) Create Scarlet_Medics_Fix.sql Remove some wrong guids. Add waypoints for Scarlet Medics. --- .../pending_db_world/Scarlet_Medics_Fix.sql | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 data/sql/updates/pending_db_world/Scarlet_Medics_Fix.sql diff --git a/data/sql/updates/pending_db_world/Scarlet_Medics_Fix.sql b/data/sql/updates/pending_db_world/Scarlet_Medics_Fix.sql new file mode 100644 index 000000000..d255c0361 --- /dev/null +++ b/data/sql/updates/pending_db_world/Scarlet_Medics_Fix.sql @@ -0,0 +1,118 @@ + +-- Remove Wrong Guids + +DELETE FROM `creature` WHERE (`id1` = 28608) AND (`guid` IN (129257, 129260, 129261, 129262, 129263)); + + +-- Add Waypoints + +DELETE FROM `waypoint_data` WHERE `id` IN (12925900, 12925400, 12925300, 12925600, 12925500, 12925800); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(12925900, 1, 2393.85, -5867.42, 104.623, NULL, 0, 0, 0, 100, 0), +(12925900, 2, 2384.14, -5868.85, 104.717, NULL, 0, 0, 0, 100, 0), +(12925900, 3, 2374.47, -5870.27, 104.651, NULL, 0, 0, 0, 100, 0), +(12925900, 4, 2374.07, -5880.72, 105, NULL, 0, 0, 0, 100, 0), +(12925900, 5, 2379.33, -5892.84, 106.397, NULL, 0, 0, 0, 100, 0), +(12925900, 6, 2392.93, -5906.33, 109.858, NULL, 0, 0, 0, 100, 0), +(12925900, 7, 2398.14, -5911.46, 110.23, NULL, 0, 0, 0, 100, 0), +(12925900, 8, 2388.46, -5924, 110.265, NULL, 0, 0, 0, 100, 0), +(12925900, 9, 2383.91, -5916.7, 110.05, NULL, 0, 0, 0, 100, 0), +(12925900, 10, 2374.87, -5900.46, 107.485, NULL, 0, 0, 0, 100, 0), +(12925900, 11, 2371.01, -5887.31, 105.561, NULL, 0, 0, 0, 100, 0), +(12925900, 12, 2361.64, -5870.66, 104.405, NULL, 0, 0, 0, 100, 0), +(12925900, 13, 2364.24, -5862.32, 104.223, NULL, 0, 0, 0, 100, 0), +(12925900, 14, 2374.76, -5861.15, 104.809, NULL, 0, 0, 0, 100, 0), +(12925900, 15, 2391.64, -5860.2, 105.318, NULL, 0, 0, 0, 100, 0), +(12925900, 16, 2407.92, -5861.47, 105.057, NULL, 0, 0, 0, 100, 0), +(12925900, 17, 2408.01, -5865.92, 104.647, NULL, 0, 0, 0, 100, 0), +(12925400, 1, 2245.25, -5881.24, 100.781, NULL, 0, 0, 0, 100, 0), +(12925400, 2, 2252.44, -5874.35, 100.925, NULL, 0, 0, 0, 100, 0), +(12925400, 3, 2257.84, -5865.62, 101.521, NULL, 0, 0, 0, 100, 0), +(12925400, 4, 2265.58, -5852.52, 101.158, NULL, 0, 0, 0, 100, 0), +(12925400, 5, 2257.84, -5865.62, 101.521, NULL, 0, 0, 0, 100, 0), +(12925400, 6, 2252.44, -5874.35, 100.925, NULL, 0, 0, 0, 100, 0), +(12925400, 7, 2245.25, -5881.24, 100.781, NULL, 0, 0, 0, 100, 0), +(12925400, 8, 2237.98, -5888.56, 100.79, NULL, 0, 0, 0, 100, 0), +(12925300, 1, 2166.5, -5852.88, 102.042, NULL, 0, 0, 0, 100, 0), +(12925300, 2, 2162.32, -5839.37, 101.433, NULL, 0, 0, 0, 100, 0), +(12925300, 3, 2158.63, -5827.33, 101.499, NULL, 0, 0, 0, 100, 0), +(12925300, 4, 2154.28, -5813.41, 101.838, NULL, 0, 0, 0, 100, 0), +(12925300, 5, 2155.38, -5805.82, 101.126, NULL, 0, 0, 0, 100, 0), +(12925300, 6, 2164.54, -5798.98, 101.145, NULL, 0, 0, 0, 100, 0), +(12925300, 7, 2174.14, -5791.68, 101.276, NULL, 0, 0, 0, 100, 0), +(12925300, 8, 2179.7, -5787.44, 101.256, NULL, 0, 0, 0, 100, 0), +(12925300, 9, 2174.14, -5791.68, 101.276, NULL, 0, 0, 0, 100, 0), +(12925300, 10, 2164.54, -5798.98, 101.145, NULL, 0, 0, 0, 100, 0), +(12925300, 11, 2155.38, -5805.82, 101.126, NULL, 0, 0, 0, 100, 0), +(12925300, 12, 2154.28, -5813.41, 101.838, NULL, 0, 0, 0, 100, 0), +(12925300, 13, 2158.63, -5827.33, 101.499, NULL, 0, 0, 0, 100, 0), +(12925300, 14, 2162.32, -5839.37, 101.433, NULL, 0, 0, 0, 100, 0), +(12925300, 15, 2166.5, -5852.88, 102.042, NULL, 0, 0, 0, 100, 0), +(12925300, 16, 2169.78, -5863.75, 101.35, NULL, 0, 0, 0, 100, 0), +(12925600, 1, 2171.57, -5781.3, 101.267, NULL, 0, 0, 0, 100, 0), +(12925600, 2, 2161.47, -5787.41, 100.968, NULL, 0, 0, 0, 100, 0), +(12925600, 3, 2147.94, -5795.67, 100.381, NULL, 0, 0, 0, 100, 0), +(12925600, 4, 2132.97, -5792.91, 99.2783, NULL, 0, 0, 0, 100, 0), +(12925600, 5, 2136.68, -5780.42, 99.0729, NULL, 0, 0, 0, 100, 0), +(12925600, 6, 2148.77, -5772.53, 100.085, NULL, 0, 0, 0, 100, 0), +(12925600, 7, 2161.02, -5764.45, 100.964, NULL, 0, 0, 0, 100, 0), +(12925600, 8, 2172.77, -5757.18, 101.234, NULL, 0, 0, 0, 100, 0), +(12925600, 9, 2176.58, -5768.25, 101.33, NULL, 0, 0, 0, 100, 0), +(12925600, 10, 2178.72, -5776.63, 101.38, NULL, 0, 0, 0, 100, 0), +(12925500, 1, 2220.55, -5786.82, 101.655, NULL, 0, 0, 0, 100, 0), +(12925500, 2, 2233.64, -5792.13, 101.161, NULL, 0, 0, 0, 100, 0), +(12925500, 3, 2242.44, -5799.18, 100.966, NULL, 0, 0, 0, 100, 0), +(12925500, 4, 2253.64, -5808.14, 100.953, NULL, 0, 0, 0, 100, 0), +(12925500, 5, 2262.18, -5815.47, 100.936, NULL, 0, 0, 0, 100, 0), +(12925500, 6, 2253.64, -5808.14, 100.953, NULL, 0, 0, 0, 100, 0), +(12925500, 7, 2242.44, -5799.18, 100.966, NULL, 0, 0, 0, 100, 0), +(12925500, 8, 2233.64, -5792.13, 101.161, NULL, 0, 0, 0, 100, 0), +(12925500, 9, 2220.55, -5786.82, 101.655, NULL, 0, 0, 0, 100, 0), +(12925500, 10, 2211.51, -5783.26, 101.63, NULL, 0, 0, 0, 100, 0), +(12925800, 1, 2129.46, -5690.47, 101.372, NULL, 0, 0, 0, 100, 0), +(12925800, 2, 2127.82, -5697.43, 101.051, NULL, 0, 0, 0, 100, 0), +(12925800, 3, 2125.35, -5707.95, 100.708, NULL, 0, 0, 0, 100, 0), +(12925800, 4, 2130.94, -5716.03, 100.713, NULL, 0, 0, 0, 100, 0), +(12925800, 5, 2140.7, -5730.14, 100.305, NULL, 0, 0, 0, 100, 0), +(12925800, 6, 2150.79, -5730.22, 100.835, NULL, 0, 0, 0, 100, 0), +(12925800, 7, 2164.25, -5729.12, 101.318, NULL, 0, 0, 0, 100, 0), +(12925800, 8, 2175.68, -5728.08, 102.006, NULL, 0, 0, 0, 100, 0), +(12925800, 9, 2182.5, -5724.03, 105.799, NULL, 0, 0, 0, 100, 0), +(12925800, 10, 2175.68, -5728.08, 102.006, NULL, 0, 0, 0, 100, 0), +(12925800, 11, 2164.25, -5729.12, 101.318, NULL, 0, 0, 0, 100, 0), +(12925800, 12, 2150.79, -5730.22, 100.835, NULL, 0, 0, 0, 100, 0), +(12925800, 13, 2140.7, -5730.14, 100.305, NULL, 0, 0, 0, 100, 0), +(12925800, 14, 2130.94, -5716.03, 100.713, NULL, 0, 0, 0, 100, 0), +(12925800, 15, 2125.35, -5707.95, 100.708, NULL, 0, 0, 0, 100, 0), +(12925800, 16, 2127.82, -5697.43, 101.051, NULL, 0, 0, 0, 100, 0), +(12925800, 17, 2129.46, -5690.47, 101.372, NULL, 0, 0, 0, 100, 0), +(12925800, 18, 2131.78, -5680.34, 101.83, NULL, 0, 0, 0, 100, 0); + + +-- Update Spawn-Points + +UPDATE `creature` SET `position_x` = 2169.78, `position_y` = -5863.75, `position_z` = 101.35, `orientation` = 1.8841 WHERE `guid` = 129253 AND `id1` = 28608; +UPDATE `creature` SET `position_x` = 2237.98, `position_y` = -5888.56, `position_z` = 100.79, `orientation` = 0.7781 WHERE `guid` = 129254 AND `id1` = 28608; +UPDATE `creature` SET `position_x` = 2211.51, `position_y` = -5783.26, `position_z` = 101.63, `orientation` = 5.8463 WHERE `guid` = 129255 AND `id1` = 28608; +UPDATE `creature` SET `position_x` = 2178.59, `position_y` = -5776.99, `position_z` = 101.38, `orientation` = 3.7383 WHERE `guid` = 129256 AND `id1` = 28608; +UPDATE `creature` SET `position_x` = 2131.78, `position_y` = -5680.34, `position_z` = 101.83, `orientation` = 4.3431 WHERE `guid` = 129258 AND `id1` = 28608; +UPDATE `creature` SET `position_x` = 2403.13, `position_y` = -5865.98, `position_z` = 104.72, `orientation` = 3.0314 WHERE `guid` = 129259 AND `id1` = 28608; + + +-- Update Movement Type and Wander Distance + +UPDATE `creature` SET `MovementType` = 2 WHERE (`guid` IN (129253, 129254, 129255, 129256, 129258, 129259)); +UPDATE `creature` SET `wander_distance` = 0 WHERE (`guid` IN (129253, 129254, 129255, 129256, 129258, 129259)); + + +-- Add Spawn Addon + +DELETE FROM `creature_addon` WHERE (`guid` IN (129259, 129254, 129253, 129256, 129255, 129258)); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(129259, 12925900, 0, 0, 1, 0, 0, NULL), +(129254, 12925400, 0, 0, 1, 0, 0, NULL), +(129253, 12925300, 0, 0, 1, 0, 0, NULL), +(129256, 12925600, 0, 0, 1, 0, 0, NULL), +(129255, 12925500, 0, 0, 1, 0, 0, NULL), +(129258, 12925800, 0, 0, 1, 0, 0, NULL); + From 8ec510865ca920cb41e2be59ab22c5143a64fdc3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 27 Nov 2024 07:41:58 +0000 Subject: [PATCH 13/81] chore(DB): import pending files Referenced commit(s): 8a2ffc7a584505ecea17c7b0f1c67c02b00a323c --- .../Scarlet_Medics_Fix.sql => db_world/2024_11_27_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/Scarlet_Medics_Fix.sql => db_world/2024_11_27_00.sql} (99%) diff --git a/data/sql/updates/pending_db_world/Scarlet_Medics_Fix.sql b/data/sql/updates/db_world/2024_11_27_00.sql similarity index 99% rename from data/sql/updates/pending_db_world/Scarlet_Medics_Fix.sql rename to data/sql/updates/db_world/2024_11_27_00.sql index d255c0361..cdf306434 100644 --- a/data/sql/updates/pending_db_world/Scarlet_Medics_Fix.sql +++ b/data/sql/updates/db_world/2024_11_27_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_26_02 -> 2024_11_27_00 -- Remove Wrong Guids From ff650d0a45dd8957eb5c2fe4bc4ad24e245037e3 Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:48:50 +0100 Subject: [PATCH 14/81] fix(DB/Creature): Scarlet Miners and Cars don't follow a path. (#20701) * Create Scarlet_miners_and_Cars_Fix.sql * Update Scarlet_miners_and_Cars_Fix.sql Missing Delete waypoint * Update Scarlet_miners_and_Cars_Fix.sql Removed Mine Car spawn points and spawn addon. Modified respawn timers for Scarlet Miners outside the mine. SmartAI Improved. * Update Scarlet_miners_and_Cars_Fix.sql Waypoints Improved. * Update Scarlet_miners_and_Cars_Fix.sql * Update Scarlet_miners_and_Cars_Fix.sql * Update Scarlet_miners_and_Cars_Fix.sql Add Comment in Scarlet Miners DBGuid. --- .../Scarlet_miners_and_Cars_Fix.sql | 255 ++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 data/sql/updates/pending_db_world/Scarlet_miners_and_Cars_Fix.sql diff --git a/data/sql/updates/pending_db_world/Scarlet_miners_and_Cars_Fix.sql b/data/sql/updates/pending_db_world/Scarlet_miners_and_Cars_Fix.sql new file mode 100644 index 000000000..3a654d1cf --- /dev/null +++ b/data/sql/updates/pending_db_world/Scarlet_miners_and_Cars_Fix.sql @@ -0,0 +1,255 @@ + +-- Remove Wrong Guids + +DELETE FROM `creature` WHERE (`id1` = 28822) AND (`guid` IN (128885, 128886, 128887, 128888, 128889, 128890, 128891, 128897, 128900, 128902, 128903, 128904, 128905, 128906, 128907, 128908, 128909)); +DELETE FROM `creature` WHERE `id1` = 28821; +DELETE FROM `creature_addon` WHERE (`guid` IN (128860, 128861, 128862, 128863, 128864, 128865, 128866, 128867, 128868, 128869, 128870, 128871, 128872, 128873, 128874, 128875, 128876, 128877, 128878, 128879, 128880, 128881, 128882, 128883, 128884)); + + +-- Add Waypoints + +DELETE FROM `waypoint_data` WHERE `id` IN (12889500, 12890100, 12889300, 12889400, 12889200, 12889800, 12889900, 12889600); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES + +-- Inside the Mine + +(12889500, 1, 2457.81, -5971.01, 94.5838, NULL, 0, 0, 0, 100, 0), +(12889500, 2, 2468.17, -5975.07, 95.2765, NULL, 0, 0, 0, 100, 0), +(12889500, 3, 2479.37, -5975.9, 95.7913, NULL, 0, 0, 0, 100, 0), +(12889500, 4, 2495.7, -5979.33, 95.4122, NULL, 0, 0, 0, 100, 0), +(12889500, 5, 2503.53, -5985.32, 96.5173, NULL, 0, 0, 0, 100, 0), +(12889500, 6, 2515.44, -5993.6, 102.24, NULL, 0, 0, 0, 100, 0), +(12889500, 7, 2526.11, -5994.83, 103.623, NULL, 0, 0, 0, 100, 0), +(12889500, 8, 2536.84, -5995.78, 103.055, NULL, 0, 0, 0, 100, 0), +(12890100, 1, 2531.59, -5984.55, 103.079, NULL, 0, 0, 0, 100, 0), +(12890100, 2, 2525.21, -5974.85, 104.959, NULL, 0, 0, 0, 100, 0), +(12890100, 3, 2519.88, -5963.3, 106.808, NULL, 0, 0, 0, 100, 0), +(12890100, 4, 2520.58, -5959.67, 107.449, NULL, 0, 0, 0, 100, 0), +(12890100, 5, 2522.39, -5951.61, 109.614, NULL, 0, 0, 0, 100, 0), +(12890100, 6, 2519.53, -5944.17, 110.163, NULL, 0, 0, 0, 100, 0), +(12890100, 7, 2514.74, -5940.45, 110.76, NULL, 0, 0, 0, 100, 0), +(12890100, 8, 2506.28, -5933.64, 114.661, NULL, 0, 0, 0, 100, 0), +(12890100, 9, 2497.09, -5932, 115.473, NULL, 0, 0, 0, 100, 0), +(12890100, 10, 2487.37, -5936.89, 116.275, NULL, 0, 0, 0, 100, 0), +(12890100, 11, 2481.05, -5933.07, 116.141, NULL, 0, 0, 0, 100, 0), +(12889300, 1, 2470.42, -5926.1, 115.008, NULL, 0, 0, 0, 100, 0), +(12889300, 2, 2463.34, -5917.07, 113.401, NULL, 0, 0, 0, 100, 0), +(12889300, 3, 2458.6, -5911.03, 112.855, NULL, 0, 0, 0, 100, 0), +(12889300, 4, 2451.09, -5911.71, 112.944, NULL, 0, 0, 0, 100, 0), +(12889300, 5, 2446.34, -5911.87, 113.166, NULL, 0, 0, 0, 100, 0), +(12889300, 6, 2436.46, -5915.82, 112.753, NULL, 0, 0, 0, 100, 0), +(12889300, 7, 2430.58, -5911.54, 112.894, NULL, 0, 0, 0, 100, 0), +(12889400, 1, 2435.06, -5894.12, 104.829, NULL, 0, 0, 0, 100, 0), +(12889400, 2, 2442.21, -5913, 102.131, NULL, 0, 0, 0, 100, 0), +(12889400, 3, 2436.28, -5932.54, 95.8856, NULL, 0, 0, 0, 100, 0), +(12889400, 4, 2426.06, -5937.89, 95.255, NULL, 0, 0, 0, 100, 0), +(12889400, 5, 2422.21, -5939.99, 96.5058, NULL, 0, 0, 0, 100, 0), +(12889400, 6, 2418.61, -5943.65, 96.577, NULL, 0, 0, 0, 100, 0), +(12889400, 7, 2419.33, -5951.59, 97.7769, NULL, 0, 0, 0, 100, 0), +(12889400, 8, 2421.13, -5961.58, 96.9244, NULL, 0, 0, 0, 100, 0), +(12889400, 9, 2438.07, -5973.54, 95.7458, NULL, 0, 0, 0, 100, 0), +(12889400, 10, 2439.83, -5978.79, 96.0635, NULL, 0, 0, 0, 100, 0), +(12889400, 11, 2444.96, -5980.43, 95.6443, NULL, 0, 0, 0, 100, 0), + +-- Out of the Mine + +(12889200, 1, 2382.04, -5921.96, 110.242, NULL, 0, 0, 0, 100, 0), +(12889200, 2, 2359.96, -5905.98, 105.751, NULL, 0, 0, 0, 100, 0), +(12889200, 3, 2345.92, -5901.88, 103.249, NULL, 0, 0, 0, 100, 0), +(12889200, 4, 2323.33, -5899.63, 97.4549, NULL, 0, 0, 0, 100, 0), +(12889200, 5, 2297.8, -5907.54, 87.3678, NULL, 0, 0, 0, 100, 0), +(12889200, 6, 2289.81, -5921.47, 80.0533, NULL, 0, 0, 0, 100, 0), +(12889200, 7, 2286.44, -5933.45, 70.1835, NULL, 0, 0, 0, 100, 0), +(12889200, 8, 2281.33, -5948.36, 60.3395, NULL, 0, 0, 0, 100, 0), +(12889200, 9, 2275.66, -5962.62, 52.2482, NULL, 0, 0, 0, 100, 0), +(12889200, 10, 2269.13, -5966.74, 48.7308, NULL, 0, 0, 0, 100, 0), +(12889200, 11, 2258.51, -5969.35, 43.6041, NULL, 0, 0, 0, 100, 0), +(12889200, 12, 2248.35, -5972.64, 39.794, NULL, 0, 0, 0, 100, 0), +(12889200, 13, 2240.77, -5976.29, 37.8815, NULL, 0, 0, 0, 100, 0), +(12889200, 14, 2230.78, -5991.88, 27.7426, NULL, 0, 0, 0, 100, 0), +(12889200, 15, 2219.15, -6015.72, 10.2269, NULL, 0, 0, 0, 100, 0), +(12889200, 16, 2199.6, -6039.85, 6.60174, NULL, 0, 0, 0, 100, 0), +(12889200, 17, 2192.6, -6052.12, 6.17986, NULL, 0, 0, 0, 100, 0), +(12889200, 18, 2187.14, -6079.83, 3.74995, NULL, 0, 0, 0, 100, 0), +(12889200, 19, 2184.65, -6094.9, 1.1951, NULL, 0, 0, 0, 100, 0), +(12889200, 20, 2180.87, -6108.83, 1.42742, NULL, 0, 0, 0, 100, 0), +(12889200, 21, 2176.42, -6122.98, 1.03207, NULL, 0, 0, 0, 100, 0), +(12889200, 22, 2174.1, -6138.22, 1.08874, NULL, 0, 0, 0, 100, 0), +(12889200, 23, 2172.34, -6150.78, 1.10813, NULL, 0, 0, 0, 100, 0), +(12889200, 24, 2170.01, -6166.01, 1.05316, NULL, 0, 0, 0, 100, 0), +(12889900, 1, 2405.54, -5918.65, 110.479, NULL, 0, 0, 0, 100, 0), +(12889900, 2, 2388.47, -5913.34, 109.999, NULL, 0, 0, 0, 100, 0), +(12889900, 3, 2369.29, -5911.69, 107.857, NULL, 0, 0, 0, 100, 0), +(12889900, 4, 2351.15, -5908.11, 104.67, NULL, 0, 0, 0, 100, 0), +(12889900, 5, 2331.58, -5902.87, 99.9088, NULL, 0, 0, 0, 100, 0), +(12889900, 6, 2313.75, -5905.73, 92.7526, NULL, 0, 0, 0, 100, 0), +(12889900, 7, 2299.84, -5911.64, 86.2449, NULL, 0, 0, 0, 100, 0), +(12889900, 8, 2295.14, -5918.49, 81.6661, NULL, 0, 0, 0, 100, 0), +(12889900, 9, 2291.21, -5934.34, 70.5652, NULL, 0, 0, 0, 100, 0), +(12889900, 10, 2284.95, -5949.05, 61.0421, NULL, 0, 0, 0, 100, 0), +(12889900, 11, 2277.55, -5963.95, 52.5199, NULL, 0, 0, 0, 100, 0), +(12889900, 12, 2271.31, -5970.06, 48.8038, NULL, 0, 0, 0, 100, 0), +(12889900, 13, 2256.63, -5978.17, 39.8053, NULL, 0, 0, 0, 100, 0), +(12889900, 14, 2244.13, -5984.78, 32.9579, NULL, 0, 0, 0, 100, 0), +(12889900, 15, 2240.24, -5996.13, 28.4352, NULL, 0, 0, 0, 100, 0), +(12889900, 16, 2231.2, -6010.75, 15.9018, NULL, 0, 0, 0, 100, 0), +(12889900, 17, 2224.83, -6023.55, 8.75607, NULL, 0, 0, 0, 100, 0), +(12889900, 18, 2219.76, -6034.62, 7.12963, NULL, 0, 0, 0, 100, 0), +(12889900, 19, 2213.29, -6047.36, 6.41622, NULL, 0, 0, 0, 100, 0), +(12889900, 20, 2213.17, -6067.14, 5.44721, NULL, 0, 0, 0, 100, 0), +(12889900, 21, 2214.16, -6085.68, 4.16441, NULL, 0, 0, 0, 100, 0), +(12889900, 22, 2214.76, -6102.52, 4.00186, NULL, 0, 0, 0, 100, 0), +(12889900, 23, 2217.78, -6120.79, 5.36503, NULL, 0, 0, 0, 100, 0), +(12889900, 24, 2220.36, -6137.75, 4.70524, NULL, 0, 0, 0, 100, 0), +(12889900, 25, 2222.37, -6155.49, 1.70917, NULL, 0, 0, 0, 100, 0), +(12889900, 26, 2217.15, -6172.6, 0.789688, NULL, 0, 0, 0, 100, 0), +(12889600, 1, 2369.51, -5908.76, 107.55, NULL, 0, 0, 0, 100, 0), +(12889600, 2, 2354.31, -5907.67, 105.178, NULL, 0, 0, 0, 100, 0), +(12889600, 3, 2343.31, -5906.82, 103.387, NULL, 0, 0, 0, 100, 0), +(12889600, 4, 2326.47, -5904.37, 98.0022, NULL, 0, 0, 0, 100, 0), +(12889600, 5, 2302.91, -5908.62, 88.0557, NULL, 0, 0, 0, 100, 0), +(12889600, 6, 2297.43, -5916.56, 83.4883, NULL, 0, 0, 0, 100, 0), +(12889600, 7, 2294.39, -5929.78, 73.8046, NULL, 0, 0, 0, 100, 0), +(12889600, 8, 2291.11, -5941.63, 66.5253, NULL, 0, 0, 0, 100, 0), +(12889600, 9, 2285.16, -5950, 60.6343, NULL, 0, 0, 0, 100, 0), +(12889600, 10, 2274.82, -5963.1, 51.807, NULL, 0, 0, 0, 100, 0), +(12889600, 11, 2266.62, -5968.36, 47.4507, NULL, 0, 0, 0, 100, 0), +(12889600, 12, 2256.1, -5974.46, 40.8902, NULL, 0, 0, 0, 100, 0), +(12889600, 13, 2245.62, -5980.4, 35.077, NULL, 0, 0, 0, 100, 0), +(12889600, 14, 2242.71, -5988.02, 31.8258, NULL, 0, 0, 0, 100, 0), +(12889600, 15, 2239.34, -5996.3, 27.931, NULL, 0, 0, 0, 100, 0), +(12889600, 16, 2235.32, -6003.91, 22.1893, NULL, 0, 0, 0, 100, 0), +(12889600, 17, 2231.05, -6011.65, 15.2639, NULL, 0, 0, 0, 100, 0), +(12889600, 18, 2227.07, -6019.02, 10.3049, NULL, 0, 0, 0, 100, 0), +(12889600, 19, 2218.23, -6037.9, 6.88196, NULL, 0, 0, 0, 100, 0), +(12889600, 20, 2207.97, -6060.2, 5.96104, NULL, 0, 0, 0, 100, 0), +(12889600, 21, 2194.82, -6074.19, 3.82115, NULL, 0, 0, 0, 100, 0), +(12889600, 22, 2194.56, -6089.64, 2.68589, NULL, 0, 0, 0, 100, 0), +(12889600, 23, 2194.6, -6109.86, 1.11994, NULL, 0, 0, 0, 100, 0), +(12889600, 24, 2199.39, -6125.17, 3.28229, NULL, 0, 0, 0, 100, 0), +(12889600, 25, 2201.02, -6138.01, 5.35399, NULL, 0, 0, 0, 100, 0), +(12889800, 1, 2397.83, -5922.97, 110.373, NULL, 0, 0, 0, 100, 0), +(12889800, 2, 2386.57, -5918.26, 110.209, NULL, 0, 0, 0, 100, 0), +(12889800, 3, 2370.05, -5912.67, 108.097, NULL, 0, 0, 0, 100, 0), +(12889800, 4, 2352.75, -5908.58, 105.014, NULL, 0, 0, 0, 100, 0), +(12889800, 5, 2338.3, -5901.52, 101.878, NULL, 0, 0, 0, 100, 0), +(12889800, 6, 2320.69, -5902.6, 96.0814, NULL, 0, 0, 0, 100, 0), +(12889800, 7, 2303.02, -5906.62, 88.7967, NULL, 0, 0, 0, 100, 0), +(12889800, 8, 2292.08, -5910.15, 86.1959, NULL, 0, 0, 0, 100, 0), +(12889800, 9, 2290.14, -5919.46, 81.3954, NULL, 0, 0, 0, 100, 0), +(12889800, 10, 2288.1, -5929.7, 73.4314, NULL, 0, 0, 0, 100, 0), +(12889800, 11, 2285.71, -5938.77, 66.5439, NULL, 0, 0, 0, 100, 0), +(12889800, 12, 2282.96, -5948.26, 60.8342, NULL, 0, 0, 0, 100, 0), +(12889800, 13, 2278.88, -5960.01, 54.3672, NULL, 0, 0, 0, 100, 0), +(12889800, 14, 2275.86, -5972.99, 50.1883, NULL, 0, 0, 0, 100, 0), +(12889800, 15, 2266.45, -5975.92, 45.7126, NULL, 0, 0, 0, 100, 0), +(12889800, 16, 2257.05, -5977.68, 40.1854, NULL, 0, 0, 0, 100, 0), +(12889800, 17, 2248.05, -5979.76, 35.7801, NULL, 0, 0, 0, 100, 0), +(12889800, 18, 2240.11, -5989.08, 30.5966, NULL, 0, 0, 0, 100, 0), +(12889800, 19, 2232.67, -6001.29, 22.5347, NULL, 0, 0, 0, 100, 0), +(12889800, 20, 2227.55, -6009.1, 15.5793, NULL, 0, 0, 0, 100, 0), +(12889800, 21, 2222.56, -6017.32, 10.2762, NULL, 0, 0, 0, 100, 0), +(12889800, 22, 2219.65, -6035.31, 7.07337, NULL, 0, 0, 0, 100, 0), +(12889800, 23, 2217.22, -6052.6, 6.29405, NULL, 0, 0, 0, 100, 0), +(12889800, 24, 2226.42, -6062.52, 6.18018, NULL, 0, 0, 0, 100, 0), +(12889800, 25, 2237.33, -6073.54, 5.80553, NULL, 0, 0, 0, 100, 0), +(12889800, 26, 2247.76, -6083.73, 6.15304, NULL, 0, 0, 0, 100, 0), +(12889800, 27, 2254.38, -6094.76, 6.24679, NULL, 0, 0, 0, 100, 0); + + +-- Activate SmartAI to Scarlet Miners and Mine Cars + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE (`entry` = 28822); +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE (`entry` = 28821); + + +-- SMARTAI + +-- Mine Cars + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28821; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28821); +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 +(28821, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 29, 1, 180, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Mine Car - On Respawn - Start Follow Owner Or Summoner'); + + +-- Scarlet Miners + +UPDATE `creature` SET `Comment` = "has guid specific SAI" WHERE (`id1` = 28822) AND (`guid` IN (128895, 128901, 128893, 128894, 128892, 128899, 128896, 128898)); + +-- Miners inside the Mine + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -128895); +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 +(-128895, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 12, 28821, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Summon Creature \'Mine Car\''), +(-128895, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52465, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Cast \'Drag Mine Cart\''), +(-128895, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12889500, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Start Path 12889500'), +(-128895, 0, 3, 0, 109, 0, 100, 0, 0, 12889500, 0, 0, 0, 0, 41, 2000, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889500 Finished - Despawn In 2000 ms'), +(-128895, 0, 4, 0, 109, 0, 100, 0, 0, 12889500, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889500 Finished - Despawn In 2000 ms'), +(-128895, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Just Died - Despawn In 1000 ms'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -128901); +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 +(-128901, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 12, 28821, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Summon Creature \'Mine Car\''), +(-128901, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52465, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Cast \'Drag Mine Cart\''), +(-128901, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12890100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Start Path 12890100'), +(-128901, 0, 3, 0, 109, 0, 100, 0, 0, 12890100, 0, 0, 0, 0, 41, 2000, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12890100 Finished - Despawn In 2000 ms'), +(-128901, 0, 4, 0, 109, 0, 100, 0, 0, 12890100, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12890100 Finished - Despawn In 2000 ms'), +(-128901, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Just Died - Despawn In 1000 ms'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -128893); +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 +(-128893, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 12, 28821, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Summon Creature \'Mine Car\''), +(-128893, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52465, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Cast \'Drag Mine Cart\''), +(-128893, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12889300, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Start Path 12889300'), +(-128893, 0, 3, 0, 109, 0, 100, 0, 0, 12889300, 0, 0, 0, 0, 41, 2000, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889300 Finished - Despawn In 2000 ms'), +(-128893, 0, 4, 0, 109, 0, 100, 0, 0, 12889300, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889300 Finished - Despawn In 2000 ms'), +(-128893, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Just Died - Despawn In 1000 ms'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -128894); +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 +(-128894, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 12, 28821, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Summon Creature \'Mine Car\''), +(-128894, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52465, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Cast \'Drag Mine Cart\''), +(-128894, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12889400, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Start Path 12889400'), +(-128894, 0, 3, 0, 109, 0, 100, 0, 0, 12889400, 0, 0, 0, 0, 41, 2000, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889400 Finished - Despawn In 2000 ms'), +(-128894, 0, 4, 0, 109, 0, 100, 0, 0, 12889400, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889400 Finished - Despawn In 2000 ms'), +(-128894, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Just Died - Despawn In 1000 ms'); + +-- Miners outside the Mine + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -128892); +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 +(-128892, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 12, 28821, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Summon Creature \'Mine Car\''), +(-128892, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52465, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Cast \'Drag Mine Cart\''), +(-128892, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12889200, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Start Path 12889200'), +(-128892, 0, 3, 0, 109, 0, 100, 0, 0, 12889200, 0, 0, 0, 0, 41, 2000, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889200 Finished - Despawn In 2000 ms'), +(-128892, 0, 4, 0, 109, 0, 100, 0, 0, 12889200, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889200 Finished - Despawn In 2000 ms'), +(-128892, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Just Died - Despawn In 1000 ms'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -128899); +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 +(-128899, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 12, 28821, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Summon Creature \'Mine Car\''), +(-128899, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52465, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Cast \'Drag Mine Cart\''), +(-128899, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12889900, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Start Path 12889900'), +(-128899, 0, 3, 0, 109, 0, 100, 0, 0, 12889900, 0, 0, 0, 0, 41, 2000, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889900 Finished - Despawn In 2000 ms'), +(-128899, 0, 4, 0, 109, 0, 100, 0, 0, 12889900, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889900 Finished - Despawn In 2000 ms'), +(-128899, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Just Died - Despawn In 1000 ms'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -128896); +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 +(-128896, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 12, 28821, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Summon Creature \'Mine Car\''), +(-128896, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52465, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Cast \'Drag Mine Cart\''), +(-128896, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12889600, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Start Path 12889600'), +(-128896, 0, 3, 0, 109, 0, 100, 0, 0, 12889600, 0, 0, 0, 0, 41, 2000, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889600 Finished - Despawn In 2000 ms'), +(-128896, 0, 4, 0, 109, 0, 100, 0, 0, 12889600, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889600 Finished - Despawn In 2000 ms'), +(-128896, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Just Died - Despawn In 1000 ms'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -128898); +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 +(-128898, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 12, 28821, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Summon Creature \'Mine Car\''), +(-128898, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52465, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Cast \'Drag Mine Cart\''), +(-128898, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12889800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Respawn - Start Path 12889800'), +(-128898, 0, 3, 0, 109, 0, 100, 0, 0, 12889800, 0, 0, 0, 0, 41, 2000, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889800 Finished - Despawn In 2000 ms'), +(-128898, 0, 4, 0, 109, 0, 100, 0, 0, 12889800, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 12889800 Finished - Despawn In 2000 ms'), +(-128898, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 204, 28821, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Just Died - Despawn In 1000 ms'); From d9863e737391869cf66283dfdb8f38af38e2aaff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 27 Nov 2024 10:49:43 +0000 Subject: [PATCH 15/81] chore(DB): import pending files Referenced commit(s): ff650d0a45dd8957eb5c2fe4bc4ad24e245037e3 --- .../2024_11_27_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/Scarlet_miners_and_Cars_Fix.sql => db_world/2024_11_27_01.sql} (99%) diff --git a/data/sql/updates/pending_db_world/Scarlet_miners_and_Cars_Fix.sql b/data/sql/updates/db_world/2024_11_27_01.sql similarity index 99% rename from data/sql/updates/pending_db_world/Scarlet_miners_and_Cars_Fix.sql rename to data/sql/updates/db_world/2024_11_27_01.sql index 3a654d1cf..b9e6eae56 100644 --- a/data/sql/updates/pending_db_world/Scarlet_miners_and_Cars_Fix.sql +++ b/data/sql/updates/db_world/2024_11_27_01.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_27_00 -> 2024_11_27_01 -- Remove Wrong Guids From bcfcdbdb4c4a02d0c7468bf096fdcf998c05ffc7 Mon Sep 17 00:00:00 2001 From: sudlud Date: Wed, 27 Nov 2024 21:26:02 +0100 Subject: [PATCH 16/81] =?UTF-8?q?fix(DB/item=5Ftemplate):=20add=20flag=20C?= =?UTF-8?q?U=5FDURATION=5FREAL=5FTIME=20to=20Pilgrim's=20Bo=E2=80=A6=20(#2?= =?UTF-8?q?0756)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(DB/item_template): add flag CU_DURATION_REAL_TIME to Pilgrim's Bounty items * set duration to 7 days --- .../rev_1732725060262033200.sql | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1732725060262033200.sql diff --git a/data/sql/updates/pending_db_world/rev_1732725060262033200.sql b/data/sql/updates/pending_db_world/rev_1732725060262033200.sql new file mode 100644 index 000000000..06cea9982 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1732725060262033200.sql @@ -0,0 +1,21 @@ +-- add flag CU_DURATION_REAL_TIME to Pilgrim's Bounty items +-- Wild Turkey +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 44834); +-- Recipe: Cranberry Chutney +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 44858); +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 46805); +-- Recipe: Candied Sweet Potato +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 44859); +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 46806); +-- Recipe: Spice Bread Stuffing +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 44860); +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 46803); +-- Recipe: Slow-Roasted Turkey +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 44861); +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 46807); +-- Recipe: Pumpkin Pie +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 44862); +UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 46804); + +-- set duration to 7 days +UPDATE `item_template` SET `duration` = 604800 WHERE (`entry` IN (44858, 46805, 44859, 46806, 44860, 46803, 44861, 46807, 44862, 46804)); From b5be6bc7029e98cab2f09addfa348e5c412e0c95 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 27 Nov 2024 20:26:59 +0000 Subject: [PATCH 17/81] chore(DB): import pending files Referenced commit(s): bcfcdbdb4c4a02d0c7468bf096fdcf998c05ffc7 --- .../rev_1732725060262033200.sql => db_world/2024_11_27_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1732725060262033200.sql => db_world/2024_11_27_02.sql} (96%) diff --git a/data/sql/updates/pending_db_world/rev_1732725060262033200.sql b/data/sql/updates/db_world/2024_11_27_02.sql similarity index 96% rename from data/sql/updates/pending_db_world/rev_1732725060262033200.sql rename to data/sql/updates/db_world/2024_11_27_02.sql index 06cea9982..04c9d9323 100644 --- a/data/sql/updates/pending_db_world/rev_1732725060262033200.sql +++ b/data/sql/updates/db_world/2024_11_27_02.sql @@ -1,3 +1,4 @@ +-- DB update 2024_11_27_01 -> 2024_11_27_02 -- add flag CU_DURATION_REAL_TIME to Pilgrim's Bounty items -- Wild Turkey UPDATE `item_template` SET `flagsCustom` = (`flagsCustom` | 1) WHERE (`entry` = 44834); From dd3eb38378732ff5f80dacb91f68ccd113a37f92 Mon Sep 17 00:00:00 2001 From: "Riley S." Date: Thu, 28 Nov 2024 12:34:15 -0500 Subject: [PATCH 18/81] fix(Scripts/ZulAman): Hex Lord Malacrass' Drain Power Timer (#20754) * Initial Fix for #20751 * Tighten timings * Condense Code * Move `ScheduleHealthCheckEvent` into `Reset()` --- .../scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp index 6d281274d..47e684075 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp @@ -236,6 +236,12 @@ struct boss_hexlord_malacrass : public BossAI _currentClass = CLASS_NONE; _classAbilityTimer = 10000ms; SpawnAdds(); + ScheduleHealthCheckEvent(80, [&] { + ScheduleTimedEvent(0s, [&] { + DoCastSelf(SPELL_DRAIN_POWER, true); + Talk(SAY_DRAIN_POWER); + }, 30s, 30s); + }); } void SpawnAdds() @@ -257,10 +263,6 @@ struct boss_hexlord_malacrass : public BossAI add->SetInCombatWithZone(); }); - ScheduleTimedEvent(60s, [&]{ - DoCastSelf(SPELL_DRAIN_POWER, true); - Talk(SAY_DRAIN_POWER); - }, 40s, 55s); ScheduleTimedEvent(30s, [&]{ DoCastSelf(SPELL_SPIRIT_BOLTS); scheduler.Schedule(10s, [this](TaskContext) From d8123cbc37ee0941fa6c3475ffeab1bd2e4d2c6c Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Fri, 29 Nov 2024 09:04:44 +0100 Subject: [PATCH 19/81] fix(Scripts/ZulAman): Halazzi Lynx Ability Timers (#20761) fix(Scripts/ZulAman)HalazziLynxAbilityTimers --- .../scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp index fc15e1e38..436691010 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp @@ -189,15 +189,15 @@ struct boss_halazzi : public BossAI } scheduler.CancelGroup(GROUP_MERGE); - scheduler.Schedule(16s, GROUP_LYNX, [this](TaskContext context) - { - DoCastSelf(SPELL_FRENZY); - context.Repeat(10s, 15s); - }).Schedule(20s, GROUP_LYNX, [this](TaskContext context) + scheduler.Schedule(5s, 15s, GROUP_LYNX, [this](TaskContext context) { Talk(SAY_SABER); DoCastVictim(SPELL_SABER_LASH, true); - context.Repeat(30s); + context.Repeat(); + }).Schedule(20s, 35s, GROUP_LYNX, [this](TaskContext context) + { + DoCastSelf(SPELL_FRENZY); + context.Repeat(); }); break; } From a22403356c08ae21bdb2e7083fa1ae89c60523f0 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Fri, 29 Nov 2024 09:32:49 -0300 Subject: [PATCH 20/81] fix(Scripts/ZulAman): Fix Soul Siphon visual effect (#20765) --- src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp index 47e684075..390df838f 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp @@ -274,7 +274,7 @@ struct boss_hexlord_malacrass : public BossAI siphonTrigger->SetDisplayId(11686); siphonTrigger->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); siphonTrigger->AI()->DoCast(target, SPELL_SIPHON_SOUL, true); - siphonTrigger->GetMotionMaster()->MoveChase(me); + 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(); } From 2ff4788b90c26087eb77d784a6281f362744ab0d Mon Sep 17 00:00:00 2001 From: FlyingArowana Date: Sat, 30 Nov 2024 09:35:17 +0000 Subject: [PATCH 21/81] 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 000000000..1a8d55e0d --- /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 22/81] 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 1a8d55e0d..5afb60cd6 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 23/81] =?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 000000000..05badf0e9 --- /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 e4215ff1d..2f0dd99d9 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -107,7 +107,7 @@ public: 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 0ba375960..ebdfc2d3d 100644 --- a/src/server/game/Loot/LootMgr.h +++ b/src/server/game/Loot/LootMgr.h @@ -219,6 +219,7 @@ public: 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 @@ public: // 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 24/81] 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 05badf0e9..28b75f3c7 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 25/81] 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 000000000..6c6e40017 --- /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 26/81] 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 000000000..68c84fa6c --- /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 27/81] 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 68c84fa6c..69e2e0a69 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 6c6e40017..dbd1dd472 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 28/81] 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 68fb037e8..01d182623 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 5b20d8693..79559524f 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 365099913..713dc3b07 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 c6e1c5d05..323f4ccbd 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 527d74764..ebfdcfe07 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 fb910444e..5955ec6b5 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 29/81] =?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 | 27 ++++++++++--------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 36015f5cf..5896ee978 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 852b5ae45..19422f9f3 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 Reset() override + { + if (WorldObject* summoner = GetSummoner()) + if (Creature* zuljin = summoner->ToCreature()) + me->SetLevel(zuljin->GetLevel()); - void JustEngagedWith(Unit* /*target*/) override { } + 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 30/81] =?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 19422f9f3..b78724e29 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 31/81] 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 27c841836..6617ba0da 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 2615535ec..1e5ad942d 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 32/81] =?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 390df838f..ec5ca7e77 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 33/81] 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 3e73dda8e..6f7559285 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 34/81] 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 000000000..0c626d43a --- /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 35/81] 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 0c626d43a..c0aec0a4f 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 36/81] 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 a92668803..95f931439 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 f1d53892e..2b45f3ce1 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1347,7 +1347,7 @@ public: 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 259fd89ad..59ce640ea 100644 --- a/src/server/scripts/Commands/cs_tele.cpp +++ b/src/server/scripts/Commands/cs_tele.cpp @@ -72,7 +72,7 @@ public: 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 37/81] refactor(Scripts/UtgardeKeep): Upgrade scripts to new register method (#20795) --- .../UtgardeKeep/boss_ingvar_the_plunderer.cpp | 523 +++++++++--------- .../UtgardeKeep/UtgardeKeep/boss_keleseth.cpp | 435 +++++++-------- .../UtgardeKeep/boss_skarvald_dalronn.cpp | 276 +++++---- .../UtgardeKeep/UtgardeKeep/utgarde_keep.cpp | 272 +++++---- .../UtgardeKeep/UtgardeKeep/utgarde_keep.h | 2 + 5 files changed, 711 insertions(+), 797 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 7b44e22c6..6d80f9216 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") { } - - CreatureAI* GetAI(Creature* pCreature) const override + boss_ingvar_the_plunderer(Creature* c) : ScriptedAI(c), summons(me) { - return GetUtgardeKeepAI(pCreature); + pInstance = c->GetInstanceScript(); } - struct boss_ingvar_the_plundererAI : public ScriptedAI + InstanceScript* pInstance; + EventMap events; + SummonList summons; + ObjectGuid ValkyrGUID; + ObjectGuid ThrowGUID; + + void Reset() override { - boss_ingvar_the_plundererAI(Creature* c) : ScriptedAI(c), summons(me) - { - pInstance = c->GetInstanceScript(); - } + 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); - InstanceScript* pInstance; - EventMap events; - SummonList summons; - ObjectGuid ValkyrGUID; - ObjectGuid ThrowGUID; + if (pInstance) + pInstance->SetData(DATA_INGVAR, NOT_STARTED); + } - void Reset() override + void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override + { + if (me->GetDisplayId() == DISPLAYID_DEFAULT && damage >= me->GetHealth()) { - ValkyrGUID.Clear(); - ThrowGUID.Clear(); - events.Reset(); - summons.DespawnAll(); - me->SetDisplayId(DISPLAYID_DEFAULT); - me->LoadEquipment(1); - FeignDeath(false); - me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); + damage = 0; + me->InterruptNonMeleeSpells(true); + me->RemoveAllAuras(); + me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); me->SetControlled(false, UNIT_STATE_ROOT); me->DisableRotate(false); - - if (pInstance) - pInstance->SetData(DATA_INGVAR, NOT_STARTED); - } - - void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override - { - 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); - } - } - - void JustEngagedWith(Unit* /*who*/) override - { + me->GetMotionMaster()->MovementExpired(); + me->GetMotionMaster()->MoveIdle(); + me->StopMoving(); + FeignDeath(true); events.Reset(); - // schedule Phase 1 abilities + events.RescheduleEvent(EVENT_START_RESURRECTION, 1s); + events.RescheduleEvent(EVENT_YELL_DEAD_1, 0ms); + } + } + + 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 JustSummoned(Creature* s) override + { + summons.Summon(s); + if (s->GetEntry() == NPC_ANNHYLDE) + { + 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()); + } + } + + 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 JustDied(Unit* /*killer*/) override + { + events.Reset(); + summons.DespawnAll(); + Talk(YELL_DEAD_2); + if (pInstance) + { + 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 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); - Talk(YELL_AGGRO_1); - me->LowerPlayerDamageReq(me->GetMaxHealth()); + break; - if (pInstance) - pInstance->SetData(DATA_INGVAR, IN_PROGRESS); - } - - void JustSummoned(Creature* s) override - { - summons.Summon(s); - if (s->GetEntry() == NPC_ANNHYLDE) - { - 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()); - } - } - - 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 JustDied(Unit* /*killer*/) override - { - events.Reset(); - summons.DespawnAll(); - Talk(YELL_DEAD_2); - if (pInstance) - { - 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 - { + // ABILITIES HERE: + case EVENT_UNROOT: me->SetControlled(false, UNIT_STATE_ROOT); me->DisableRotate(false); - ScriptedAI::EnterEvadeMode(why); - } + break; + case EVENT_SPELL_ROAR: + Talk(EMOTE_ROAR); - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; + me->_AddCreatureSpellCooldown(SPELL_STAGGERING_ROAR, 0, 0); + me->_AddCreatureSpellCooldown(SPELL_DREADFUL_ROAR, 0, 0); - events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - switch (events.ExecuteEvent()) + 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) { - 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; + events.Repeat(3s); + break; } - - if (!me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE)) - DoMeleeAttackIfReady(); + 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(); + } }; 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 e03daa35b..b51d5c4c9 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 + npc_frost_tomb(Creature* c) : NullCreatureAI(c) { - return GetUtgardeKeepAI(pCreature); - } - - struct npc_frost_tombAI : public NullCreatureAI - { - npc_frost_tombAI(Creature* c) : NullCreatureAI(c) - { - if (TempSummon* t = c->ToTempSummon()) - if (Unit* s = t->GetSummonerUnit()) - { - 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); - } - } - 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 UpdateAI(uint32 /*diff*/) override - { - if (PrisonerGUID) + if (TempSummon* t = c->ToTempSummon()) + if (Unit* s = t->GetSummonerUnit()) { - if (Unit* p = ObjectAccessor::GetUnit(*me, PrisonerGUID)) + PrisonerGUID = s->GetGUID(); + if (me->GetInstanceScript() && me->GetInstanceScript()->instance->IsHeroic()) { - if (!p->HasAura(SPELL_FROST_TOMB_AURA)) - me->KillSelf(); + const int32 dmg = 2000; + c->CastCustomSpell(s, SPELL_FROST_TOMB_AURA, nullptr, &dmg, nullptr, true); } else - me->KillSelf(); + c->CastSpell(s, SPELL_FROST_TOMB_AURA, true); } - } - }; -}; + } + ObjectGuid PrisonerGUID; -class boss_keleseth : public CreatureScript -{ -public: - boss_keleseth() : CreatureScript("boss_keleseth") { } - - CreatureAI* GetAI(Creature* pCreature) const override + void JustDied(Unit* killer) override { - return GetUtgardeKeepAI(pCreature); + 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); } - struct boss_kelesethAI : public ScriptedAI + void UpdateAI(uint32 /*diff*/) override { - boss_kelesethAI(Creature* c) : ScriptedAI(c) + if (PrisonerGUID) { - pInstance = c->GetInstanceScript(); - } - - InstanceScript* pInstance; - EventMap events; - - void Reset() override - { - events.Reset(); - if (pInstance) - pInstance->SetData(DATA_KELESETH, NOT_STARTED); - } - - void KilledUnit(Unit* victim) override - { - if (victim->IsPlayer()) + if (Unit* p = ObjectAccessor::GetUnit(*me, PrisonerGUID)) { - Talk(SAY_KILL); + if (!p->HasAura(SPELL_FROST_TOMB_AURA)) + me->KillSelf(); } + else + me->KillSelf(); } + } +}; - void JustDied(Unit* /*killer*/) override +struct boss_keleseth : public ScriptedAI +{ + 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); + } + + void KilledUnit(Unit* victim) override + { + if (victim->IsPlayer()) { - Talk(SAY_DEATH); - if (pInstance) - pInstance->SetData(DATA_KELESETH, DONE); + Talk(SAY_KILL); } + } - void JustEngagedWith(Unit* /*who*/) override + void JustDied(Unit* /*killer*/) override + { + 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); + + 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); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + switch (events.ExecuteEvent()) { - events.Reset(); - events.RescheduleEvent(EVENT_SPELL_SHADOWBOLT, 0ms); - events.RescheduleEvent(EVENT_FROST_TOMB, 28s); - events.RescheduleEvent(EVENT_SUMMON_SKELETONS, 4s); - - 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); - - 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); + break; + case EVENT_SUMMON_SKELETONS: + Talk(SAY_SUMMON_SKELETONS); + for (uint8 i = 0; i < 5; ++i) { - 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: - 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 + InstanceScript* pInstance; + EventMap events; + + void Reset() override { - npc_vrykul_skeletonAI(Creature* c) : ScriptedAI(c) + events.Reset(); + events.RescheduleEvent(EVENT_SPELL_DECREPIFY, 10s, 20s); + if (IsHeroic()) + events.RescheduleEvent(EVENT_SPELL_BONE_ARMOR, 25s, 120s); + } + + void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override + { + if (damage >= me->GetHealth()) { - pInstance = c->GetInstanceScript(); + 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 UpdateAI(uint32 diff) override + { + if (pInstance && pInstance->GetData(DATA_KELESETH) != IN_PROGRESS) + { + if (me->IsAlive()) + me->KillSelf(); + return; } - InstanceScript* pInstance; - EventMap events; + if (!UpdateVictim()) + return; - void Reset() override + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + switch (events.ExecuteEvent()) { - events.Reset(); - events.RescheduleEvent(EVENT_SPELL_DECREPIFY, 10s, 20s); - if (IsHeroic()) - events.RescheduleEvent(EVENT_SPELL_BONE_ARMOR, 25s, 120s); - } - - void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override - { - 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); - } - } - - void UpdateAI(uint32 diff) override - { - if (pInstance && pInstance->GetData(DATA_KELESETH) != IN_PROGRESS ) - { - if (me->IsAlive()) - me->KillSelf(); - return; - } - - if (!UpdateVictim()) - return; - - 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; - } - + case 0: + break; + case EVENT_SPELL_DECREPIFY: if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE)) - DoMeleeAttackIfReady(); + 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->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 4acb81dbd..6e3ea7f52 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 + InstanceScript* pInstance; + EventMap events; + + void Reset() override { - boss_skarvald_the_constructorAI(Creature* c) : ScriptedAI(c) + me->SetLootMode(0); + events.Reset(); + if (me->GetEntry() == NPC_SKARVALD) { - pInstance = c->GetInstanceScript(); - } - - InstanceScript* pInstance; - EventMap events; - - void Reset() override - { - me->SetLootMode(0); - events.Reset(); - if (me->GetEntry() == NPC_SKARVALD) - { - if (pInstance) - { - pInstance->SetData(DATA_DALRONN_AND_SKARVALD, NOT_STARTED); - } - } - else // NPC_SKARVALD_GHOST - { - if (Unit* target = me->SelectNearestTarget(50.0f)) - { - me->AddThreat(target, 0.0f); - AttackStart(target); - } - } - } - - void DoAction(int32 param) override - { - switch (param) - { - case 1: - events.RescheduleEvent(EVENT_MATE_DIED, 3500ms); - break; - } - } - - void JustEngagedWith(Unit* who) override - { - 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()) - { - events.ScheduleEvent(EVENT_ENRAGE, 1s); - } - } 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, NOT_STARTED); + } + } + else // NPC_SKARVALD_GHOST + { + if (Unit* target = me->SelectNearestTarget(50.0f)) + { + me->AddThreat(target, 0.0f); + AttackStart(target); + } + } + } + + void DoAction(int32 param) override + { + switch (param) + { + case 1: + events.RescheduleEvent(EVENT_MATE_DIED, 3500ms); + break; + } + } + + void JustEngagedWith(Unit* who) override + { + 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()) + { + events.ScheduleEvent(EVENT_ENRAGE, 1s); + } + } + if (pInstance) + { + 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 + void JustDied(Unit* /*Killer*/) override + { + if (me->GetEntry() != NPC_SKARVALD) + return; + + if (pInstance) { - if (me->GetEntry() != NPC_SKARVALD) - return; - - 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 + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + switch (events.ExecuteEvent()) { - if (!UpdateVictim()) - return; - - events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - 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; } - }; + DoMeleeAttackIfReady(); + } }; -class boss_dalronn_the_controller : public CreatureScript -{ -public: - boss_dalronn_the_controller() : CreatureScript("boss_dalronn_the_controller") { } - - CreatureAI* GetAI(Creature* pCreature) const override +struct boss_dalronn_the_controller : public ScriptedAI { - return GetUtgardeKeepAI(pCreature); - } - - struct boss_dalronn_the_controllerAI : 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 @@ public: 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 b85a73f23..62263725b 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(); + + 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; + } } - struct npc_dragonflayer_forge_masterAI : public ScriptedAI + InstanceScript* pInstance; + uint32 dataId; + uint32 prevDataId; + + void Reset() override { - npc_dragonflayer_forge_masterAI(Creature* c) : ScriptedAI(c) + 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 + { + if (pInstance) { - 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) + if (prevDataId && !pInstance->GetData(prevDataId)) { - 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; + EnterEvadeMode(); + return; } + pInstance->SetData(dataId, IN_PROGRESS); } - - 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 - { - if (pInstance) - { - if (prevDataId && !pInstance->GetData(prevDataId)) - { - EnterEvadeMode(); - return; - } - pInstance->SetData(dataId, IN_PROGRESS); - } - me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); - } - }; + 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; - } - - 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 - { - 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); - } - } - - void SetData(uint32 type, uint32 data) override - { - 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); - } - } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - _events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - while (uint32 eventid = _events.ExecuteEvent()) - { - 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; - } - } - - DoMeleeAttackIfReady(); - } - - private: - bool _setData; - EventMap _events; - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return GetUtgardeKeepAI(creature); + _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 MovementInform(uint32 type, uint32 id) override + { + 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); + } + } + + void SetData(uint32 type, uint32 data) override + { + 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); + } + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + _events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventid = _events.ExecuteEvent()) + { + 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; + } + } + + 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 23f3bddb1..a2da84257 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 38/81] 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 000000000..3a03e3e1e --- /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 39/81] 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 3a03e3e1e..e6e921eea 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 40/81] 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 39d2fd8a9..795734d6f 100644 --- a/src/server/scripts/Commands/cs_server.cpp +++ b/src/server/scripts/Commands/cs_server.cpp @@ -137,7 +137,7 @@ public: 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 41/81] =?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 1e5ad942d..4630ac2bb 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 42/81] =?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 000000000..cae25f780 --- /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 da6771871..1475b9a3e 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 2d3402791..24b352a9a 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 affe37877..6ac9bdbf3 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 a16341ced..d3082aa82 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 0b517c0c2..0fc29dab3 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 69eb1b7be..27b354bee 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 96eed54b9..f7ec86e1b 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 43/81] 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 cae25f780..2052afe3e 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 44/81] 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 4047ba8e1..33fff5f74 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 792e54342..454bb3e4f 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 9d0a32522..443a8a46c 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 6617ba0da..7abedcae7 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 8dc14fde3..b37efedca 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 d8f33c6fe..30bc269ff 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 66b6c142d..8c7b9da6f 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 f03de45c7..d17321348 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 c561dc3ad..40b36895d 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 c8ebb0926..48c31dbe2 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1567,8 +1567,6 @@ public: /*********************************************************/ /*** 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 @@ public: // 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 @@ public: [[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 23b130b2a..586e1336b 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 58a1069a4..42f657f9b 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 ba650b871..b7e809e9c 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 9d0cfbe65..b2f4647e4 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 31bbfd07e..d7cf92181 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 bfeb29179..3bf376688 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 769985848..73d7b89a6 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 b25ddd08b..8297d7ca5 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 932704c01..7e70af2be 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 4e8e9e507..e34918ac1 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 4630ac2bb..9716102a5 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 7548c552f..781976ccf 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 646f8a793..e90da5af4 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -117,7 +117,7 @@ public: 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 a103a521c..b0164e2cf 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 15e10a2e2..40af13934 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 ddd027e1a..6a66ed29e 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 a63f52bda..64a6de9a3 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 @@ public: 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 936b11db2..0a44e0f9d 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 fb1025276..372081fe0 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 6af907e2d..c4b0bdcc7 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 @@ public: 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 @@ public: 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 @@ public: 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 @@ public: 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 @@ public: 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 @@ public: 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 @@ public: 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 @@ public: 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 f67ad6333..1f26e1b79 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 @@ public: { 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 1bda7c69e..d5107bdbc 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -260,7 +260,7 @@ public: 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 385150c17..fbc510668 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -1684,7 +1684,7 @@ public: 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 d30605387..26f94defe 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 @@ public: 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 68702d313..e2c684870 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 df5621f74..b3317b9df 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -350,7 +350,7 @@ public: 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 539b29bc1..6e91d2a19 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 b16a931ef..0ec9a5fcd 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 04986c8c6..b29818522 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 6441d7726..c5d16318c 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 c0a18506b..02f5105f0 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 45/81] 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 000000000..4b3fa0b63 --- /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 6d5663877..bfc5ddf2f 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 @@ public: 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 @@ public: 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 @@ public: 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 @@ public: 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 da714fb7b..ddb9bc6fd 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 247c458bd..f0f86ad0b 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 46/81] 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 4b3fa0b63..3a57c693a 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 47/81] 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 122c640d0..7f4b8e996 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 4d4a35416..4544f73c8 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 bf414f532..3a31acbcf 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 48/81] 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 bab5e2602..65c6112b0 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 49/81] 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 b78724e29..66959734b 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 50/81] 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 95d0ccd44..ddc653f32 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp @@ -97,15 +97,6 @@ public: { 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 @@ public: 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 @@ public: { 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 @@ public: 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 @@ public: 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 51/81] 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 30bc269ff..b16b5a253 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 52/81] 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 4a540a785..a18d5d4f9 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 53/81] 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 141eab881..5f4d3057a 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 b16b5a253..feecb2e8f 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 54/81] 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 34c1829fd..d6802a56b 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 d1768667e..47bbedce7 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 55/81] 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 000000000..4ad76983c --- /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 56/81] 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 4ad76983c..3b8786e4b 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 57/81] 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 000000000..b41f2e424 --- /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 58/81] 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 b41f2e424..ac93827e5 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 59/81] 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 000000000..d8ae07fcd --- /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 60/81] 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 d8ae07fcd..5640d3bcb 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 61/81] =?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 50a7f8a8b..64678db31 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 0fd1c861b..d5f7f729f 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 62/81] refactor(Scripts/UtgardeKeep): Modernize Prince Keleseth script (#20806) --- .../UtgardeKeep/UtgardeKeep/boss_keleseth.cpp | 122 +++++------------- .../UtgardeKeep/instance_utgarde_keep.cpp | 21 ++- .../UtgardeKeep/UtgardeKeep/utgarde_keep.h | 4 + 3 files changed, 53 insertions(+), 94 deletions(-) diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp index b51d5c4c9..a3d0626fa 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,50 +98,49 @@ 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); + ScheduleTimedEvent(1s, [&] { + DoCastVictim(SPELL_SHADOWBOLT); + }, 4s, 5s); + + 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); + + 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; + me->SummonCreature(NPC_SKELETON, 156.2f + cos(angle) * dist, 259.1f + std::sin(angle) * dist, 42.9f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); + } + }, 4s); } void AttackStart(Unit* who) override @@ -157,55 +150,6 @@ struct boss_keleseth : public ScriptedAI UnitAI::AttackStartCaster(who, 12.0f); } - - 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_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: - 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); - } - } - break; - } - - DoMeleeAttackIfReady(); - } }; enum eSkeletonEnum @@ -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 475fa0c2e..6425e7360 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 @@ public: { instance_utgarde_keep_InstanceMapScript(Map* pMap) : InstanceScript(pMap) { + SetHeaders(DataHeader); + SetBossNumber(EncounterCount); LoadObjectData(creatureData, nullptr); } @@ -69,12 +71,26 @@ public: 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 @@ public: { 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 a2da84257..9ba762751 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 63/81] 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 6f9806e34..0b0f744f4 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 64/81] 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 000000000..e93b41239 --- /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 65/81] 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 e93b41239..5af96019d 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 66/81] 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 40b36895d..f5f299625 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 48c31dbe2..af6c71e41 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1758,6 +1758,7 @@ public: // 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 67/81] 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 000000000..924fd8a73 --- /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 68/81] 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 924fd8a73..f0dbcf39f 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 69/81] 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 000000000..6f752992f --- /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 70/81] 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 6f752992f..d9a3179d6 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 71/81] 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 000000000..56c171f41 --- /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 72/81] 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 56c171f41..82c935988 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 73/81] 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 66959734b..0f6bdb587 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 74/81] 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 000000000..bf9827166 --- /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 75/81] 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 | 650 +++++++++++++----- .../Ulduar/HallsOfStone/halls_of_stone.h | 26 + .../HallsOfStone/instance_halls_of_stone.cpp | 90 ++- 5 files changed, 629 insertions(+), 203 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 000000000..1f5a9398a --- /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 da0e324ca..d51461f6a 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 @@ public: 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 @@ public: { brann->setDeathState(DeathState::JustDied); brann->Respawn(); - brann->AI()->DoAction(5); + brann->AI()->DoAction(ACTION_SJONNIR_WIPE_START); } } } @@ -183,7 +181,7 @@ public: 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 @@ public: 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 @@ public: { 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 @@ public: { 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 @@ public: 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 83da96853..8202f673a 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 @@ public: { 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 @@ public: 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 @@ public: 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 @@ public: ObjectGuid AbedneumGUID; ObjectGuid MarnakGUID; ObjectGuid KaddrakGUID; + ObjectGuid darkMatterTargetGUID; + uint8 WaveNum; bool TalkEvent; uint32 SpeechCount, SpeechPause; + bool canExecuteEvents = true; void DespawnHeads() { @@ -257,6 +267,7 @@ public: if ((cr = GetAbedneum())) cr->DespawnOrUnsummon(); if ((cr = GetMarnak())) cr->DespawnOrUnsummon(); if ((cr = GetKaddrak())) cr->DespawnOrUnsummon(); + SwitchHeadVisaul(0x7, false); } @@ -268,15 +279,46 @@ public: 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 @@ public: 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 @@ public: 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 @@ public: 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 @@ public: { 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; - } - case ACTION_GO_TO_SJONNIR: + 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 @@ public: 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->CastSpell(cr, SPELL_DARK_MATTER_VISUAL, true); - if (Player* plr = SelectTargetFromPlayerList(100.0f)) + 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)) + { + 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) { - 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, 3000ms); + } + else if (darkMatterTarget->GetDistance(plr) < 30.0f) + { + events.RescheduleEvent(EVENT_DARK_MATTER_END, 3500ms); + } + else + { + 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 @@ public: 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 @@ public: 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); - break; - } - case EVENT_END: - { - events.Reset(); if (pInstance) - pInstance->SetData(BRANN_BRONZEBEARD, 6); + { + 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->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); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_STAND); + me->SendMovementFlagUpdate(); + break; } + case EVENT_TALK_FACE_CHANGE: + { + if (pInstance) + 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(); + } + } + + 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 @@ public: } } - 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 @@ public: { 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; - case 29: + //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; + //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 @@ public: }; }; -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 f027fa014..c9188b35e 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 619d5e724..968d95126 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 @@ public: return goMarnakGUID; case GO_ABEDNEUM: return goAbedneumGUID; + case GO_SKY_FLOOR: + return goSkyRoomFloorGUID; case NPC_SJONNIR: return SjonnirGUID; @@ -210,23 +212,91 @@ public: 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 76/81] 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 1f5a9398a..bf48e53da 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 bf9827166..5cac7db01 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 77/81] 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 92e08b0b1..8d6ed8f64 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 78/81] 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 000000000..693a39d9a --- /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 79/81] 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 693a39d9a..957607c52 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 80/81] 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 91dd7c4dc..875a99417 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 81/81] =?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 090ceae92..a0381601d 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