Merge branch 'azerothcore:master' into Playerbot
This commit is contained in:
+1
-3
@@ -68,9 +68,7 @@ nbproject/
|
||||
*.kate-swp
|
||||
.browse.VC*
|
||||
.idea
|
||||
cmake-build-debug/*
|
||||
cmake-build-debug-coverage/*
|
||||
cmake-build-debug-event-trace/*
|
||||
cmake-build-*/*
|
||||
coverage-report/
|
||||
|
||||
#
|
||||
|
||||
Regular → Executable
+4
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
echo ----------------------------------------------------------------------------------------------- >&2
|
||||
echo ATTENTION: This tool is DEPRECATED. To assemble or update your DB, use the worldserver instead. >&2
|
||||
echo ----------------------------------------------------------------------------------------------- >&2
|
||||
|
||||
set -e
|
||||
|
||||
CURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
-- DB update 2022_08_21_00 -> 2022_10_13_00
|
||||
--
|
||||
DELETE FROM `updates` WHERE `name`='Homebind_Orientation.sql';
|
||||
|
||||
ALTER TABLE `character_homebind`
|
||||
ADD COLUMN `posO` FLOAT NOT NULL DEFAULT '0' AFTER `posZ`;
|
||||
@@ -0,0 +1,116 @@
|
||||
-- DB update 2022_10_06_05 -> 2022_10_07_00
|
||||
-- Idols
|
||||
UPDATE `creature_loot_template` SET `Chance`=0.4 WHERE `Item` IN (20874, 20875, 20876, 20877, 20878, 20879, 20881, 20882);
|
||||
|
||||
-- The Prophet Skeram
|
||||
DELETE FROM `reference_loot_template` WHERE `Entry`=34046;
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 15263) AND (`Item` IN (34045, 34046, 21128, 21698, 21699, 21700, 21701, 21702, 21703, 21704, 21705, 21706, 21707, 21708, 21814));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(15263, 21128, 0, 10, 0, 1, 1, 1, 1, 'The Prophet Skeram - Staff of the Qiraji Prophets'),
|
||||
(15263, 21698, 0, 0, 0, 1, 1, 1, 1, 'The Prophet Skeram - Leggings of Immersion'),
|
||||
(15263, 21699, 0, 0, 0, 1, 1, 1, 1, 'The Prophet Skeram - Barrage Shoulders'),
|
||||
(15263, 21700, 0, 0, 0, 1, 1, 1, 1, 'The Prophet Skeram - Pendant of the Qiraji Guardian'),
|
||||
(15263, 21701, 0, 0, 0, 1, 1, 1, 1, 'The Prophet Skeram - Cloak of Concentrated Hatred'),
|
||||
(15263, 21702, 0, 0, 0, 1, 1, 1, 1, 'The Prophet Skeram - Amulet of Foul Warding'),
|
||||
(15263, 21703, 0, 10, 0, 1, 2, 1, 1, 'The Prophet Skeram - Hammer of Ji\'zhi'),
|
||||
(15263, 21704, 0, 0, 0, 1, 2, 1, 1, 'The Prophet Skeram - Boots of the Redeemed Prophecy'),
|
||||
(15263, 21705, 0, 0, 0, 1, 2, 1, 1, 'The Prophet Skeram - Boots of the Fallen Prophet'),
|
||||
(15263, 21706, 0, 0, 0, 1, 2, 1, 1, 'The Prophet Skeram - Boots of the Unwavering Will'),
|
||||
(15263, 21707, 0, 0, 0, 1, 2, 1, 1, 'The Prophet Skeram - Ring of Swarming Thought'),
|
||||
(15263, 21708, 0, 0, 0, 1, 2, 1, 1, 'The Prophet Skeram - Beetle Scaled Wristguards'),
|
||||
(15263, 21814, 0, 0, 0, 1, 2, 1, 1, 'The Prophet Skeram - Breastplate of Annihilation'),
|
||||
(15263, 34045, 34045, 7, 0, 1, 0, 1, 1, 'The Prophet Skeram - Reference Table');
|
||||
|
||||
-- Battleguard Sartura
|
||||
DELETE FROM `reference_loot_template` WHERE `Entry`=34047;
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 15516) AND (`Item` IN (34047, 21648, 21666, 21667, 21668, 21669, 21670, 21671, 21672, 21673, 21674, 21675, 21676, 21678));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(15516, 21648, 0, 0, 0, 1, 2, 1, 1, 'Battleguard Sartura - Recomposed Boots'),
|
||||
(15516, 21666, 0, 7.7, 0, 1, 1, 1, 1, 'Battleguard Sartura - Sartura\'s Might'),
|
||||
(15516, 21667, 0, 0, 0, 1, 1, 1, 1, 'Battleguard Sartura - Legplates of Blazing Light'),
|
||||
(15516, 21668, 0, 0, 0, 1, 1, 1, 1, 'Battleguard Sartura - Scaled Leggings of Qiraji Fury'),
|
||||
(15516, 21669, 0, 0, 0, 1, 1, 1, 1, 'Battleguard Sartura - Creeping Vine Helm'),
|
||||
(15516, 21670, 0, 0, 0, 1, 1, 1, 1, 'Battleguard Sartura - Badge of the Swarmguard'),
|
||||
(15516, 21671, 0, 0, 0, 1, 1, 1, 1, 'Battleguard Sartura - Robes of the Battleguard'),
|
||||
(15516, 21672, 0, 0, 0, 1, 1, 1, 1, 'Battleguard Sartura - Gloves of Enforcement'),
|
||||
(15516, 21673, 0, 9.09, 0, 1, 2, 1, 1, 'Battleguard Sartura - Silithid Claw'),
|
||||
(15516, 21674, 0, 0, 0, 1, 2, 1, 1, 'Battleguard Sartura - Gauntlets of Steadfast Determination'),
|
||||
(15516, 21675, 0, 0, 0, 1, 2, 1, 1, 'Battleguard Sartura - Thick Qirajihide Belt'),
|
||||
(15516, 21676, 0, 0, 0, 1, 2, 1, 1, 'Battleguard Sartura - Leggings of the Festering Swarm'),
|
||||
(15516, 21678, 0, 0, 0, 1, 2, 1, 1, 'Battleguard Sartura - Necklace of Purity');
|
||||
|
||||
-- Fankriss the Unyielding
|
||||
DELETE FROM `reference_loot_template` WHERE `Entry`=34048;
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 15510) AND (`Item` IN (34048, 21627, 21635, 21639, 21645, 21647, 21650, 21651, 21652, 21663, 21664, 21665, 22396, 22402));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(15510, 21627, 0, 0, 0, 1, 2, 1, 1, 'Fankriss the Unyielding - Cloak of Untold Secrets'),
|
||||
(15510, 21635, 0, 10, 0, 1, 2, 1, 1, 'Fankriss the Unyielding - Barb of the Sand Reaver'),
|
||||
(15510, 21639, 0, 0, 0, 1, 1, 1, 1, 'Fankriss the Unyielding - Pauldrons of the Unrelenting'),
|
||||
(15510, 21645, 0, 0, 0, 1, 2, 1, 1, 'Fankriss the Unyielding - Hive Tunneler\'s Boots'),
|
||||
(15510, 21647, 0, 0, 0, 1, 2, 1, 1, 'Fankriss the Unyielding - Fetish of the Sand Reaver'),
|
||||
(15510, 21650, 0, 10, 0, 1, 1, 1, 1, 'Fankriss the Unyielding - Ancient Qiraji Ripper'),
|
||||
(15510, 21651, 0, 0, 0, 1, 1, 1, 1, 'Fankriss the Unyielding - Scaled Sand Reaver Leggings'),
|
||||
(15510, 21652, 0, 0, 0, 1, 1, 1, 1, 'Fankriss the Unyielding - Silithid Carapace Chestguard'),
|
||||
(15510, 21663, 0, 0, 0, 1, 1, 1, 1, 'Fankriss the Unyielding - Robes of the Guardian Saint'),
|
||||
(15510, 21664, 0, 0, 0, 1, 1, 1, 1, 'Fankriss the Unyielding - Barbed Choker'),
|
||||
(15510, 21665, 0, 0, 0, 1, 1, 1, 1, 'Fankriss the Unyielding - Mantle of Wicked Revenge'),
|
||||
(15510, 22396, 0, 0, 0, 1, 2, 1, 1, 'Fankriss the Unyielding - Totem of Life'),
|
||||
(15510, 22402, 0, 0, 0, 1, 2, 1, 1, 'Fankriss the Unyielding - Libram of Grace');
|
||||
|
||||
-- Princess Huhuran
|
||||
UPDATE `creature_loot_template` SET `Chance`=0 WHERE `entry`=15509 AND `item` BETWEEN 21616 AND 21621;
|
||||
|
||||
-- Twin Emperors
|
||||
UPDATE `creature_loot_template` SET `Chance`=6.5 WHERE `entry` IN (15275,15276) AND `item` IN (20726,20735);
|
||||
UPDATE `creature_loot_template` SET `Chance`=0 WHERE `entry` IN (15275,15276) AND `item` IN (21604,21605,21606,21607,21608,21609,21679,21597,21598,21599,21600,21601,21602);
|
||||
|
||||
-- C'Thun
|
||||
DELETE FROM `reference_loot_template` WHERE `Entry`=34049;
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 15727) AND (`Item` IN (34049, 21579, 21126, 21134, 21581, 21582, 21583, 21585, 21586, 21596, 21839, 22730, 22731, 22732));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(15727, 21579, 0, 20, 0, 1, 0, 1, 1, 'C\'Thun - Vanquished Tentacle of C\'Thun'),
|
||||
(15727, 21126, 0, 8, 0, 1, 1, 1, 1, 'C\'Thun - Death\'s Sting'),
|
||||
(15727, 21134, 0, 8, 0, 1, 2, 1, 1, 'C\'Thun - Dark Edge of Insanity'),
|
||||
(15727, 21581, 0, 0, 0, 1, 2, 1, 1, 'C\'Thun - Gauntlets of Annihilation'),
|
||||
(15727, 21582, 0, 0, 0, 1, 2, 1, 1, 'C\'Thun - Grasp of the Old God'),
|
||||
(15727, 21583, 0, 0, 0, 1, 2, 1, 1, 'C\'Thun - Cloak of Clarity'),
|
||||
(15727, 21585, 0, 0, 0, 1, 1, 1, 1, 'C\'Thun - Dark Storm Gauntlets'),
|
||||
(15727, 21586, 0, 0, 0, 1, 1, 1, 1, 'C\'Thun - Belt of Never-ending Agony'),
|
||||
(15727, 21596, 0, 0, 0, 1, 1, 1, 1, 'C\'Thun - Ring of the Godslayer'),
|
||||
(15727, 21839, 0, 8, 0, 1, 2, 1, 1, 'C\'Thun - Scepter of the False Prophet'),
|
||||
(15727, 22730, 0, 0, 0, 1, 1, 1, 1, 'C\'Thun - Eyestalk Waist Cord'),
|
||||
(15727, 22731, 0, 0, 0, 1, 1, 1, 1, 'C\'Thun - Cloak of the Devoured'),
|
||||
(15727, 22732, 0, 0, 0, 1, 2, 1, 1, 'C\'Thun - Mark of C\'Thun');
|
||||
|
||||
-- Imperial Qiraji items and Recipes
|
||||
DELETE FROM `reference_loot_template` WHERE `Entry`=34045 AND `Item` IN (21232, 21237);
|
||||
DELETE FROM `reference_loot_template` WHERE `Entry`=34046 AND `Item` IN (21232, 21237);
|
||||
INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Comment`) VALUES
|
||||
(34046, 21232, 0, 1, 'Imperial Qiraji Armaments'),
|
||||
(34046, 21237, 0, 1, 'Imperial Qiraji Regalia');
|
||||
|
||||
DELETE FROM `creature_loot_template` WHERE `Reference` IN (34045, 34046);
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(15263, 34045, 34045, 7, 0, 1, 0, 1, 1, 'The Prophet Skeram - Reference Table'),
|
||||
(15516, 34045, 34045, 7, 0, 1, 0, 1, 1, 'Battleguard Sartura - Reference Table'),
|
||||
(15516, 34046, 34046, 8, 0, 1, 0, 1, 1, 'Battleguard Sartura - Reference Table'),
|
||||
(15544, 34045, 34045, 7, 0, 1, 0, 1, 1, 'Vem - Reference Table'),
|
||||
(15544, 34046, 34046, 8, 0, 1, 0, 1, 1, 'Vem - Reference Table'),
|
||||
(15543, 34045, 34045, 7, 0, 1, 0, 1, 1, 'Princess Yauj - Reference Table'),
|
||||
(15543, 34046, 34046, 8, 0, 1, 0, 1, 1, 'Princess Yauj - Reference Table'),
|
||||
(15511, 34045, 34045, 7, 0, 1, 0, 1, 1, 'Lord Kri - Reference Table'),
|
||||
(15511, 34046, 34046, 8, 0, 1, 0, 1, 1, 'Lord Kri - Reference Table'),
|
||||
(15510, 34045, 34045, 7, 0, 1, 0, 1, 1, 'Fankriss the Unyielding - Reference Table'),
|
||||
(15510, 34046, 34046, 8, 0, 1, 0, 1, 1, 'Fankriss the Unyielding - Reference Table'),
|
||||
(15299, 34045, 34045, 7, 0, 1, 0, 1, 1, 'Viscidus - Reference Table'),
|
||||
(15299, 34046, 34046, 8, 0, 1, 0, 1, 1, 'Viscidus - Reference Table'),
|
||||
(15509, 34045, 34045, 7, 0, 1, 0, 1, 1, 'Princess Huhuran - Reference Table'),
|
||||
(15509, 34046, 34046, 8, 0, 1, 0, 1, 1, 'Princess Huhuran - Reference Table'),
|
||||
(15275, 34045, 34045, 7, 0, 1, 0, 1, 1, 'Emperor Vek\'nilash - Reference Table'),
|
||||
(15275, 34046, 34046, 8, 0, 1, 0, 1, 1, 'Emperor Vek\'nilash - Reference Table'),
|
||||
(15276, 34045, 34045, 7, 0, 1, 0, 1, 1, 'Emperor Vek\'lor - Reference Table'),
|
||||
(15276, 34046, 34046, 8, 0, 1, 0, 1, 1, 'Emperor Vek\'lor - Reference Table'),
|
||||
(15517, 34045, 34045, 7, 0, 1, 0, 1, 1, 'Ouro - Reference Table'),
|
||||
(15517, 34046, 34046, 8, 0, 1, 0, 1, 1, 'Ouro - Reference Table'),
|
||||
(15727, 34045, 34045, 7, 0, 1, 0, 1, 1, 'C\'Thun - Reference Table'),
|
||||
(15727, 34046, 34046, 8, 0, 1, 0, 1, 1, 'C\'Thun - Reference Table');
|
||||
@@ -0,0 +1,7 @@
|
||||
-- DB update 2022_10_07_00 -> 2022_10_07_01
|
||||
--
|
||||
-- Drop rate improvements over 1144 itterations:
|
||||
-- ITEM Captain Kelisendra's Lost Rutters (21776) = Already Correct 10%
|
||||
-- Other quest ITEMs Grimscale Murloc Head (21757), Captain Kelisendra's Cargo (21771) appear to be about 45% rate (it is possible the casters are higher rate, but unproven within margin of error)
|
||||
UPDATE `creature_loot_template` SET `Chance`='45' WHERE `Item`=21757;
|
||||
UPDATE `creature_loot_template` SET `Chance`='45' WHERE `Item`=21771;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
||||
-- DB update 2022_10_07_02 -> 2022_10_07_03
|
||||
--
|
||||
UPDATE `creature` SET `id2`=15317 WHERE `id1`=15316;
|
||||
UPDATE `creature` SET `id2`=15316 WHERE `id1`=15317;
|
||||
@@ -0,0 +1,6 @@
|
||||
-- DB update 2022_10_07_03 -> 2022_10_07_04
|
||||
UPDATE `creature_template` SET `detection_range` = 37.5 WHERE (`entry` IN (15262, 15312));
|
||||
UPDATE `creature_template` SET `detection_range` = 38.5 WHERE (`entry` = 15263);
|
||||
UPDATE `creature_template` SET `detection_range` = 15 WHERE (`entry` = 15300);
|
||||
UPDATE `creature_template` SET `detection_range` = 35 WHERE (`entry` IN (15240, 15230, 15264, 15311));
|
||||
UPDATE `creature_template` SET `detection_range` = 40 WHERE (`entry` IN (15235, 15236, 15249, 15509, 15277, 15229, 15544, 15543, 15511, 15233, 15247, 15275, 15276, 15252, 15246, 15250, 15299));
|
||||
@@ -0,0 +1,8 @@
|
||||
-- DB update 2022_10_07_04 -> 2022_10_07_05
|
||||
--
|
||||
-- There are twice as many NPC Grimscale Forager (15670) as NPC Grimscale Seer (15950) and twice as many NPC Grimscale Murloc (15668) as NPC Grimscale Oracle (15669)
|
||||
UPDATE `creature` SET `id1`=15670, `id2`=15670, `id3`=15950 WHERE `id1` IN (15670, 15950);
|
||||
UPDATE `creature` SET `id1`=15668, `id2`=15668, `id3`=15669 WHERE `id1` IN (15668, 15669);
|
||||
|
||||
-- NPC Mmmrrrggglll (15937)'s spawn timer is just over 2 mins
|
||||
UPDATE `creature` SET `spawntimesecs`=130 WHERE `guid`=41792;
|
||||
@@ -0,0 +1,94 @@
|
||||
-- DB update 2022_10_07_05 -> 2022_10_07_06
|
||||
--
|
||||
-- Not every GAMEOBJECT Captain Kelisendra's Cargo (180917) will be spawned at the same time and object bunching is possible (1 pool). 6 can be up at time (confirmed twice) and thier respawn seem very fast.
|
||||
|
||||
DELETE FROM `gameobject` WHERE `id`=180917;
|
||||
SET @OGUID :=18017;
|
||||
DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @GUID+39;
|
||||
INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES
|
||||
(@OGUID+0, 180917, 530, 3430, 3460, 1, 1, 8881.802734375, -5735.43359375, 0.117886997759342193, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+1, 180917, 530, 3430, 3460, 1, 1, 8742.2236328125, -5697.8486328125, 0.245764002203941345, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+2, 180917, 530, 3430, 3460, 1, 1, 8669.2470703125, -5689.86279296875, 0.885070979595184326, 4.206246376037597656, 0, 0, -0.86162853240966796, 0.50753939151763916, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+3, 180917, 530, 3430, 3460, 1, 1, 8788.962890625, -5753.9541015625, 0.154392004013061523, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+4, 180917, 530, 3430, 3460, 1, 1, 8783.94140625, -5685.76123046875, 0.243977993726730346, 4.049167633056640625, 0, 0, -0.89879322052001953, 0.438372820615768432, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+5, 180917, 530, 3430, 3460, 1, 1, 8883.78515625, -5733.18310546875, -0.07398299872875213, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+6, 180917, 530, 3430, 3460, 1, 1, 8670.87109375, -5685.01611328125, 0.471585988998413085, 5.218535900115966796, 0, 0, -0.507537841796875, 0.861629426479339599, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+7, 180917, 530, 3430, 3460, 1, 1, 8885.13671875, -5736.46484375, -0.12266399711370468, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+8, 180917, 530, 3430, 3460, 1, 1, 8741.5673828125, -5694.47509765625, -0.00841099955141544, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+9, 180917, 530, 3430, 3460, 1, 1, 8784.1865234375, -5743.7666015625, 0.156876996159553527, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+10, 180917, 530, 3430, 3460, 1, 1, 8621.2236328125, -5671.03857421875, 0.184166997671127319, 4.991643905639648437, 0, 0, -0.60181427001953125, 0.798636078834533691, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+11, 180917, 530, 3430, 3460, 1, 1, 8776.1357421875, -5688.74462890625, 0.475109994411468505, 4.555310726165771484, 0, 0, -0.76040554046630859, 0.649448513984680175, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+12, 180917, 530, 3430, 3460, 1, 1, 8842.1884765625, -5712.59619140625, 0.680698990821838378, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+13, 180917, 530, 3430, 3460, 1, 1, 8787.708984375, -5750.0869140625, 0.045983001589775085, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+14, 180917, 530, 3430, 3460, 1, 1, 8880.1494140625, -5730.4921875, 0.130083993077278137, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+15, 180917, 530, 3430, 3460, 1, 1, 8881.9365234375, -5731.9072265625, 0.042814001441001892, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+16, 180917, 530, 3430, 3460, 1, 1, 8783.9892578125, -5738.68359375, 0.175551995635032653, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+17, 180917, 530, 3430, 3460, 1, 1, 8849.580078125, -5712.47509765625, 0.612582981586456298, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+18, 180917, 530, 3430, 3460, 1, 1, 8747.5849609375, -5693.92626953125, 0.521658003330230712, 4.276057243347167968, 0, 0, -0.84339141845703125, 0.537299633026123046, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+19, 180917, 530, 3430, 3460, 1, 1, 8781.12109375, -5683, 0.007420999929308891, 4.206246376037597656, 0, 0, -0.86162853240966796, 0.50753939151763916, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+20, 180917, 530, 3430, 3460, 1, 1, 8783.9892578125, -5738.68359375, 0.175551995635032653, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+21, 180917, 530, 3430, 3460, 1, 1, 8843.9755859375, -5715.81982421875, 0.690900027751922607, 3.263772249221801757, 0, 0, -0.99813460303710937, 0.061051756143569946, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+22, 180917, 530, 3430, 3460, 1, 1, 8846.53125, -5711.57421875, 0.612381994724273681, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+23, 180917, 530, 3430, 3460, 1, 1, 8845.7255859375, -5713.32763671875, 0.679681003093719482, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+24, 180917, 530, 3430, 3460, 1, 1, 8680.0771484375, -5693.79736328125, 0.269024014472961425, 5.497788906097412109, 0, 0, -0.38268280029296875, 0.923879802227020263, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+25, 180917, 530, 3430, 3460, 1, 1, 8624.8623046875, -5674.0302734375, 0.550777018070220947, 1.221729278564453125, 0, 0, 0.573575973510742187, 0.819152355194091796, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+26, 180917, 530, 3430, 3460, 1, 1, 8618.5126953125, -5674.203125, 0.306627005338668823, 1.099556446075439453, 0, 0, 0.522498130798339843, 0.852640450000762939, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+27, 180917, 530, 3430, 3460, 1, 1, 8621.2236328125, -5671.03857421875, 0.184166997671127319, 4.991643905639648437, 0, 0, -0.60181427001953125, 0.798636078834533691, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+28, 180917, 530, 3430, 3460, 1, 1, 8775.6767578125, -5683.384765625, 0.09130900353193283, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+29, 180917, 530, 3430, 3460, 1, 1, 8777.2607421875, -5685.15576171875, 0.245699003338813781, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+30, 180917, 530, 3430, 3460, 1, 1, 8674.56640625, -5686.62744140625, 0.252530008554458618, 0.785396754741668701, 0, 0, 0.38268280029296875, 0.923879802227020263, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+31, 180917, 530, 3430, 3460, 1, 1, 8627.6865234375, -5674.00390625, 0.601273000240325927, 3.019413232803344726, 0, 0, 0.998134603037109375, 0.061051756143569946, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+32, 180917, 530, 3430, 3460, 1, 1, 8629.25, -5671.556640625, 0.449225008487701416, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+33, 180917, 530, 3430, 3460, 1, 1, 8626.0439453125, -5670.52734375, 0.292910009622573852, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+34, 180917, 530, 3430, 3460, 1, 1, 8883.1611328125, -5737.95166015625, 0.075424000620841979, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+35, 180917, 530, 3430, 3460, 1, 1, 8746.26171875, -5691.97216796875, 0.339785993099212646, 5.061456203460693359, 0, 0, -0.57357597351074218, 0.819152355194091796, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+36, 180917, 530, 3430, 3460, 1, 1, 8784.421875, -5747.7373046875, 0.232134997844696044, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+37, 180917, 530, 3430, 3460, 1, 1, 8673.607421875, -5689.6552734375, 0.596818983554840087, 2.338739633560180664, 0, 0, 0.920504570007324218, 0.3907318115234375, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+38, 180917, 530, 3430, 3460, 1, 1, 8848.1298828125, -5716.017578125, 0.576173007488250732, 3.001946926116943359, 0, 0, 0.997563362121582031, 0.069766148924827575, 30, 255, 1, 0), -- 180917 (Area: 3460 - Difficulty: 0)
|
||||
(@OGUID+39, 180917, 530, 3430, 3460, 1, 1, 8743.2236328125, -5693.51123046875, 0.123534001410007476, 5.864306926727294921, 0, 0, -0.20791149139404296, 0.978147625923156738, 30, 255, 1, 0);
|
||||
|
||||
DELETE FROM `pool_template` WHERE `entry`=505;
|
||||
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
|
||||
(505, 6, 'Captain Kelisendra\'s Cargo (6 spawns)');
|
||||
DELETE FROM `pool_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+39;
|
||||
INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES
|
||||
(@OGUID+0, 505, 0, 'Captain Kelisendra\'s Cargo 1 of 40'),
|
||||
(@OGUID+1, 505, 0, 'Captain Kelisendra\'s Cargo 2 of 40'),
|
||||
(@OGUID+2, 505, 0, 'Captain Kelisendra\'s Cargo 3 of 40'),
|
||||
(@OGUID+3, 505, 0, 'Captain Kelisendra\'s Cargo 4 of 40'),
|
||||
(@OGUID+4, 505, 0, 'Captain Kelisendra\'s Cargo 5 of 40'),
|
||||
(@OGUID+5, 505, 0, 'Captain Kelisendra\'s Cargo 6 of 40'),
|
||||
(@OGUID+6, 505, 0, 'Captain Kelisendra\'s Cargo 7 of 40'),
|
||||
(@OGUID+7, 505, 0, 'Captain Kelisendra\'s Cargo 8 of 40'),
|
||||
(@OGUID+8, 505, 0, 'Captain Kelisendra\'s Cargo 9 of 40'),
|
||||
(@OGUID+9, 505, 0, 'Captain Kelisendra\'s Cargo 10 of 40'),
|
||||
(@OGUID+10, 505, 0, 'Captain Kelisendra\'s Cargo 11 of 40'),
|
||||
(@OGUID+11, 505, 0, 'Captain Kelisendra\'s Cargo 12 of 40'),
|
||||
(@OGUID+12, 505, 0, 'Captain Kelisendra\'s Cargo 13 of 40'),
|
||||
(@OGUID+13, 505, 0, 'Captain Kelisendra\'s Cargo 14 of 40'),
|
||||
(@OGUID+14, 505, 0, 'Captain Kelisendra\'s Cargo 15 of 40'),
|
||||
(@OGUID+15, 505, 0, 'Captain Kelisendra\'s Cargo 16 of 40'),
|
||||
(@OGUID+16, 505, 0, 'Captain Kelisendra\'s Cargo 17 of 40'),
|
||||
(@OGUID+17, 505, 0, 'Captain Kelisendra\'s Cargo 18 of 40'),
|
||||
(@OGUID+18, 505, 0, 'Captain Kelisendra\'s Cargo 19 of 40'),
|
||||
(@OGUID+19, 505, 0, 'Captain Kelisendra\'s Cargo 20 of 40'),
|
||||
(@OGUID+20, 505, 0, 'Captain Kelisendra\'s Cargo 21 of 40'),
|
||||
(@OGUID+21, 505, 0, 'Captain Kelisendra\'s Cargo 22 of 40'),
|
||||
(@OGUID+22, 505, 0, 'Captain Kelisendra\'s Cargo 23 of 40'),
|
||||
(@OGUID+23, 505, 0, 'Captain Kelisendra\'s Cargo 24 of 40'),
|
||||
(@OGUID+24, 505, 0, 'Captain Kelisendra\'s Cargo 25 of 40'),
|
||||
(@OGUID+25, 505, 0, 'Captain Kelisendra\'s Cargo 26 of 40'),
|
||||
(@OGUID+26, 505, 0, 'Captain Kelisendra\'s Cargo 27 of 40'),
|
||||
(@OGUID+27, 505, 0, 'Captain Kelisendra\'s Cargo 28 of 40'),
|
||||
(@OGUID+28, 505, 0, 'Captain Kelisendra\'s Cargo 29 of 40'),
|
||||
(@OGUID+29, 505, 0, 'Captain Kelisendra\'s Cargo 30 of 40'),
|
||||
(@OGUID+30, 505, 0, 'Captain Kelisendra\'s Cargo 31 of 40'),
|
||||
(@OGUID+31, 505, 0, 'Captain Kelisendra\'s Cargo 32 of 40'),
|
||||
(@OGUID+32, 505, 0, 'Captain Kelisendra\'s Cargo 33 of 40'),
|
||||
(@OGUID+33, 505, 0, 'Captain Kelisendra\'s Cargo 34 of 40'),
|
||||
(@OGUID+34, 505, 0, 'Captain Kelisendra\'s Cargo 35 of 40'),
|
||||
(@OGUID+35, 505, 0, 'Captain Kelisendra\'s Cargo 36 of 40'),
|
||||
(@OGUID+36, 505, 0, 'Captain Kelisendra\'s Cargo 37 of 40'),
|
||||
(@OGUID+37, 505, 0, 'Captain Kelisendra\'s Cargo 38 of 40'),
|
||||
(@OGUID+38, 505, 0, 'Captain Kelisendra\'s Cargo 39 of 40'),
|
||||
(@OGUID+39, 505, 0, 'Captain Kelisendra\'s Cargo 40 of 40');
|
||||
@@ -0,0 +1,5 @@
|
||||
-- DB update 2022_10_07_06 -> 2022_10_08_00
|
||||
--
|
||||
DELETE FROM `creature_queststarter` WHERE (`quest` = 249);
|
||||
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES
|
||||
(313, 249);
|
||||
@@ -0,0 +1,5 @@
|
||||
-- DB update 2022_10_08_00 -> 2022_10_09_00
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_cthun_dark_glare';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(26029, 'spell_cthun_dark_glare');
|
||||
@@ -0,0 +1,4 @@
|
||||
-- DB update 2022_10_09_00 -> 2022_10_11_00
|
||||
--
|
||||
UPDATE `creature_template_addon` SET `auras` = '25801' WHERE (`entry` = 15229);
|
||||
UPDATE `creature_addon` SET `auras` = '25801' WHERE `guid` BETWEEN 87901 AND 87906;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_10_11_00 -> 2022_10_11_01
|
||||
--
|
||||
DELETE FROM `creature_loot_template` WHERE `entry` IN (15229, 15230, 15233, 15235, 15236, 15240, 15246, 15247, 15249, 15250, 15252, 15262, 15264, 15277, 15311, 15312) AND `Item` BETWEEN 20866 AND 20873;
|
||||
@@ -0,0 +1,5 @@
|
||||
-- DB update 2022_10_11_01 -> 2022_10_11_02
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_cthun_digestive_acid';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(26476, 'spell_cthun_digestive_acid');
|
||||
@@ -0,0 +1,10 @@
|
||||
-- DB update 2022_10_11_02 -> 2022_10_11_03
|
||||
--
|
||||
DELETE FROM `pool_creature` WHERE `pool_entry`=1004 AND `guid` IN (33621, 34520);
|
||||
INSERT INTO `pool_creature` (`guid`, `pool_entry`, `description`) VALUES
|
||||
(33621, 1004, 'Spawn of Hakkar (5708) - Spawn 1'),
|
||||
(34520, 1004, 'Spawn of Hakkar (5708) - Spawn 2');
|
||||
|
||||
DELETE FROM `pool_template` WHERE `entry`=1004;
|
||||
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
|
||||
(1004, 1, 'Spawn of Hakkar (5708)');
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_10_11_03 -> 2022_10_11_04
|
||||
--
|
||||
UPDATE `creature_template_addon` SET `bytes2` = 1 WHERE `entry` IN (15275, 15276);
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_10_11_04 -> 2022_10_11_05
|
||||
-- Springpaw Stalker 213/445 Elder Springpaw 112/238 drop rate of Springpaw Pelt (~47.5% 325/683)
|
||||
UPDATE `creature_loot_template` SET `Chance`='45' WHERE `Item`=20772;
|
||||
@@ -0,0 +1,9 @@
|
||||
-- DB update 2022_10_11_05 -> 2022_10_11_06
|
||||
--
|
||||
DELETE FROM `creature` WHERE `guid` BETWEEN 160359 AND 160363;
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `MovementType`) VALUES
|
||||
(160359, 8387, 0, 0, 1, 1747.24, -5859.6, -90.3817, 3.98543, 300, 0, 0),
|
||||
(160360, 8388, 0, 0, 1, 1747.62, -5862.27, -90.9249, 3.17332, 300, 0, 0),
|
||||
(160361, 8389, 0, 0, 1, 1748.87, -5863.46, -90.2665, 2.83088, 300, 0, 0),
|
||||
(160362, 8394, 0, 0, 1, 1746.45, -5861.29, -91.4165, 3.20841, 300, 0, 0),
|
||||
(160363, 8478, 0, 0, 1, 1916.44, -5733.37, 10.1936, 4.10397, 300, 0, 0);
|
||||
@@ -0,0 +1,9 @@
|
||||
-- DB update 2022_10_11_06 -> 2022_10_11_07
|
||||
--
|
||||
-- Replenishing the Healing Crystals (9280 Draenei Version) (DROP QUEST)
|
||||
-- Vial of Moth Blood (item 22889): 50/50
|
||||
UPDATE `creature_loot_template` SET `Chance`=100 WHERE `Entry`=16517 AND `Item`=22934 AND `Reference`=0 AND `GroupId`=0;
|
||||
|
||||
-- What Must Be Done... (9293) (DROP QUEST) (DONE)
|
||||
-- Lasher Sample (item 16517): 50/50
|
||||
UPDATE `creature_loot_template` SET `Chance`=100 WHERE `Entry`=16520 AND `Item`=22889 AND `Reference`=0 AND `GroupId`=0;
|
||||
@@ -0,0 +1,21 @@
|
||||
-- DB update 2022_10_11_07 -> 2022_10_11_08
|
||||
--
|
||||
UPDATE `creature_addon` SET `auras`='18950' WHERE `guid` IN (79927, 79929, 79930, 79931, 79932, 79948, 53290, 53299, 53594, 53601, 53650, 53674, 53675, 53676, 46483, 46484, 46485, 46486, 46487, 46488, 46490, 46491, 46492, 46493, 46494, 46495, 46496, 46497, 46498, 46499, 46500, 78725, 78726, 78727, 78728, 78729, 126935, 126938);
|
||||
UPDATE `creature_addon` SET `auras`='14111' WHERE `guid` IN (23967);
|
||||
UPDATE `creature_addon` SET `auras`='11838' WHERE `guid` IN (49766, 49763, 49762, 49202, 49201, 49767, 49195);
|
||||
UPDATE `creature_addon` SET `auras`='53668' WHERE `guid` IN (127907, 127908, 127909, 127910, 127911, 127912, 127913, 127914, 127915, 127916, 127917, 127918, 127919, 127920, 127921, 127922, 127923, 127924, 127925, 127926, 127927, 127928, 127929, 127930, 127963, 127964, 127965, 127966, 127967, 127968, 127969, 127970, 127971, 127972, 127973, 127974, 127975, 127976, 127977, 127978);
|
||||
UPDATE `creature_addon` SET `auras`='28362' WHERE `guid` IN (97718, 97724, 97736, 97747, 128136);
|
||||
UPDATE `creature_addon` SET `auras`='12550' WHERE `guid` IN (81845, 60642, 60649, 60650, 60652, 60654, 60655, 60656);
|
||||
UPDATE `creature_addon` SET `auras`='29152' WHERE `guid` IN (75958, 75959, 75960, 75961);
|
||||
UPDATE `creature_addon` SET `auras`='39936' WHERE `guid` IN (12481);
|
||||
UPDATE `creature_addon` SET `auras`='32566 46967' WHERE `guid` IN (117136, 117140);
|
||||
UPDATE `creature_addon` SET `auras`='47015' WHERE `guid` IN (101131, 101132, 101135, 101138, 101142, 101157, 101171, 133248, 133249);
|
||||
UPDATE `creature_addon` SET `auras`='16345' WHERE `guid` IN (127403, 127404);
|
||||
UPDATE `creature_addon` SET `auras`='17327' WHERE `guid` IN (86438, 86437);
|
||||
UPDATE `creature_addon` SET `auras`='48154' WHERE `guid` IN (102075, 102082, 102083, 102084, 102085, 102086, 102087, 102088, 102089, 102090, 102091, 102092, 102093, 102094, 102097, 105717);
|
||||
UPDATE `creature_addon` SET `auras`='48602' WHERE `guid` IN (110538);
|
||||
UPDATE `creature_addon` SET `auras`='54608' WHERE `guid` IN (83027, 88732);
|
||||
UPDATE `creature_addon` SET `auras`='52530' WHERE `guid` IN (126954);
|
||||
UPDATE `creature_addon` SET `auras`='4368' WHERE `guid` IN (112957, 113436, 113438);
|
||||
UPDATE `creature_addon` SET `auras`='63007' WHERE `guid` IN (136604, 136606, 136608);
|
||||
UPDATE `creature_addon` SET `auras`='64644' WHERE `guid` IN (136272, 136273, 136282);
|
||||
@@ -0,0 +1,19 @@
|
||||
-- DB update 2022_10_11_08 -> 2022_10_13_00
|
||||
--
|
||||
ALTER TABLE `spell_proc`
|
||||
CHANGE `spellId` `SpellId` INT(11) NOT NULL DEFAULT 0 FIRST,
|
||||
CHANGE `schoolMask` `SchoolMask` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpellId`,
|
||||
CHANGE `spellFamilyName` `SpellFamilyName` SMALLINT(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `SchoolMask`,
|
||||
CHANGE `spellFamilyMask0` `SpellFamilyMask0` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpellFamilyName`,
|
||||
CHANGE `spellFamilyMask1` `SpellFamilyMask1` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpellFamilyMask0`,
|
||||
CHANGE `spellFamilyMask2` `SpellFamilyMask2` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpellFamilyMask1`,
|
||||
CHANGE `typeMask` `ProcFlags` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpellFamilyMask2`,
|
||||
CHANGE `spellTypeMask` `SpellTypeMask` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ProcFlags`,
|
||||
CHANGE `spellPhaseMask` `SpellPhaseMask` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpellTypeMask`,
|
||||
CHANGE `hitMask` `HitMask` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpellPhaseMask`,
|
||||
CHANGE `attributesMask` `AttributesMask` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `HitMask`,
|
||||
CHANGE `ratePerMinute` `ProcsPerMinute` FLOAT NOT NULL DEFAULT 0 AFTER `AttributesMask`,
|
||||
CHANGE `chance` `Chance` FLOAT NOT NULL DEFAULT 0 AFTER `ProcsPerMinute`,
|
||||
CHANGE `cooldown` `Cooldown` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Chance`,
|
||||
CHANGE `charges` `Charges` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Cooldown`;
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
-- DB update 2022_10_13_00 -> 2022_10_14_00
|
||||
UPDATE `broadcast_text_locale` SET `MaleText`="Esta es nuestra batalla final. El paso del tiempo se hará eco de lo que aquí ocurra. Sin importar el resultado, sabrán que luchamos con honor. ¡Que luchamos por la libertad y la seguridad de nuestro pueblo!" WHERE `ID`=36923 AND `locale` IN ('esEs', 'esMX');
|
||||
|
||||
UPDATE `creature_text` SET `BroadcastTextId`=37037 WHERE `CreatureID`=38607 AND `GroupID`=13 AND `ID`=0;
|
||||
UPDATE `creature_text` SET `BroadcastTextId`=37043 WHERE `CreatureID`=38607 AND `GroupID`=14 AND `ID`=0;
|
||||
UPDATE `creature_text` SET `BroadcastTextId`=37046 WHERE `CreatureID`=38607 AND `GroupID`=15 AND `ID`=0;
|
||||
|
||||
UPDATE `creature_template` SET `gossip_menu_id`=10953, `npcflag`=`npcflag`|1 WHERE `entry`=37187;
|
||||
|
||||
DELETE FROM `gossip_menu` WHERE `MenuID`=10953;
|
||||
|
||||
INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES
|
||||
(10953, 15217);
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_10_14_00 -> 2022_10_14_01
|
||||
--
|
||||
UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask`|33554432 WHERE `entry` = 15517;
|
||||
@@ -0,0 +1,4 @@
|
||||
-- DB update 2022_10_14_01 -> 2022_10_14_02
|
||||
--
|
||||
UPDATE `creature_template` SET `flags_extra` = 0 WHERE `entry` IN (14882, 14883, 14825, 13996);
|
||||
UPDATE `creature_template` SET `flags_extra` = 33554432 WHERE (`entry` = 15264);
|
||||
@@ -0,0 +1,893 @@
|
||||
-- DB update 2022_10_14_02 -> 2022_10_15_00
|
||||
--
|
||||
SET @GUID := 1976934;
|
||||
|
||||
DELETE FROM `creature` WHERE `guid` BETWEEN @GUID AND @GUID+26;
|
||||
DELETE FROM `creature` WHERE `guid` = 43494; # There is one existing shark that we are updating
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `MovementType`) VALUES
|
||||
(@GUID+0, 5434, 0, 0, 0, -9540.26, -4662.27, -48.3184, 0.902437, 900, 0, 2),
|
||||
(@GUID+1, 5434, 0, 0, 0, -10034.9, -4648.66, -49.2208, 0.0410688, 900, 0, 2),
|
||||
(@GUID+2, 5434, 0, 0, 1, -4158.29, -4547.67, -6.97583, 5.22403, 900, 0, 2),
|
||||
(@GUID+3, 5434, 0, 0, 0, -11170, -4093.91, -5.86852, 4.3931, 900, 0, 2),
|
||||
(@GUID+4, 5434, 0, 0, 1, -3030.62, -4244.16, -11.4944, 3.28582, 900, 0, 2),
|
||||
(@GUID+5, 5434, 0, 0, 1, -4102.56, -4588.74, -53.1956, 2.30332, 900, 0, 2),
|
||||
(@GUID+6, 5434, 0, 0, 1, -3993.77, -4745.56, -29.1755, 0.219198, 900, 0, 2),
|
||||
(@GUID+7, 12125, 0, 0, 1, 2247.58, -7314.71, -32.7716, 5.07837, 900, 10, 1),
|
||||
(@GUID+8, 12125, 0, 0, 1, 5164.87, -6681.64, -30.195, 5.30724, 900, 10, 1),
|
||||
(@GUID+9, 12125, 0, 0, 1, 2807.91, -7145.15, -24.6603, 1.25786, 900, 10, 1),
|
||||
(@GUID+10, 12125, 0, 0, 1, 4029.04, -6521.56, -11.6539, 2.93048, 900, 10, 1),
|
||||
(@GUID+11, 12125, 0, 0, 1, 4146.76, -6796.36, -12.9569, 1.08111, 900, 10, 1),
|
||||
(@GUID+12, 12125, 0, 0, 1, 2787.04, -7286.35, -13.3887, 2.88011, 900, 10, 1),
|
||||
(@GUID+13, 12125, 0, 0, 1, 5107.84, -6557.01, -22.213, 5.69849, 900, 10, 1),
|
||||
(@GUID+14, 12125, 0, 0, 1, 3575.07, -6375.8, -33.5823, 4.58606, 900, 10, 1),
|
||||
(@GUID+15, 12125, 0, 0, 1, 2141.54, -7237.98, -32.0054, 1.83467, 900, 10, 1),
|
||||
(@GUID+16, 5435, 0, 0, 0, 3221.9, 1710.47, -49.2366, 0.715585, 300, 0, 2),
|
||||
(@GUID+17, 5435, 0, 0, 0, 3234.78, 1040.16, -49.0336, 2.08338, 300, 0, 2),
|
||||
(@GUID+18, 5435, 0, 0, 0, 3221.29, 530.995, -49.0322, 6.16568, 300, 0, 2),
|
||||
(@GUID+19, 5435, 0, 0, 1, 1550.59, -5378.97, -32.535, 3.28073, 300, 0, 2),
|
||||
(@GUID+20, 5435, 0, 0, 1, 1284, -5408.57, -50.3039, 3.49243, 300, 0, 2),
|
||||
(@GUID+21, 5435, 0, 0, 1, 912.371, -5415.92, -55.1195, 0, 300, 0, 2),
|
||||
(@GUID+22, 5435, 0, 0, 1, 493.326, -5371.27, -49.8881, 0, 300, 0, 2),
|
||||
(@GUID+23, 5435, 0, 0, 1, -326.584, -5558.28, -32.5737, 3.88357, 300, 0, 2),
|
||||
(@GUID+24, 5435, 0, 0, 1, -576.123, -5817.38, -32.5473, 3.15728, 300, 0, 2),
|
||||
(@GUID+25, 5435, 0, 0, 1, -1385.02, -5779.74, -18.0079, 3.34814, 300, 0, 2),
|
||||
(@GUID+26, 5435, 0, 0, 1, -1753.7, -5591.55, -33.6493, 3.02857, 300, 0, 2),
|
||||
(43494, 5435, 0, 0, 1, -1115.53, -4306.33, -7.68768, 3.67432, 300, 0, 2);
|
||||
|
||||
|
||||
SET @PATH0 := (@GUID+0) * 10;
|
||||
SET @PATH1 := (@GUID+1) * 10;
|
||||
SET @PATH2 := (@GUID+2) * 10;
|
||||
SET @PATH3 := (@GUID+3) * 10;
|
||||
SET @PATH4 := (@GUID+4) * 10;
|
||||
SET @PATH5 := (@GUID+5) * 10;
|
||||
SET @PATH6 := (@GUID+6) * 10;
|
||||
SET @PATH16 := (@GUID+16) * 10;
|
||||
SET @PATH17 := (@GUID+17) * 10;
|
||||
SET @PATH18 := (@GUID+18) * 10;
|
||||
SET @PATH19 := (@GUID+19) * 10;
|
||||
SET @PATH20 := (@GUID+20) * 10;
|
||||
SET @PATH21 := (@GUID+21) * 10;
|
||||
SET @PATH22 := (@GUID+22) * 10;
|
||||
SET @PATH23 := (@GUID+23) * 10;
|
||||
SET @PATH24 := (@GUID+24) * 10;
|
||||
SET @PATH25 := (@GUID+25) * 10;
|
||||
SET @PATH26 := (@GUID+26) * 10;
|
||||
SET @PATH27 := (43494) * 10;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` BETWEEN @GUID AND @GUID+26;
|
||||
DELETE FROM `creature_addon` WHERE `guid` = 43494;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES
|
||||
(@GUID+0, @PATH0),
|
||||
(@GUID+1, @PATH1),
|
||||
(@GUID+2, @PATH2),
|
||||
(@GUID+3, @PATH3),
|
||||
(@GUID+4, @PATH4),
|
||||
(@GUID+5, @PATH5),
|
||||
(@GUID+6, @PATH6),
|
||||
(@GUID+16, @PATH16),
|
||||
(@GUID+17, @PATH17),
|
||||
(@GUID+18, @PATH18),
|
||||
(@GUID+19, @PATH19),
|
||||
(@GUID+20, @PATH20),
|
||||
(@GUID+21, @PATH21),
|
||||
(@GUID+22, @PATH22),
|
||||
(@GUID+23, @PATH23),
|
||||
(@GUID+24, @PATH24),
|
||||
(@GUID+25, @PATH25),
|
||||
(@GUID+26, @PATH26),
|
||||
(43494, @PATH27);
|
||||
|
||||
|
||||
DELETE FROM `waypoint_data` WHERE `id` IN (@PATH0, @PATH1, @PATH2, @PATH3, @PATH4, @PATH5, @PATH6, @PATH16, @PATH17,
|
||||
@PATH18, @PATH19, @PATH20, @PATH21, @PATH22, @PATH23, @PATH24, @PATH25, @PATH26, @PATH27);
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH0, 1, -9540.26, -4662.27, -48.3184, 100, 0),
|
||||
(@PATH0, 2, -9510.95, -4663.54, -49.0854, 100, 0),
|
||||
(@PATH0, 3, -9502.68, -4656.36, -49.2182, 100, 0),
|
||||
(@PATH0, 4, -9484.78, -4625.73, -48.3606, 100, 0),
|
||||
(@PATH0, 5, -9474.86, -4617.87, -48.6155, 100, 0),
|
||||
(@PATH0, 6, -9453.22, -4604.26, -45.4023, 100, 0),
|
||||
(@PATH0, 7, -9448.9, -4584.55, -38.8605, 100, 0),
|
||||
(@PATH0, 8, -9450.66, -4599.8, -44.0295, 100, 0),
|
||||
(@PATH0, 9, -9468.34, -4614.03, -48.1234, 100, 0),
|
||||
(@PATH0, 10, -9478.85, -4620, -48.5316, 100, 0),
|
||||
(@PATH0, 11, -9501.04, -4653.21, -49.1719, 100, 0),
|
||||
(@PATH0, 12, -9504.49, -4660.54, -49.2182, 100, 0),
|
||||
(@PATH0, 13, -9534.63, -4662.53, -48.3441, 100, 0),
|
||||
(@PATH0, 14, -9549.95, -4674.56, -48.0882, 100, 0),
|
||||
(@PATH0, 15, -9567.66, -4705.63, -46.2169, 100, 0),
|
||||
(@PATH0, 16, -9565.93, -4723.82, -48.5166, 100, 0),
|
||||
(@PATH0, 17, -9574.32, -4754.11, -45.157, 100, 0),
|
||||
(@PATH0, 18, -9573.15, -4773.85, -45.3085, 100, 0),
|
||||
(@PATH0, 19, -9570.63, -4793.9, -46.0685, 100, 0),
|
||||
(@PATH0, 20, -9568.1, -4809.89, -47.1271, 100, 0),
|
||||
(@PATH0, 21, -9566.79, -4822.01, -47.9993, 100, 0),
|
||||
(@PATH0, 22, -9570.67, -4837.49, -48.782, 100, 0),
|
||||
(@PATH0, 23, -9579.77, -4850.71, -49.511, 100, 0),
|
||||
(@PATH0, 24, -9595.7, -4862.64, -48.9848, 100, 0),
|
||||
(@PATH0, 25, -9610.89, -4861.85, -47.8268, 100, 0),
|
||||
(@PATH0, 26, -9628.04, -4851.81, -49.0654, 100, 0),
|
||||
(@PATH0, 27, -9636.57, -4843.27, -49.518, 100, 0),
|
||||
(@PATH0, 28, -9641.53, -4823.97, -49.4116, 100, 0),
|
||||
(@PATH0, 29, -9642.23, -4819.99, -49.3534, 100, 0),
|
||||
(@PATH0, 30, -9660.74, -4805.98, -49.3035, 100, 0),
|
||||
(@PATH0, 31, -9680.09, -4800.96, -49.088, 100, 0),
|
||||
(@PATH0, 32, -9699.87, -4802.75, -47.314, 100, 0),
|
||||
(@PATH0, 33, -9719.02, -4798.74, -49.1158, 100, 0),
|
||||
(@PATH0, 34, -9733.33, -4791.37, -49.3066, 100, 0),
|
||||
(@PATH0, 35, -9741.43, -4778.42, -49.2858, 100, 0),
|
||||
(@PATH0, 36, -9750.4, -4755.83, -49.3115, 100, 0),
|
||||
(@PATH0, 37, -9751.78, -4752.03, -49.3166, 100, 0),
|
||||
(@PATH0, 38, -9774.5, -4735.79, -49.3036, 100, 0),
|
||||
(@PATH0, 39, -9780.61, -4732.24, -49.2607, 100, 0),
|
||||
(@PATH0, 40, -9798.13, -4722.02, -49.221, 100, 0),
|
||||
(@PATH0, 41, -9809.75, -4706.02, -49.2488, 100, 0),
|
||||
(@PATH0, 42, -9829.85, -4685.8, -49.2461, 100, 0),
|
||||
(@PATH0, 43, -9814.75, -4699.31, -49.2565, 100, 0),
|
||||
(@PATH0, 44, -9803.68, -4716.14, -49.2294, 100, 0),
|
||||
(@PATH0, 45, -9787.81, -4727.92, -49.2189, 100, 0),
|
||||
(@PATH0, 46, -9780.87, -4732.07, -49.2576, 100, 0),
|
||||
(@PATH0, 47, -9755.89, -4745.45, -49.3151, 100, 0),
|
||||
(@PATH0, 48, -9751.84, -4751.82, -49.3166, 100, 0),
|
||||
(@PATH0, 49, -9744.44, -4770.55, -49.2736, 100, 0),
|
||||
(@PATH0, 50, -9738.76, -4785.71, -49.3193, 100, 0),
|
||||
(@PATH0, 51, -9722.9, -4797.03, -49.2363, 100, 0),
|
||||
(@PATH0, 52, -9707.77, -4802.65, -48.2808, 100, 0),
|
||||
(@PATH0, 53, -9688.55, -4800.59, -48.6172, 100, 0),
|
||||
(@PATH0, 54, -9668.74, -4803.05, -49.2412, 100, 0),
|
||||
(@PATH0, 55, -9647.46, -4814.13, -49.3035, 100, 0),
|
||||
(@PATH0, 56, -9642.3, -4819.55, -49.346, 100, 0),
|
||||
(@PATH0, 57, -9639.36, -4835.5, -49.5477, 100, 0),
|
||||
(@PATH0, 58, -9634.19, -4845.99, -49.3801, 100, 0),
|
||||
(@PATH0, 59, -9618.6, -4858.64, -48.6574, 100, 0),
|
||||
(@PATH0, 60, -9603.6, -4863.34, -48.2259, 100, 0),
|
||||
(@PATH0, 61, -9586.09, -4856.18, -48.7782, 100, 0),
|
||||
(@PATH0, 62, -9572.62, -4841.47, -48.9365, 100, 0),
|
||||
(@PATH0, 63, -9567.14, -4826.14, -48.0559, 100, 0),
|
||||
(@PATH0, 64, -9567.54, -4814.27, -47.4214, 100, 0),
|
||||
(@PATH0, 65, -9570, -4798.32, -46.2289, 100, 0),
|
||||
(@PATH0, 66, -9572.12, -4781.29, -45.4475, 100, 0),
|
||||
(@PATH0, 67, -9574.88, -4762.27, -45.1159, 100, 0),
|
||||
(@PATH0, 68, -9566.63, -4731.69, -48.2965, 100, 0),
|
||||
(@PATH0, 69, -9568.63, -4712.32, -47.3648, 100, 0),
|
||||
(@PATH0, 70, -9554.24, -4681.05, -46.6029, 100, 0),
|
||||
(@PATH0, 71, -9542.46, -4665.06, -48.1912, 100, 0),
|
||||
(@PATH1, 1, -10017.7, -4647.95, -49.2208, 100, 0),
|
||||
(@PATH1, 2, -10003.8, -4654.64, -49.2208, 100, 0),
|
||||
(@PATH1, 3, -9981.58, -4663.93, -49.1897, 100, 0),
|
||||
(@PATH1, 4, -9950.29, -4671.73, -48.1528, 100, 0),
|
||||
(@PATH1, 5, -9929.52, -4683.88, -48.958, 100, 0),
|
||||
(@PATH1, 6, -9912.66, -4695.18, -49.1841, 100, 0),
|
||||
(@PATH1, 7, -9898.56, -4702.3, -46.6121, 100, 0),
|
||||
(@PATH1, 8, -9872.57, -4694.8, -49.0019, 100, 0),
|
||||
(@PATH1, 9, -9854.3, -4686.15, -49.2403, 100, 0),
|
||||
(@PATH1, 10, -9838.53, -4682.98, -49.2461, 100, 0),
|
||||
(@PATH1, 11, -9814.08, -4695.94, -49.2461, 100, 0),
|
||||
(@PATH1, 12, -9796.85, -4706.59, -49.2858, 100, 0),
|
||||
(@PATH1, 13, -9791.76, -4729.25, -49.2182, 100, 0),
|
||||
(@PATH1, 14, -9794.23, -4713.25, -49.2718, 100, 0),
|
||||
(@PATH1, 15, -9807.46, -4700.01, -49.2571, 100, 0),
|
||||
(@PATH1, 16, -9831.67, -4685.29, -49.2461, 100, 0),
|
||||
(@PATH1, 17, -9846.91, -4684.28, -49.2461, 100, 0),
|
||||
(@PATH1, 18, -9865.59, -4691.63, -49.2103, 100, 0),
|
||||
(@PATH1, 19, -9893.55, -4703.19, -47.4117, 100, 0),
|
||||
(@PATH1, 20, -9908, -4697.79, -48.5825, 100, 0),
|
||||
(@PATH1, 21, -9924.93, -4686.92, -49.0918, 100, 0),
|
||||
(@PATH1, 22, -9945.25, -4673.66, -48.0806, 100, 0),
|
||||
(@PATH1, 23, -9976.33, -4665.55, -49.0996, 100, 0),
|
||||
(@PATH1, 24, -9995.42, -4658.87, -49.2119, 100, 0),
|
||||
(@PATH1, 25, -10009.2, -4650.6, -49.2208, 100, 0),
|
||||
(@PATH1, 26, -10032.4, -4648.55, -49.2208, 100, 0),
|
||||
(@PATH1, 27, -10053.4, -4659.28, -49.2208, 100, 0),
|
||||
(@PATH1, 28, -10088.8, -4662.19, -49.2092, 100, 0),
|
||||
(@PATH1, 29, -10113.1, -4674.93, -49.2373, 100, 0),
|
||||
(@PATH1, 30, -10131.5, -4683.07, -49.2763, 100, 0),
|
||||
(@PATH1, 31, -10151.2, -4681.23, -49.2851, 100, 0),
|
||||
(@PATH1, 32, -10179.1, -4682.72, -49.3038, 100, 0),
|
||||
(@PATH1, 33, -10196.7, -4691.4, -49.3079, 100, 0),
|
||||
(@PATH1, 34, -10211.6, -4705.12, -49.232, 100, 0),
|
||||
(@PATH1, 35, -10242.4, -4709.6, -48.4739, 100, 0),
|
||||
(@PATH1, 36, -10266.2, -4705.85, -48.4166, 100, 0),
|
||||
(@PATH1, 37, -10293.8, -4699, -48.427, 100, 0),
|
||||
(@PATH1, 38, -10321.1, -4694.15, -48.7954, 100, 0),
|
||||
(@PATH1, 39, -10301.1, -4697.56, -48.5059, 100, 0),
|
||||
(@PATH1, 40, -10273.6, -4704.28, -48.3851, 100, 0),
|
||||
(@PATH1, 41, -10249.8, -4708.83, -48.4055, 100, 0),
|
||||
(@PATH1, 42, -10217.4, -4708.94, -49.1525, 100, 0),
|
||||
(@PATH1, 43, -10202.5, -4696.22, -49.2906, 100, 0),
|
||||
(@PATH1, 44, -10189.7, -4686.48, -49.3079, 100, 0),
|
||||
(@PATH1, 45, -10158.4, -4681.18, -49.2888, 100, 0),
|
||||
(@PATH1, 46, -10138.5, -4683.87, -49.2851, 100, 0),
|
||||
(@PATH1, 47, -10119.4, -4678.61, -49.2487, 100, 0),
|
||||
(@PATH1, 48, -10099.2, -4665.41, -49.2148, 100, 0),
|
||||
(@PATH1, 49, -10063.9, -4662.4, -49.2186, 100, 0),
|
||||
(@PATH1, 50, -10039.5, -4649.85, -49.2208, 100, 0),
|
||||
(@PATH2, 1, -4187.63, -4614.2, -8.1346, 4.30119, 0),
|
||||
(@PATH2, 2, -4185.98, -4695.78, -8.45387, 4.76064, 0),
|
||||
(@PATH2, 3, -4205.68, -4740.42, -7.87031, 4.04987, 0),
|
||||
(@PATH2, 4, -4216.77, -4776.76, -10.4417, 4.65855, 0),
|
||||
(@PATH2, 5, -4296.55, -4834.03, -4.87228, 2.45552, 0),
|
||||
(@PATH2, 6, -4237.93, -4790.58, -10.9209, 0.857235, 0),
|
||||
(@PATH2, 7, -4188.01, -4689.84, -10.2558, 1.54053, 0),
|
||||
(@PATH3, 1, -11175.4, -4102.79, -9.10943, 4.32634, 0),
|
||||
(@PATH3, 2, -11181.6, -4131.85, -8.30176, 4.49914, 0),
|
||||
(@PATH3, 3, -11190.3, -4184.73, -8.7279, 4.60516, 0),
|
||||
(@PATH4, 1, -3030.62, -4244.16, -11.4944, 100, 0),
|
||||
(@PATH4, 2, -3055.55, -4253.96, -10.8136, 100, 0),
|
||||
(@PATH4, 3, -3074.29, -4263.33, -11.1107, 100, 0),
|
||||
(@PATH4, 4, -3089.33, -4261.75, -9.56308, 100, 0),
|
||||
(@PATH4, 5, -3108.22, -4257.35, -7.88015, 100, 0),
|
||||
(@PATH4, 6, -3131.18, -4264.88, -11.2028, 100, 0),
|
||||
(@PATH4, 7, -3138.6, -4279.61, -14.8934, 100, 0),
|
||||
(@PATH4, 8, -3142.43, -4298.23, -19.011, 100, 0),
|
||||
(@PATH4, 9, -3136.88, -4332.61, -17.0448, 100, 0),
|
||||
(@PATH4, 10, -3123.3, -4363.71, -12.0653, 100, 0),
|
||||
(@PATH4, 11, -3118.96, -4379.8, -14.0912, 100, 0),
|
||||
(@PATH4, 12, -3110.22, -4401.15, -15.6736, 100, 0),
|
||||
(@PATH4, 13, -3090.6, -4419.03, -13.2305, 100, 0),
|
||||
(@PATH4, 14, -3063.29, -4428.8, -15.5224, 100, 0),
|
||||
(@PATH4, 15, -3042.32, -4435.48, -14.76, 100, 0),
|
||||
(@PATH4, 16, -3028.11, -4446.66, -15.6206, 100, 0),
|
||||
(@PATH4, 17, -3013.37, -4453, -18.9248, 100, 0),
|
||||
(@PATH4, 18, -2982.82, -4462.25, -18.0416, 100, 0),
|
||||
(@PATH4, 19, -2958.38, -4472.72, -16.8835, 100, 0),
|
||||
(@PATH4, 20, -2926.12, -4479.41, -18.2759, 100, 0),
|
||||
(@PATH4, 21, -2897.41, -4475.57, -17.7025, 100, 0),
|
||||
(@PATH4, 22, -2860.94, -4466.87, -18.2782, 100, 0),
|
||||
(@PATH4, 23, -2826.48, -4457.91, -16.5921, 100, 0),
|
||||
(@PATH4, 24, -2800.69, -4437.85, -12.1828, 100, 0),
|
||||
(@PATH4, 25, -2802.66, -4411.02, -8.17544, 100, 0),
|
||||
(@PATH4, 26, -2812.55, -4389.85, -10.6167, 100, 0),
|
||||
(@PATH4, 27, -2832.89, -4364.63, -15.046, 100, 0),
|
||||
(@PATH4, 28, -2862.55, -4326.08, -9.47994, 100, 0),
|
||||
(@PATH4, 29, -2881, -4302.39, -13.1053, 100, 0),
|
||||
(@PATH4, 30, -2906.11, -4272.7, -6.36328, 100, 0),
|
||||
(@PATH4, 31, -2940.94, -4260.35, -5.70127, 100, 0),
|
||||
(@PATH4, 32, -2972.85, -4253.79, -6.9984, 100, 0),
|
||||
(@PATH4, 33, -3005.32, -4247.76, -7.4105, 100, 0),
|
||||
(@PATH5, 1, -4102.56, -4588.74, -53.1956, 100, 0),
|
||||
(@PATH5, 2, -4112.05, -4575.82, -52.5505, 100, 0),
|
||||
(@PATH5, 3, -4114.17, -4560.13, -48.6823, 100, 0),
|
||||
(@PATH5, 4, -4108.5, -4537.78, -39.9451, 100, 0),
|
||||
(@PATH5, 5, -4117.58, -4509.19, -36.3802, 100, 0),
|
||||
(@PATH5, 6, -4140.31, -4512.26, -31.8574, 100, 0),
|
||||
(@PATH5, 7, -4152.69, -4521.02, -34.3289, 100, 0),
|
||||
(@PATH5, 8, -4156.88, -4535.06, -38.3804, 100, 0),
|
||||
(@PATH5, 9, -4157.71, -4551.9, -36.9737, 100, 0),
|
||||
(@PATH5, 10, -4155.46, -4573.13, -35.5532, 100, 0),
|
||||
(@PATH5, 11, -4153.25, -4591.41, -31.0155, 100, 0),
|
||||
(@PATH5, 12, -4138.95, -4604.08, -35.8834, 100, 0),
|
||||
(@PATH5, 13, -4119.61, -4620.42, -41.622, 100, 0),
|
||||
(@PATH5, 14, -4094.42, -4620.28, -42.2264, 100, 0),
|
||||
(@PATH5, 15, -4070.56, -4625.54, -34.091, 100, 0),
|
||||
(@PATH5, 16, -4054.21, -4633.18, -33.5871, 100, 0),
|
||||
(@PATH5, 17, -4034.17, -4641.97, -34.0616, 100, 0),
|
||||
(@PATH5, 18, -4026.06, -4646.81, -37.4944, 100, 0),
|
||||
(@PATH5, 19, -4006.6, -4655.28, -31.8536, 100, 0),
|
||||
(@PATH5, 20, -3993.96, -4660.93, -24.2768, 100, 0),
|
||||
(@PATH5, 21, -3982.08, -4654.01, -17.2645, 100, 0),
|
||||
(@PATH5, 22, -3975, -4640.6, -15.0961, 100, 0),
|
||||
(@PATH5, 23, -3980.59, -4620.78, -15.5821, 100, 0),
|
||||
(@PATH5, 24, -3988.32, -4610.43, -15.2164, 100, 0),
|
||||
(@PATH5, 25, -4011.74, -4601.65, -22.6568, 100, 0),
|
||||
(@PATH5, 26, -4029.15, -4611.47, -28.8181, 100, 0),
|
||||
(@PATH5, 27, -4053.27, -4624.59, -32.5492, 100, 0),
|
||||
(@PATH5, 28, -4077.43, -4634.86, -34.3769, 100, 0),
|
||||
(@PATH5, 29, -4101.83, -4648.47, -33.3999, 100, 0),
|
||||
(@PATH5, 30, -4117.03, -4658.54, -32.539, 100, 0),
|
||||
(@PATH5, 31, -4132.58, -4672.59, -33.3039, 100, 0),
|
||||
(@PATH5, 32, -4157.07, -4685.91, -39.8625, 100, 0),
|
||||
(@PATH5, 33, -4165.17, -4689.03, -41.6243, 100, 0),
|
||||
(@PATH5, 34, -4177.13, -4675.8, -38.3298, 100, 0),
|
||||
(@PATH5, 35, -4177.54, -4649.28, -32.7652, 100, 0),
|
||||
(@PATH5, 36, -4167.21, -4642.11, -28.9048, 100, 0),
|
||||
(@PATH5, 37, -4154.33, -4628.05, -29.0151, 100, 0),
|
||||
(@PATH5, 38, -4147.43, -4620.21, -30.9359, 100, 0),
|
||||
(@PATH5, 39, -4133.35, -4619.86, -34.7052, 100, 0),
|
||||
(@PATH5, 40, -4119.14, -4619.5, -40.6336, 100, 0),
|
||||
(@PATH5, 41, -4111.3, -4629.78, -39.1487, 100, 0),
|
||||
(@PATH5, 42, -4104.19, -4641.1, -35.5348, 100, 0),
|
||||
(@PATH5, 43, -4094.39, -4652.71, -35.0967, 100, 0),
|
||||
(@PATH5, 44, -4082.17, -4671.8, -37.4537, 100, 0),
|
||||
(@PATH5, 45, -4066.37, -4689.31, -48.5693, 100, 0),
|
||||
(@PATH5, 46, -4046.24, -4690.54, -50.8448, 100, 0),
|
||||
(@PATH5, 47, -4035.83, -4682.47, -45.8101, 100, 0),
|
||||
(@PATH5, 48, -4027.91, -4676.69, -44.4083, 100, 0),
|
||||
(@PATH5, 49, -4016.99, -4662.36, -40.466, 100, 0),
|
||||
(@PATH5, 50, -4016.13, -4644.71, -30.9278, 100, 0),
|
||||
(@PATH5, 51, -4025.79, -4626.72, -29.84, 100, 0),
|
||||
(@PATH5, 52, -4034.8, -4612.16, -30.1531, 100, 0),
|
||||
(@PATH5, 53, -4042.38, -4599.75, -34.1753, 100, 0),
|
||||
(@PATH5, 54, -4050.77, -4587.42, -39.1146, 100, 0),
|
||||
(@PATH5, 55, -4062.23, -4568.8, -48.1368, 100, 0),
|
||||
(@PATH5, 56, -4079.14, -4554.61, -44.9805, 100, 0),
|
||||
(@PATH5, 57, -4086.3, -4549.44, -41.8286, 100, 0),
|
||||
(@PATH5, 58, -4088.82, -4537.58, -39.5754, 100, 0),
|
||||
(@PATH5, 59, -4091.87, -4519.87, -35.8824, 100, 0),
|
||||
(@PATH5, 60, -4099.53, -4510.1, -35.2466, 100, 0),
|
||||
(@PATH5, 61, -4096.88, -4503.23, -32.0652, 100, 0),
|
||||
(@PATH5, 62, -4090.74, -4498.44, -31.4301, 100, 0),
|
||||
(@PATH5, 63, -4072.95, -4492.27, -30.8572, 100, 0),
|
||||
(@PATH5, 64, -4052.12, -4487.44, -26.0852, 100, 0),
|
||||
(@PATH5, 65, -4039.23, -4494.65, -26.6981, 100, 0),
|
||||
(@PATH5, 66, -4038.89, -4506.44, -28.8954, 100, 0),
|
||||
(@PATH5, 67, -4047.26, -4524.1, -34.5523, 100, 0),
|
||||
(@PATH5, 68, -4052.13, -4539, -40.8629, 100, 0),
|
||||
(@PATH5, 69, -4062.55, -4546.17, -43.1663, 100, 0),
|
||||
(@PATH5, 70, -4073.86, -4559.18, -45.1477, 100, 0),
|
||||
(@PATH5, 71, -4065.4, -4575.65, -45.0676, 100, 0),
|
||||
(@PATH5, 72, -4065, -4592.56, -41.9831, 100, 0),
|
||||
(@PATH5, 73, -4067.98, -4603.35, -42.4004, 100, 0),
|
||||
(@PATH5, 74, -4087.05, -4608.21, -47.3923, 100, 0),
|
||||
(@PATH5, 75, -4096.04, -4598.11, -50.857, 100, 0),
|
||||
(@PATH6, 1, -3993.77, -4745.56, -29.1755, 100, 0),
|
||||
(@PATH6, 2, -3985.37, -4743, -26.4626, 100, 0),
|
||||
(@PATH6, 3, -3976.09, -4734.27, -25.523, 100, 0),
|
||||
(@PATH6, 4, -3968.47, -4728.48, -25.0439, 100, 0),
|
||||
(@PATH6, 5, -3962.43, -4723.76, -24.2794, 100, 0),
|
||||
(@PATH6, 6, -3945.25, -4731.82, -21.7509, 100, 0),
|
||||
(@PATH6, 7, -3928.51, -4745.69, -19.8885, 100, 0),
|
||||
(@PATH6, 8, -3920.13, -4750.62, -20.1839, 100, 0),
|
||||
(@PATH6, 9, -3917.12, -4761.02, -23.9517, 100, 0),
|
||||
(@PATH6, 10, -3914.34, -4777.19, -28.7826, 100, 0),
|
||||
(@PATH6, 11, -3908.21, -4786.5, -32.1492, 100, 0),
|
||||
(@PATH6, 12, -3891.94, -4791.36, -38.9642, 100, 0),
|
||||
(@PATH6, 13, -3877.35, -4792.78, -41.746, 100, 0),
|
||||
(@PATH6, 14, -3852.21, -4777.36, -40.3801, 100, 0),
|
||||
(@PATH6, 15, -3839.8, -4769.47, -35.9343, 100, 0),
|
||||
(@PATH6, 16, -3829.1, -4762.66, -34.7203, 100, 0),
|
||||
(@PATH6, 17, -3821, -4746.53, -30.0452, 100, 0),
|
||||
(@PATH6, 18, -3813.05, -4734.29, -25.6092, 100, 0),
|
||||
(@PATH6, 19, -3821.02, -4720.48, -19.2793, 100, 0),
|
||||
(@PATH6, 20, -3836.9, -4723.6, -19.042, 100, 0),
|
||||
(@PATH6, 21, -3850.66, -4733.58, -21.9891, 100, 0),
|
||||
(@PATH6, 22, -3858.81, -4740.94, -22.8184, 100, 0),
|
||||
(@PATH6, 23, -3867.43, -4747.03, -24.1883, 100, 0),
|
||||
(@PATH6, 24, -3878.85, -4752.68, -24.8994, 100, 0),
|
||||
(@PATH6, 25, -3892.97, -4760.37, -26.2831, 100, 0),
|
||||
(@PATH6, 26, -3911.25, -4768.12, -25.824, 100, 0),
|
||||
(@PATH6, 27, -3921.43, -4769.59, -25.9358, 100, 0),
|
||||
(@PATH6, 28, -3942.06, -4767.52, -29.2243, 100, 0),
|
||||
(@PATH6, 29, -3951.98, -4763.25, -27.2036, 100, 0),
|
||||
(@PATH6, 30, -3951.73, -4748.25, -24.5187, 100, 0),
|
||||
(@PATH6, 31, -3951.68, -4731.77, -23.5419, 100, 0),
|
||||
(@PATH6, 32, -3947.06, -4717.95, -18.8374, 100, 0),
|
||||
(@PATH6, 33, -3933.56, -4706.95, -14.6858, 100, 0),
|
||||
(@PATH6, 34, -3914.81, -4711.37, -9.35688, 100, 0),
|
||||
(@PATH6, 35, -3901.29, -4706.21, -10.1683, 100, 0),
|
||||
(@PATH6, 36, -3890.38, -4697.49, -11.4398, 100, 0),
|
||||
(@PATH6, 37, -3894.93, -4683.9, -9.58825, 100, 0),
|
||||
(@PATH6, 38, -3913.73, -4670.61, -7.47174, 100, 0),
|
||||
(@PATH6, 39, -3928.54, -4660.59, -8.97345, 100, 0),
|
||||
(@PATH6, 40, -3944.46, -4665.39, -9.24581, 100, 0),
|
||||
(@PATH6, 41, -3958.25, -4679.84, -15.6683, 100, 0),
|
||||
(@PATH6, 42, -3970.06, -4693.55, -20.5917, 100, 0),
|
||||
(@PATH6, 43, -3983.8, -4693.41, -22.2712, 100, 0),
|
||||
(@PATH6, 44, -3996.07, -4683.95, -25.4687, 100, 0),
|
||||
(@PATH6, 45, -4005.23, -4677.4, -31.6823, 100, 0),
|
||||
(@PATH6, 46, -4022.95, -4667.63, -42.7108, 100, 0),
|
||||
(@PATH6, 47, -4034.24, -4677.5, -45.2883, 100, 0),
|
||||
(@PATH6, 48, -4047.06, -4690.78, -51.4895, 100, 0),
|
||||
(@PATH6, 49, -4052.75, -4710.03, -47.8305, 100, 0),
|
||||
(@PATH6, 50, -4046.91, -4719.08, -39.714, 100, 0),
|
||||
(@PATH6, 51, -4036.04, -4731.03, -34.1886, 100, 0),
|
||||
(@PATH6, 52, -4019.94, -4741.63, -33.081, 100, 0),
|
||||
(@PATH6, 53, -4001.05, -4745.26, -30.7453, 100, 0),
|
||||
(@PATH16, 1, 3195.66, 1723.26, -48.0417, 0, 0),
|
||||
(@PATH16, 2, 3172.18, 1728.67, -46.7351, 0, 0),
|
||||
(@PATH16, 3, 3159.84, 1742.1, -47.1164, 0, 0),
|
||||
(@PATH16, 4, 3150.54, 1759.82, -48.9894, 0, 0),
|
||||
(@PATH16, 5, 3145.21, 1780, -48.5501, 0, 0),
|
||||
(@PATH16, 6, 3150.68, 1795.5, -43.965, 0, 0),
|
||||
(@PATH16, 7, 3159.02, 1808.92, -46.8611, 0, 0),
|
||||
(@PATH16, 8, 3147.04, 1829.82, -48.9126, 0, 0),
|
||||
(@PATH16, 9, 3124.38, 1836.32, -49.3035, 0, 0),
|
||||
(@PATH16, 10, 3110.18, 1853.61, -49.3035, 0, 0),
|
||||
(@PATH16, 11, 3098.96, 1879.04, -49.1987, 0, 0),
|
||||
(@PATH16, 12, 3099.79, 1899.64, -45.145, 0, 0),
|
||||
(@PATH16, 13, 3093.3, 1918.57, -48.7809, 0, 0),
|
||||
(@PATH16, 14, 3074.24, 1939.81, -49.2098, 0, 0),
|
||||
(@PATH16, 15, 3047.84, 1955.77, -49.3166, 0, 0),
|
||||
(@PATH16, 16, 3028.47, 1970.39, -49.2451, 0, 0),
|
||||
(@PATH16, 17, 3019.16, 1982.83, -48.9951, 0, 0),
|
||||
(@PATH16, 18, 2988.32, 1998.35, -49.1403, 0, 0),
|
||||
(@PATH16, 19, 2980.85, 2004.86, -48.0391, 0, 0),
|
||||
(@PATH16, 20, 2954.49, 2018.02, -47.8042, 0, 0),
|
||||
(@PATH16, 21, 2925.33, 2045.1, -49.2827, 0, 0),
|
||||
(@PATH16, 22, 2893.02, 2053.51, -49.1987, 0, 0),
|
||||
(@PATH16, 23, 2865.85, 2054.29, -48.9753, 0, 0),
|
||||
(@PATH16, 24, 2843.77, 2055.25, -49.09, 0, 0),
|
||||
(@PATH16, 25, 2822.48, 2054.12, -48.8547, 0, 0),
|
||||
(@PATH16, 26, 2788.7, 2062.92, -48.8734, 0, 0),
|
||||
(@PATH16, 27, 2765.5, 2066.17, -48.0693, 0, 0),
|
||||
(@PATH16, 28, 2788.7, 2062.92, -48.8734, 0, 0),
|
||||
(@PATH16, 29, 2822.48, 2054.12, -48.8547, 0, 0),
|
||||
(@PATH16, 30, 2843.77, 2055.25, -49.09, 0, 0),
|
||||
(@PATH16, 31, 2865.85, 2054.29, -48.9753, 0, 0),
|
||||
(@PATH16, 32, 2893.02, 2053.51, -49.1987, 0, 0),
|
||||
(@PATH16, 33, 2925.33, 2045.1, -49.2827, 0, 0),
|
||||
(@PATH16, 34, 2954.49, 2018.02, -47.8042, 0, 0),
|
||||
(@PATH16, 35, 2980.85, 2004.86, -48.0391, 0, 0),
|
||||
(@PATH16, 36, 2988.32, 1998.35, -49.1403, 0, 0),
|
||||
(@PATH16, 37, 3019.16, 1982.83, -48.9951, 0, 0),
|
||||
(@PATH16, 38, 3028.47, 1970.39, -49.2451, 0, 0),
|
||||
(@PATH16, 39, 3047.84, 1955.77, -49.3166, 0, 0),
|
||||
(@PATH16, 40, 3074.24, 1939.81, -49.2098, 0, 0),
|
||||
(@PATH16, 41, 3093.3, 1918.57, -48.7809, 0, 0),
|
||||
(@PATH16, 42, 3099.79, 1899.64, -45.145, 0, 0),
|
||||
(@PATH16, 43, 3098.96, 1879.04, -49.1987, 0, 0),
|
||||
(@PATH16, 44, 3110.18, 1853.61, -49.3035, 0, 0),
|
||||
(@PATH16, 45, 3124.38, 1836.32, -49.3035, 0, 0),
|
||||
(@PATH16, 46, 3147.04, 1829.82, -48.9126, 0, 0),
|
||||
(@PATH16, 47, 3159.02, 1808.92, -46.8611, 0, 0),
|
||||
(@PATH16, 48, 3150.68, 1795.5, -43.965, 0, 0),
|
||||
(@PATH16, 49, 3145.21, 1780, -48.5501, 0, 0),
|
||||
(@PATH16, 50, 3150.5, 1759.88, -48.9967, 0, 0),
|
||||
(@PATH16, 51, 3159.84, 1742.1, -47.1164, 0, 0),
|
||||
(@PATH16, 52, 3172.18, 1728.67, -46.7351, 0, 0),
|
||||
(@PATH16, 53, 3195.66, 1723.26, -48.0417, 0, 0),
|
||||
(@PATH16, 54, 3222.93, 1722.39, -49.2639, 0, 0),
|
||||
(@PATH17, 1, 3219.86, 1066.66, -48.8948, 0, 0),
|
||||
(@PATH17, 2, 3207.93, 1090.38, -47.2766, 0, 0),
|
||||
(@PATH17, 3, 3194.55, 1111.68, -46.8454, 0, 0),
|
||||
(@PATH17, 4, 3181.08, 1131.85, -44.6933, 0, 0),
|
||||
(@PATH17, 5, 3178.32, 1156.42, -45.4785, 0, 0),
|
||||
(@PATH17, 6, 3176.88, 1185.59, -45.4368, 0, 0),
|
||||
(@PATH17, 7, 3180.24, 1206.31, -43.9424, 0, 0),
|
||||
(@PATH17, 8, 3190.4, 1227.34, -48.0622, 0, 0),
|
||||
(@PATH17, 9, 3193.39, 1253.55, -49.5105, 0, 0),
|
||||
(@PATH17, 10, 3191.81, 1284.17, -48.9205, 0, 0),
|
||||
(@PATH17, 11, 3213.59, 1302.7, -49.3019, 0, 0),
|
||||
(@PATH17, 12, 3226.42, 1327.89, -49.3019, 0, 0),
|
||||
(@PATH17, 13, 3227.66, 1352.52, -49.283, 0, 0),
|
||||
(@PATH17, 14, 3220.75, 1378.08, -49.2146, 0, 0),
|
||||
(@PATH17, 15, 3223.33, 1416.28, -49.1856, 0, 0),
|
||||
(@PATH17, 16, 3237.03, 1444.51, -49.2355, 0, 0),
|
||||
(@PATH17, 17, 3225.31, 1473.26, -49.2002, 0, 0),
|
||||
(@PATH17, 18, 3215.7, 1516.21, -49.288, 0, 0),
|
||||
(@PATH17, 19, 3199.54, 1542.93, -49.2687, 0, 0),
|
||||
(@PATH17, 20, 3186.1, 1575.29, -49.2389, 0, 0),
|
||||
(@PATH17, 21, 3189.74, 1608.76, -49.3011, 0, 0),
|
||||
(@PATH17, 22, 3207.19, 1630.43, -49.3062, 0, 0),
|
||||
(@PATH17, 23, 3223.05, 1654.72, -49.3094, 0, 0),
|
||||
(@PATH17, 24, 3245.56, 1679.74, -49.3899, 0, 0),
|
||||
(@PATH17, 25, 3242.98, 1723.86, -49.3418, 0, 0),
|
||||
(@PATH17, 26, 3245.56, 1679.74, -49.3899, 0, 0),
|
||||
(@PATH17, 27, 3223.05, 1654.72, -49.3094, 0, 0),
|
||||
(@PATH17, 28, 3207.19, 1630.43, -49.3062, 0, 0),
|
||||
(@PATH17, 29, 3189.74, 1608.76, -49.3011, 0, 0),
|
||||
(@PATH17, 30, 3186.1, 1575.29, -49.2389, 0, 0),
|
||||
(@PATH17, 31, 3199.54, 1542.93, -49.2687, 0, 0),
|
||||
(@PATH17, 32, 3215.7, 1516.21, -49.288, 0, 0),
|
||||
(@PATH17, 33, 3225.31, 1473.26, -49.2002, 0, 0),
|
||||
(@PATH17, 34, 3237.03, 1444.51, -49.2355, 0, 0),
|
||||
(@PATH17, 35, 3223.33, 1416.28, -49.1856, 0, 0),
|
||||
(@PATH17, 36, 3220.75, 1378.08, -49.2146, 0, 0),
|
||||
(@PATH17, 37, 3227.66, 1352.52, -49.283, 0, 0),
|
||||
(@PATH17, 38, 3226.42, 1327.89, -49.3019, 0, 0),
|
||||
(@PATH17, 39, 3213.59, 1302.7, -49.3019, 0, 0),
|
||||
(@PATH17, 40, 3191.81, 1284.17, -48.9205, 0, 0),
|
||||
(@PATH17, 41, 3193.39, 1253.55, -49.5105, 0, 0),
|
||||
(@PATH17, 42, 3190.4, 1227.34, -48.0622, 0, 0),
|
||||
(@PATH17, 43, 3180.24, 1206.31, -43.9424, 0, 0),
|
||||
(@PATH17, 44, 3176.88, 1185.59, -45.4368, 0, 0),
|
||||
(@PATH17, 45, 3178.32, 1156.42, -45.4785, 0, 0),
|
||||
(@PATH17, 46, 3181.08, 1131.85, -44.6933, 0, 0),
|
||||
(@PATH17, 47, 3194.55, 1111.68, -46.8454, 0, 0),
|
||||
(@PATH17, 48, 3207.86, 1090.51, -47.1577, 0, 0),
|
||||
(@PATH17, 49, 3219.86, 1066.66, -48.8948, 0, 0),
|
||||
(@PATH17, 50, 3229.62, 1042.29, -48.938, 0, 0),
|
||||
(@PATH18, 1, 3237.64, 529.066, -49.161, 0, 0),
|
||||
(@PATH18, 2, 3245.98, 509.615, -49.2072, 0, 0),
|
||||
(@PATH18, 3, 3244.24, 480.189, -48.5247, 0, 0),
|
||||
(@PATH18, 4, 3236.81, 451.482, -47.3299, 0, 0),
|
||||
(@PATH18, 5, 3229.51, 421.778, -46.6712, 0, 0),
|
||||
(@PATH18, 6, 3232.34, 398.549, -48.8765, 0, 0),
|
||||
(@PATH18, 7, 3232.09, 378.384, -47.2272, 0, 0),
|
||||
(@PATH18, 8, 3236.05, 354.162, -47.1681, 0, 0),
|
||||
(@PATH18, 9, 3225.4, 330.035, -46.4199, 0, 0),
|
||||
(@PATH18, 10, 3209.58, 308.727, -45.1829, 0, 0),
|
||||
(@PATH18, 11, 3194.01, 282.987, -44.1269, 0, 0),
|
||||
(@PATH18, 12, 3184.9, 250.452, -42.8944, 0, 0),
|
||||
(@PATH18, 13, 3180.68, 215.665, -43.4813, 0, 0),
|
||||
(@PATH18, 14, 3190.05, 191.407, -47.2638, 0, 0),
|
||||
(@PATH18, 15, 3202.46, 172.926, -49.1386, 0, 0),
|
||||
(@PATH18, 16, 3198.71, 154.542, -47.6138, 0, 0),
|
||||
(@PATH18, 17, 3191.65, 129.38, -46.3875, 0, 0),
|
||||
(@PATH18, 18, 3199.24, 111.015, -47.9738, 0, 0),
|
||||
(@PATH18, 19, 3215.44, 80.8268, -49.3019, 0, 0),
|
||||
(@PATH18, 20, 3225.97, 70.9052, -49.3019, 0, 0),
|
||||
(@PATH18, 21, 3215.46, 39.4659, -49.283, 0, 0),
|
||||
(@PATH18, 22, 3218.06, 14.8127, -47.4764, 0, 0),
|
||||
(@PATH18, 23, 3232.95, 2.20247, -47.6778, 0, 0),
|
||||
(@PATH18, 24, 3241.45, -16.7218, -48.2038, 0, 0),
|
||||
(@PATH18, 25, 3240.34, -45.9271, -45.0433, 0, 0),
|
||||
(@PATH18, 26, 3236.31, -72.9149, -46.0238, 0, 0),
|
||||
(@PATH18, 27, 3225.42, -94.1089, -46.0986, 0, 0),
|
||||
(@PATH18, 28, 3215.18, -125.027, -47.4287, 0, 0),
|
||||
(@PATH18, 29, 3198.15, -144.379, -48.9029, 0, 0),
|
||||
(@PATH18, 30, 3195.2, -160.021, -48.6686, 0, 0),
|
||||
(@PATH18, 31, 3190.23, -188.384, -46.621, 0, 0),
|
||||
(@PATH18, 32, 3194.87, -215.717, -49.6974, 0, 0),
|
||||
(@PATH18, 33, 3213.64, -245.577, -49.1524, 0, 0),
|
||||
(@PATH18, 34, 3233.05, -275.715, -49.2094, 0, 0),
|
||||
(@PATH18, 35, 3234.99, -304.343, -49.2168, 0, 0),
|
||||
(@PATH18, 36, 3220.77, -329.858, -49.3934, 0, 0),
|
||||
(@PATH18, 37, 3197.92, -345.281, -48.1115, 0, 0),
|
||||
(@PATH18, 38, 3181.14, -362.376, -44.0617, 0, 0),
|
||||
(@PATH18, 39, 3170.62, -379.924, -32.2668, 0, 0),
|
||||
(@PATH18, 40, 3167.32, -395.326, -21.2015, 0, 0),
|
||||
(@PATH18, 41, 3162.11, -435.289, -17.73, 0, 0),
|
||||
(@PATH18, 42, 3167.32, -395.326, -21.2015, 0, 0),
|
||||
(@PATH18, 43, 3170.62, -379.924, -32.2668, 0, 0),
|
||||
(@PATH18, 44, 3181.14, -362.376, -44.0617, 0, 0),
|
||||
(@PATH18, 45, 3197.92, -345.281, -48.1115, 0, 0),
|
||||
(@PATH18, 46, 3220.77, -329.858, -49.3934, 0, 0),
|
||||
(@PATH18, 47, 3234.99, -304.343, -49.2168, 0, 0),
|
||||
(@PATH18, 48, 3233.05, -275.715, -49.2094, 0, 0),
|
||||
(@PATH18, 49, 3213.64, -245.577, -49.1524, 0, 0),
|
||||
(@PATH18, 50, 3194.87, -215.717, -49.6974, 0, 0),
|
||||
(@PATH18, 51, 3190.23, -188.384, -46.621, 0, 0),
|
||||
(@PATH18, 52, 3195.2, -160.021, -48.6686, 0, 0),
|
||||
(@PATH18, 53, 3198.15, -144.379, -48.9029, 0, 0),
|
||||
(@PATH18, 54, 3215.18, -125.027, -47.4287, 0, 0),
|
||||
(@PATH18, 55, 3225.42, -94.1089, -46.0986, 0, 0),
|
||||
(@PATH18, 56, 3236.31, -72.9149, -46.0238, 0, 0),
|
||||
(@PATH18, 57, 3240.34, -45.9271, -45.0433, 0, 0),
|
||||
(@PATH18, 58, 3241.45, -16.7218, -48.2038, 0, 0),
|
||||
(@PATH18, 59, 3232.95, 2.20247, -47.6778, 0, 0),
|
||||
(@PATH18, 60, 3218.06, 14.8127, -47.4764, 0, 0),
|
||||
(@PATH18, 61, 3215.46, 39.4659, -49.283, 0, 0),
|
||||
(@PATH18, 62, 3225.97, 70.9052, -49.3019, 0, 0),
|
||||
(@PATH18, 63, 3215.44, 80.8268, -49.3019, 0, 0),
|
||||
(@PATH18, 64, 3199.24, 111.015, -47.9738, 0, 0),
|
||||
(@PATH18, 65, 3191.65, 129.38, -46.3875, 0, 0),
|
||||
(@PATH18, 66, 3198.71, 154.542, -47.6138, 0, 0),
|
||||
(@PATH18, 67, 3202.46, 172.926, -49.1386, 0, 0),
|
||||
(@PATH18, 68, 3190.05, 191.407, -47.2638, 0, 0),
|
||||
(@PATH18, 69, 3180.68, 215.665, -43.4813, 0, 0),
|
||||
(@PATH18, 70, 3184.9, 250.452, -42.8944, 0, 0),
|
||||
(@PATH18, 71, 3194.01, 282.987, -44.1269, 0, 0),
|
||||
(@PATH18, 72, 3209.58, 308.727, -45.1829, 0, 0),
|
||||
(@PATH18, 73, 3225.4, 330.035, -46.4199, 0, 0),
|
||||
(@PATH18, 74, 3236.05, 354.162, -47.1681, 0, 0),
|
||||
(@PATH18, 75, 3232.09, 378.384, -47.2272, 0, 0),
|
||||
(@PATH18, 76, 3232.34, 398.549, -48.8765, 0, 0),
|
||||
(@PATH18, 77, 3229.51, 421.778, -46.6712, 0, 0),
|
||||
(@PATH18, 78, 3236.81, 451.482, -47.3299, 0, 0),
|
||||
(@PATH18, 79, 3244.24, 480.189, -48.5247, 0, 0),
|
||||
(@PATH18, 80, 3245.98, 509.615, -49.2072, 0, 0),
|
||||
(@PATH18, 81, 3237.64, 529.066, -49.161, 0, 0),
|
||||
(@PATH18, 82, 3222.14, 543.139, -49.3217, 0, 0),
|
||||
(@PATH19, 1, 1516.82, -5383.69, -28.8906, 0, 0),
|
||||
(@PATH19, 2, 1474.84, -5385.46, -29.2864, 0, 0),
|
||||
(@PATH19, 3, 1447.96, -5383.48, -25.5438, 0, 0),
|
||||
(@PATH19, 4, 1412.76, -5384.64, -29.4294, 0, 0),
|
||||
(@PATH19, 5, 1382.15, -5391.2, -28.4388, 0, 0),
|
||||
(@PATH19, 6, 1354.78, -5391.48, -28.6763, 0, 0),
|
||||
(@PATH19, 7, 1334.22, -5378.4, -28.8418, 0, 0),
|
||||
(@PATH19, 8, 1335.49, -5355.21, -28.7994, 0, 0),
|
||||
(@PATH19, 9, 1344.53, -5325.68, -28.0713, 0, 0),
|
||||
(@PATH19, 10, 1328.27, -5309.04, -31.7749, 0, 0),
|
||||
(@PATH19, 11, 1304.01, -5312.75, -31.2355, 0, 0),
|
||||
(@PATH19, 12, 1284.62, -5347.43, -37.3962, 0, 0),
|
||||
(@PATH19, 13, 1286.44, -5381.06, -48.0423, 0, 0),
|
||||
(@PATH19, 14, 1284.71, -5401.73, -48.8887, 0, 0),
|
||||
(@PATH19, 15, 1287.05, -5438.85, -54.8639, 0, 0),
|
||||
(@PATH19, 16, 1305.02, -5456.57, -56.5516, 0, 0),
|
||||
(@PATH19, 17, 1317.34, -5496.39, -55.8837, 0, 0),
|
||||
(@PATH19, 18, 1305.02, -5456.57, -56.5516, 0, 0),
|
||||
(@PATH19, 19, 1287.05, -5438.85, -54.8639, 0, 0),
|
||||
(@PATH19, 20, 1284.74, -5401.92, -48.8684, 0, 0),
|
||||
(@PATH19, 21, 1286.44, -5381.06, -48.0423, 0, 0),
|
||||
(@PATH19, 22, 1284.62, -5347.43, -37.3962, 0, 0),
|
||||
(@PATH19, 23, 1304.01, -5312.75, -31.2355, 0, 0),
|
||||
(@PATH19, 24, 1328.27, -5309.04, -31.7749, 0, 0),
|
||||
(@PATH19, 25, 1344.53, -5325.68, -28.0713, 0, 0),
|
||||
(@PATH19, 26, 1335.49, -5355.21, -28.7994, 0, 0),
|
||||
(@PATH19, 27, 1334.22, -5378.4, -28.8418, 0, 0),
|
||||
(@PATH19, 28, 1354.78, -5391.48, -28.6763, 0, 0),
|
||||
(@PATH19, 29, 1382.15, -5391.2, -28.4388, 0, 0),
|
||||
(@PATH19, 30, 1412.76, -5384.64, -29.4294, 0, 0),
|
||||
(@PATH19, 31, 1447.96, -5383.48, -25.5438, 0, 0),
|
||||
(@PATH19, 32, 1474.84, -5385.46, -29.2864, 0, 0),
|
||||
(@PATH19, 33, 1516.82, -5383.69, -28.8906, 0, 0),
|
||||
(@PATH19, 34, 1546.04, -5379.32, -32.5986, 0, 0),
|
||||
(@PATH20, 1, 1254.18, -5419.49, -52.4718, 0, 0),
|
||||
(@PATH20, 2, 1229.28, -5435.86, -56.9902, 0, 0),
|
||||
(@PATH20, 3, 1208.77, -5447.44, -59.6652, 0, 0),
|
||||
(@PATH20, 4, 1187.96, -5453.08, -61.9978, 0, 0),
|
||||
(@PATH20, 5, 1153.77, -5448.21, -64.5154, 0, 0),
|
||||
(@PATH20, 6, 1124.3, -5439.63, -63.204, 0, 0),
|
||||
(@PATH20, 7, 1100.61, -5425.71, -61.8492, 0, 0),
|
||||
(@PATH20, 8, 1080.52, -5423.09, -60.7825, 0, 0),
|
||||
(@PATH20, 9, 1055.61, -5418.48, -58.5112, 0, 0),
|
||||
(@PATH20, 10, 1026.96, -5411.6, -55.9621, 0, 0),
|
||||
(@PATH20, 11, 1002.2, -5421.31, -52.5091, 0, 0),
|
||||
(@PATH20, 12, 978.418, -5425.1, -52.5559, 0, 0),
|
||||
(@PATH20, 13, 959.892, -5425.46, -49.9403, 0, 0),
|
||||
(@PATH20, 14, 939.542, -5439.23, -53.9722, 0, 0),
|
||||
(@PATH20, 15, 924.992, -5446.01, -55.8501, 0, 0),
|
||||
(@PATH20, 16, 902.285, -5443.91, -58.5748, 0, 0),
|
||||
(@PATH20, 17, 880.687, -5439.05, -59.7106, 0, 0),
|
||||
(@PATH20, 18, 850.202, -5453.35, -60.1957, 0, 0),
|
||||
(@PATH20, 19, 880.687, -5439.05, -59.7106, 0, 0),
|
||||
(@PATH20, 20, 902.285, -5443.91, -58.5748, 0, 0),
|
||||
(@PATH20, 21, 924.992, -5446.01, -55.8501, 0, 0),
|
||||
(@PATH20, 22, 939.542, -5439.23, -53.9722, 0, 0),
|
||||
(@PATH20, 23, 959.892, -5425.46, -49.9403, 0, 0),
|
||||
(@PATH20, 24, 978.418, -5425.1, -52.5559, 0, 0),
|
||||
(@PATH20, 25, 1002.2, -5421.31, -52.5091, 0, 0),
|
||||
(@PATH20, 26, 1026.96, -5411.6, -55.9621, 0, 0),
|
||||
(@PATH20, 27, 1055.61, -5418.48, -58.5112, 0, 0),
|
||||
(@PATH20, 28, 1080.52, -5423.09, -60.7825, 0, 0),
|
||||
(@PATH20, 29, 1100.61, -5425.71, -61.8492, 0, 0),
|
||||
(@PATH20, 30, 1124.3, -5439.63, -63.204, 0, 0),
|
||||
(@PATH20, 31, 1153.77, -5448.21, -64.5154, 0, 0),
|
||||
(@PATH20, 32, 1187.96, -5453.08, -61.9978, 0, 0),
|
||||
(@PATH20, 33, 1208.77, -5447.44, -59.6652, 0, 0),
|
||||
(@PATH20, 34, 1229.28, -5435.86, -56.9902, 0, 0),
|
||||
(@PATH20, 35, 1254.18, -5419.49, -52.4718, 0, 0),
|
||||
(@PATH20, 36, 1284.58, -5416.16, -50.2873, 0, 0),
|
||||
(@PATH21, 1, 884.764, -5424.27, -58.0952, 0, 0),
|
||||
(@PATH21, 2, 860.038, -5429.36, -58.3245, 0, 0),
|
||||
(@PATH21, 3, 840.054, -5447.57, -59.1454, 0, 0),
|
||||
(@PATH21, 4, 808.626, -5450.2, -55.6828, 0, 0),
|
||||
(@PATH21, 5, 785.226, -5449.35, -55.0896, 0, 0),
|
||||
(@PATH21, 6, 752.365, -5448.88, -57.3383, 0, 0),
|
||||
(@PATH21, 7, 710.335, -5452.75, -57.6953, 0, 0),
|
||||
(@PATH21, 8, 683.327, -5449.81, -59.3469, 0, 0),
|
||||
(@PATH21, 9, 655.47, -5444.36, -59.5234, 0, 0),
|
||||
(@PATH21, 10, 651.573, -5424.52, -58.0701, 0, 0),
|
||||
(@PATH21, 11, 618.405, -5414.9, -62.8057, 0, 0),
|
||||
(@PATH21, 12, 588.85, -5403.26, -64.4017, 0, 0),
|
||||
(@PATH21, 13, 542.927, -5406.28, -62.6428, 0, 0),
|
||||
(@PATH21, 14, 511.854, -5405.75, -58.5615, 0, 0),
|
||||
(@PATH21, 15, 482.236, -5413.69, -57.8578, 0, 0),
|
||||
(@PATH21, 16, 445.743, -5419.08, -58.4638, 0, 0),
|
||||
(@PATH21, 17, 482.236, -5413.69, -57.8578, 0, 0),
|
||||
(@PATH21, 18, 511.854, -5405.75, -58.5615, 0, 0),
|
||||
(@PATH21, 19, 542.927, -5406.28, -62.6428, 0, 0),
|
||||
(@PATH21, 20, 588.85, -5403.26, -64.4017, 0, 0),
|
||||
(@PATH21, 21, 618.405, -5414.9, -62.8057, 0, 0),
|
||||
(@PATH21, 22, 651.573, -5424.52, -58.0701, 0, 0),
|
||||
(@PATH21, 23, 655.47, -5444.36, -59.5234, 0, 0),
|
||||
(@PATH21, 24, 683.327, -5449.81, -59.3469, 0, 0),
|
||||
(@PATH21, 25, 710.335, -5452.75, -57.6953, 0, 0),
|
||||
(@PATH21, 26, 752.365, -5448.88, -57.3383, 0, 0),
|
||||
(@PATH21, 27, 785.226, -5449.35, -55.0896, 0, 0),
|
||||
(@PATH21, 28, 808.626, -5450.2, -55.6828, 0, 0),
|
||||
(@PATH21, 29, 840.054, -5447.57, -59.1454, 0, 0),
|
||||
(@PATH21, 30, 860.038, -5429.36, -58.3245, 0, 0),
|
||||
(@PATH21, 31, 884.764, -5424.27, -58.0952, 0, 0),
|
||||
(@PATH21, 32, 910.851, -5418.02, -54.3127, 0, 0),
|
||||
(@PATH22, 1, 478.163, -5354.21, -43.7743, 0, 0),
|
||||
(@PATH22, 2, 449.288, -5339.32, -39.4666, 0, 0),
|
||||
(@PATH22, 3, 417.396, -5331.68, -27.1596, 0, 0),
|
||||
(@PATH22, 4, 401.883, -5346.24, -24.6042, 0, 0),
|
||||
(@PATH22, 5, 384.33, -5356.52, -22.0758, 0, 0),
|
||||
(@PATH22, 6, 365.925, -5363.74, -21.1654, 0, 0),
|
||||
(@PATH22, 7, 359.145, -5389.11, -23.3096, 0, 0),
|
||||
(@PATH22, 8, 351.778, -5414.2, -22.672, 0, 0),
|
||||
(@PATH22, 9, 336.771, -5442.29, -26.5356, 0, 0),
|
||||
(@PATH22, 10, 336.753, -5463.58, -28.1553, 0, 0),
|
||||
(@PATH22, 11, 326.522, -5489.89, -32.6077, 0, 0),
|
||||
(@PATH22, 12, 297.979, -5504.62, -32.2698, 0, 0),
|
||||
(@PATH22, 13, 266.13, -5515.1, -32.1059, 0, 0),
|
||||
(@PATH22, 14, 239.612, -5514.21, -31.999, 0, 0),
|
||||
(@PATH22, 15, 209.377, -5516.51, -31.5502, 0, 0),
|
||||
(@PATH22, 16, 181.916, -5520, -31.0444, 0, 0),
|
||||
(@PATH22, 17, 152.516, -5519.96, -29.2918, 0, 0),
|
||||
(@PATH22, 18, 112.342, -5522.8, -32.6255, 0, 0),
|
||||
(@PATH22, 19, 71.7514, -5513.65, -32.5661, 0, 0),
|
||||
(@PATH22, 20, 42.7414, -5516.01, -32.6023, 0, 0),
|
||||
(@PATH22, 21, 71.7514, -5513.65, -32.5661, 0, 0),
|
||||
(@PATH22, 22, 112.342, -5522.8, -32.6255, 0, 0),
|
||||
(@PATH22, 23, 152.516, -5519.96, -29.2918, 0, 0),
|
||||
(@PATH22, 24, 181.916, -5520, -31.0444, 0, 0),
|
||||
(@PATH22, 25, 209.377, -5516.51, -31.5502, 0, 0),
|
||||
(@PATH22, 26, 239.612, -5514.21, -31.999, 0, 0),
|
||||
(@PATH22, 27, 266.13, -5515.1, -32.1059, 0, 0),
|
||||
(@PATH22, 28, 297.979, -5504.62, -32.2698, 0, 0),
|
||||
(@PATH22, 29, 326.522, -5489.89, -32.6077, 0, 0),
|
||||
(@PATH22, 30, 336.753, -5463.58, -28.1553, 0, 0),
|
||||
(@PATH22, 31, 336.771, -5442.29, -26.5356, 0, 0),
|
||||
(@PATH22, 32, 351.778, -5414.2, -22.672, 0, 0),
|
||||
(@PATH22, 33, 359.145, -5389.11, -23.3096, 0, 0),
|
||||
(@PATH22, 34, 365.925, -5363.74, -21.1654, 0, 0),
|
||||
(@PATH22, 35, 384.33, -5356.52, -22.0758, 0, 0),
|
||||
(@PATH22, 36, 401.883, -5346.24, -24.6042, 0, 0),
|
||||
(@PATH22, 37, 417.182, -5331.88, -27.1095, 0, 0),
|
||||
(@PATH22, 38, 449.288, -5339.32, -39.4666, 0, 0),
|
||||
(@PATH22, 39, 478.163, -5354.21, -43.7743, 0, 0),
|
||||
(@PATH22, 40, 483.273, -5373.55, -49.2484, 0, 0),
|
||||
(@PATH23, 1, -348.067, -5577.97, -32.65, 0, 0),
|
||||
(@PATH23, 2, -357.549, -5604.61, -32.5432, 0, 0),
|
||||
(@PATH23, 3, -380.199, -5623.58, -31.4737, 0, 0),
|
||||
(@PATH23, 4, -412.232, -5631.5, -31.9731, 0, 0),
|
||||
(@PATH23, 5, -438.914, -5638.84, -33.1976, 0, 0),
|
||||
(@PATH23, 6, -459.091, -5648.77, -34.1012, 0, 0),
|
||||
(@PATH23, 7, -471.591, -5669.52, -33.2584, 0, 0),
|
||||
(@PATH23, 8, -490.046, -5686.99, -32.2633, 0, 0),
|
||||
(@PATH23, 9, -512.865, -5686.81, -36.9606, 0, 0),
|
||||
(@PATH23, 10, -530.814, -5673.19, -35.9577, 0, 0),
|
||||
(@PATH23, 11, -545.807, -5669.22, -31.6047, 0, 0),
|
||||
(@PATH23, 12, -554.349, -5676.35, -26.0957, 0, 0),
|
||||
(@PATH23, 13, -548.392, -5686.53, -26.0327, 0, 0),
|
||||
(@PATH23, 14, -545.629, -5697.58, -25.7446, 0, 0),
|
||||
(@PATH23, 15, -558.881, -5718.68, -23.5747, 0, 0),
|
||||
(@PATH23, 16, -555.439, -5742.34, -26.5172, 0, 0),
|
||||
(@PATH23, 17, -543.636, -5759.58, -33.2977, 0, 0),
|
||||
(@PATH23, 18, -545.659, -5779.45, -32.5208, 0, 0),
|
||||
(@PATH23, 19, -565.719, -5811.16, -34.1039, 0, 0),
|
||||
(@PATH23, 20, -584.56, -5824.54, -32.4604, 0, 0),
|
||||
(@PATH23, 21, -614.898, -5821.75, -32.8638, 0, 0),
|
||||
(@PATH23, 22, -584.56, -5824.54, -32.4604, 0, 0),
|
||||
(@PATH23, 23, -565.719, -5811.16, -34.1039, 0, 0),
|
||||
(@PATH23, 24, -545.659, -5779.45, -32.5208, 0, 0),
|
||||
(@PATH23, 25, -543.636, -5759.58, -33.2977, 0, 0),
|
||||
(@PATH23, 26, -555.439, -5742.34, -26.5172, 0, 0),
|
||||
(@PATH23, 27, -558.881, -5718.68, -23.5747, 0, 0),
|
||||
(@PATH23, 28, -545.629, -5697.58, -25.7446, 0, 0),
|
||||
(@PATH23, 29, -548.392, -5686.53, -26.0327, 0, 0),
|
||||
(@PATH23, 30, -554.349, -5676.35, -26.0957, 0, 0),
|
||||
(@PATH23, 31, -545.807, -5669.22, -31.6047, 0, 0),
|
||||
(@PATH23, 32, -530.814, -5673.19, -35.9577, 0, 0),
|
||||
(@PATH23, 33, -512.865, -5686.81, -36.9606, 0, 0),
|
||||
(@PATH23, 34, -490.046, -5686.99, -32.2633, 0, 0),
|
||||
(@PATH23, 35, -471.591, -5669.52, -33.2584, 0, 0),
|
||||
(@PATH23, 36, -459.091, -5648.77, -34.1012, 0, 0),
|
||||
(@PATH23, 37, -438.914, -5638.84, -33.1976, 0, 0),
|
||||
(@PATH23, 38, -412.466, -5631.58, -32.0903, 0, 0),
|
||||
(@PATH23, 39, -380.199, -5623.58, -31.4737, 0, 0),
|
||||
(@PATH23, 40, -357.549, -5604.61, -32.5432, 0, 0),
|
||||
(@PATH23, 41, -348.067, -5577.97, -32.65, 0, 0),
|
||||
(@PATH23, 42, -318.713, -5564.04, -32.5515, 0, 0),
|
||||
(@PATH24, 1, -608.189, -5817.86, -33.709, 0, 0),
|
||||
(@PATH24, 2, -636.505, -5820.9, -28.4536, 0, 0),
|
||||
(@PATH24, 3, -659.174, -5823.26, -19.3774, 0, 0),
|
||||
(@PATH24, 4, -691.712, -5820.37, -20.5041, 0, 0),
|
||||
(@PATH24, 5, -713.348, -5823.96, -20.3692, 0, 0),
|
||||
(@PATH24, 6, -751.252, -5827.44, -21.7339, 0, 0),
|
||||
(@PATH24, 7, -783.621, -5825.68, -22.7967, 0, 0),
|
||||
(@PATH24, 8, -808.286, -5822.93, -29.9531, 0, 0),
|
||||
(@PATH24, 9, -845.253, -5820.43, -16.3681, 0, 0),
|
||||
(@PATH24, 10, -875.673, -5822.89, -12.8224, 0, 0),
|
||||
(@PATH24, 11, -909.937, -5825.71, -12.1481, 0, 0),
|
||||
(@PATH24, 12, -942.422, -5823.41, -20.2785, 0, 0),
|
||||
(@PATH24, 13, -980.966, -5821.28, -22.5778, 0, 0),
|
||||
(@PATH24, 14, -1015.38, -5815.63, -30.7905, 0, 0),
|
||||
(@PATH24, 15, -1034.81, -5795.98, -28.1028, 0, 0),
|
||||
(@PATH24, 16, -1056.59, -5790.92, -26.0222, 0, 0),
|
||||
(@PATH24, 17, -1070.57, -5793.05, -25.0055, 0, 0),
|
||||
(@PATH24, 18, -1094.36, -5787.65, -27.308, 0, 0),
|
||||
(@PATH24, 19, -1114.45, -5780.14, -27.8109, 0, 0),
|
||||
(@PATH24, 20, -1128.8, -5771.17, -18.6337, 0, 0),
|
||||
(@PATH24, 21, -1147.59, -5766.96, -13.6918, 0, 0),
|
||||
(@PATH24, 22, -1179.73, -5766.32, -14.8849, 0, 0),
|
||||
(@PATH24, 23, -1207.66, -5765.58, -13.849, 0, 0),
|
||||
(@PATH24, 24, -1232.48, -5768.13, -17.9423, 0, 0),
|
||||
(@PATH24, 25, -1249.48, -5772.08, -21.2213, 0, 0),
|
||||
(@PATH24, 26, -1232.48, -5768.13, -17.9423, 0, 0),
|
||||
(@PATH24, 27, -1207.66, -5765.58, -13.849, 0, 0),
|
||||
(@PATH24, 28, -1179.73, -5766.32, -14.8849, 0, 0),
|
||||
(@PATH24, 29, -1147.59, -5766.96, -13.6918, 0, 0),
|
||||
(@PATH24, 30, -1128.8, -5771.17, -18.6337, 0, 0),
|
||||
(@PATH24, 31, -1114.45, -5780.14, -27.8109, 0, 0),
|
||||
(@PATH24, 32, -1094.36, -5787.65, -27.308, 0, 0),
|
||||
(@PATH24, 33, -1070.57, -5793.05, -25.0055, 0, 0),
|
||||
(@PATH24, 34, -1056.59, -5790.92, -26.0222, 0, 0),
|
||||
(@PATH24, 35, -1034.81, -5795.98, -28.1028, 0, 0),
|
||||
(@PATH24, 36, -1015.38, -5815.63, -30.7905, 0, 0),
|
||||
(@PATH24, 37, -980.966, -5821.28, -22.5778, 0, 0),
|
||||
(@PATH24, 38, -942.422, -5823.41, -20.2785, 0, 0),
|
||||
(@PATH24, 39, -909.937, -5825.71, -12.1481, 0, 0),
|
||||
(@PATH24, 40, -875.673, -5822.89, -12.8224, 0, 0),
|
||||
(@PATH24, 41, -845.253, -5820.43, -16.3681, 0, 0),
|
||||
(@PATH24, 42, -808.286, -5822.93, -29.9531, 0, 0),
|
||||
(@PATH24, 43, -783.621, -5825.68, -22.7967, 0, 0),
|
||||
(@PATH24, 44, -751.252, -5827.44, -21.7339, 0, 0),
|
||||
(@PATH24, 45, -713.348, -5823.96, -20.3692, 0, 0),
|
||||
(@PATH24, 46, -691.712, -5820.37, -20.5041, 0, 0),
|
||||
(@PATH24, 47, -659.174, -5823.26, -19.3774, 0, 0),
|
||||
(@PATH24, 48, -636.505, -5820.9, -28.4536, 0, 0),
|
||||
(@PATH24, 49, -608.189, -5817.86, -33.709, 0, 0),
|
||||
(@PATH24, 50, -581.407, -5813.84, -31.5447, 0, 0),
|
||||
(@PATH25, 1, -1414.72, -5785.94, -18.2885, 0, 0),
|
||||
(@PATH25, 2, -1429.12, -5803.25, -21.4268, 0, 0),
|
||||
(@PATH25, 3, -1440.07, -5818.4, -23.6505, 0, 0),
|
||||
(@PATH25, 4, -1473.32, -5817.65, -28.5233, 0, 0),
|
||||
(@PATH25, 5, -1493.11, -5817.8, -30.5536, 0, 0),
|
||||
(@PATH25, 6, -1515.08, -5820.92, -30.8291, 0, 0),
|
||||
(@PATH25, 7, -1546.92, -5824.5, -30.4198, 0, 0),
|
||||
(@PATH25, 8, -1576.58, -5830.68, -26.9595, 0, 0),
|
||||
(@PATH25, 9, -1609.99, -5827.75, -22.2551, 0, 0),
|
||||
(@PATH25, 10, -1649.51, -5819.8, -18.2337, 0, 0),
|
||||
(@PATH25, 11, -1656.18, -5794.95, -11.2324, 0, 0),
|
||||
(@PATH25, 12, -1638.66, -5767.85, -23.0969, 0, 0),
|
||||
(@PATH25, 13, -1641.79, -5751.14, -26.1178, 0, 0),
|
||||
(@PATH25, 14, -1618.05, -5731.53, -29.6055, 0, 0),
|
||||
(@PATH25, 15, -1600.35, -5710.07, -28.909, 0, 0),
|
||||
(@PATH25, 16, -1617.42, -5693.51, -23.3433, 0, 0),
|
||||
(@PATH25, 17, -1640.38, -5682.3, -22.6561, 0, 0),
|
||||
(@PATH25, 18, -1660.63, -5671.53, -26.1769, 0, 0),
|
||||
(@PATH25, 19, -1686.91, -5662.64, -27.366, 0, 0),
|
||||
(@PATH25, 20, -1698.24, -5629.52, -27.0792, 0, 0),
|
||||
(@PATH25, 21, -1712.57, -5613.55, -27.7746, 0, 0),
|
||||
(@PATH25, 22, -1728, -5592.73, -26.9465, 0, 0),
|
||||
(@PATH25, 23, -1744.33, -5587.04, -30.407, 0, 0),
|
||||
(@PATH25, 24, -1728, -5592.73, -26.9465, 0, 0),
|
||||
(@PATH25, 25, -1712.57, -5613.55, -27.7746, 0, 0),
|
||||
(@PATH25, 26, -1698.24, -5629.52, -27.0792, 0, 0),
|
||||
(@PATH25, 27, -1686.91, -5662.64, -27.366, 0, 0),
|
||||
(@PATH25, 28, -1660.63, -5671.53, -26.1769, 0, 0),
|
||||
(@PATH25, 29, -1640.38, -5682.3, -22.6561, 0, 0),
|
||||
(@PATH25, 30, -1617.42, -5693.51, -23.3433, 0, 0),
|
||||
(@PATH25, 31, -1600.35, -5710.07, -28.909, 0, 0),
|
||||
(@PATH25, 32, -1618.05, -5731.53, -29.6055, 0, 0),
|
||||
(@PATH25, 33, -1641.79, -5751.14, -26.1178, 0, 0),
|
||||
(@PATH25, 34, -1638.66, -5767.85, -23.0969, 0, 0),
|
||||
(@PATH25, 35, -1656.18, -5794.95, -11.2324, 0, 0),
|
||||
(@PATH25, 36, -1649.51, -5819.8, -18.2337, 0, 0),
|
||||
(@PATH25, 37, -1609.99, -5827.75, -22.2551, 0, 0),
|
||||
(@PATH25, 38, -1576.58, -5830.68, -26.9595, 0, 0),
|
||||
(@PATH25, 39, -1546.92, -5824.5, -30.4198, 0, 0),
|
||||
(@PATH25, 40, -1515.08, -5820.92, -30.8291, 0, 0),
|
||||
(@PATH25, 41, -1493.11, -5817.8, -30.5536, 0, 0),
|
||||
(@PATH25, 42, -1473.32, -5817.65, -28.5233, 0, 0),
|
||||
(@PATH25, 43, -1440.07, -5818.4, -23.6505, 0, 0),
|
||||
(@PATH25, 44, -1429.12, -5803.25, -21.4268, 0, 0),
|
||||
(@PATH25, 45, -1414.72, -5785.94, -18.2885, 0, 0),
|
||||
(@PATH25, 46, -1368.82, -5777.98, -19.775, 0, 0),
|
||||
(@PATH26, 1, -1776.08, -5589.01, -34.1817, 0, 0),
|
||||
(@PATH26, 2, -1803.56, -5594.41, -34.1236, 0, 0),
|
||||
(@PATH26, 3, -1823.1, -5600.48, -33.4813, 0, 0),
|
||||
(@PATH26, 4, -1856.05, -5605.8, -33.9261, 0, 0),
|
||||
(@PATH26, 5, -1873.25, -5594.56, -36.2275, 0, 0),
|
||||
(@PATH26, 6, -1884.44, -5579.1, -39.404, 0, 0),
|
||||
(@PATH26, 7, -1896.79, -5559.88, -39.6055, 0, 0),
|
||||
(@PATH26, 8, -1889.67, -5539.57, -37.1367, 0, 0),
|
||||
(@PATH26, 9, -1871.8, -5526.5, -38.0821, 0, 0),
|
||||
(@PATH26, 10, -1846.05, -5521.63, -40.426, 0, 0),
|
||||
(@PATH26, 11, -1827.92, -5477.87, -35.5678, 0, 0),
|
||||
(@PATH26, 12, -1820.32, -5455.87, -30.8618, 0, 0),
|
||||
(@PATH26, 13, -1804.97, -5430.85, -35.1741, 0, 0),
|
||||
(@PATH26, 14, -1779.96, -5415.25, -34.3368, 0, 0),
|
||||
(@PATH26, 15, -1766.38, -5396.98, -33.1941, 0, 0),
|
||||
(@PATH26, 16, -1779.96, -5415.25, -34.3368, 0, 0),
|
||||
(@PATH26, 17, -1804.97, -5430.85, -35.1741, 0, 0),
|
||||
(@PATH26, 18, -1820.32, -5455.87, -30.8618, 0, 0),
|
||||
(@PATH26, 19, -1827.92, -5477.87, -35.5678, 0, 0),
|
||||
(@PATH26, 20, -1846.05, -5521.63, -40.426, 0, 0),
|
||||
(@PATH26, 21, -1871.8, -5526.5, -38.0821, 0, 0),
|
||||
(@PATH26, 22, -1889.67, -5539.57, -37.1367, 0, 0),
|
||||
(@PATH26, 23, -1896.79, -5559.88, -39.6055, 0, 0),
|
||||
(@PATH26, 24, -1884.44, -5579.1, -39.404, 0, 0),
|
||||
(@PATH26, 25, -1873.25, -5594.56, -36.2275, 0, 0),
|
||||
(@PATH26, 26, -1856.05, -5605.8, -33.9261, 0, 0),
|
||||
(@PATH26, 27, -1823.1, -5600.48, -33.4813, 0, 0),
|
||||
(@PATH26, 28, -1803.56, -5594.41, -34.1236, 0, 0),
|
||||
(@PATH26, 29, -1776.08, -5589.01, -34.1817, 0, 0),
|
||||
(@PATH26, 30, -1755.5, -5592.2, -32.9915, 0, 0),
|
||||
(@PATH27, 1, -1142.71, -4322.34, -7.51439, 0, 0),
|
||||
(@PATH27, 2, -1145.22, -4345, -9.04151, 0, 0),
|
||||
(@PATH27, 3, -1160.35, -4357.77, -12.1184, 0, 0),
|
||||
(@PATH27, 4, -1176.23, -4369.2, -13.3569, 0, 0),
|
||||
(@PATH27, 5, -1169.89, -4381.36, -14.9885, 0, 0),
|
||||
(@PATH27, 6, -1166.83, -4391.78, -13.7736, 0, 0),
|
||||
(@PATH27, 7, -1184.73, -4412.31, -13.0552, 0, 0),
|
||||
(@PATH27, 8, -1183.19, -4430.99, -10.8047, 0, 0),
|
||||
(@PATH27, 9, -1202.45, -4460.21, -6.74833, 0, 0),
|
||||
(@PATH27, 10, -1215.99, -4472.52, -8.58044, 0, 0),
|
||||
(@PATH27, 11, -1208.83, -4488.69, -6.47131, 0, 0),
|
||||
(@PATH27, 12, -1188.06, -4498.22, -4.53936, 0, 0),
|
||||
(@PATH27, 13, -1169.26, -4479.33, -4.28472, 0, 0),
|
||||
(@PATH27, 14, -1162.07, -4452.04, -4.66485, 0, 0),
|
||||
(@PATH27, 15, -1155.31, -4427.7, -7.9868, 0, 0),
|
||||
(@PATH27, 16, -1165.52, -4412.07, -11.3374, 0, 0),
|
||||
(@PATH27, 17, -1159.32, -4392.17, -11.8421, 0, 0),
|
||||
(@PATH27, 18, -1144.14, -4381.1, -9.75907, 0, 0),
|
||||
(@PATH27, 19, -1133.1, -4355.53, -8.96437, 0, 0),
|
||||
(@PATH27, 20, -1120.31, -4335.31, -8.06143, 0, 0),
|
||||
(@PATH27, 21, -1119.31, -4321.89, -7.84806, 0, 0);
|
||||
@@ -0,0 +1,69 @@
|
||||
-- DB update 2022_10_15_00 -> 2022_10_15_01
|
||||
-- Shade of Taerar
|
||||
UPDATE `creature_template` SET `DamageModifier` = 12.65, `ArmorModifier` = 1.05 WHERE (`entry` = 15302);
|
||||
|
||||
DELETE FROM `creature_template_resistance` WHERE (`CreatureID` = 15302) AND (`School` IN (2, 3, 4, 5, 6));
|
||||
INSERT INTO `creature_template_resistance` (`CreatureID`, `School`, `Resistance`, `VerifiedBuild`) VALUES
|
||||
(15302, 2, 15, 0),
|
||||
(15302, 3, 15, 0),
|
||||
(15302, 4, 15, 0),
|
||||
(15302, 5, 15, 0),
|
||||
(15302, 6, 15, 0);
|
||||
|
||||
-- Taerar
|
||||
UPDATE `creature_template` SET `DamageModifier` = 12.65, `ArmorModifier` = 1.3 WHERE (`entry` = 14890);
|
||||
|
||||
DELETE FROM `creature_template_resistance` WHERE (`CreatureID` = 14890) AND (`School` IN (2, 3, 4, 5, 6));
|
||||
INSERT INTO `creature_template_resistance` (`CreatureID`, `School`, `Resistance`, `VerifiedBuild`) VALUES
|
||||
(14890, 2, 126, 0),
|
||||
(14890, 3, 126, 0),
|
||||
(14890, 4, 126, 0),
|
||||
(14890, 5, 126, 0),
|
||||
(14890, 6, 126, 0);
|
||||
|
||||
-- Emeriss
|
||||
UPDATE `creature_template` SET `DamageModifier` = 10.3, `ArmorModifier` = 1.3 WHERE (`entry` = 14889);
|
||||
|
||||
DELETE FROM `creature_template_resistance` WHERE (`CreatureID` = 14889) AND (`School` IN (2, 3, 4, 5, 6));
|
||||
INSERT INTO `creature_template_resistance` (`CreatureID`, `School`, `Resistance`, `VerifiedBuild`) VALUES
|
||||
(14889, 2, 126, 0),
|
||||
(14889, 3, 126, 0),
|
||||
(14889, 4, 126, 0),
|
||||
(14889, 5, 126, 0),
|
||||
(14889, 6, 126, 0);
|
||||
|
||||
-- Lethon
|
||||
UPDATE `creature_template` SET `DamageModifier` = 19.55, `ArmorModifier` = 1.3 WHERE (`entry` = 14888);
|
||||
|
||||
DELETE FROM `creature_template_resistance` WHERE (`CreatureID` = 14888) AND (`School` IN (2, 3, 4, 5, 6));
|
||||
INSERT INTO `creature_template_resistance` (`CreatureID`, `School`, `Resistance`, `VerifiedBuild`) VALUES
|
||||
(14888, 2, 126, 0),
|
||||
(14888, 3, 126, 0),
|
||||
(14888, 4, 126, 0),
|
||||
(14888, 5, 126, 0),
|
||||
(14888, 6, 126, 0);
|
||||
|
||||
-- Ysondre
|
||||
UPDATE `creature_template` SET `DamageModifier` = 12.55, `ArmorModifier` = 1.3 WHERE (`entry` = 14887);
|
||||
|
||||
DELETE FROM `creature_template_resistance` WHERE (`CreatureID` = 14887) AND (`School` IN (2, 3, 4, 5, 6));
|
||||
INSERT INTO `creature_template_resistance` (`CreatureID`, `School`, `Resistance`, `VerifiedBuild`) VALUES
|
||||
(14887, 2, 126, 0),
|
||||
(14887, 3, 126, 0),
|
||||
(14887, 4, 126, 0),
|
||||
(14887, 5, 126, 0),
|
||||
(14887, 6, 126, 0);
|
||||
|
||||
-- Demented Druid Spirit
|
||||
UPDATE `creature_template` SET `DamageModifier` = 3.55, `BaseAttackTime` = 1410, `RangeAttackTime` = 1551, `ArmorModifier` = 0.35 WHERE (`entry` = 15260);
|
||||
|
||||
-- Azuregos
|
||||
UPDATE `creature_template` SET `DamageModifier` = 20.45, `ArmorModifier` = 1.3 WHERE (`entry` = 6109);
|
||||
|
||||
DELETE FROM `creature_template_resistance` WHERE (`CreatureID` = 6109) AND (`School` IN (2, 3, 4, 5, 6));
|
||||
INSERT INTO `creature_template_resistance` (`CreatureID`, `School`, `Resistance`, `VerifiedBuild`) VALUES
|
||||
(6109, 2, 126, 0),
|
||||
(6109, 3, 126, 0),
|
||||
(6109, 4, 300, 0),
|
||||
(6109, 5, 126, 0),
|
||||
(6109, 6, 300, 0);
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_10_15_01 -> 2022_10_15_02
|
||||
--
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_arcanite_dragonling' WHERE `entry`=12473;
|
||||
@@ -0,0 +1,826 @@
|
||||
-- DB update 2022_10_15_02 -> 2022_10_15_03
|
||||
-- Eversong Woods
|
||||
UPDATE `gameobject` SET `ZoneId`=3430 WHERE `guid` IN (1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1292,1293,1294,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,21297,21298,21299,21300,21301,21302,21303,21304,21305,21306,21307,21308,21309,21310,21311,21312,21313,21314,21315,21316,21317,21318,21319,21320,33888,33889,33893,33896,33897,33900,33901,33908,33909,33910,33912,33914,33915,33916,33917,33918,33927,33930,33931,33933,33935,33936,33937,33938,33939,33940,33941,33942,33943,33944,33946,33949,33950,33952,33954,33955,64924,64925,64926,64927,64929,64935,64937,64938,64939,64940,64947,64948,64958,64959,64960,64961,64962,64963,64969,64970,64971,64977,64978,64992,64993,64994,64996,64997,64998,65124,65125,65126,65127,65128,65129,65130,65131,65132,65133,65134,65135,87202);
|
||||
|
||||
-- Duskwither Grounds:
|
||||
UPDATE `gameobject` SET `AreaId`=3480 WHERE `guid` IN (33942, 65126, 33946, 21309, 21306, 65125, 33940, 65124, 33939, 21307, 33937, 21308, 21305, 33938, 21304);
|
||||
|
||||
-- Stillwhisper Pond
|
||||
UPDATE `gameobject` SET `AreaId`=3470 WHERE `guid` IN (33908, 21303);
|
||||
|
||||
-- Saltheril's Haven
|
||||
UPDATE `gameobject` SET `AreaId`=3468 WHERE `guid` IN (65134);
|
||||
|
||||
-- North Sanctum
|
||||
UPDATE `gameobject` SET `AreaId`=3465 WHERE `guid` IN (21302, 21301, 21297, 65127);
|
||||
|
||||
-- West Sanctum
|
||||
UPDATE `gameobject` SET `AreaId`=3466 WHERE `guid` IN (65128, 21298, 21300, 33931, 21299);
|
||||
|
||||
-- The Scorched Grove
|
||||
UPDATE `gameobject` SET `AreaId`=3474 WHERE `guid` IN (65132, 21310, 21311, 65129);
|
||||
|
||||
-- Runestone Falithas
|
||||
UPDATE `gameobject` SET `AreaId`=3913 WHERE `guid` IN (21312, 65130, 21313, 65131);
|
||||
|
||||
-- Runestone Shan'dor
|
||||
UPDATE `gameobject` SET `AreaId`=3914 WHERE `guid` IN (21320, 21318, 21319, 65133);
|
||||
|
||||
-- East Sanctum
|
||||
UPDATE `gameobject` SET `AreaId`=3467 WHERE `guid` IN (21316, 33900, 33896, 21314, 65135, 33897, 21317, 21315);
|
||||
|
||||
DELETE FROM `pool_template` WHERE `entry`=970;
|
||||
DELETE FROM `pool_gameobject` WHERE `pool_entry`=970;
|
||||
|
||||
DELETE FROM `pool_template` WHERE `entry` BETWEEN 717 AND 727;
|
||||
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
|
||||
(717, 25, 'Peacebloom in Eversong Woods'),
|
||||
(718, 25, 'Silverleaf in Eversong Woods'),
|
||||
(719, 15, 'Earthroot in Eversong Woods'),
|
||||
(720, 3, 'Bloodthistle in West Sanctum'),
|
||||
(721, 2, 'Bloodthistle in The Scorched Grove'),
|
||||
(722, 3, 'Bloodthistle in Runestone Falithas'),
|
||||
(723, 2, 'Bloodthistle in Runestone Shan\'dor'),
|
||||
(724, 3, 'Bloodthistle in East Sanctum'),
|
||||
(725, 1, 'Bloodthistle in Stillwhisper Pond/Saltheril\'s Haven'),
|
||||
(726, 3, 'Bloodthistle in North Sanctum'),
|
||||
(727, 6, 'Bloodthistle in Duskwither Grounds');
|
||||
|
||||
DELETE FROM `pool_gameobject` WHERE `pool_entry` BETWEEN 717 AND 727;
|
||||
INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES
|
||||
(1308, 717, 0, 'Peacebloom'),
|
||||
(1309, 717, 0, 'Peacebloom'),
|
||||
(1310, 717, 0, 'Peacebloom'),
|
||||
(1311, 717, 0, 'Peacebloom'),
|
||||
(1312, 717, 0, 'Peacebloom'),
|
||||
(1313, 717, 0, 'Peacebloom'),
|
||||
(1314, 717, 0, 'Peacebloom'),
|
||||
(1315, 717, 0, 'Peacebloom'),
|
||||
(1316, 717, 0, 'Peacebloom'),
|
||||
(1317, 717, 0, 'Peacebloom'),
|
||||
(1318, 717, 0, 'Peacebloom'),
|
||||
(1319, 717, 0, 'Peacebloom'),
|
||||
(1320, 717, 0, 'Peacebloom'),
|
||||
(1321, 717, 0, 'Peacebloom'),
|
||||
(1322, 717, 0, 'Peacebloom'),
|
||||
(1323, 717, 0, 'Peacebloom'),
|
||||
(1324, 717, 0, 'Peacebloom'),
|
||||
(1325, 717, 0, 'Peacebloom'),
|
||||
(1326, 717, 0, 'Peacebloom'),
|
||||
(1327, 717, 0, 'Peacebloom'),
|
||||
(1328, 717, 0, 'Peacebloom'),
|
||||
(33889, 717, 0, 'Peacebloom'),
|
||||
(33893, 717, 0, 'Peacebloom'),
|
||||
(33910, 717, 0, 'Peacebloom'),
|
||||
(33912, 717, 0, 'Peacebloom'),
|
||||
(33914, 717, 0, 'Peacebloom'),
|
||||
(33930, 717, 0, 'Peacebloom'),
|
||||
(33933, 717, 0, 'Peacebloom'),
|
||||
(33935, 717, 0, 'Peacebloom'),
|
||||
(33943, 717, 0, 'Peacebloom'),
|
||||
(33954, 717, 0, 'Peacebloom'),
|
||||
(64947, 717, 0, 'Peacebloom'),
|
||||
(64948, 717, 0, 'Peacebloom'),
|
||||
(64958, 717, 0, 'Peacebloom'),
|
||||
(64959, 717, 0, 'Peacebloom'),
|
||||
(64960, 717, 0, 'Peacebloom'),
|
||||
(64961, 717, 0, 'Peacebloom'),
|
||||
(64962, 717, 0, 'Peacebloom'),
|
||||
(64963, 717, 0, 'Peacebloom'),
|
||||
(64969, 717, 0, 'Peacebloom'),
|
||||
(64970, 717, 0, 'Peacebloom'),
|
||||
(64971, 717, 0, 'Peacebloom'),
|
||||
|
||||
(1268, 718, 0, 'Silverleaf'),
|
||||
(1269, 718, 0, 'Silverleaf'),
|
||||
(1270, 718, 0, 'Silverleaf'),
|
||||
(1271, 718, 0, 'Silverleaf'),
|
||||
(1272, 718, 0, 'Silverleaf'),
|
||||
(1273, 718, 0, 'Silverleaf'),
|
||||
(1274, 718, 0, 'Silverleaf'),
|
||||
(1275, 718, 0, 'Silverleaf'),
|
||||
(1276, 718, 0, 'Silverleaf'),
|
||||
(1277, 718, 0, 'Silverleaf'),
|
||||
(1278, 718, 0, 'Silverleaf'),
|
||||
(1279, 718, 0, 'Silverleaf'),
|
||||
(1280, 718, 0, 'Silverleaf'),
|
||||
(1281, 718, 0, 'Silverleaf'),
|
||||
(1282, 718, 0, 'Silverleaf'),
|
||||
(1283, 718, 0, 'Silverleaf'),
|
||||
(1284, 718, 0, 'Silverleaf'),
|
||||
(1285, 718, 0, 'Silverleaf'),
|
||||
(1286, 718, 0, 'Silverleaf'),
|
||||
(1287, 718, 0, 'Silverleaf'),
|
||||
(1288, 718, 0, 'Silverleaf'),
|
||||
(1289, 718, 0, 'Silverleaf'),
|
||||
(1290, 718, 0, 'Silverleaf'),
|
||||
(1292, 718, 0, 'Silverleaf'),
|
||||
(1293, 718, 0, 'Silverleaf'),
|
||||
(1294, 718, 0, 'Silverleaf'),
|
||||
(33888, 718, 0, 'Silverleaf'),
|
||||
(33909, 718, 0, 'Silverleaf'),
|
||||
(33915, 718, 0, 'Silverleaf'),
|
||||
(33916, 718, 0, 'Silverleaf'),
|
||||
(33917, 718, 0, 'Silverleaf'),
|
||||
(33918, 718, 0, 'Silverleaf'),
|
||||
(33936, 718, 0, 'Silverleaf'),
|
||||
(33941, 718, 0, 'Silverleaf'),
|
||||
(33944, 718, 0, 'Silverleaf'),
|
||||
(33950, 718, 0, 'Silverleaf'),
|
||||
(33952, 718, 0, 'Silverleaf'),
|
||||
(33955, 718, 0, 'Silverleaf'),
|
||||
(64924, 718, 0, 'Silverleaf'),
|
||||
(64925, 718, 0, 'Silverleaf'),
|
||||
(64926, 718, 0, 'Silverleaf'),
|
||||
(64927, 718, 0, 'Silverleaf'),
|
||||
(64929, 718, 0, 'Silverleaf'),
|
||||
(64935, 718, 0, 'Silverleaf'),
|
||||
(64937, 718, 0, 'Silverleaf'),
|
||||
(64938, 718, 0, 'Silverleaf'),
|
||||
(64939, 718, 0, 'Silverleaf'),
|
||||
(64940, 718, 0, 'Silverleaf'),
|
||||
(87202, 718, 0, 'Silverleaf'),
|
||||
|
||||
(1872, 719, 0, 'Earthroot'),
|
||||
(1873, 719, 0, 'Earthroot'),
|
||||
(1874, 719, 0, 'Earthroot'),
|
||||
(1875, 719, 0, 'Earthroot'),
|
||||
(1876, 719, 0, 'Earthroot'),
|
||||
(1877, 719, 0, 'Earthroot'),
|
||||
(1878, 719, 0, 'Earthroot'),
|
||||
(1879, 719, 0, 'Earthroot'),
|
||||
(1880, 719, 0, 'Earthroot'),
|
||||
(1881, 719, 0, 'Earthroot'),
|
||||
(33901, 719, 0, 'Earthroot'),
|
||||
(33927, 719, 0, 'Earthroot'),
|
||||
(33949, 719, 0, 'Earthroot'),
|
||||
(64977, 719, 0, 'Earthroot'),
|
||||
(64978, 719, 0, 'Earthroot'),
|
||||
(64992, 719, 0, 'Earthroot'),
|
||||
(64993, 719, 0, 'Earthroot'),
|
||||
(64994, 719, 0, 'Earthroot'),
|
||||
(64996, 719, 0, 'Earthroot'),
|
||||
(64997, 719, 0, 'Earthroot'),
|
||||
(64998, 719, 0, 'Earthroot'),
|
||||
|
||||
(21298, 720, 0, 'Bloodthistle'),
|
||||
(21299, 720, 0, 'Bloodthistle'),
|
||||
(21300, 720, 0, 'Bloodthistle'),
|
||||
(33931, 720, 0, 'Bloodthistle'),
|
||||
(65128, 720, 0, 'Bloodthistle'),
|
||||
|
||||
(21310, 721, 0, 'Bloodthistle'),
|
||||
(21311, 721, 0, 'Bloodthistle'),
|
||||
(65129, 721, 0, 'Bloodthistle'),
|
||||
(65132, 721, 0, 'Bloodthistle'),
|
||||
|
||||
(21312, 722, 0, 'Bloodthistle'),
|
||||
(21313, 722, 0, 'Bloodthistle'),
|
||||
(65130, 722, 0, 'Bloodthistle'),
|
||||
(65131, 722, 0, 'Bloodthistle'),
|
||||
|
||||
(21318, 723, 0, 'Bloodthistle'),
|
||||
(21319, 723, 0, 'Bloodthistle'),
|
||||
(21320, 723, 0, 'Bloodthistle'),
|
||||
(65133, 723, 0, 'Bloodthistle'),
|
||||
|
||||
(21314, 724, 0, 'Bloodthistle'),
|
||||
(21315, 724, 0, 'Bloodthistle'),
|
||||
(21316, 724, 0, 'Bloodthistle'),
|
||||
(21317, 724, 0, 'Bloodthistle'),
|
||||
(33896, 724, 0, 'Bloodthistle'),
|
||||
(33897, 724, 0, 'Bloodthistle'),
|
||||
(33900, 724, 0, 'Bloodthistle'),
|
||||
(65135, 724, 0, 'Bloodthistle'),
|
||||
|
||||
(21303, 725, 0, 'Bloodthistle'),
|
||||
(33908, 725, 0, 'Bloodthistle'),
|
||||
(65134, 725, 0, 'Bloodthistle'),
|
||||
|
||||
(21297, 726, 0, 'Bloodthistle'),
|
||||
(21301, 726, 0, 'Bloodthistle'),
|
||||
(21302, 726, 0, 'Bloodthistle'),
|
||||
(65127, 726, 0, 'Bloodthistle'),
|
||||
|
||||
(21304, 727, 0, 'Bloodthistle'),
|
||||
(21305, 727, 0, 'Bloodthistle'),
|
||||
(21306, 727, 0, 'Bloodthistle'),
|
||||
(21307, 727, 0, 'Bloodthistle'),
|
||||
(21308, 727, 0, 'Bloodthistle'),
|
||||
(21309, 727, 0, 'Bloodthistle'),
|
||||
(33937, 727, 0, 'Bloodthistle'),
|
||||
(33938, 727, 0, 'Bloodthistle'),
|
||||
(33939, 727, 0, 'Bloodthistle'),
|
||||
(33940, 727, 0, 'Bloodthistle'),
|
||||
(33942, 727, 0, 'Bloodthistle'),
|
||||
(33946, 727, 0, 'Bloodthistle'),
|
||||
(65124, 727, 0, 'Bloodthistle'),
|
||||
(65125, 727, 0, 'Bloodthistle'),
|
||||
(65126, 727, 0, 'Bloodthistle');
|
||||
|
||||
-- Azuremyst Isle
|
||||
UPDATE `gameobject` SET `ZoneId`=3524 WHERE `guid` IN (1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,30446,30447,30454,30461,30464,30469,30471,30477,30480,30482,30495,30499,30500,30501,30506,30518,30526,30527,30530,30532,39946,39947,85302,85303,85304,85305,85306,85308,85309,85310,85311,85312,85313,85314,85315,85316,85317,85318,85319,85320,85321,85323,85324,85325,85326,85329,85332,85333,85338,85348,85352,85356,85364,85369,85372,85387,85388,86161,86173,86180,86191,86193,86194,86197,86218,86221,86242,86243,86244,87059);
|
||||
|
||||
DELETE FROM `pool_template` WHERE `entry`=971;
|
||||
DELETE FROM `pool_gameobject` WHERE `pool_entry`=971;
|
||||
|
||||
DELETE FROM `pool_template` WHERE `entry` BETWEEN 728 AND 730;
|
||||
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
|
||||
(728, 23, 'Peacebloom in Azuremyst Isle'),
|
||||
(729, 23, 'Silverleaf in Azuremyst Isle'),
|
||||
(730, 12, 'Earthroot in Azuremyst Isle');
|
||||
|
||||
DELETE FROM `pool_gameobject` WHERE `pool_entry` BETWEEN 728 AND 730;
|
||||
INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES
|
||||
(85387, 730, 0, 'Earthroot'),
|
||||
(85388, 730, 0, 'Earthroot'),
|
||||
(86221, 730, 0, 'Earthroot'),
|
||||
(86242, 730, 0, 'Earthroot'),
|
||||
(86243, 730, 0, 'Earthroot'),
|
||||
(86244, 730, 0, 'Earthroot'),
|
||||
(87059, 730, 0, 'Earthroot'),
|
||||
(1882, 730, 0, 'Earthroot'),
|
||||
(1883, 730, 0, 'Earthroot'),
|
||||
(1884, 730, 0, 'Earthroot'),
|
||||
(1885, 730, 0, 'Earthroot'),
|
||||
(1886, 730, 0, 'Earthroot'),
|
||||
(1891, 730, 0, 'Earthroot'),
|
||||
(1892, 730, 0, 'Earthroot'),
|
||||
(1893, 730, 0, 'Earthroot'),
|
||||
(1894, 730, 0, 'Earthroot'),
|
||||
(30471, 730, 0, 'Earthroot'),
|
||||
(30527, 730, 0, 'Earthroot'),
|
||||
(85320, 730, 0, 'Earthroot'),
|
||||
(85321, 730, 0, 'Earthroot'),
|
||||
(85323, 730, 0, 'Earthroot'),
|
||||
(85324, 730, 0, 'Earthroot'),
|
||||
(85326, 730, 0, 'Earthroot'),
|
||||
|
||||
(86197, 728, 0, 'Peacebloom'),
|
||||
(86218, 728, 0, 'Peacebloom'),
|
||||
(1329, 728, 0, 'Peacebloom'),
|
||||
(1330, 728, 0, 'Peacebloom'),
|
||||
(1331, 728, 0, 'Peacebloom'),
|
||||
(1332, 728, 0, 'Peacebloom'),
|
||||
(1333, 728, 0, 'Peacebloom'),
|
||||
(1334, 728, 0, 'Peacebloom'),
|
||||
(1335, 728, 0, 'Peacebloom'),
|
||||
(1336, 728, 0, 'Peacebloom'),
|
||||
(1337, 728, 0, 'Peacebloom'),
|
||||
(1342, 728, 0, 'Peacebloom'),
|
||||
(1343, 728, 0, 'Peacebloom'),
|
||||
(1344, 728, 0, 'Peacebloom'),
|
||||
(30447, 728, 0, 'Peacebloom'),
|
||||
(30454, 728, 0, 'Peacebloom'),
|
||||
(30464, 728, 0, 'Peacebloom'),
|
||||
(30480, 728, 0, 'Peacebloom'),
|
||||
(30495, 728, 0, 'Peacebloom'),
|
||||
(30500, 728, 0, 'Peacebloom'),
|
||||
(30506, 728, 0, 'Peacebloom'),
|
||||
(30530, 728, 0, 'Peacebloom'),
|
||||
(30532, 728, 0, 'Peacebloom'),
|
||||
(85312, 728, 0, 'Peacebloom'),
|
||||
(85313, 728, 0, 'Peacebloom'),
|
||||
(85314, 728, 0, 'Peacebloom'),
|
||||
(85315, 728, 0, 'Peacebloom'),
|
||||
(85316, 728, 0, 'Peacebloom'),
|
||||
(85317, 728, 0, 'Peacebloom'),
|
||||
(85318, 728, 0, 'Peacebloom'),
|
||||
(85364, 728, 0, 'Peacebloom'),
|
||||
(85369, 728, 0, 'Peacebloom'),
|
||||
(85372, 728, 0, 'Peacebloom'),
|
||||
|
||||
(1295, 729, 0, 'Silverleaf'),
|
||||
(86161, 729, 0, 'Silverleaf'),
|
||||
(86173, 729, 0, 'Silverleaf'),
|
||||
(86180, 729, 0, 'Silverleaf'),
|
||||
(86191, 729, 0, 'Silverleaf'),
|
||||
(86193, 729, 0, 'Silverleaf'),
|
||||
(86194, 729, 0, 'Silverleaf'),
|
||||
(1305, 729, 0, 'Silverleaf'),
|
||||
(1306, 729, 0, 'Silverleaf'),
|
||||
(1307, 729, 0, 'Silverleaf'),
|
||||
(1296, 729, 0, 'Silverleaf'),
|
||||
(1297, 729, 0, 'Silverleaf'),
|
||||
(1298, 729, 0, 'Silverleaf'),
|
||||
(30446, 729, 0, 'Silverleaf'),
|
||||
(30461, 729, 0, 'Silverleaf'),
|
||||
(30469, 729, 0, 'Silverleaf'),
|
||||
(1299, 729, 0, 'Silverleaf'),
|
||||
(30477, 729, 0, 'Silverleaf'),
|
||||
(30482, 729, 0, 'Silverleaf'),
|
||||
(30499, 729, 0, 'Silverleaf'),
|
||||
(30501, 729, 0, 'Silverleaf'),
|
||||
(30518, 729, 0, 'Silverleaf'),
|
||||
(1300, 729, 0, 'Silverleaf'),
|
||||
(30526, 729, 0, 'Silverleaf'),
|
||||
(39946, 729, 0, 'Silverleaf'),
|
||||
(39947, 729, 0, 'Silverleaf'),
|
||||
(85302, 729, 0, 'Silverleaf'),
|
||||
(85303, 729, 0, 'Silverleaf'),
|
||||
(85304, 729, 0, 'Silverleaf'),
|
||||
(85305, 729, 0, 'Silverleaf'),
|
||||
(1301, 729, 0, 'Silverleaf'),
|
||||
(85306, 729, 0, 'Silverleaf'),
|
||||
(85308, 729, 0, 'Silverleaf'),
|
||||
(85309, 729, 0, 'Silverleaf'),
|
||||
(85310, 729, 0, 'Silverleaf'),
|
||||
(1302, 729, 0, 'Silverleaf'),
|
||||
(85329, 729, 0, 'Silverleaf'),
|
||||
(85332, 729, 0, 'Silverleaf'),
|
||||
(85333, 729, 0, 'Silverleaf'),
|
||||
(85338, 729, 0, 'Silverleaf'),
|
||||
(85348, 729, 0, 'Silverleaf'),
|
||||
(85352, 729, 0, 'Silverleaf'),
|
||||
(85356, 729, 0, 'Silverleaf');
|
||||
|
||||
-- Silvermyst Isle, it's the isle southwest of Azuremyst
|
||||
DELETE FROM `pool_template` WHERE `entry` BETWEEN 731 AND 733;
|
||||
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
|
||||
(731, 2, 'Peacebloom in Silvermyst Isle'),
|
||||
(732, 2, 'Silverleaf in Silvermyst Isle'),
|
||||
(733, 3, 'Earthroot in Silvermyst Isle');
|
||||
|
||||
DELETE FROM `pool_gameobject` WHERE `pool_entry` BETWEEN 731 AND 733;
|
||||
INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES
|
||||
(1338, 731, 0, 'Peacebloom'),
|
||||
(1339, 731, 0, 'Peacebloom'),
|
||||
(1340, 731, 0, 'Peacebloom'),
|
||||
(1341, 731, 0, 'Peacebloom'),
|
||||
|
||||
(1303, 732, 0, 'Silverleaf'),
|
||||
(1304, 732, 0, 'Silverleaf'),
|
||||
(85311, 732, 0, 'Silverleaf'),
|
||||
|
||||
(85325, 733, 0, 'Earthroot'),
|
||||
(1887, 733, 0, 'Earthroot'),
|
||||
(1888, 733, 0, 'Earthroot'),
|
||||
(1889, 733, 0, 'Earthroot'),
|
||||
(1890, 733, 0, 'Earthroot'),
|
||||
(85319, 733, 0, 'Earthroot');
|
||||
|
||||
-- Ghostlands Old Pool 969
|
||||
UPDATE `gameobject` SET `ZoneId`=3433 WHERE `guid` IN (1291,27209,27233,27237,27242,27253,27269,27270,27271,27273,27275,27294,27300,27302,27303,27308,27309,27310,27323,27369,27380,27386,27387,27390,27423,27426,27427,27430,27433,27434,27440,27450,27451,27456,27457,27458,27459,27460,27461,27466,27468,27491,27492,27494,27495,27496,27513,27526,27527,27528,27529,27531,27535,27537,27538,27539,27540,33289,33295,33296,33297,33298,33299,33885,33956,33957,33958,33960,33961,33962,33963,33965,33973,33975,33978,33982,33983,33985,33986,33988,33990,33991,33993,33994,33995,33996,34005,34013,34014,34015,34021,34022,64908,64918,64923,64928,64931,64933,64934,64936,64949,64950,64965,64966,64967,64968,64984,64991,64995,65006,65015,65021,65024,65025,65045,65064);
|
||||
|
||||
DELETE FROM `pool_template` WHERE `entry`=969;
|
||||
DELETE FROM `pool_gameobject` WHERE `pool_entry`=969;
|
||||
|
||||
DELETE FROM `pool_template` WHERE `entry` BETWEEN 734 AND 740;
|
||||
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
|
||||
(734, 22, 'Silverleaf in Ghostlands'),
|
||||
(735, 14, 'Peacebloom in Ghostlands'),
|
||||
(736, 11, 'Earthroot in Ghostlands'),
|
||||
(737, 8, 'Mageroyal in Ghostlands'),
|
||||
(738, 8, 'Briarthorn in Ghostlands'),
|
||||
(739, 6, 'Stranglekelp in Ghostlands'),
|
||||
(740, 6, 'Bruiseweed in Ghostlands');
|
||||
|
||||
DELETE FROM `pool_gameobject` WHERE `pool_entry` BETWEEN 734 AND 740;
|
||||
INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES
|
||||
(1291, 734, 0, 'Silverleaf'),
|
||||
(64936, 734, 0, 'Silverleaf'),
|
||||
(27300, 734, 0, 'Silverleaf'),
|
||||
(27303, 734, 0, 'Silverleaf'),
|
||||
(27369, 734, 0, 'Silverleaf'),
|
||||
(27380, 734, 0, 'Silverleaf'),
|
||||
(27390, 734, 0, 'Silverleaf'),
|
||||
(27423, 734, 0, 'Silverleaf'),
|
||||
(27440, 734, 0, 'Silverleaf'),
|
||||
(27450, 734, 0, 'Silverleaf'),
|
||||
(27459, 734, 0, 'Silverleaf'),
|
||||
(27461, 734, 0, 'Silverleaf'),
|
||||
(27237, 734, 0, 'Silverleaf'),
|
||||
(27468, 734, 0, 'Silverleaf'),
|
||||
(27495, 734, 0, 'Silverleaf'),
|
||||
(27242, 734, 0, 'Silverleaf'),
|
||||
(27528, 734, 0, 'Silverleaf'),
|
||||
(27531, 734, 0, 'Silverleaf'),
|
||||
(27538, 734, 0, 'Silverleaf'),
|
||||
(33295, 734, 0, 'Silverleaf'),
|
||||
(27253, 734, 0, 'Silverleaf'),
|
||||
(33299, 734, 0, 'Silverleaf'),
|
||||
(33957, 734, 0, 'Silverleaf'),
|
||||
(33958, 734, 0, 'Silverleaf'),
|
||||
(33961, 734, 0, 'Silverleaf'),
|
||||
(33978, 734, 0, 'Silverleaf'),
|
||||
(33983, 734, 0, 'Silverleaf'),
|
||||
(27270, 734, 0, 'Silverleaf'),
|
||||
(33990, 734, 0, 'Silverleaf'),
|
||||
(33996, 734, 0, 'Silverleaf'),
|
||||
(64908, 734, 0, 'Silverleaf'),
|
||||
(64918, 734, 0, 'Silverleaf'),
|
||||
(64923, 734, 0, 'Silverleaf'),
|
||||
(64928, 734, 0, 'Silverleaf'),
|
||||
(64931, 734, 0, 'Silverleaf'),
|
||||
(64933, 734, 0, 'Silverleaf'),
|
||||
(64934, 734, 0, 'Silverleaf'),
|
||||
|
||||
(64949, 735, 0, 'Peacebloom'),
|
||||
(64950, 735, 0, 'Peacebloom'),
|
||||
(64965, 735, 0, 'Peacebloom'),
|
||||
(64966, 735, 0, 'Peacebloom'),
|
||||
(64967, 735, 0, 'Peacebloom'),
|
||||
(64968, 735, 0, 'Peacebloom'),
|
||||
(27275, 735, 0, 'Peacebloom'),
|
||||
(27387, 735, 0, 'Peacebloom'),
|
||||
(27460, 735, 0, 'Peacebloom'),
|
||||
(27466, 735, 0, 'Peacebloom'),
|
||||
(27491, 735, 0, 'Peacebloom'),
|
||||
(27492, 735, 0, 'Peacebloom'),
|
||||
(27529, 735, 0, 'Peacebloom'),
|
||||
(33296, 735, 0, 'Peacebloom'),
|
||||
(33298, 735, 0, 'Peacebloom'),
|
||||
(33885, 735, 0, 'Peacebloom'),
|
||||
(33962, 735, 0, 'Peacebloom'),
|
||||
(33988, 735, 0, 'Peacebloom'),
|
||||
(33994, 735, 0, 'Peacebloom'),
|
||||
(27271, 735, 0, 'Peacebloom'),
|
||||
(34022, 735, 0, 'Peacebloom'),
|
||||
|
||||
(27273, 736, 0, 'Earthroot'),
|
||||
(64984, 736, 0, 'Earthroot'),
|
||||
(64991, 736, 0, 'Earthroot'),
|
||||
(64995, 736, 0, 'Earthroot'),
|
||||
(27310, 736, 0, 'Earthroot'),
|
||||
(27209, 736, 0, 'Earthroot'),
|
||||
(27426, 736, 0, 'Earthroot'),
|
||||
(27430, 736, 0, 'Earthroot'),
|
||||
(27456, 736, 0, 'Earthroot'),
|
||||
(27496, 736, 0, 'Earthroot'),
|
||||
(33956, 736, 0, 'Earthroot'),
|
||||
(33973, 736, 0, 'Earthroot'),
|
||||
(33995, 736, 0, 'Earthroot'),
|
||||
(34021, 736, 0, 'Earthroot'),
|
||||
|
||||
(65006, 737, 0, 'Mageroyal'),
|
||||
(65015, 737, 0, 'Mageroyal'),
|
||||
(65021, 737, 0, 'Mageroyal'),
|
||||
(27323, 737, 0, 'Mageroyal'),
|
||||
(27427, 737, 0, 'Mageroyal'),
|
||||
(27233, 737, 0, 'Mageroyal'),
|
||||
(27513, 737, 0, 'Mageroyal'),
|
||||
(27526, 737, 0, 'Mageroyal'),
|
||||
(27527, 737, 0, 'Mageroyal'),
|
||||
(27537, 737, 0, 'Mageroyal'),
|
||||
(33963, 737, 0, 'Mageroyal'),
|
||||
(33975, 737, 0, 'Mageroyal'),
|
||||
(33985, 737, 0, 'Mageroyal'),
|
||||
(33993, 737, 0, 'Mageroyal'),
|
||||
(34015, 737, 0, 'Mageroyal'),
|
||||
|
||||
(65024, 738, 0, 'Briarthorn'),
|
||||
(65025, 738, 0, 'Briarthorn'),
|
||||
(65045, 738, 0, 'Briarthorn'),
|
||||
(27294, 738, 0, 'Briarthorn'),
|
||||
(27308, 738, 0, 'Briarthorn'),
|
||||
(27386, 738, 0, 'Briarthorn'),
|
||||
(27458, 738, 0, 'Briarthorn'),
|
||||
(27535, 738, 0, 'Briarthorn'),
|
||||
(33297, 738, 0, 'Briarthorn'),
|
||||
(27269, 738, 0, 'Briarthorn'),
|
||||
(33965, 738, 0, 'Briarthorn'),
|
||||
(33982, 738, 0, 'Briarthorn'),
|
||||
(33986, 738, 0, 'Briarthorn'),
|
||||
(33991, 738, 0, 'Briarthorn'),
|
||||
|
||||
(27433, 739, 0, 'Stranglekelp'),
|
||||
(27434, 739, 0, 'Stranglekelp'),
|
||||
(27457, 739, 0, 'Stranglekelp'),
|
||||
(27494, 739, 0, 'Stranglekelp'),
|
||||
(34005, 739, 0, 'Stranglekelp'),
|
||||
(34014, 739, 0, 'Stranglekelp'),
|
||||
|
||||
(65064, 740, 0, 'Bruiseweed'),
|
||||
(27302, 740, 0, 'Bruiseweed'),
|
||||
(27309, 740, 0, 'Bruiseweed'),
|
||||
(27451, 740, 0, 'Bruiseweed'),
|
||||
(27539, 740, 0, 'Bruiseweed'),
|
||||
(27540, 740, 0, 'Bruiseweed'),
|
||||
(33289, 740, 0, 'Bruiseweed'),
|
||||
(33960, 740, 0, 'Bruiseweed'),
|
||||
(34013, 740, 0, 'Bruiseweed');
|
||||
|
||||
-- Bloodmyst Isle Old Pool 11648
|
||||
UPDATE `gameobject` SET `ZoneId`=3525 WHERE `guid` IN (86179,86192,86213,86237,86252,86267,86931,87058,2134867,2134967,2134968,2134969,2134970,2134971,2134972,2134973,2134974,2134975,2134976,2134977,2134978,2134980,2134981,2134982,2134983,2134984,2134985,2134986,2134987,2134988,2134989,2134990,2134991,2134992,2134993,2134994,2134995,2134996,2134997,2134998,2134999,2135000,2135001,2135002,2135003,2135004,2135005,2135006,2135007,2135008,2135009,2135010,2135011,2135012,2135013,2135014,2135015,2135016,2135017,2135018,2135019,2135020,2135021,2135022,2135023,2135024,2135025,2135026,2135027,2135028,2135029,2135030,2135031,2135032,2135033,2135034,2135035,2135036,2135037,2135038,2135039,2135040,2135041,2135042,2135043,2135044,2135045,2135046,2135047,2135048,2135049,2135050,2135051,2135052,2135053,2135054,2135055,2135056,2135057,2135058,2135059,2135060,2135061,2135062,2135063,2135064,2135065,2135066,2135067,2135068,2135069,2135070,2135071,2135072,2135073,2135074,2135075,2135076,2135077,2135078,2135079,2135080,2135081,2135082,2135083,2135084,2135085,2135086,2135087,2135088,2135089,2135090,2135091,2135092,2135093,2135094,2135095,2135096,2135097,2135098,2135099,2135100,2135101,2135102,2135103,2135104,2135105,2135106,2135107,2135108,2135109,2135110,2135111,2135112,2135113,2135114,2135115,2135116,2135117,2135118,2135119,2135120,2135121,2135122,2135123,2135124,2135125,2135126,2135127,2135128,2135129,2135130,2135131,2135132,2135133,2135134,2135135,2135136,2135137,2135138,2135139,2135140,2135141,2135142,2135143,2135144,2135145,2135146,2135147,2135148,2135149,2135150,2135151,2135152,2135153,2135154,2135155,2135156,2135157,2135158,2135159,2135160,2135161,2135162,2135164,2135165,2135166,2135167,2135168,2135169,2135170,2135171,2135172,2135173,2135174,2135175,2135176,2135177,2135178,2135179,2135180,2135181,2135182,2135183,2135184,2135185,2135186,2135187,2135188,2135189,2135190,2135191,2135192,2135193,2135194,2135195,2135196,2135197,2135198,2135199,2135200,2135201,2135202,2135203,2135204,2135205,2135206,2135207,2135208,2135209,2135210,2135211,2135212,2135213,2135214,2135215,2135216,2135217,2135218,2135219,2135220,2135221,2135222,2135223,2135224,2135225,2135226,2135227,2135228,2135229,2135230,2135231,2135232,2135233,2135234,2135235,2135236,2135237,2135238,2135239,2135240,2135241,2135242,2135243,2135253);
|
||||
|
||||
DELETE FROM `pool_template` WHERE `entry`=11648;
|
||||
DELETE FROM `pool_gameobject` WHERE `pool_entry`=11648;
|
||||
|
||||
DELETE FROM `pool_template` WHERE `entry` BETWEEN 741 AND 747;
|
||||
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
|
||||
(741, 22, 'Silverleaf in Bloodmyst Isle'),
|
||||
(742, 16, 'Peacebloom in Bloodmyst Isle'),
|
||||
(743, 12, 'Earthroot in Bloodmyst Isle'),
|
||||
(744, 8, 'Mageroyal in Bloodmyst Isle'),
|
||||
(745, 9, 'Briarthorn in Bloodmyst Isle'),
|
||||
(746, 5, 'Bruiseweed in Bloodmyst Isle'),
|
||||
(747, 8, 'Stranglekelp in Bloodmyst Isle');
|
||||
|
||||
DELETE FROM `pool_gameobject` WHERE `pool_entry` BETWEEN 741 AND 747;
|
||||
INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES
|
||||
(86213, 741, 0, 'Silverleaf'),
|
||||
(86267, 741, 0, 'Silverleaf'),
|
||||
(2134967, 741, 0, 'Silverleaf'),
|
||||
(2134970, 741, 0, 'Silverleaf'),
|
||||
(2134975, 741, 0, 'Silverleaf'),
|
||||
(2134976, 741, 0, 'Silverleaf'),
|
||||
(2134977, 741, 0, 'Silverleaf'),
|
||||
(2134987, 741, 0, 'Silverleaf'),
|
||||
(2134988, 741, 0, 'Silverleaf'),
|
||||
(2134990, 741, 0, 'Silverleaf'),
|
||||
(2134997, 741, 0, 'Silverleaf'),
|
||||
(2135002, 741, 0, 'Silverleaf'),
|
||||
(2135005, 741, 0, 'Silverleaf'),
|
||||
(2135013, 741, 0, 'Silverleaf'),
|
||||
(2135017, 741, 0, 'Silverleaf'),
|
||||
(2135022, 741, 0, 'Silverleaf'),
|
||||
(2135024, 741, 0, 'Silverleaf'),
|
||||
(2135030, 741, 0, 'Silverleaf'),
|
||||
(2135039, 741, 0, 'Silverleaf'),
|
||||
(2135042, 741, 0, 'Silverleaf'),
|
||||
(2135045, 741, 0, 'Silverleaf'),
|
||||
(2135054, 741, 0, 'Silverleaf'),
|
||||
(2135055, 741, 0, 'Silverleaf'),
|
||||
(2135057, 741, 0, 'Silverleaf'),
|
||||
(2135058, 741, 0, 'Silverleaf'),
|
||||
(2135059, 741, 0, 'Silverleaf'),
|
||||
(2135068, 741, 0, 'Silverleaf'),
|
||||
(2135070, 741, 0, 'Silverleaf'),
|
||||
(2135071, 741, 0, 'Silverleaf'),
|
||||
(2135072, 741, 0, 'Silverleaf'),
|
||||
(2135080, 741, 0, 'Silverleaf'),
|
||||
(2135088, 741, 0, 'Silverleaf'),
|
||||
(2135090, 741, 0, 'Silverleaf'),
|
||||
(2135092, 741, 0, 'Silverleaf'),
|
||||
(2135093, 741, 0, 'Silverleaf'),
|
||||
(2135095, 741, 0, 'Silverleaf'),
|
||||
(2135096, 741, 0, 'Silverleaf'),
|
||||
(2135102, 741, 0, 'Silverleaf'),
|
||||
(2135116, 741, 0, 'Silverleaf'),
|
||||
(2135117, 741, 0, 'Silverleaf'),
|
||||
(2135120, 741, 0, 'Silverleaf'),
|
||||
(2135130, 741, 0, 'Silverleaf'),
|
||||
(2135131, 741, 0, 'Silverleaf'),
|
||||
(2135137, 741, 0, 'Silverleaf'),
|
||||
(2135147, 741, 0, 'Silverleaf'),
|
||||
(2135152, 741, 0, 'Silverleaf'),
|
||||
(2135153, 741, 0, 'Silverleaf'),
|
||||
(2135158, 741, 0, 'Silverleaf'),
|
||||
(2135159, 741, 0, 'Silverleaf'),
|
||||
(2135164, 741, 0, 'Silverleaf'),
|
||||
(2135166, 741, 0, 'Silverleaf'),
|
||||
(2135176, 741, 0, 'Silverleaf'),
|
||||
(2135180, 741, 0, 'Silverleaf'),
|
||||
(2135187, 741, 0, 'Silverleaf'),
|
||||
(2135206, 741, 0, 'Silverleaf'),
|
||||
(2135207, 741, 0, 'Silverleaf'),
|
||||
(2135208, 741, 0, 'Silverleaf'),
|
||||
(2135211, 741, 0, 'Silverleaf'),
|
||||
(2135224, 741, 0, 'Silverleaf'),
|
||||
(2135234, 741, 0, 'Silverleaf'),
|
||||
(2135235, 741, 0, 'Silverleaf'),
|
||||
(2135236, 741, 0, 'Silverleaf'),
|
||||
|
||||
(86192, 742, 0, 'Peacebloom'),
|
||||
(2134989, 742, 0, 'Peacebloom'),
|
||||
(2134996, 742, 0, 'Peacebloom'),
|
||||
(2134998, 742, 0, 'Peacebloom'),
|
||||
(2135003, 742, 0, 'Peacebloom'),
|
||||
(2135008, 742, 0, 'Peacebloom'),
|
||||
(2135011, 742, 0, 'Peacebloom'),
|
||||
(2135012, 742, 0, 'Peacebloom'),
|
||||
(2135016, 742, 0, 'Peacebloom'),
|
||||
(2135019, 742, 0, 'Peacebloom'),
|
||||
(2135044, 742, 0, 'Peacebloom'),
|
||||
(2135046, 742, 0, 'Peacebloom'),
|
||||
(2135051, 742, 0, 'Peacebloom'),
|
||||
(2135053, 742, 0, 'Peacebloom'),
|
||||
(2135062, 742, 0, 'Peacebloom'),
|
||||
(2135063, 742, 0, 'Peacebloom'),
|
||||
|
||||
(2135078, 742, 0, 'Peacebloom'),
|
||||
(2135079, 742, 0, 'Peacebloom'),
|
||||
(2135083, 742, 0, 'Peacebloom'),
|
||||
(2135084, 742, 0, 'Peacebloom'),
|
||||
(2135101, 742, 0, 'Peacebloom'),
|
||||
(2135103, 742, 0, 'Peacebloom'),
|
||||
(2135108, 742, 0, 'Peacebloom'),
|
||||
(2135115, 742, 0, 'Peacebloom'),
|
||||
(2135118, 742, 0, 'Peacebloom'),
|
||||
(2135128, 742, 0, 'Peacebloom'),
|
||||
(2135132, 742, 0, 'Peacebloom'),
|
||||
(2135138, 742, 0, 'Peacebloom'),
|
||||
(2135140, 742, 0, 'Peacebloom'),
|
||||
(2135141, 742, 0, 'Peacebloom'),
|
||||
(2135142, 742, 0, 'Peacebloom'),
|
||||
(2135146, 742, 0, 'Peacebloom'),
|
||||
(2135150, 742, 0, 'Peacebloom'),
|
||||
(2135151, 742, 0, 'Peacebloom'),
|
||||
(2135161, 742, 0, 'Peacebloom'),
|
||||
(2135165, 742, 0, 'Peacebloom'),
|
||||
(2135167, 742, 0, 'Peacebloom'),
|
||||
(2135179, 742, 0, 'Peacebloom'),
|
||||
(2135184, 742, 0, 'Peacebloom'),
|
||||
(2135195, 742, 0, 'Peacebloom'),
|
||||
(2135203, 742, 0, 'Peacebloom'),
|
||||
(2135204, 742, 0, 'Peacebloom'),
|
||||
(2135217, 742, 0, 'Peacebloom'),
|
||||
(2135223, 742, 0, 'Peacebloom'),
|
||||
(2135230, 742, 0, 'Peacebloom'),
|
||||
(2135240, 742, 0, 'Peacebloom'),
|
||||
|
||||
(2134867, 743, 0, 'Earthroot'),
|
||||
(2134973, 743, 0, 'Earthroot'),
|
||||
(2134974, 743, 0, 'Earthroot'),
|
||||
(2134981, 743, 0, 'Earthroot'),
|
||||
(2134985, 743, 0, 'Earthroot'),
|
||||
(2134986, 743, 0, 'Earthroot'),
|
||||
(2134995, 743, 0, 'Earthroot'),
|
||||
(2135000, 743, 0, 'Earthroot'),
|
||||
(2135001, 743, 0, 'Earthroot'),
|
||||
(2135009, 743, 0, 'Earthroot'),
|
||||
(2135014, 743, 0, 'Earthroot'),
|
||||
(2135015, 743, 0, 'Earthroot'),
|
||||
(2135021, 743, 0, 'Earthroot'),
|
||||
(2135029, 743, 0, 'Earthroot'),
|
||||
(2135031, 743, 0, 'Earthroot'),
|
||||
(2135040, 743, 0, 'Earthroot'),
|
||||
(2135041, 743, 0, 'Earthroot'),
|
||||
(2135050, 743, 0, 'Earthroot'),
|
||||
(2135065, 743, 0, 'Earthroot'),
|
||||
(2135066, 743, 0, 'Earthroot'),
|
||||
(2135098, 743, 0, 'Earthroot'),
|
||||
(2135122, 743, 0, 'Earthroot'),
|
||||
(2135126, 743, 0, 'Earthroot'),
|
||||
(2135127, 743, 0, 'Earthroot'),
|
||||
(2135143, 743, 0, 'Earthroot'),
|
||||
(2135170, 743, 0, 'Earthroot'),
|
||||
(2135178, 743, 0, 'Earthroot'),
|
||||
(2135186, 743, 0, 'Earthroot'),
|
||||
(2135191, 743, 0, 'Earthroot'),
|
||||
(2135192, 743, 0, 'Earthroot'),
|
||||
(2135201, 743, 0, 'Earthroot'),
|
||||
(2135210, 743, 0, 'Earthroot'),
|
||||
(2135220, 743, 0, 'Earthroot'),
|
||||
(2135221, 743, 0, 'Earthroot'),
|
||||
(2135227, 743, 0, 'Earthroot'),
|
||||
|
||||
(2134971, 744, 0, 'Mageroyal'),
|
||||
(2134982, 744, 0, 'Mageroyal'),
|
||||
(2135004, 744, 0, 'Mageroyal'),
|
||||
(2135007, 744, 0, 'Mageroyal'),
|
||||
(2135018, 744, 0, 'Mageroyal'),
|
||||
(2135028, 744, 0, 'Mageroyal'),
|
||||
(2135036, 744, 0, 'Mageroyal'),
|
||||
(2135043, 744, 0, 'Mageroyal'),
|
||||
(2135052, 744, 0, 'Mageroyal'),
|
||||
(2135064, 744, 0, 'Mageroyal'),
|
||||
(2135085, 744, 0, 'Mageroyal'),
|
||||
(2135089, 744, 0, 'Mageroyal'),
|
||||
(2135091, 744, 0, 'Mageroyal'),
|
||||
(2135094, 744, 0, 'Mageroyal'),
|
||||
(2135104, 744, 0, 'Mageroyal'),
|
||||
(2135109, 744, 0, 'Mageroyal'),
|
||||
(2135124, 744, 0, 'Mageroyal'),
|
||||
(2135129, 744, 0, 'Mageroyal'),
|
||||
(2135133, 744, 0, 'Mageroyal'),
|
||||
(2135144, 744, 0, 'Mageroyal'),
|
||||
(2135148, 744, 0, 'Mageroyal'),
|
||||
(2135149, 744, 0, 'Mageroyal'),
|
||||
(2135157, 744, 0, 'Mageroyal'),
|
||||
(2135168, 744, 0, 'Mageroyal'),
|
||||
(2135171, 744, 0, 'Mageroyal'),
|
||||
(2135174, 744, 0, 'Mageroyal'),
|
||||
(2135200, 744, 0, 'Mageroyal'),
|
||||
(2135214, 744, 0, 'Mageroyal'),
|
||||
(2135216, 744, 0, 'Mageroyal'),
|
||||
(2135222, 744, 0, 'Mageroyal'),
|
||||
(2135226, 744, 0, 'Mageroyal'),
|
||||
(2135231, 744, 0, 'Mageroyal'),
|
||||
|
||||
(86179, 745, 0, 'Briarthorn'),
|
||||
(86252, 745, 0, 'Briarthorn'),
|
||||
(87058, 745, 0, 'Briarthorn'),
|
||||
(2134968, 745, 0, 'Briarthorn'),
|
||||
(2134969, 745, 0, 'Briarthorn'),
|
||||
(2134972, 745, 0, 'Briarthorn'),
|
||||
(2134978, 745, 0, 'Briarthorn'),
|
||||
(2134980, 745, 0, 'Briarthorn'),
|
||||
(2134984, 745, 0, 'Briarthorn'),
|
||||
(2134992, 745, 0, 'Briarthorn'),
|
||||
(2134993, 745, 0, 'Briarthorn'),
|
||||
(2134994, 745, 0, 'Briarthorn'),
|
||||
(2134999, 745, 0, 'Briarthorn'),
|
||||
(2135006, 745, 0, 'Briarthorn'),
|
||||
(2135025, 745, 0, 'Briarthorn'),
|
||||
(2135026, 745, 0, 'Briarthorn'),
|
||||
(2135033, 745, 0, 'Briarthorn'),
|
||||
(2135034, 745, 0, 'Briarthorn'),
|
||||
(2135037, 745, 0, 'Briarthorn'),
|
||||
(2135048, 745, 0, 'Briarthorn'),
|
||||
(2135049, 745, 0, 'Briarthorn'),
|
||||
(2135060, 745, 0, 'Briarthorn'),
|
||||
(2135073, 745, 0, 'Briarthorn'),
|
||||
(2135074, 745, 0, 'Briarthorn'),
|
||||
(2135081, 745, 0, 'Briarthorn'),
|
||||
(2135082, 745, 0, 'Briarthorn'),
|
||||
(2135086, 745, 0, 'Briarthorn'),
|
||||
(2135110, 745, 0, 'Briarthorn'),
|
||||
(2135111, 745, 0, 'Briarthorn'),
|
||||
(2135112, 745, 0, 'Briarthorn'),
|
||||
(2135113, 745, 0, 'Briarthorn'),
|
||||
(2135121, 745, 0, 'Briarthorn'),
|
||||
(2135134, 745, 0, 'Briarthorn'),
|
||||
(2135135, 745, 0, 'Briarthorn'),
|
||||
(2135175, 745, 0, 'Briarthorn'),
|
||||
(2135182, 745, 0, 'Briarthorn'),
|
||||
(2135185, 745, 0, 'Briarthorn'),
|
||||
(2135189, 745, 0, 'Briarthorn'),
|
||||
(2135190, 745, 0, 'Briarthorn'),
|
||||
(2135194, 745, 0, 'Briarthorn'),
|
||||
(2135196, 745, 0, 'Briarthorn'),
|
||||
(2135197, 745, 0, 'Briarthorn'),
|
||||
(2135205, 745, 0, 'Briarthorn'),
|
||||
(2135219, 745, 0, 'Briarthorn'),
|
||||
(2135242, 745, 0, 'Briarthorn'),
|
||||
(2135243, 745, 0, 'Briarthorn'),
|
||||
|
||||
(86931, 746, 0, 'Bruiseweed'),
|
||||
(2134983, 746, 0, 'Bruiseweed'),
|
||||
(2134991, 746, 0, 'Bruiseweed'),
|
||||
(2135047, 746, 0, 'Bruiseweed'),
|
||||
(2135097, 746, 0, 'Bruiseweed'),
|
||||
(2135105, 746, 0, 'Bruiseweed'),
|
||||
(2135145, 746, 0, 'Bruiseweed'),
|
||||
(2135154, 746, 0, 'Bruiseweed'),
|
||||
(2135155, 746, 0, 'Bruiseweed'),
|
||||
(2135169, 746, 0, 'Bruiseweed'),
|
||||
(2135173, 746, 0, 'Bruiseweed'),
|
||||
(2135181, 746, 0, 'Bruiseweed'),
|
||||
(2135199, 746, 0, 'Bruiseweed'),
|
||||
(2135212, 746, 0, 'Bruiseweed'),
|
||||
(2135213, 746, 0, 'Bruiseweed'),
|
||||
(2135237, 746, 0, 'Bruiseweed'),
|
||||
(2135241, 746, 0, 'Bruiseweed'),
|
||||
|
||||
(86237, 747, 0, 'Stranglekelp'),
|
||||
(2135010, 747, 0, 'Stranglekelp'),
|
||||
(2135027, 747, 0, 'Stranglekelp'),
|
||||
(2135032, 747, 0, 'Stranglekelp'),
|
||||
(2135035, 747, 0, 'Stranglekelp'),
|
||||
(2135061, 747, 0, 'Stranglekelp'),
|
||||
(2135067, 747, 0, 'Stranglekelp'),
|
||||
(2135075, 747, 0, 'Stranglekelp'),
|
||||
(2135076, 747, 0, 'Stranglekelp'),
|
||||
(2135087, 747, 0, 'Stranglekelp'),
|
||||
(2135099, 747, 0, 'Stranglekelp'),
|
||||
(2135100, 747, 0, 'Stranglekelp'),
|
||||
(2135106, 747, 0, 'Stranglekelp'),
|
||||
(2135107, 747, 0, 'Stranglekelp'),
|
||||
(2135114, 747, 0, 'Stranglekelp'),
|
||||
(2135123, 747, 0, 'Stranglekelp'),
|
||||
(2135139, 747, 0, 'Stranglekelp'),
|
||||
(2135156, 747, 0, 'Stranglekelp'),
|
||||
(2135160, 747, 0, 'Stranglekelp'),
|
||||
(2135183, 747, 0, 'Stranglekelp'),
|
||||
(2135193, 747, 0, 'Stranglekelp'),
|
||||
(2135202, 747, 0, 'Stranglekelp'),
|
||||
(2135228, 747, 0, 'Stranglekelp'),
|
||||
(2135233, 747, 0, 'Stranglekelp'),
|
||||
(2135238, 747, 0, 'Stranglekelp'),
|
||||
(2135239, 747, 0, 'Stranglekelp');
|
||||
|
||||
-- Wyrmscar Isle
|
||||
DELETE FROM `pool_template` WHERE `entry` BETWEEN 748 AND 751;
|
||||
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
|
||||
(748, 2, 'Peacebloom in Wyrmscar Isle'),
|
||||
(749, 2, 'Silverleaf in Wyrmscar Isle'),
|
||||
(750, 1, 'Mageroyal in Wyrmscar Isle'),
|
||||
(751, 1, 'Bruiseweed in Wyrmscar Isle');
|
||||
|
||||
DELETE FROM `pool_gameobject` WHERE `pool_entry` BETWEEN 748 AND 751;
|
||||
INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES
|
||||
(2135069, 748, 0, 'Peacebloom'),
|
||||
(2135020, 748, 0, 'Peacebloom'),
|
||||
(2135038, 748, 0, 'Peacebloom'),
|
||||
(2135077, 748, 0, 'Peacebloom'),
|
||||
(2135215, 748, 0, 'Peacebloom'),
|
||||
|
||||
(2135177, 749, 0, 'Silverleaf'),
|
||||
(2135225, 749, 0, 'Silverleaf'),
|
||||
(2135136, 749, 0, 'Silverleaf'),
|
||||
(2135056, 749, 0, 'Silverleaf'),
|
||||
(2135188, 749, 0, 'Silverleaf'),
|
||||
|
||||
(2135229, 750, 0, 'Mageroyal'),
|
||||
(2135162, 750, 0, 'Mageroyal'),
|
||||
(2135198, 750, 0, 'Mageroyal'),
|
||||
(2135125, 750, 0, 'Mageroyal'),
|
||||
(2135023, 750, 0, 'Mageroyal'),
|
||||
(2135209, 750, 0, 'Mageroyal'),
|
||||
|
||||
(2135172, 751, 0, 'Bruiseweed'),
|
||||
(2135232, 751, 0, 'Bruiseweed'),
|
||||
(2135253, 751, 0, 'Bruiseweed'),
|
||||
(2135218, 751, 0, 'Bruiseweed'),
|
||||
(2135119, 751, 0, 'Bruiseweed');
|
||||
@@ -0,0 +1,8 @@
|
||||
-- DB update 2022_10_15_03 -> 2022_10_15_04
|
||||
-- Rookery Whelp (10161)
|
||||
DELETE FROM `creature_loot_template` WHERE `Entry` = 10161;
|
||||
UPDATE `creature_template` SET `lootid` = 0, `skinloot` = 0 WHERE (`entry` = 10161);
|
||||
-- Broodlord Lashlayer (12017), Death Talon Dragonspawn (12422), Razorgore the Untamed (12435), Vaelastrasz the Corrupt (13020), Corrupted Whelps (14022 to 14025), Ohgan (14988)
|
||||
UPDATE `creature_template` SET `skinloot` = 0 WHERE (`entry` IN (12017, 12422, 12435, 13020, 14022, 14023, 14024, 14025, 14988));
|
||||
-- Remove gold drops from Razorgore adds
|
||||
UPDATE `creature_template` SET `mingold` = 0, `maxgold` = 0 WHERE `entry` IN (12416, 12420, 12422);
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_10_15_04 -> 2022_10_15_05
|
||||
--
|
||||
UPDATE `creature` SET `spawntimesecs`=180 WHERE `id1`=10919;
|
||||
@@ -0,0 +1,5 @@
|
||||
-- DB update 2022_10_15_05 -> 2022_10_15_06
|
||||
--
|
||||
-- Remove skinning loot from Giant Buzzard
|
||||
UPDATE `creature_template` SET `skinloot` = 0 WHERE `entry` = 2831;
|
||||
DELETE FROM `skinning_loot_template` WHERE `Entry` = 2831;
|
||||
@@ -0,0 +1,5 @@
|
||||
-- DB update 2022_10_15_06 -> 2022_10_15_07
|
||||
--
|
||||
UPDATE `creature_template` SET `unit_flags` = `unit_flags` |256|512 WHERE `entry` IN (15910, 15904, 15896);
|
||||
UPDATE `creature_model_info` SET `CombatReach` = 15 WHERE `displayID` IN (15556, 15790, 15793);
|
||||
UPDATE `creature_summon_groups` SET `summonType` = 6, `summonTime` = 500 WHERE `summonerId` = 15589 AND `summonerType` = 0;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_10_15_07 -> 2022_10_15_08
|
||||
--
|
||||
UPDATE `creature_template` SET `mingold` = 0, `maxgold` = 0 WHERE (`entry` = 15334);
|
||||
+14
-1
@@ -1,5 +1,18 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v3 license, you may redistribute it and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Affero General Public License as published by the
|
||||
* Free Software Foundation; either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "Banner.h"
|
||||
|
||||
+14
-1
@@ -1,5 +1,18 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v3 license, you may redistribute it and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Affero General Public License as published by the
|
||||
* Free Software Foundation; either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef AZEROTHCORE_BANNER_H
|
||||
|
||||
@@ -195,13 +195,14 @@ void AuthSession::CheckIpCallback(PreparedQueryResult result)
|
||||
{
|
||||
bool banned = false;
|
||||
|
||||
do
|
||||
for (auto const& fields : *result)
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
if (fields[0].Get<uint64>() != 0)
|
||||
{
|
||||
banned = true;
|
||||
|
||||
} while (result->NextRow());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (banned)
|
||||
{
|
||||
|
||||
@@ -95,7 +95,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(CHAR_SEL_MAIL_SERVER_CHARACTER, "SELECT mailId from mail_server_character WHERE guid = ? and mailId = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_REP_MAIL_SERVER_CHARACTER, "REPLACE INTO mail_server_character (guid, mailId) values (?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_SEL_CHARACTER_SOCIALLIST, "SELECT friend, flags, note FROM character_social JOIN characters ON characters.guid = character_social.friend WHERE character_social.guid = ? AND deleteinfos_name IS NULL LIMIT 255", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_SEL_CHARACTER_HOMEBIND, "SELECT mapId, zoneId, posX, posY, posZ FROM character_homebind WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_SEL_CHARACTER_HOMEBIND, "SELECT mapId, zoneId, posX, posY, posZ, posO FROM character_homebind WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_SEL_CHARACTER_SPELLCOOLDOWNS, "SELECT spell, category, item, time, needSend FROM character_spell_cooldown WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_SEL_CHARACTER_DECLINEDNAMES, "SELECT genitive, dative, accusative, instrumental, prepositional FROM character_declinedname WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_SEL_CHARACTER_ACHIEVEMENTS, "SELECT achievement, date FROM character_achievement WHERE guid = ?", CONNECTION_ASYNC);
|
||||
@@ -290,8 +290,8 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(CHAR_DEL_PLAYER_ENTRY_POINT, "DELETE FROM character_entry_point WHERE guid = ?", CONNECTION_ASYNC);
|
||||
|
||||
// Character homebind
|
||||
PrepareStatement(CHAR_INS_PLAYER_HOMEBIND, "INSERT INTO character_homebind (guid, mapId, zoneId, posX, posY, posZ) VALUES (?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_UPD_PLAYER_HOMEBIND, "UPDATE character_homebind SET mapId = ?, zoneId = ?, posX = ?, posY = ?, posZ = ? WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_INS_PLAYER_HOMEBIND, "INSERT INTO character_homebind (guid, mapId, zoneId, posX, posY, posZ, posO) VALUES (?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_UPD_PLAYER_HOMEBIND, "UPDATE character_homebind SET mapId = ?, zoneId = ?, posX = ?, posY = ?, posZ = ?, posO = ? WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_PLAYER_HOMEBIND, "DELETE FROM character_homebind WHERE guid = ?", CONNECTION_ASYNC);
|
||||
|
||||
// Corpse
|
||||
@@ -407,7 +407,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(CHAR_SEL_PINFO_BANS, "SELECT unbandate, bandate = unbandate, bannedby, banreason FROM character_banned WHERE guid = ? AND active ORDER BY bandate ASC LIMIT 1", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_PINFO_MAILS, "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_PINFO_XP, "SELECT a.xp, b.guid FROM characters a LEFT JOIN guild_member b ON a.guid = b.guid WHERE a.guid = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_CHAR_HOMEBIND, "SELECT mapId, zoneId, posX, posY, posZ FROM character_homebind WHERE guid = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_CHAR_HOMEBIND, "SELECT mapId, zoneId, posX, posY, posZ, posO FROM character_homebind WHERE guid = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_CHAR_GUID_NAME_BY_ACC, "SELECT guid, name FROM characters WHERE account = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_POOL_QUEST_SAVE, "SELECT quest_id FROM pool_quest_save WHERE pool_id = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_CHARACTER_AT_LOGIN, "SELECT at_login FROM characters WHERE guid = ?", CONNECTION_SYNCH);
|
||||
|
||||
@@ -24,6 +24,27 @@
|
||||
#include <tuple>
|
||||
#include <vector>
|
||||
|
||||
template<typename T>
|
||||
struct ResultIterator
|
||||
{
|
||||
using iterator_category = std::forward_iterator_tag;
|
||||
using difference_type = std::ptrdiff_t;
|
||||
using value_type = T;
|
||||
using pointer = T*;
|
||||
using reference = T&;
|
||||
|
||||
explicit ResultIterator(pointer ptr) : _ptr(ptr) { }
|
||||
|
||||
reference operator*() const { return *_ptr; }
|
||||
pointer operator->() { return _ptr; }
|
||||
ResultIterator& operator++() { if (!_ptr->NextRow()) _ptr = nullptr; return *this; }
|
||||
|
||||
bool operator!=(const ResultIterator& right) { return _ptr != right._ptr; }
|
||||
|
||||
private:
|
||||
pointer _ptr;
|
||||
};
|
||||
|
||||
class AC_DATABASE_API ResultSet
|
||||
{
|
||||
public:
|
||||
@@ -54,6 +75,9 @@ public:
|
||||
return theTuple;
|
||||
}
|
||||
|
||||
auto begin() { return ResultIterator<ResultSet>(this); }
|
||||
static auto end() { return ResultIterator<ResultSet>(nullptr); }
|
||||
|
||||
protected:
|
||||
std::vector<QueryResultFieldMetadata> _fieldMetadata;
|
||||
uint64 _rowCount;
|
||||
@@ -100,6 +124,9 @@ public:
|
||||
return theTuple;
|
||||
}
|
||||
|
||||
auto begin() { return ResultIterator<PreparedResultSet>(this); }
|
||||
static auto end() { return ResultIterator<PreparedResultSet>(nullptr); }
|
||||
|
||||
protected:
|
||||
std::vector<QueryResultFieldMetadata> m_fieldMetadata;
|
||||
std::vector<Field> m_rows;
|
||||
|
||||
@@ -101,6 +101,10 @@ void BattlegroundWS::PostUpdateImpl(uint32 diff)
|
||||
player->CastSpell(player, BG_WS_SPELL_BRUTAL_ASSAULT, true);
|
||||
}
|
||||
break;
|
||||
case BG_WS_EVENT_DESPAWN_DOORS:
|
||||
SpawnBGObject(BG_WS_OBJECT_DOOR_H_1, RESPAWN_ONE_DAY);
|
||||
SpawnBGObject(BG_WS_OBJECT_DOOR_H_2, RESPAWN_ONE_DAY);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -135,6 +139,7 @@ void BattlegroundWS::StartingEventOpenDoors()
|
||||
UpdateWorldState(BG_WS_STATE_TIMER_ACTIVE, 1);
|
||||
_bgEvents.ScheduleEvent(BG_WS_EVENT_UPDATE_GAME_TIME, 0);
|
||||
_bgEvents.ScheduleEvent(BG_WS_EVENT_NO_TIME_LEFT, BG_WS_TOTAL_GAME_TIME - 2 * MINUTE * IN_MILLISECONDS); // 27 - 2 = 25 minutes
|
||||
_bgEvents.ScheduleEvent(BG_WS_EVENT_DESPAWN_DOORS, BG_WS_DOOR_DESPAWN_TIME);
|
||||
}
|
||||
|
||||
void BattlegroundWS::AddPlayer(Player* player)
|
||||
|
||||
@@ -30,7 +30,8 @@ enum BG_WS_Events
|
||||
BG_WS_EVENT_ALLIANCE_DROP_FLAG = 4,
|
||||
BG_WS_EVENT_HORDE_DROP_FLAG = 5,
|
||||
BG_WS_EVENT_BOTH_FLAGS_KEPT10 = 6,
|
||||
BG_WS_EVENT_BOTH_FLAGS_KEPT15 = 7
|
||||
BG_WS_EVENT_BOTH_FLAGS_KEPT15 = 7,
|
||||
BG_WS_EVENT_DESPAWN_DOORS = 8
|
||||
};
|
||||
|
||||
enum BG_WS_TimerOrScore
|
||||
@@ -41,7 +42,8 @@ enum BG_WS_TimerOrScore
|
||||
BG_WS_FLAG_RESPAWN_TIME = 23 * IN_MILLISECONDS,
|
||||
BG_WS_FLAG_DROP_TIME = 10 * IN_MILLISECONDS,
|
||||
BG_WS_SPELL_FORCE_TIME = 10 * MINUTE * IN_MILLISECONDS,
|
||||
BG_WS_SPELL_BRUTAL_TIME = 15 * MINUTE * IN_MILLISECONDS
|
||||
BG_WS_SPELL_BRUTAL_TIME = 15 * MINUTE * IN_MILLISECONDS,
|
||||
BG_WS_DOOR_DESPAWN_TIME = 5 * IN_MILLISECONDS
|
||||
};
|
||||
|
||||
enum BG_WS_BroadcastTexts
|
||||
|
||||
@@ -105,7 +105,7 @@ namespace lfg
|
||||
sLFGMgr->LeaveLfg(player->GetGUID());
|
||||
sLFGMgr->LeaveAllLfgQueues(player->GetGUID(), true);
|
||||
player->RemoveAurasDueToSpell(LFG_SPELL_LUCK_OF_THE_DRAW);
|
||||
player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, 0.0f);
|
||||
player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, player->m_homebindO);
|
||||
LOG_DEBUG("lfg", "LFGPlayerScript::OnMapChanged, Player {} ({}) is in LFG dungeon map but does not have a valid group! Teleporting to homebind.",
|
||||
player->GetName(), player->GetGUID().ToString());
|
||||
return;
|
||||
|
||||
@@ -646,7 +646,7 @@ void Creature::Update(uint32 diff)
|
||||
if (!allowed) // Will be rechecked on next Update call
|
||||
break;
|
||||
|
||||
ObjectGuid dbtableHighGuid = ObjectGuid::Create<HighGuid::Unit>(GetEntry(), m_spawnId);
|
||||
ObjectGuid dbtableHighGuid = ObjectGuid::Create<HighGuid::Unit>(m_creatureData ? m_creatureData->id1 : GetEntry(), m_spawnId);
|
||||
time_t linkedRespawntime = GetMap()->GetLinkedRespawnTime(dbtableHighGuid);
|
||||
if (!linkedRespawntime) // Can respawn
|
||||
Respawn();
|
||||
@@ -2157,7 +2157,7 @@ void Creature::LoadSpellTemplateImmunity()
|
||||
}
|
||||
}
|
||||
|
||||
bool Creature::IsImmunedToSpell(SpellInfo const* spellInfo)
|
||||
bool Creature::IsImmunedToSpell(SpellInfo const* spellInfo, Spell const* spell)
|
||||
{
|
||||
if (!spellInfo)
|
||||
return false;
|
||||
@@ -2179,7 +2179,7 @@ bool Creature::IsImmunedToSpell(SpellInfo const* spellInfo)
|
||||
if (immunedToAllEffects)
|
||||
return true;
|
||||
|
||||
return Unit::IsImmunedToSpell(spellInfo);
|
||||
return Unit::IsImmunedToSpell(spellInfo, spell);
|
||||
}
|
||||
|
||||
bool Creature::IsImmunedToSpellEffect(SpellInfo const* spellInfo, uint32 index) const
|
||||
|
||||
@@ -96,7 +96,7 @@ public:
|
||||
[[nodiscard]] bool IsValidTrainerForPlayer(Player* player, uint32* npcFlags = nullptr) const;
|
||||
bool CanCreatureAttack(Unit const* victim, bool skipDistCheck = false) const;
|
||||
void LoadSpellTemplateImmunity();
|
||||
bool IsImmunedToSpell(SpellInfo const* spellInfo) override;
|
||||
bool IsImmunedToSpell(SpellInfo const* spellInfo, Spell const* spell = nullptr) override;
|
||||
|
||||
[[nodiscard]] bool HasMechanicTemplateImmunity(uint32 mask) const;
|
||||
// redefine Unit::IsImmunedToSpell
|
||||
@@ -155,7 +155,7 @@ public:
|
||||
return (getLevel() / 2 + uint32(GetStat(STAT_STRENGTH) / 20));
|
||||
}
|
||||
|
||||
[[nodiscard]] SpellSchoolMask GetMeleeDamageSchoolMask() const override { return m_meleeDamageSchoolMask; }
|
||||
[[nodiscard]] SpellSchoolMask GetMeleeDamageSchoolMask(WeaponAttackType /*attackType*/ = BASE_ATTACK, uint8 /*damageIndex*/ = 0) const override { return m_meleeDamageSchoolMask; }
|
||||
void SetMeleeDamageSchool(SpellSchools school) { m_meleeDamageSchoolMask = SpellSchoolMask(1 << school); }
|
||||
|
||||
void _AddCreatureSpellCooldown(uint32 spell_id, uint16 categoryId, uint32 end_time);
|
||||
@@ -178,7 +178,7 @@ public:
|
||||
void UpdateMaxHealth() override;
|
||||
void UpdateMaxPower(Powers power) override;
|
||||
void UpdateAttackPowerAndDamage(bool ranged = false) override;
|
||||
void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage) override;
|
||||
void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage, uint8 damageIndex) override;
|
||||
|
||||
void SetCanDualWield(bool value) override;
|
||||
[[nodiscard]] int8 GetOriginalEquipmentId() const { return m_originalEquipmentId; }
|
||||
|
||||
@@ -349,6 +349,7 @@ Player::Player(WorldSession* session): Unit(true), m_mover(this)
|
||||
m_homebindX = 0;
|
||||
m_homebindY = 0;
|
||||
m_homebindZ = 0;
|
||||
m_homebindO = 0;
|
||||
|
||||
m_contestedPvPTimer = 0;
|
||||
|
||||
@@ -1585,7 +1586,7 @@ bool Player::TeleportToEntryPoint()
|
||||
|
||||
if (loc.m_mapId == MAPID_INVALID)
|
||||
{
|
||||
return TeleportTo(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ, GetOrientation());
|
||||
return TeleportTo(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ, m_homebindO);
|
||||
}
|
||||
|
||||
return TeleportTo(loc);
|
||||
@@ -4853,7 +4854,7 @@ void Player::RepopAtGraveyard()
|
||||
}
|
||||
}
|
||||
else if (GetPositionZ() < GetMap()->GetMinHeight(GetPositionX(), GetPositionY()))
|
||||
TeleportTo(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ, GetOrientation());
|
||||
TeleportTo(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ, m_homebindO);
|
||||
|
||||
RemovePlayerFlag(PLAYER_FLAGS_IS_OUT_OF_BOUNDS);
|
||||
}
|
||||
@@ -6742,21 +6743,11 @@ void Player::_ApplyItemBonuses(ItemTemplate const* proto, uint8 slot, bool apply
|
||||
if (proto->ArcaneRes)
|
||||
HandleStatModifier(UNIT_MOD_RESISTANCE_ARCANE, BASE_VALUE, float(proto->ArcaneRes), apply);
|
||||
|
||||
WeaponAttackType attType = BASE_ATTACK;
|
||||
|
||||
if (slot == EQUIPMENT_SLOT_RANGED && (
|
||||
proto->InventoryType == INVTYPE_RANGED || proto->InventoryType == INVTYPE_THROWN ||
|
||||
proto->InventoryType == INVTYPE_RANGEDRIGHT))
|
||||
uint8 attType = Player::GetAttackBySlot(slot);
|
||||
if (attType != MAX_ATTACK)
|
||||
{
|
||||
attType = RANGED_ATTACK;
|
||||
}
|
||||
else if (slot == EQUIPMENT_SLOT_OFFHAND)
|
||||
{
|
||||
attType = OFF_ATTACK;
|
||||
}
|
||||
|
||||
if (CanUseAttackType(attType))
|
||||
_ApplyWeaponDamage(slot, proto, ssv, apply);
|
||||
}
|
||||
|
||||
// Druids get feral AP bonus from weapon dps (also use DPS from ScalingStatValue)
|
||||
if (getClass() == CLASS_DRUID)
|
||||
@@ -6799,45 +6790,56 @@ void Player::_ApplyWeaponDamage(uint8 slot, ItemTemplate const* proto, ScalingSt
|
||||
ssv = ScalingStatValue ? sScalingStatValuesStore.LookupEntry(ssd_level) : nullptr;
|
||||
}
|
||||
|
||||
WeaponAttackType attType = BASE_ATTACK;
|
||||
float damage = 0.0f;
|
||||
|
||||
if (slot == EQUIPMENT_SLOT_RANGED && (
|
||||
proto->InventoryType == INVTYPE_RANGED || proto->InventoryType == INVTYPE_THROWN ||
|
||||
proto->InventoryType == INVTYPE_RANGEDRIGHT))
|
||||
uint8 attType = Player::GetAttackBySlot(slot);
|
||||
if (!IsInFeralForm() && apply && !CanUseAttackType(attType))
|
||||
{
|
||||
attType = RANGED_ATTACK;
|
||||
}
|
||||
else if (slot == EQUIPMENT_SLOT_OFFHAND)
|
||||
{
|
||||
attType = OFF_ATTACK;
|
||||
return;
|
||||
}
|
||||
|
||||
float minDamage = proto->Damage[0].DamageMin;
|
||||
float maxDamage = proto->Damage[0].DamageMax;
|
||||
|
||||
// If set dpsMod in ScalingStatValue use it for min (70% from average), max (130% from average) damage
|
||||
if (ssv)
|
||||
for (uint8 i = 0; i < MAX_ITEM_PROTO_DAMAGES; ++i)
|
||||
{
|
||||
int32 extraDPS = ssv->getDPSMod(ScalingStatValue);
|
||||
if (extraDPS)
|
||||
float minDamage = proto->Damage[i].DamageMin;
|
||||
float maxDamage = proto->Damage[i].DamageMax;
|
||||
|
||||
// If set dpsMod in ScalingStatValue use it for min (70% from average), max (130% from average) damage
|
||||
if (ssv)
|
||||
{
|
||||
float average = extraDPS * proto->Delay / 1000.0f;
|
||||
minDamage = 0.7f * average;
|
||||
maxDamage = 1.3f * average;
|
||||
int32 extraDPS = ssv->getDPSMod(ScalingStatValue);
|
||||
if (extraDPS)
|
||||
{
|
||||
float average = extraDPS * proto->Delay / 1000.0f;
|
||||
minDamage = 0.7f * average;
|
||||
maxDamage = 1.3f * average;
|
||||
}
|
||||
}
|
||||
|
||||
if (apply)
|
||||
{
|
||||
if (minDamage > 0.f)
|
||||
{
|
||||
SetBaseWeaponDamage(WeaponAttackType(attType), MINDAMAGE, minDamage, i);
|
||||
}
|
||||
|
||||
if (maxDamage > 0.f)
|
||||
{
|
||||
SetBaseWeaponDamage(WeaponAttackType(attType), MAXDAMAGE, maxDamage, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (minDamage > 0)
|
||||
if (!apply)
|
||||
{
|
||||
damage = apply ? minDamage : BASE_MINDAMAGE;
|
||||
SetBaseWeaponDamage(attType, MINDAMAGE, damage);
|
||||
}
|
||||
for (uint8 i = 0; i < MAX_ITEM_PROTO_DAMAGES; ++i)
|
||||
{
|
||||
SetBaseWeaponDamage(WeaponAttackType(attType), MINDAMAGE, 0.f, i);
|
||||
SetBaseWeaponDamage(WeaponAttackType(attType), MAXDAMAGE, 0.f, i);
|
||||
}
|
||||
|
||||
if (maxDamage > 0)
|
||||
{
|
||||
damage = apply ? maxDamage : BASE_MAXDAMAGE;
|
||||
SetBaseWeaponDamage(attType, MAXDAMAGE, damage);
|
||||
if (attType == BASE_ATTACK)
|
||||
{
|
||||
SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, BASE_MINDAMAGE);
|
||||
SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, BASE_MAXDAMAGE);
|
||||
}
|
||||
}
|
||||
|
||||
if (proto->Delay && !IsInFeralForm())
|
||||
@@ -6854,8 +6856,18 @@ void Player::_ApplyWeaponDamage(uint8 slot, ItemTemplate const* proto, ScalingSt
|
||||
if (IsInFeralForm())
|
||||
return;
|
||||
|
||||
if (CanModifyStats() && (damage || proto->Delay))
|
||||
UpdateDamagePhysical(attType);
|
||||
if (CanModifyStats() && (GetWeaponDamageRange(WeaponAttackType(attType), MAXDAMAGE) || proto->Delay))
|
||||
UpdateDamagePhysical(WeaponAttackType(attType));
|
||||
}
|
||||
|
||||
SpellSchoolMask Player::GetMeleeDamageSchoolMask(WeaponAttackType attackType /*= BASE_ATTACK*/, uint8 damageIndex /*= 0*/) const
|
||||
{
|
||||
if (Item const* weapon = GetWeaponForAttack(attackType, true))
|
||||
{
|
||||
return SpellSchoolMask(1 << weapon->GetTemplate()->Damage[damageIndex].DamageType);
|
||||
}
|
||||
|
||||
return SPELL_SCHOOL_MASK_NORMAL;
|
||||
}
|
||||
|
||||
void Player::_ApplyWeaponDependentAuraMods(Item* item, WeaponAttackType attackType, bool apply)
|
||||
@@ -11045,7 +11057,7 @@ void Player::SetEntryPoint()
|
||||
}
|
||||
|
||||
if (m_entryPointData.joinPos.m_mapId == MAPID_INVALID)
|
||||
m_entryPointData.joinPos = WorldLocation(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ, 0.0f);
|
||||
m_entryPointData.joinPos = WorldLocation(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ, m_homebindO);
|
||||
}
|
||||
|
||||
void Player::LeaveBattleground(Battleground* bg)
|
||||
@@ -11284,7 +11296,7 @@ void Player::SendInitialPacketsBeforeAddToMap()
|
||||
|
||||
// Homebind
|
||||
WorldPacket data(SMSG_BINDPOINTUPDATE, 5 * 4);
|
||||
data << m_homebindX << m_homebindY << m_homebindZ;
|
||||
data << m_homebindX << m_homebindY << m_homebindZ << m_homebindO;
|
||||
data << (uint32) m_homebindMapId;
|
||||
data << (uint32) m_homebindAreaId;
|
||||
GetSession()->SendPacket(&data);
|
||||
|
||||
@@ -1905,7 +1905,7 @@ public:
|
||||
void UpdateRating(CombatRating cr);
|
||||
void UpdateAllRatings();
|
||||
|
||||
void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage) override;
|
||||
void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage, uint8 damageIndex) override;
|
||||
|
||||
void UpdateDefenseBonusesMod();
|
||||
inline void RecalculateRating(CombatRating cr) { ApplyRatingMod(cr, 0, true);}
|
||||
@@ -2147,6 +2147,8 @@ public:
|
||||
|
||||
void ResetAllPowers();
|
||||
|
||||
SpellSchoolMask GetMeleeDamageSchoolMask(WeaponAttackType attackType = BASE_ATTACK, uint8 damageIndex = 0) const override;
|
||||
|
||||
void _ApplyWeaponDependentAuraMods(Item* item, WeaponAttackType attackType, bool apply);
|
||||
void _ApplyWeaponDependentAuraCritMod(Item* item, WeaponAttackType attackType, AuraEffect const* aura, bool apply);
|
||||
void _ApplyWeaponDependentAuraDamageMod(Item* item, WeaponAttackType attackType, AuraEffect const* aura, bool apply);
|
||||
@@ -2317,6 +2319,7 @@ public:
|
||||
float m_homebindX;
|
||||
float m_homebindY;
|
||||
float m_homebindZ;
|
||||
float m_homebindO;
|
||||
|
||||
[[nodiscard]] WorldLocation GetStartPosition() const;
|
||||
|
||||
|
||||
@@ -78,6 +78,13 @@ PlayerSetting Player::GetPlayerSetting(std::string source, uint8 index)
|
||||
return GetPlayerSetting(source, index);
|
||||
}
|
||||
|
||||
PlayerSettingVector settingVector = itr->second;
|
||||
if (settingVector.size() < (uint8)(index + 1))
|
||||
{
|
||||
UpdatePlayerSetting(source, index, 0);
|
||||
return GetPlayerSetting(source, index);
|
||||
}
|
||||
|
||||
return itr->second[index];
|
||||
}
|
||||
|
||||
|
||||
@@ -4922,7 +4922,7 @@ bool Player::LoadPositionFromDB(uint32& mapid, float& x, float& y, float& z, flo
|
||||
|
||||
void Player::SetHomebind(WorldLocation const& loc, uint32 areaId)
|
||||
{
|
||||
loc.GetPosition(m_homebindX, m_homebindY, m_homebindZ);
|
||||
loc.GetPosition(m_homebindX, m_homebindY, m_homebindZ, m_homebindO);
|
||||
m_homebindMapId = loc.GetMapId();
|
||||
m_homebindAreaId = areaId;
|
||||
|
||||
@@ -4930,10 +4930,11 @@ void Player::SetHomebind(WorldLocation const& loc, uint32 areaId)
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_PLAYER_HOMEBIND);
|
||||
stmt->SetData(0, m_homebindMapId);
|
||||
stmt->SetData(1, m_homebindAreaId);
|
||||
stmt->SetData (2, m_homebindX);
|
||||
stmt->SetData (3, m_homebindY);
|
||||
stmt->SetData (4, m_homebindZ);
|
||||
stmt->SetData(5, GetGUID().GetCounter());
|
||||
stmt->SetData(2, m_homebindX);
|
||||
stmt->SetData(3, m_homebindY);
|
||||
stmt->SetData(4, m_homebindZ);
|
||||
stmt->SetData(5, m_homebindO);
|
||||
stmt->SetData(6, GetGUID().GetCounter());
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
|
||||
@@ -5104,7 +5105,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons
|
||||
|
||||
std::string taxi_nodes = fields[42].Get<std::string>();
|
||||
|
||||
auto RelocateToHomebind = [this, &mapId, &instanceId]() { mapId = m_homebindMapId; instanceId = 0; Relocate(m_homebindX, m_homebindY, m_homebindZ); };
|
||||
auto RelocateToHomebind = [this, &mapId, &instanceId]() { mapId = m_homebindMapId; instanceId = 0; Relocate(m_homebindX, m_homebindY, m_homebindZ, m_homebindO); };
|
||||
|
||||
_LoadGroup();
|
||||
|
||||
@@ -7004,7 +7005,7 @@ bool Player::_LoadHomeBind(PreparedQueryResult result)
|
||||
}
|
||||
|
||||
bool ok = false;
|
||||
// SELECT mapId, zoneId, posX, posY, posZ FROM character_homebind WHERE guid = ?
|
||||
// SELECT mapId, zoneId, posX, posY, posZ, pozO FROM character_homebind WHERE guid = ?
|
||||
if (result)
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
@@ -7014,11 +7015,12 @@ bool Player::_LoadHomeBind(PreparedQueryResult result)
|
||||
m_homebindX = fields[2].Get<float>();
|
||||
m_homebindY = fields[3].Get<float>();
|
||||
m_homebindZ = fields[4].Get<float>();
|
||||
m_homebindO = fields[5].Get<float>();
|
||||
|
||||
MapEntry const* bindMapEntry = sMapStore.LookupEntry(m_homebindMapId);
|
||||
|
||||
// accept saved data only for valid position (and non instanceable), and accessable
|
||||
if (MapMgr::IsValidMapCoord(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ) &&
|
||||
if (MapMgr::IsValidMapCoord(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ, m_homebindO) &&
|
||||
!bindMapEntry->Instanceable() && GetSession()->Expansion() >= bindMapEntry->Expansion())
|
||||
ok = true;
|
||||
else
|
||||
@@ -7036,19 +7038,20 @@ bool Player::_LoadHomeBind(PreparedQueryResult result)
|
||||
m_homebindX = info->positionX;
|
||||
m_homebindY = info->positionY;
|
||||
m_homebindZ = info->positionZ;
|
||||
|
||||
m_homebindO = info->orientation;
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PLAYER_HOMEBIND);
|
||||
stmt->SetData(0, GetGUID().GetCounter());
|
||||
stmt->SetData(1, m_homebindMapId);
|
||||
stmt->SetData(2, m_homebindAreaId);
|
||||
stmt->SetData (3, m_homebindX);
|
||||
stmt->SetData (4, m_homebindY);
|
||||
stmt->SetData (5, m_homebindZ);
|
||||
stmt->SetData(3, m_homebindX);
|
||||
stmt->SetData(4, m_homebindY);
|
||||
stmt->SetData(5, m_homebindZ);
|
||||
stmt->SetData(6, m_homebindO);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
|
||||
LOG_DEBUG("entities.player", "Setting player home position - mapid: {}, areaid: {}, X: {}, Y: {}, Z: {}",
|
||||
m_homebindMapId, m_homebindAreaId, m_homebindX, m_homebindY, m_homebindZ);
|
||||
LOG_DEBUG("entities.player", "Setting player home position - mapid: {}, areaid: {}, X: {}, Y: {}, Z: {}, O: {}",
|
||||
m_homebindMapId, m_homebindAreaId, m_homebindX, m_homebindY, m_homebindZ, m_homebindO);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1019,7 +1019,7 @@ void Player::UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool def
|
||||
|
||||
chance = chance < 1.0f ? 1.0f : chance; // minimum chance to increase skill is 1%
|
||||
|
||||
LOG_DEBUG("entities.player", "Player::UpdateCombatSkills(defence:{}, playerLevel:{}, moblevel:{}) -> ({}/{}) chance to increase skill is {}\%", defence, playerLevel, moblevel, currentSkillValue, currentSkillMax, chance);
|
||||
LOG_DEBUG("entities.player", "Player::UpdateCombatSkills(defence:{}, playerLevel:{}, moblevel:{}) -> ({}/{}) chance to increase skill is {}%", defence, playerLevel, moblevel, currentSkillValue, currentSkillMax, chance);
|
||||
|
||||
if (roll_chance_f(chance))
|
||||
{
|
||||
|
||||
@@ -59,25 +59,31 @@ void Unit::UpdateAllResistances()
|
||||
|
||||
void Unit::UpdateDamagePhysical(WeaponAttackType attType)
|
||||
{
|
||||
float minDamage = 0.0f;
|
||||
float maxDamage = 0.0f;
|
||||
float totalMin = 0.f;
|
||||
float totalMax = 0.f;
|
||||
|
||||
CalculateMinMaxDamage(attType, false, true, minDamage, maxDamage);
|
||||
for (uint8 i = 0; i < MAX_ITEM_PROTO_DAMAGES; ++i)
|
||||
{
|
||||
float tmpMin, tmpMax;
|
||||
CalculateMinMaxDamage(attType, false, true, tmpMin, tmpMax, i);
|
||||
totalMin += tmpMin;
|
||||
totalMax += tmpMax;
|
||||
}
|
||||
|
||||
switch (attType)
|
||||
{
|
||||
case BASE_ATTACK:
|
||||
default:
|
||||
SetStatFloatValue(UNIT_FIELD_MINDAMAGE, minDamage);
|
||||
SetStatFloatValue(UNIT_FIELD_MAXDAMAGE, maxDamage);
|
||||
SetStatFloatValue(UNIT_FIELD_MINDAMAGE, totalMin);
|
||||
SetStatFloatValue(UNIT_FIELD_MAXDAMAGE, totalMax);
|
||||
break;
|
||||
case OFF_ATTACK:
|
||||
SetStatFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE, minDamage);
|
||||
SetStatFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE, maxDamage);
|
||||
SetStatFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE, totalMin);
|
||||
SetStatFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE, totalMax);
|
||||
break;
|
||||
case RANGED_ATTACK:
|
||||
SetStatFloatValue(UNIT_FIELD_MINRANGEDDAMAGE, minDamage);
|
||||
SetStatFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE, maxDamage);
|
||||
SetStatFloatValue(UNIT_FIELD_MINRANGEDDAMAGE, totalMin);
|
||||
SetStatFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE, totalMax);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -525,8 +531,23 @@ void Player::UpdateShieldBlockValue()
|
||||
SetUInt32Value(PLAYER_SHIELD_BLOCK, GetShieldBlockValue());
|
||||
}
|
||||
|
||||
void Player::CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage)
|
||||
void Player::CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage, uint8 damageIndex)
|
||||
{
|
||||
// Only proto damage, not affected by any mods
|
||||
if (damageIndex != 0)
|
||||
{
|
||||
minDamage = 0.0f;
|
||||
maxDamage = 0.0f;
|
||||
|
||||
if (!IsInFeralForm() && CanUseAttackType(attType))
|
||||
{
|
||||
minDamage = GetWeaponDamageRange(attType, MINDAMAGE, damageIndex);
|
||||
maxDamage = GetWeaponDamageRange(attType, MAXDAMAGE, damageIndex);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
UnitMods unitMod;
|
||||
|
||||
switch (attType)
|
||||
@@ -1075,8 +1096,16 @@ void Creature::UpdateAttackPowerAndDamage(bool ranged)
|
||||
}
|
||||
}
|
||||
|
||||
void Creature::CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage)
|
||||
void Creature::CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage, uint8 damageIndex /*= 0*/)
|
||||
{
|
||||
// creatures only have one damage
|
||||
if (damageIndex != 0)
|
||||
{
|
||||
minDamage = 0.f;
|
||||
maxDamage = 0.f;
|
||||
return;
|
||||
}
|
||||
|
||||
UnitMods unitMod;
|
||||
float variance = 1.0f;
|
||||
switch (attType)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -23,6 +23,7 @@
|
||||
#include "FollowerRefMgr.h"
|
||||
#include "FollowerReference.h"
|
||||
#include "HostileRefMgr.h"
|
||||
#include "ItemTemplate.h"
|
||||
#include "MotionMaster.h"
|
||||
#include "Object.h"
|
||||
#include "Optional.h"
|
||||
@@ -251,7 +252,9 @@ enum UnitModifierType
|
||||
enum WeaponDamageRange
|
||||
{
|
||||
MINDAMAGE,
|
||||
MAXDAMAGE
|
||||
MAXDAMAGE,
|
||||
|
||||
MAX_WEAPON_DAMAGE_RANGE
|
||||
};
|
||||
|
||||
enum UnitMods
|
||||
@@ -762,9 +765,14 @@ private:
|
||||
uint32 m_resist;
|
||||
uint32 m_block;
|
||||
uint32 m_cleanDamage;
|
||||
|
||||
// amalgamation constructor (used for proc)
|
||||
DamageInfo(DamageInfo const& dmg1, DamageInfo const& dmg2);
|
||||
|
||||
public:
|
||||
explicit DamageInfo(Unit* _attacker, Unit* _victim, uint32 _damage, SpellInfo const* _spellInfo, SpellSchoolMask _schoolMask, DamageEffectType _damageType, uint32 cleanDamage = 0);
|
||||
explicit DamageInfo(CalcDamageInfo& dmgInfo);
|
||||
explicit DamageInfo(CalcDamageInfo const& dmgInfo); // amalgamation wrapper
|
||||
DamageInfo(CalcDamageInfo const& dmgInfo, uint8 damageIndex);
|
||||
DamageInfo(SpellNonMeleeDamage const& spellNonMeleeDamage, DamageEffectType damageType);
|
||||
|
||||
void ModifyDamage(int32 amount);
|
||||
@@ -868,10 +876,15 @@ struct CalcDamageInfo
|
||||
{
|
||||
Unit* attacker; // Attacker
|
||||
Unit* target; // Target for damage
|
||||
uint32 damageSchoolMask;
|
||||
uint32 damage;
|
||||
uint32 absorb;
|
||||
uint32 resist;
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 damageSchoolMask;
|
||||
uint32 damage;
|
||||
uint32 absorb;
|
||||
uint32 resist;
|
||||
} damages[MAX_ITEM_PROTO_DAMAGES];
|
||||
|
||||
uint32 blocked_amount;
|
||||
uint32 HitInfo;
|
||||
uint32 TargetState;
|
||||
@@ -1331,7 +1344,7 @@ public:
|
||||
bool IsWithinCombatRange(Unit const* obj, float dist2compare) const;
|
||||
bool IsWithinMeleeRange(Unit const* obj, float dist = 0.f) const;
|
||||
float GetMeleeRange(Unit const* target) const;
|
||||
[[nodiscard]] virtual SpellSchoolMask GetMeleeDamageSchoolMask() const;
|
||||
virtual SpellSchoolMask GetMeleeDamageSchoolMask(WeaponAttackType attackType = BASE_ATTACK, uint8 damageIndex = 0) const = 0;
|
||||
bool GetRandomContactPoint(Unit const* target, float& x, float& y, float& z, bool force = false) const;
|
||||
uint32 m_extraAttacks;
|
||||
bool m_canDualWield;
|
||||
@@ -1541,7 +1554,7 @@ public:
|
||||
void HandleEmoteCommand(uint32 emoteId);
|
||||
void AttackerStateUpdate (Unit* victim, WeaponAttackType attType = BASE_ATTACK, bool extra = false, bool ignoreCasting = false);
|
||||
|
||||
void CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* damageInfo, WeaponAttackType attackType = BASE_ATTACK, const bool sittingVictim = false);
|
||||
void CalculateMeleeDamage(Unit* victim, CalcDamageInfo* damageInfo, WeaponAttackType attackType = BASE_ATTACK, const bool sittingVictim = false);
|
||||
void DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss);
|
||||
|
||||
void HandleProcExtraAttackFor(Unit* victim, uint32 count);
|
||||
@@ -1571,10 +1584,11 @@ public:
|
||||
|
||||
static void ApplyResilience(Unit const* victim, float* crit, int32* damage, bool isCrit, CombatRating type);
|
||||
|
||||
float MeleeSpellMissChance(Unit const* victim, WeaponAttackType attType, int32 skillDiff, uint32 spellId) const;
|
||||
SpellMissInfo MeleeSpellHitResult(Unit* victim, SpellInfo const* spell);
|
||||
SpellMissInfo MagicSpellHitResult(Unit* victim, SpellInfo const* spell);
|
||||
SpellMissInfo SpellHitResult(Unit* victim, SpellInfo const* spell, bool canReflect = false);
|
||||
[[nodiscard]] float MeleeSpellMissChance(Unit const* victim, WeaponAttackType attType, int32 skillDiff, uint32 spellId) const;
|
||||
[[nodiscard]] SpellMissInfo MeleeSpellHitResult(Unit* victim, SpellInfo const* spell);
|
||||
[[nodiscard]] SpellMissInfo MagicSpellHitResult(Unit* victim, SpellInfo const* spell);
|
||||
[[nodiscard]] SpellMissInfo SpellHitResult(Unit* victim, SpellInfo const* spell, bool canReflect = false);
|
||||
[[nodiscard]] SpellMissInfo SpellHitResult(Unit* victim, Spell const* spell, bool canReflect = false);
|
||||
|
||||
[[nodiscard]] float GetUnitDodgeChance() const;
|
||||
[[nodiscard]] float GetUnitParryChance() const;
|
||||
@@ -2093,10 +2107,10 @@ public:
|
||||
virtual void UpdateAttackPowerAndDamage(bool ranged = false) = 0;
|
||||
virtual void UpdateDamagePhysical(WeaponAttackType attType);
|
||||
float GetTotalAttackPowerValue(WeaponAttackType attType, Unit* pVictim = nullptr) const;
|
||||
[[nodiscard]] float GetWeaponDamageRange(WeaponAttackType attType, WeaponDamageRange type) const;
|
||||
void SetBaseWeaponDamage(WeaponAttackType attType, WeaponDamageRange damageRange, float value) { m_weaponDamage[attType][damageRange] = value; }
|
||||
virtual void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage) = 0;
|
||||
uint32 CalculateDamage(WeaponAttackType attType, bool normalized, bool addTotalPct);
|
||||
[[nodiscard]] float GetWeaponDamageRange(WeaponAttackType attType, WeaponDamageRange type, uint8 damageIndex = 0) const;
|
||||
void SetBaseWeaponDamage(WeaponAttackType attType, WeaponDamageRange damageRange, float value, uint8 damageIndex = 0) { m_weaponDamage[attType][damageRange][damageIndex] = value; }
|
||||
virtual void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage, uint8 damageIndex = 0) = 0;
|
||||
uint32 CalculateDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, uint8 itemDamagesMask = 0);
|
||||
float GetAPMultiplier(WeaponAttackType attType, bool normalized);
|
||||
|
||||
bool isInFrontInMap(Unit const* target, float distance, float arc = M_PI) const;
|
||||
@@ -2181,8 +2195,8 @@ public:
|
||||
uint32 SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 healamount, DamageEffectType damagetype, uint8 effIndex, float TotalMod = 0.0f, uint32 stack = 1);
|
||||
uint32 SpellHealingBonusTaken(Unit* caster, SpellInfo const* spellProto, uint32 healamount, DamageEffectType damagetype, uint32 stack = 1);
|
||||
|
||||
uint32 MeleeDamageBonusDone(Unit* pVictim, uint32 damage, WeaponAttackType attType, SpellInfo const* spellProto = nullptr);
|
||||
uint32 MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage, WeaponAttackType attType, SpellInfo const* spellProto = nullptr);
|
||||
uint32 MeleeDamageBonusDone(Unit* pVictim, uint32 damage, WeaponAttackType attType, SpellInfo const* spellProto = nullptr, SpellSchoolMask damageSchoolMask = SPELL_SCHOOL_MASK_NORMAL);
|
||||
uint32 MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage, WeaponAttackType attType, SpellInfo const* spellProto = nullptr, SpellSchoolMask damageSchoolMask = SPELL_SCHOOL_MASK_NORMAL);
|
||||
|
||||
bool isSpellBlocked(Unit* victim, SpellInfo const* spellProto, WeaponAttackType attackType = BASE_ATTACK);
|
||||
bool isBlockCritical();
|
||||
@@ -2203,12 +2217,14 @@ public:
|
||||
|
||||
void ApplySpellImmune(uint32 spellId, uint32 op, uint32 type, bool apply, SpellImmuneBlockType blockType = SPELL_BLOCK_TYPE_ALL);
|
||||
void ApplySpellDispelImmunity(SpellInfo const* spellProto, DispelType type, bool apply);
|
||||
virtual bool IsImmunedToSpell(SpellInfo const* spellInfo);
|
||||
virtual bool IsImmunedToSpell(SpellInfo const* spellInfo, Spell const* spell = nullptr);
|
||||
// redefined in Creature
|
||||
[[nodiscard]] bool IsImmunedToDamage(SpellSchoolMask meleeSchoolMask) const;
|
||||
bool IsImmunedToDamage(SpellInfo const* spellInfo) const;
|
||||
[[nodiscard]] bool IsImmunedToDamage(SpellInfo const* spellInfo) const;
|
||||
[[nodiscard]] bool IsImmunedToDamage(Spell const* spell) const;
|
||||
[[nodiscard]] bool IsImmunedToSchool(SpellSchoolMask meleeSchoolMask) const;
|
||||
bool IsImmunedToSchool(SpellInfo const* spellInfo) const;
|
||||
[[nodiscard]] bool IsImmunedToSchool(SpellInfo const* spellInfo) const;
|
||||
[[nodiscard]] bool IsImmunedToSchool(Spell const* spell) const;
|
||||
[[nodiscard]] bool IsImmunedToDamageOrSchool(SpellSchoolMask meleeSchoolMask) const;
|
||||
bool IsImmunedToDamageOrSchool(SpellInfo const* spellInfo) const;
|
||||
virtual bool IsImmunedToSpellEffect(SpellInfo const* spellInfo, uint32 index) const;
|
||||
@@ -2490,7 +2506,7 @@ protected:
|
||||
uint32 m_interruptMask;
|
||||
|
||||
float m_auraModifiersGroup[UNIT_MOD_END][MODIFIER_TYPE_END];
|
||||
float m_weaponDamage[MAX_ATTACK][2];
|
||||
float m_weaponDamage[MAX_ATTACK][MAX_WEAPON_DAMAGE_RANGE][MAX_ITEM_PROTO_DAMAGES];
|
||||
bool m_canModifyStats;
|
||||
VisibleAuraMap m_visibleAuras;
|
||||
|
||||
|
||||
@@ -888,7 +888,7 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder const& holder)
|
||||
if (at)
|
||||
pCurrChar->TeleportTo(at->target_mapId, at->target_X, at->target_Y, at->target_Z, pCurrChar->GetOrientation());
|
||||
else
|
||||
pCurrChar->TeleportTo(pCurrChar->m_homebindMapId, pCurrChar->m_homebindX, pCurrChar->m_homebindY, pCurrChar->m_homebindZ, pCurrChar->GetOrientation());
|
||||
pCurrChar->TeleportTo(pCurrChar->m_homebindMapId, pCurrChar->m_homebindX, pCurrChar->m_homebindY, pCurrChar->m_homebindZ, pCurrChar->m_homebindO);
|
||||
}
|
||||
|
||||
pCurrChar->SendInitialPacketsAfterAddToMap();
|
||||
@@ -2338,6 +2338,7 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact
|
||||
stmt->SetData(3, loc.GetPositionX());
|
||||
stmt->SetData(4, loc.GetPositionY());
|
||||
stmt->SetData(5, loc.GetPositionZ());
|
||||
stmt->SetData(6, loc.GetOrientation());
|
||||
trans->Append(stmt);
|
||||
|
||||
Player::SavePositionInDB(loc, zoneId, factionChangeInfo->Guid, trans);
|
||||
|
||||
@@ -1702,7 +1702,7 @@ void WorldSession::HandleHearthAndResurrect(WorldPacket& /*recv_data*/)
|
||||
_player->BuildPlayerRepop();
|
||||
_player->ResurrectPlayer(1.0f);
|
||||
_player->SpawnCorpseBones();
|
||||
_player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->GetOrientation());
|
||||
_player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->m_homebindO);
|
||||
}
|
||||
|
||||
void WorldSession::HandleInstanceLockResponse(WorldPacket& recvPacket)
|
||||
|
||||
@@ -92,7 +92,7 @@ void WorldSession::HandleMoveWorldportAck()
|
||||
if (!newMap || newMap->CannotEnter(GetPlayer(), false))
|
||||
{
|
||||
LOG_ERROR("network.opcode", "Map {} could not be created for player {}, porting player to homebind", loc.GetMapId(), GetPlayer()->GetGUID().ToString());
|
||||
GetPlayer()->TeleportTo(GetPlayer()->m_homebindMapId, GetPlayer()->m_homebindX, GetPlayer()->m_homebindY, GetPlayer()->m_homebindZ, GetPlayer()->GetOrientation());
|
||||
GetPlayer()->TeleportTo(GetPlayer()->m_homebindMapId, GetPlayer()->m_homebindX, GetPlayer()->m_homebindY, GetPlayer()->m_homebindZ, GetPlayer()->m_homebindO);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ void WorldSession::HandleMoveWorldportAck()
|
||||
GetPlayer()->GetName(), GetPlayer()->GetGUID().ToString(), loc.GetMapId());
|
||||
GetPlayer()->ResetMap();
|
||||
GetPlayer()->SetMap(oldMap);
|
||||
GetPlayer()->TeleportTo(GetPlayer()->m_homebindMapId, GetPlayer()->m_homebindX, GetPlayer()->m_homebindY, GetPlayer()->m_homebindZ, GetPlayer()->GetOrientation());
|
||||
GetPlayer()->TeleportTo(GetPlayer()->m_homebindMapId, GetPlayer()->m_homebindX, GetPlayer()->m_homebindY, GetPlayer()->m_homebindZ, GetPlayer()->m_homebindO);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1269,7 +1269,7 @@ void Map::RemoveAllPlayers()
|
||||
{
|
||||
// this is happening for bg
|
||||
LOG_ERROR("maps", "Map::UnloadAll: player {} is still in map {} during unload, this should not happen!", player->GetName(), GetId());
|
||||
player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, player->GetOrientation());
|
||||
player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, player->m_homebindO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -976,7 +976,7 @@ uint8 Aura::CalcMaxCharges(Unit* caster) const
|
||||
{
|
||||
uint32 maxProcCharges = m_spellInfo->ProcCharges;
|
||||
if (SpellProcEntry const* procEntry = sSpellMgr->GetSpellProcEntry(GetId()))
|
||||
maxProcCharges = procEntry->charges;
|
||||
maxProcCharges = procEntry->Charges;
|
||||
|
||||
if (caster)
|
||||
if (Player* modOwner = caster->GetSpellModOwner())
|
||||
@@ -2202,9 +2202,9 @@ bool Aura::IsProcOnCooldown() const
|
||||
return false;
|
||||
}
|
||||
|
||||
void Aura::AddProcCooldown(uint32 /*msec*/)
|
||||
void Aura::AddProcCooldown(Milliseconds /*msec*/)
|
||||
{
|
||||
//m_procCooldown = GameTime::GetGameTime().count() + msec;
|
||||
//m_procCooldown = std:chrono::steady_clock::now() + msec;
|
||||
}
|
||||
|
||||
void Aura::PrepareProcToTrigger(AuraApplication* aurApp, ProcEventInfo& eventInfo)
|
||||
@@ -2225,7 +2225,7 @@ void Aura::PrepareProcToTrigger(AuraApplication* aurApp, ProcEventInfo& eventInf
|
||||
ASSERT(procEntry);
|
||||
|
||||
// cooldowns should be added to the whole aura (see 51698 area aura)
|
||||
AddProcCooldown(procEntry->cooldown);
|
||||
AddProcCooldown(procEntry->Cooldown);
|
||||
}
|
||||
|
||||
bool Aura::IsProcTriggeredOnEvent(AuraApplication* aurApp, ProcEventInfo& eventInfo) const
|
||||
@@ -2314,16 +2314,16 @@ bool Aura::IsProcTriggeredOnEvent(AuraApplication* aurApp, ProcEventInfo& eventI
|
||||
|
||||
float Aura::CalcProcChance(SpellProcEntry const& procEntry, ProcEventInfo& eventInfo) const
|
||||
{
|
||||
float chance = procEntry.chance;
|
||||
float chance = procEntry.Chance;
|
||||
// calculate chances depending on unit with caster's data
|
||||
// so talents modifying chances and judgements will have properly calculated proc chance
|
||||
if (Unit* caster = GetCaster())
|
||||
{
|
||||
// calculate ppm chance if present and we're using weapon
|
||||
if (eventInfo.GetDamageInfo() && procEntry.ratePerMinute != 0)
|
||||
if (eventInfo.GetDamageInfo() && procEntry.ProcsPerMinute != 0)
|
||||
{
|
||||
uint32 WeaponSpeed = caster->GetAttackTime(eventInfo.GetDamageInfo()->GetAttackType());
|
||||
chance = caster->GetPPMProcChance(WeaponSpeed, procEntry.ratePerMinute, GetSpellInfo());
|
||||
chance = caster->GetPPMProcChance(WeaponSpeed, procEntry.ProcsPerMinute, GetSpellInfo());
|
||||
}
|
||||
// apply chance modifer aura, applies also to ppm chance (see improved judgement of light spell)
|
||||
if (Player* modOwner = caster->GetSpellModOwner())
|
||||
|
||||
@@ -196,7 +196,7 @@ public:
|
||||
// and some dependant problems fixed before it can replace old proc system (for example cooldown handling)
|
||||
// currently proc system functionality is implemented in Unit::ProcDamageAndSpell
|
||||
bool IsProcOnCooldown() const;
|
||||
void AddProcCooldown(uint32 msec);
|
||||
void AddProcCooldown(Milliseconds msec);
|
||||
bool IsUsingCharges() const { return m_isUsingCharges; }
|
||||
void SetUsingCharges(bool val) { m_isUsingCharges = val; }
|
||||
void PrepareProcToTrigger(AuraApplication* aurApp, ProcEventInfo& eventInfo);
|
||||
|
||||
@@ -1344,7 +1344,7 @@ void Spell::SelectImplicitCasterDestTargets(SpellEffIndex effIndex, SpellImplici
|
||||
break;
|
||||
case TARGET_DEST_HOME:
|
||||
if (Player* playerCaster = m_caster->ToPlayer())
|
||||
dest = SpellDestination(playerCaster->m_homebindX, playerCaster->m_homebindY, playerCaster->m_homebindZ, playerCaster->GetOrientation(), playerCaster->m_homebindMapId);
|
||||
dest = SpellDestination(playerCaster->m_homebindX, playerCaster->m_homebindY, playerCaster->m_homebindZ, playerCaster->m_homebindO, playerCaster->m_homebindMapId);
|
||||
break;
|
||||
case TARGET_DEST_DB:
|
||||
if (SpellTargetPosition const* st = sSpellMgr->GetSpellTargetPosition(m_spellInfo->Id, effIndex))
|
||||
@@ -2428,9 +2428,11 @@ void Spell::AddUnitTarget(Unit* target, uint32 effectMask, bool checkIfValid /*=
|
||||
// Calculate hit result
|
||||
if (m_originalCaster)
|
||||
{
|
||||
targetInfo.missCondition = m_originalCaster->SpellHitResult(target, m_spellInfo, m_canReflect);
|
||||
targetInfo.missCondition = m_originalCaster->SpellHitResult(target, this, m_canReflect);
|
||||
if (m_skipCheck && targetInfo.missCondition != SPELL_MISS_IMMUNE)
|
||||
{
|
||||
targetInfo.missCondition = SPELL_MISS_NONE;
|
||||
}
|
||||
}
|
||||
else
|
||||
targetInfo.missCondition = SPELL_MISS_EVADE; //SPELL_MISS_NONE;
|
||||
@@ -2458,7 +2460,7 @@ void Spell::AddUnitTarget(Unit* target, uint32 effectMask, bool checkIfValid /*=
|
||||
if (targetInfo.missCondition == SPELL_MISS_REFLECT)
|
||||
{
|
||||
// Calculate reflected spell result on caster
|
||||
targetInfo.reflectResult = m_caster->SpellHitResult(m_caster, m_spellInfo, m_canReflect);
|
||||
targetInfo.reflectResult = m_caster->SpellHitResult(m_caster, this, m_canReflect);
|
||||
|
||||
if (targetInfo.reflectResult == SPELL_MISS_REFLECT) // Impossible reflect again, so simply deflect spell
|
||||
targetInfo.reflectResult = SPELL_MISS_PARRY;
|
||||
@@ -2971,8 +2973,10 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA
|
||||
return SPELL_MISS_EVADE;
|
||||
|
||||
// For delayed spells immunity may be applied between missile launch and hit - check immunity for that case
|
||||
if (m_spellInfo->Speed && ((m_damage > 0 && unit->IsImmunedToDamage(m_spellInfo)) || unit->IsImmunedToSchool(m_spellInfo) || unit->IsImmunedToSpell(m_spellInfo)))
|
||||
if (m_spellInfo->Speed && ((m_damage > 0 && unit->IsImmunedToDamage(this)) || unit->IsImmunedToSchool(this) || unit->IsImmunedToSpell(m_spellInfo, this)))
|
||||
{
|
||||
return SPELL_MISS_IMMUNE;
|
||||
}
|
||||
|
||||
// disable effects to which unit is immune
|
||||
SpellMissInfo returnVal = SPELL_MISS_IMMUNE;
|
||||
|
||||
@@ -589,6 +589,8 @@ public:
|
||||
|
||||
[[nodiscard]] TriggerCastFlags GetTriggeredCastFlags() const { return _triggeredCastFlags; }
|
||||
|
||||
[[nodiscard]] SpellSchoolMask GetSpellSchoolMask() const { return m_spellSchoolMask; }
|
||||
|
||||
protected:
|
||||
bool HasGlobalCooldown() const;
|
||||
void TriggerGlobalCooldown();
|
||||
|
||||
@@ -593,8 +593,14 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex)
|
||||
if (Player* caster = m_caster->ToPlayer())
|
||||
{
|
||||
// Add Ammo and Weapon damage plus RAP * 0.1
|
||||
float dmg_min = caster->GetWeaponDamageRange(RANGED_ATTACK, MINDAMAGE);
|
||||
float dmg_max = caster->GetWeaponDamageRange(RANGED_ATTACK, MAXDAMAGE);
|
||||
float dmg_min = 0.f;
|
||||
float dmg_max = 0.f;
|
||||
for (uint8 i = 0; i < MAX_ITEM_PROTO_DAMAGES; ++i)
|
||||
{
|
||||
dmg_min += caster->GetWeaponDamageRange(RANGED_ATTACK, MINDAMAGE, i);
|
||||
dmg_max += caster->GetWeaponDamageRange(RANGED_ATTACK, MAXDAMAGE, i);
|
||||
}
|
||||
|
||||
if (dmg_max == 0.0f && dmg_min > dmg_max)
|
||||
{
|
||||
damage += int32(dmg_min);
|
||||
@@ -616,9 +622,17 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex)
|
||||
// Add main hand dps * effect[2] amount
|
||||
if (Player* player = m_caster->ToPlayer())
|
||||
{
|
||||
float mindamage, maxdamage;
|
||||
player->CalculateMinMaxDamage(BASE_ATTACK, false, false, mindamage, maxdamage);
|
||||
float average = (mindamage + maxdamage) / 2;
|
||||
float minTotal = 0.f;
|
||||
float maxTotal = 0.f;
|
||||
for (uint8 i = 0; i < MAX_ITEM_PROTO_DAMAGES; ++i)
|
||||
{
|
||||
float tmpMin, tmpMax;
|
||||
player->CalculateMinMaxDamage(BASE_ATTACK, false, false, tmpMin, tmpMax, i);
|
||||
minTotal += tmpMin;
|
||||
maxTotal += tmpMax;
|
||||
}
|
||||
|
||||
float average = (minTotal + maxTotal) / 2;
|
||||
int32 count = m_caster->CalculateSpellDamage(unitTarget, m_spellInfo, EFFECT_2);
|
||||
damage += count * int32(average * IN_MILLISECONDS) / m_caster->GetAttackTime(BASE_ATTACK);
|
||||
}
|
||||
@@ -3644,8 +3658,8 @@ void Spell::EffectWeaponDmg(SpellEffIndex effIndex)
|
||||
uint32 eff_damage(std::max(weaponDamage, 0));
|
||||
|
||||
// Add melee damage bonuses (also check for negative)
|
||||
eff_damage = m_caster->MeleeDamageBonusDone(unitTarget, eff_damage, m_attackType, m_spellInfo);
|
||||
eff_damage = unitTarget->MeleeDamageBonusTaken(m_caster, eff_damage, m_attackType, m_spellInfo);
|
||||
eff_damage = m_caster->MeleeDamageBonusDone(unitTarget, eff_damage, m_attackType, m_spellInfo, m_spellSchoolMask);
|
||||
eff_damage = unitTarget->MeleeDamageBonusTaken(m_caster, eff_damage, m_attackType, m_spellInfo, m_spellSchoolMask);
|
||||
|
||||
// Meteor like spells (divided damage to targets)
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_CU_SHARE_DAMAGE))
|
||||
|
||||
@@ -4415,6 +4415,12 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->AuraInterruptFlags &= ~AURA_INTERRUPT_FLAG_NOT_ABOVEWATER;
|
||||
});
|
||||
|
||||
// Summon Worm
|
||||
ApplySpellFix({ 518, 25831, 25832 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Effects[EFFECT_0].MiscValueB = 64;
|
||||
});
|
||||
|
||||
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
|
||||
{
|
||||
SpellInfo* spellInfo = mSpellInfoMap[i];
|
||||
|
||||
@@ -898,11 +898,11 @@ SpellProcEntry const* SpellMgr::GetSpellProcEntry(uint32 spellId) const
|
||||
bool SpellMgr::CanSpellTriggerProcOnEvent(SpellProcEntry const& procEntry, ProcEventInfo& eventInfo) const
|
||||
{
|
||||
// proc type doesn't match
|
||||
if (!(eventInfo.GetTypeMask() & procEntry.typeMask))
|
||||
if (!(eventInfo.GetTypeMask() & procEntry.ProcFlags))
|
||||
return false;
|
||||
|
||||
// check XP or honor target requirement
|
||||
if (procEntry.attributesMask & PROC_ATTR_REQ_EXP_OR_HONOR)
|
||||
if (procEntry.AttributesMask & PROC_ATTR_REQ_EXP_OR_HONOR)
|
||||
if (Player* actor = eventInfo.GetActor()->ToPlayer())
|
||||
if (eventInfo.GetActionTarget() && !actor->isHonorOrXPTarget(eventInfo.GetActionTarget()))
|
||||
return false;
|
||||
@@ -912,37 +912,37 @@ bool SpellMgr::CanSpellTriggerProcOnEvent(SpellProcEntry const& procEntry, ProcE
|
||||
return true;
|
||||
|
||||
// check school mask (if set) for other trigger types
|
||||
if (procEntry.schoolMask && !(eventInfo.GetSchoolMask() & procEntry.schoolMask))
|
||||
if (procEntry.SchoolMask && !(eventInfo.GetSchoolMask() & procEntry.SchoolMask))
|
||||
return false;
|
||||
|
||||
// check spell family name/flags (if set) for spells
|
||||
if (eventInfo.GetTypeMask() & (PERIODIC_PROC_FLAG_MASK | SPELL_PROC_FLAG_MASK | PROC_FLAG_DONE_TRAP_ACTIVATION))
|
||||
{
|
||||
if (procEntry.spellFamilyName && (procEntry.spellFamilyName != eventInfo.GetSpellInfo()->SpellFamilyName))
|
||||
if (procEntry.SpellFamilyName && (procEntry.SpellFamilyName != eventInfo.GetSpellInfo()->SpellFamilyName))
|
||||
return false;
|
||||
|
||||
if (procEntry.spellFamilyMask && !(procEntry.spellFamilyMask & eventInfo.GetSpellInfo()->SpellFamilyFlags))
|
||||
if (procEntry.SpellFamilyMask && !(procEntry.SpellFamilyMask & eventInfo.GetSpellInfo()->SpellFamilyFlags))
|
||||
return false;
|
||||
}
|
||||
|
||||
// check spell type mask (if set)
|
||||
if (eventInfo.GetTypeMask() & (SPELL_PROC_FLAG_MASK | PERIODIC_PROC_FLAG_MASK))
|
||||
{
|
||||
if (procEntry.spellTypeMask && !(eventInfo.GetSpellTypeMask() & procEntry.spellTypeMask))
|
||||
if (procEntry.SpellTypeMask && !(eventInfo.GetSpellTypeMask() & procEntry.SpellTypeMask))
|
||||
return false;
|
||||
}
|
||||
|
||||
// check spell phase mask
|
||||
if (eventInfo.GetTypeMask() & REQ_SPELL_PHASE_PROC_FLAG_MASK)
|
||||
{
|
||||
if (!(eventInfo.GetSpellPhaseMask() & procEntry.spellPhaseMask))
|
||||
if (!(eventInfo.GetSpellPhaseMask() & procEntry.SpellPhaseMask))
|
||||
return false;
|
||||
}
|
||||
|
||||
// check hit mask (on taken hit or on done hit, but not on spell cast phase)
|
||||
if ((eventInfo.GetTypeMask() & TAKEN_HIT_PROC_FLAG_MASK) || ((eventInfo.GetTypeMask() & DONE_HIT_PROC_FLAG_MASK) && !(eventInfo.GetSpellPhaseMask() & PROC_SPELL_PHASE_CAST)))
|
||||
{
|
||||
uint32 hitMask = procEntry.hitMask;
|
||||
uint32 hitMask = procEntry.HitMask;
|
||||
// get default values if hit mask not set
|
||||
if (!hitMask)
|
||||
{
|
||||
@@ -1833,8 +1833,8 @@ void SpellMgr::LoadSpellProcs()
|
||||
|
||||
mSpellProcMap.clear(); // need for reload case
|
||||
|
||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
||||
QueryResult result = WorldDatabase.Query("SELECT spellId, schoolMask, spellFamilyName, spellFamilyMask0, spellFamilyMask1, spellFamilyMask2, typeMask, spellTypeMask, spellPhaseMask, hitMask, attributesMask, ratePerMinute, chance, cooldown, charges FROM spell_proc");
|
||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
||||
QueryResult result = WorldDatabase.Query("SELECT SpellId, SchoolMask, SpellFamilyName, SpellFamilyMask0, SpellFamilyMask1, SpellFamilyMask2, ProcFlags, SpellTypeMask, SpellPhaseMask, HitMask, AttributesMask, ProcsPerMinute, Chance, Cooldown, Charges FROM spell_proc");
|
||||
if (!result)
|
||||
{
|
||||
LOG_WARN("server.loading", ">> Loaded 0 Spell Proc Conditions And Data. DB table `spell_proc` Is Empty.");
|
||||
@@ -1874,21 +1874,20 @@ void SpellMgr::LoadSpellProcs()
|
||||
|
||||
SpellProcEntry baseProcEntry;
|
||||
|
||||
baseProcEntry.schoolMask = fields[1].Get<int8>();
|
||||
baseProcEntry.spellFamilyName = fields[2].Get<uint16>();
|
||||
baseProcEntry.spellFamilyMask[0] = fields[3].Get<uint32>();
|
||||
baseProcEntry.spellFamilyMask[1] = fields[4].Get<uint32>();
|
||||
baseProcEntry.spellFamilyMask[2] = fields[5].Get<uint32>();
|
||||
baseProcEntry.typeMask = fields[6].Get<uint32>();
|
||||
baseProcEntry.spellTypeMask = fields[7].Get<uint32>();
|
||||
baseProcEntry.spellPhaseMask = fields[8].Get<uint32>();
|
||||
baseProcEntry.hitMask = fields[9].Get<uint32>();
|
||||
baseProcEntry.attributesMask = fields[10].Get<uint32>();
|
||||
baseProcEntry.ratePerMinute = fields[11].Get<float>();
|
||||
baseProcEntry.chance = fields[12].Get<float>();
|
||||
float cooldown = fields[13].Get<float>();
|
||||
baseProcEntry.cooldown = uint32(cooldown);
|
||||
baseProcEntry.charges = fields[14].Get<uint32>();
|
||||
baseProcEntry.SchoolMask = fields[1].Get<int8>();
|
||||
baseProcEntry.SpellFamilyName = fields[2].Get<uint16>();
|
||||
baseProcEntry.SpellFamilyMask[0] = fields[3].Get<uint32>();
|
||||
baseProcEntry.SpellFamilyMask[1] = fields[4].Get<uint32>();
|
||||
baseProcEntry.SpellFamilyMask[2] = fields[5].Get<uint32>();
|
||||
baseProcEntry.ProcFlags = fields[6].Get<uint32>();
|
||||
baseProcEntry.SpellTypeMask = fields[7].Get<uint32>();
|
||||
baseProcEntry.SpellPhaseMask = fields[8].Get<uint32>();
|
||||
baseProcEntry.HitMask = fields[9].Get<uint32>();
|
||||
baseProcEntry.AttributesMask = fields[10].Get<uint32>();
|
||||
baseProcEntry.ProcsPerMinute = fields[11].Get<float>();
|
||||
baseProcEntry.Chance = fields[12].Get<float>();
|
||||
baseProcEntry.Cooldown = Milliseconds(fields[13].Get<uint32>());
|
||||
baseProcEntry.Charges = fields[14].Get<uint32>();
|
||||
|
||||
while (spellInfo)
|
||||
{
|
||||
@@ -1900,56 +1899,51 @@ void SpellMgr::LoadSpellProcs()
|
||||
SpellProcEntry procEntry = SpellProcEntry(baseProcEntry);
|
||||
|
||||
// take defaults from dbcs
|
||||
if (!procEntry.typeMask)
|
||||
procEntry.typeMask = spellInfo->ProcFlags;
|
||||
if (!procEntry.charges)
|
||||
procEntry.charges = spellInfo->ProcCharges;
|
||||
if (!procEntry.chance && !procEntry.ratePerMinute)
|
||||
procEntry.chance = float(spellInfo->ProcChance);
|
||||
if (!procEntry.ProcFlags)
|
||||
procEntry.ProcFlags = spellInfo->ProcFlags;
|
||||
if (!procEntry.Charges)
|
||||
procEntry.Charges = spellInfo->ProcCharges;
|
||||
if (!procEntry.Chance && !procEntry.ProcsPerMinute)
|
||||
procEntry.Chance = float(spellInfo->ProcChance);
|
||||
|
||||
// validate data
|
||||
if (procEntry.schoolMask & ~SPELL_SCHOOL_MASK_ALL)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has wrong `schoolMask` set: {}", spellId, procEntry.schoolMask);
|
||||
if (procEntry.spellFamilyName && (procEntry.spellFamilyName < 3 || procEntry.spellFamilyName > 17 || procEntry.spellFamilyName == 14 || procEntry.spellFamilyName == 16))
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has wrong `spellFamilyName` set: {}", spellId, procEntry.spellFamilyName);
|
||||
if (procEntry.chance < 0)
|
||||
if (procEntry.SchoolMask & ~SPELL_SCHOOL_MASK_ALL)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has wrong `SchoolMask` set: {}", spellId, procEntry.SchoolMask);
|
||||
if (procEntry.SpellFamilyName && (procEntry.SpellFamilyName < 3 || procEntry.SpellFamilyName > 17 || procEntry.SpellFamilyName == 14 || procEntry.SpellFamilyName == 16))
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has wrong `SpellFamilyName` set: {}", spellId, procEntry.SpellFamilyName);
|
||||
if (procEntry.Chance < 0)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has negative value in `chance` field", spellId);
|
||||
procEntry.chance = 0;
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has negative value in `Chance` field", spellId);
|
||||
procEntry.Chance = 0;
|
||||
}
|
||||
if (procEntry.ratePerMinute < 0)
|
||||
if (procEntry.ProcsPerMinute < 0)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has negative value in `ratePerMinute` field", spellId);
|
||||
procEntry.ratePerMinute = 0;
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has negative value in `ProcsPerMinute` field", spellId);
|
||||
procEntry.ProcsPerMinute = 0;
|
||||
}
|
||||
if (cooldown < 0)
|
||||
if (procEntry.Chance == 0 && procEntry.ProcsPerMinute == 0)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} doesn't have `Chance` and `ProcsPerMinute` values defined, proc will not be triggered", spellId);
|
||||
if (procEntry.Charges > 99)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has negative value in `cooldown` field", spellId);
|
||||
procEntry.cooldown = 0;
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has too big value in `Charges` field", spellId);
|
||||
procEntry.Charges = 99;
|
||||
}
|
||||
if (procEntry.chance == 0 && procEntry.ratePerMinute == 0)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} doesn't have `chance` and `ratePerMinute` values defined, proc will not be triggered", spellId);
|
||||
if (procEntry.charges > 99)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has too big value in `charges` field", spellId);
|
||||
procEntry.charges = 99;
|
||||
}
|
||||
if (!procEntry.typeMask)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} doesn't have `typeMask` value defined, proc will not be triggered", spellId);
|
||||
if (procEntry.spellTypeMask & ~PROC_SPELL_TYPE_MASK_ALL)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has wrong `spellTypeMask` set: {}", spellId, procEntry.spellTypeMask);
|
||||
if (procEntry.spellTypeMask && !(procEntry.typeMask & (SPELL_PROC_FLAG_MASK | PERIODIC_PROC_FLAG_MASK)))
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has `spellTypeMask` value defined, but it won't be used for defined `typeMask` value", spellId);
|
||||
if (!procEntry.spellPhaseMask && procEntry.typeMask & REQ_SPELL_PHASE_PROC_FLAG_MASK)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} doesn't have `spellPhaseMask` value defined, but it's required for defined `typeMask` value, proc will not be triggered", spellId);
|
||||
if (procEntry.spellPhaseMask & ~PROC_SPELL_PHASE_MASK_ALL)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has wrong `spellPhaseMask` set: {}", spellId, procEntry.spellPhaseMask);
|
||||
if (procEntry.spellPhaseMask && !(procEntry.typeMask & REQ_SPELL_PHASE_PROC_FLAG_MASK))
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has `spellPhaseMask` value defined, but it won't be used for defined `typeMask` value", spellId);
|
||||
if (procEntry.hitMask & ~PROC_HIT_MASK_ALL)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has wrong `hitMask` set: {}", spellId, procEntry.hitMask);
|
||||
if (procEntry.hitMask && !(procEntry.typeMask & TAKEN_HIT_PROC_FLAG_MASK || (procEntry.typeMask & DONE_HIT_PROC_FLAG_MASK && (!procEntry.spellPhaseMask || procEntry.spellPhaseMask & (PROC_SPELL_PHASE_HIT | PROC_SPELL_PHASE_FINISH)))))
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId {} has `hitMask` value defined, but it won't be used for defined `typeMask` and `spellPhaseMask` values", spellId);
|
||||
if (!procEntry.ProcFlags)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} doesn't have `ProcFlags` value defined, proc will not be triggered", spellId);
|
||||
if (procEntry.SpellTypeMask & ~PROC_SPELL_TYPE_MASK_ALL)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has wrong `SpellTypeMask` set: {}", spellId, procEntry.SpellTypeMask);
|
||||
if (procEntry.SpellTypeMask && !(procEntry.ProcFlags & (SPELL_PROC_FLAG_MASK | PERIODIC_PROC_FLAG_MASK)))
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has `SpellTypeMask` value defined, but it won't be used for defined `ProcFlags` value", spellId);
|
||||
if (!procEntry.SpellPhaseMask && procEntry.ProcFlags & REQ_SPELL_PHASE_PROC_FLAG_MASK)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} doesn't have `SpellPhaseMask` value defined, but it's required for defined `ProcFlags` value, proc will not be triggered", spellId);
|
||||
if (procEntry.SpellPhaseMask & ~PROC_SPELL_PHASE_MASK_ALL)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has wrong `SpellPhaseMask` set: {}", spellId, procEntry.SpellPhaseMask);
|
||||
if (procEntry.SpellPhaseMask && !(procEntry.ProcFlags & REQ_SPELL_PHASE_PROC_FLAG_MASK))
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has `SpellPhaseMask` value defined, but it won't be used for defined `ProcFlags` value", spellId);
|
||||
if (procEntry.HitMask & ~PROC_HIT_MASK_ALL)
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has wrong `HitMask` set: {}", spellId, procEntry.HitMask);
|
||||
if (procEntry.HitMask && !(procEntry.ProcFlags & TAKEN_HIT_PROC_FLAG_MASK || (procEntry.ProcFlags & DONE_HIT_PROC_FLAG_MASK && (!procEntry.SpellPhaseMask || procEntry.SpellPhaseMask & (PROC_SPELL_PHASE_HIT | PROC_SPELL_PHASE_FINISH)))))
|
||||
LOG_ERROR("sql.sql", "`spell_proc` table entry for SpellId {} has `HitMask` value defined, but it won't be used for defined `ProcFlags` and `SpellPhaseMask` values", spellId);
|
||||
|
||||
mSpellProcMap[spellInfo->Id] = procEntry;
|
||||
|
||||
|
||||
@@ -263,7 +263,7 @@ enum ProcFlagsHit
|
||||
PROC_HIT_REFLECT = 0x0000800,
|
||||
PROC_HIT_INTERRUPT = 0x0001000, // (not used atm)
|
||||
PROC_HIT_FULL_BLOCK = 0x0002000,
|
||||
PROC_HIT_MASK_ALL = 0x2FFF,
|
||||
PROC_HIT_MASK_ALL = 0x0002FFF,
|
||||
};
|
||||
|
||||
enum ProcAttributes
|
||||
@@ -288,18 +288,18 @@ typedef std::unordered_map<uint32, SpellProcEventEntry> SpellProcEventMap;
|
||||
|
||||
struct SpellProcEntry
|
||||
{
|
||||
uint32 schoolMask; // if nonzero - bitmask for matching proc condition based on spell's school
|
||||
uint32 spellFamilyName; // if nonzero - for matching proc condition based on candidate spell's SpellFamilyName
|
||||
flag96 spellFamilyMask; // if nonzero - bitmask for matching proc condition based on candidate spell's SpellFamilyFlags
|
||||
uint32 typeMask; // if nonzero - owerwrite procFlags field for given Spell.dbc entry, bitmask for matching proc condition, see enum ProcFlags
|
||||
uint32 spellTypeMask; // if nonzero - bitmask for matching proc condition based on candidate spell's damage/heal effects, see enum ProcFlagsSpellType
|
||||
uint32 spellPhaseMask; // if nonzero - bitmask for matching phase of a spellcast on which proc occurs, see enum ProcFlagsSpellPhase
|
||||
uint32 hitMask; // if nonzero - bitmask for matching proc condition based on hit result, see enum ProcFlagsHit
|
||||
uint32 attributesMask; // bitmask, see ProcAttributes
|
||||
float ratePerMinute; // if nonzero - chance to proc is equal to value * aura caster's weapon speed / 60
|
||||
float chance; // if nonzero - owerwrite procChance field for given Spell.dbc entry, defines chance of proc to occur, not used if perMinuteRate set
|
||||
uint32 cooldown; // if nonzero - cooldown in secs for aura proc, applied to aura
|
||||
uint32 charges; // if nonzero - owerwrite procCharges field for given Spell.dbc entry, defines how many times proc can occur before aura remove, 0 - infinite
|
||||
uint32 SchoolMask; // if nonzero - bitmask for matching proc condition based on spell's school
|
||||
uint32 SpellFamilyName; // if nonzero - for matching proc condition based on candidate spell's SpellFamilyName
|
||||
flag96 SpellFamilyMask; // if nonzero - bitmask for matching proc condition based on candidate spell's SpellFamilyFlags
|
||||
uint32 ProcFlags; // if nonzero - owerwrite procFlags field for given Spell.dbc entry, bitmask for matching proc condition, see enum ProcFlags
|
||||
uint32 SpellTypeMask; // if nonzero - bitmask for matching proc condition based on candidate spell's damage/heal effects, see enum ProcFlagsSpellType
|
||||
uint32 SpellPhaseMask; // if nonzero - bitmask for matching phase of a spellcast on which proc occurs, see enum ProcFlagsSpellPhase
|
||||
uint32 HitMask; // if nonzero - bitmask for matching proc condition based on hit result, see enum ProcFlagsHit
|
||||
uint32 AttributesMask; // bitmask, see ProcAttributes
|
||||
float ProcsPerMinute; // if nonzero - chance to proc is equal to value * aura caster's weapon speed / 60
|
||||
float Chance; // if nonzero - owerwrite procChance field for given Spell.dbc entry, defines chance of proc to occur, not used if ProcsPerMinute set
|
||||
Milliseconds Cooldown; // if nonzero - cooldown in secs for aura proc, applied to aura
|
||||
uint32 Charges; // if nonzero - owerwrite procCharges field for given Spell.dbc entry, defines how many times proc can occur before aura remove, 0 - infinite
|
||||
};
|
||||
|
||||
typedef std::unordered_map<uint32, SpellProcEntry> SpellProcMap;
|
||||
|
||||
@@ -1399,7 +1399,7 @@ public:
|
||||
|
||||
if (location->empty() || *location == "inn")
|
||||
{
|
||||
player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, player->GetOrientation());
|
||||
player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, player->m_homebindO);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -252,7 +252,7 @@ public:
|
||||
else if (targetGuid)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG);
|
||||
stmt->SetData(0, uint16(AT_LOGIN_NONE | AT_LOGIN_RESET_PET_TALENTS));
|
||||
stmt->SetData(0, uint16(AT_LOGIN_RESET_TALENTS | AT_LOGIN_RESET_PET_TALENTS));
|
||||
stmt->SetData(1, targetGuid.GetCounter());
|
||||
CharacterDatabase.Execute(stmt);
|
||||
|
||||
|
||||
@@ -182,7 +182,7 @@ public:
|
||||
if (where.index() == 1) // References target's homebind
|
||||
{
|
||||
if (Player* target = player->GetConnectedPlayer())
|
||||
target->TeleportTo(target->m_homebindMapId, target->m_homebindX, target->m_homebindY, target->m_homebindZ, target->GetOrientation());
|
||||
target->TeleportTo(target->m_homebindMapId, target->m_homebindX, target->m_homebindY, target->m_homebindZ, target->m_homebindO);
|
||||
else
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_HOMEBIND);
|
||||
|
||||
+5
-1
@@ -250,7 +250,11 @@ public:
|
||||
|
||||
if (bossId == DATA_MAJORDOMO_EXECUTUS && state == DONE)
|
||||
{
|
||||
DoRespawnGameObject(_cacheOfTheFirelordGUID, 7 * DAY);
|
||||
if (GameObject* cache = instance->GetGameObject(_cacheOfTheFirelordGUID))
|
||||
{
|
||||
cache->SetRespawnTime(7 * DAY);
|
||||
cache->SetLootRecipient(instance);
|
||||
}
|
||||
}
|
||||
else if (bossId == DATA_GOLEMAGG)
|
||||
{
|
||||
|
||||
@@ -25,6 +25,7 @@ EndScriptData */
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScript.h"
|
||||
#include "TaskScheduler.h"
|
||||
#include "temple_of_ahnqiraj.h"
|
||||
|
||||
@@ -101,6 +102,7 @@ enum Misc
|
||||
{
|
||||
MAX_TENTACLE_GROUPS = 5,
|
||||
NPC_TRIGGER = 15384,
|
||||
NPC_EXIT_TRIGGER = 15800
|
||||
};
|
||||
|
||||
enum Yells
|
||||
@@ -218,6 +220,16 @@ struct boss_eye_of_cthun : public BossAI
|
||||
}
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon) override
|
||||
{
|
||||
summons.Summon(summon);
|
||||
|
||||
if (Creature* cthun = instance->GetCreature(DATA_CTHUN))
|
||||
{
|
||||
cthun->AI()->JustSummoned(summon);
|
||||
}
|
||||
}
|
||||
|
||||
void ScheduleTasks()
|
||||
{
|
||||
_scheduler.
|
||||
@@ -249,7 +261,7 @@ struct boss_eye_of_cthun : public BossAI
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
|
||||
{
|
||||
if (Creature* tentacle = me->SummonCreature(NPC_CLAW_TENTACLE, *target, TEMPSUMMON_CORPSE_DESPAWN, 1000))
|
||||
if (Creature* tentacle = me->SummonCreature(NPC_CLAW_TENTACLE, *target, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000))
|
||||
{
|
||||
tentacle->AI()->AttackStart(target);
|
||||
}
|
||||
@@ -273,6 +285,9 @@ struct boss_eye_of_cthun : public BossAI
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->SetTarget(ObjectGuid::Empty);
|
||||
|
||||
//Freeze animation
|
||||
DoCast(me, SPELL_FREEZE_ANIM, true);
|
||||
|
||||
_scheduler.Schedule(1s, [this](TaskContext /*task*/)
|
||||
{
|
||||
//Select random target for dark beam to start on
|
||||
@@ -283,14 +298,9 @@ struct boss_eye_of_cthun : public BossAI
|
||||
DarkGlareTick = 0;
|
||||
ClockWise = RAND(true, false);
|
||||
|
||||
me->SetTarget(target->GetGUID());
|
||||
|
||||
//Add red coloration to C'thun
|
||||
DoCast(me, SPELL_RED_COLORATION, true);
|
||||
|
||||
//Freeze animation
|
||||
DoCast(me, SPELL_FREEZE_ANIM, true);
|
||||
|
||||
me->StopMoving();
|
||||
me->SetFacingToObject(target);
|
||||
me->SetOrientation(DarkGlareAngle);
|
||||
@@ -301,19 +311,12 @@ struct boss_eye_of_cthun : public BossAI
|
||||
me->SetTarget(ObjectGuid::Empty);
|
||||
me->StopMoving();
|
||||
|
||||
if (ClockWise)
|
||||
{
|
||||
me->SetFacingTo(DarkGlareAngle + DarkGlareTick * float(M_PI) / 35);
|
||||
me->SetOrientation(DarkGlareAngle + DarkGlareTick * float(M_PI) / 35);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
me->SetFacingTo(DarkGlareAngle - DarkGlareTick * float(M_PI) / 35);
|
||||
me->SetOrientation(DarkGlareAngle - DarkGlareTick * float(M_PI) / 35);
|
||||
}
|
||||
float angle = ClockWise ? DarkGlareAngle + DarkGlareTick * float(M_PI) / 35 : DarkGlareAngle - DarkGlareTick * float(M_PI) / 35;
|
||||
me->SetFacingTo(angle);
|
||||
me->SetOrientation(angle);
|
||||
|
||||
DoCastSelf(SPELL_DARK_GLARE);
|
||||
|
||||
++DarkGlareTick;
|
||||
|
||||
if (tasker.GetRepeatCounter() >= 35)
|
||||
@@ -344,7 +347,7 @@ struct boss_eye_of_cthun : public BossAI
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
|
||||
{
|
||||
//Only if it will kill
|
||||
if (damage < me->GetHealth())
|
||||
if (damage < me->GetHealth() || !me->GetHealth())
|
||||
return;
|
||||
|
||||
//Fake death in phase 0 or 1 (green beam or dark glare phase)
|
||||
@@ -366,10 +369,13 @@ struct boss_eye_of_cthun : public BossAI
|
||||
me->RemoveAllAuras();
|
||||
_scheduler.CancelAll();
|
||||
|
||||
if (Creature* cthun = instance->GetCreature(DATA_CTHUN))
|
||||
me->m_Events.AddEventAtOffset([this]()
|
||||
{
|
||||
cthun->AI()->DoAction(ACTION_START_PHASE_TWO);
|
||||
}
|
||||
if (Creature* cthun = instance->GetCreature(DATA_CTHUN))
|
||||
{
|
||||
cthun->AI()->DoAction(ACTION_START_PHASE_TWO);
|
||||
}
|
||||
}, 3s);
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -466,7 +472,7 @@ struct boss_cthun : public BossAI
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, -SPELL_DIGESTIVE_ACID))
|
||||
{
|
||||
//Spawn claw tentacle on the random target
|
||||
if (Creature* spawned = me->SummonCreature(NPC_GIANT_CLAW_TENTACLE, *target, TEMPSUMMON_CORPSE_DESPAWN, 500))
|
||||
if (Creature* spawned = me->SummonCreature(NPC_GIANT_CLAW_TENTACLE, *target, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000))
|
||||
{
|
||||
spawned->AI()->AttackStart(target);
|
||||
}
|
||||
@@ -478,7 +484,7 @@ struct boss_cthun : public BossAI
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, -SPELL_DIGESTIVE_ACID))
|
||||
{
|
||||
//Spawn claw tentacle on the random target
|
||||
if (Creature* spawned = me->SummonCreature(NPC_GIANT_EYE_TENTACLE, *target, TEMPSUMMON_CORPSE_DESPAWN, 500))
|
||||
if (Creature* spawned = me->SummonCreature(NPC_GIANT_EYE_TENTACLE, *target, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000))
|
||||
{
|
||||
spawned->AI()->AttackStart(target);
|
||||
}
|
||||
@@ -534,6 +540,11 @@ struct boss_cthun : public BossAI
|
||||
{
|
||||
pPortal->DespawnOrUnsummon();
|
||||
}
|
||||
|
||||
if (Creature* eye = instance->GetCreature(DATA_EYE_OF_CTHUN))
|
||||
{
|
||||
eye->DespawnOrUnsummon();
|
||||
}
|
||||
}
|
||||
|
||||
void SummonedCreatureDies(Creature* creature, Unit* /*killer*/) override
|
||||
@@ -560,11 +571,11 @@ struct boss_cthun : public BossAI
|
||||
ScheduleTasks();
|
||||
//Remove purple coloration
|
||||
me->RemoveAurasDueToSpell(SPELL_PURPLE_COLORATION);
|
||||
|
||||
DoCastSelf(SPELL_CARAPACE_CTHUN, true);
|
||||
//Spawn flesh tentacle
|
||||
for (uint8 i = 0; i < 2; i++)
|
||||
{
|
||||
me->SummonCreature(NPC_FLESH_TENTACLE, FleshTentaclePos[i], TEMPSUMMON_CORPSE_DESPAWN);
|
||||
me->SummonCreature(NPC_FLESH_TENTACLE, FleshTentaclePos[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -921,6 +932,43 @@ private:
|
||||
ObjectGuid _portalGUID;
|
||||
};
|
||||
|
||||
class spell_cthun_dark_glare : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_cthun_dark_glare);
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
targets.remove_if([caster](WorldObject const* target) { return !caster->HasInLine(target, 5.0f); });
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_cthun_dark_glare::FilterTargets, EFFECT_ALL, TARGET_UNIT_CONE_ENEMY_24);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_cthun_digestive_acid : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_cthun_digestive_acid);
|
||||
|
||||
void OnPeriodic(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
if (InstanceScript* instance = GetUnitOwner()->GetInstanceScript())
|
||||
{
|
||||
if (Creature* cthun = instance->GetCreature(DATA_CTHUN))
|
||||
{
|
||||
cthun->CastSpell(GetUnitOwner(), SPELL_DIGESTIVE_ACID, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_cthun_digestive_acid::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
// 4033 - At C'thun's stomach
|
||||
class at_cthun_stomach_exit : public AreaTriggerScript
|
||||
{
|
||||
@@ -933,30 +981,37 @@ public:
|
||||
{
|
||||
if (Creature* cthun = instance->GetCreature(DATA_CTHUN))
|
||||
{
|
||||
player->CastSpell(player, SPELL_RUBBLE_ROCKY, true);
|
||||
|
||||
player->m_Events.AddEventAtOffset([player]()
|
||||
if (Creature* trigger = player->FindNearestCreature(NPC_TRIGGER, 15.0f))
|
||||
{
|
||||
if (Creature* trigger = player->FindNearestCreature(NPC_TRIGGER, 15.0f))
|
||||
trigger->CastSpell(player, SPELL_EXIT_STOMACH, true);
|
||||
|
||||
if (Creature* exittrigger = player->FindNearestCreature(NPC_EXIT_TRIGGER, 15.0f))
|
||||
{
|
||||
trigger->CastSpell(player, SPELL_EXIT_STOMACH, true);
|
||||
exittrigger->CastSpell(player, SPELL_RUBBLE_ROCKY, true);
|
||||
}
|
||||
}, 3s);
|
||||
|
||||
player->m_Events.AddEventAtOffset([player]()
|
||||
{
|
||||
player->JumpTo(0.0f, 80.0f, false);
|
||||
}, 5s);
|
||||
}
|
||||
|
||||
player->m_Events.AddEventAtOffset([player, cthun]()
|
||||
{
|
||||
if (cthun)
|
||||
if (Creature* trigger = player->FindNearestCreature(NPC_EXIT_TRIGGER, 10.0f))
|
||||
{
|
||||
player->NearTeleportTo(cthun->GetPositionX(), cthun->GetPositionY(), cthun->GetPositionZ() + 10, float(rand32() % 6));
|
||||
}
|
||||
player->JumpTo(0.0f, 80.0f, false);
|
||||
|
||||
player->RemoveAurasDueToSpell(SPELL_DIGESTIVE_ACID);
|
||||
}, 6s);
|
||||
player->m_Events.AddEventAtOffset([player, cthun]()
|
||||
{
|
||||
if (cthun)
|
||||
{
|
||||
player->NearTeleportTo(cthun->GetPositionX(), cthun->GetPositionY(), cthun->GetPositionZ() + 10, float(rand32() % 6));
|
||||
}
|
||||
|
||||
player->RemoveAurasDueToSpell(SPELL_DIGESTIVE_ACID);
|
||||
}, 1s);
|
||||
}
|
||||
else
|
||||
{
|
||||
player->m_Events.KillAllEvents(false);
|
||||
}
|
||||
}, 3s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -975,7 +1030,10 @@ public:
|
||||
{
|
||||
if (Creature* cthun = instance->GetCreature(DATA_CTHUN))
|
||||
{
|
||||
cthun->CastSpell(player, SPELL_SPIT_OUT, true);
|
||||
if (cthun->IsAlive())
|
||||
{
|
||||
cthun->CastSpell(player, SPELL_SPIT_OUT, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -991,6 +1049,8 @@ void AddSC_boss_cthun()
|
||||
RegisterTempleOfAhnQirajCreatureAI(npc_claw_tentacle);
|
||||
RegisterTempleOfAhnQirajCreatureAI(npc_giant_claw_tentacle);
|
||||
RegisterTempleOfAhnQirajCreatureAI(npc_giant_eye_tentacle);
|
||||
RegisterSpellScript(spell_cthun_dark_glare);
|
||||
RegisterSpellScript(spell_cthun_digestive_acid);
|
||||
new at_cthun_stomach_exit();
|
||||
new at_cthun_center();
|
||||
}
|
||||
|
||||
@@ -49,7 +49,10 @@ enum Events
|
||||
|
||||
struct boss_huhuran : public BossAI
|
||||
{
|
||||
boss_huhuran(Creature* creature) : BossAI(creature, DATA_HUHURAN) { }
|
||||
boss_huhuran(Creature* creature) : BossAI(creature, DATA_HUHURAN)
|
||||
{
|
||||
me->m_CombatDistance = 90.f;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
|
||||
@@ -78,8 +78,15 @@ struct npc_ouro_spawner : public ScriptedAI
|
||||
// Spawn Ouro on LoS check
|
||||
if (!hasSummoned && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 40.0f) && !who->ToPlayer()->IsGameMaster())
|
||||
{
|
||||
DoCastSelf(SPELL_SUMMON_OURO);
|
||||
hasSummoned = true;
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
{
|
||||
Creature* ouro = instance->GetCreature(DATA_OURO);
|
||||
if (instance->GetBossState(DATA_OURO) != IN_PROGRESS && !ouro)
|
||||
{
|
||||
DoCastSelf(SPELL_SUMMON_OURO);
|
||||
hasSummoned = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ScriptedAI::MoveInLineOfSight(who);
|
||||
@@ -129,6 +136,9 @@ struct boss_ouro : public BossAI
|
||||
|
||||
void Submerge()
|
||||
{
|
||||
if (_enraged || _submerged)
|
||||
return;
|
||||
|
||||
me->AttackStop();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -206,6 +216,9 @@ struct boss_ouro : public BossAI
|
||||
})
|
||||
.Schedule(3s, GROUP_PHASE_TRANSITION, [this](TaskContext context)
|
||||
{
|
||||
if (_enraged)
|
||||
return;
|
||||
|
||||
if (!IsPlayerWithinMeleeRange() && !_submerged)
|
||||
{
|
||||
if (_submergeMelee < 10)
|
||||
@@ -214,8 +227,7 @@ struct boss_ouro : public BossAI
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!_enraged)
|
||||
Submerge();
|
||||
Submerge();
|
||||
_submergeMelee = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScript.h"
|
||||
@@ -100,6 +101,7 @@ struct boss_viscidus : public BossAI
|
||||
boss_viscidus(Creature* creature) : BossAI(creature, DATA_VISCIDUS)
|
||||
{
|
||||
me->LowerPlayerDamageReq(me->GetMaxHealth());
|
||||
me->m_CombatDistance = 60.f;
|
||||
}
|
||||
|
||||
bool CheckInRoom() override
|
||||
@@ -131,13 +133,25 @@ struct boss_viscidus : public BossAI
|
||||
me->RemoveAurasDueToSpell(SPELL_INVIS_SELF);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType effType, SpellSchoolMask) override
|
||||
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType effType, SpellSchoolMask spellSchoolMask) override
|
||||
{
|
||||
if (me->HealthBelowPct(5))
|
||||
damage = 0;
|
||||
|
||||
if (!attacker || _phase != PHASE_MELEE)
|
||||
if (!attacker)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_phase != PHASE_MELEE)
|
||||
{
|
||||
if (_phase == PHASE_FROST && effType == DIRECT_DAMAGE && (spellSchoolMask & SPELL_SCHOOL_MASK_FROST) != 0)
|
||||
{
|
||||
++_hitcounter;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (effType == DIRECT_DAMAGE)
|
||||
++_hitcounter;
|
||||
@@ -183,14 +197,23 @@ struct boss_viscidus : public BossAI
|
||||
Talk(EMOTE_CRACK);
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
|
||||
void SpellHit(Unit* caster, SpellInfo const* spellInfo) override
|
||||
{
|
||||
if (spell->Id == SPELL_REJOIN_VISCIDUS)
|
||||
if (spellInfo->Id == SPELL_REJOIN_VISCIDUS)
|
||||
{
|
||||
me->RemoveAuraFromStack(SPELL_VISCIDUS_SHRINKS);
|
||||
}
|
||||
|
||||
if ((spell->GetSchoolMask() & SPELL_SCHOOL_MASK_FROST) && _phase == PHASE_FROST)
|
||||
SpellSchoolMask spellSchoolMask = spellInfo->GetSchoolMask();
|
||||
if (spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON && spellInfo->EquippedItemSubClassMask & (1 << ITEM_SUBCLASS_WEAPON_WAND))
|
||||
{
|
||||
if (Item* pItem = caster->ToPlayer()->GetWeaponForAttack(RANGED_ATTACK))
|
||||
{
|
||||
spellSchoolMask = SpellSchoolMask(1 << pItem->GetTemplate()->Damage[0].DamageType);
|
||||
}
|
||||
}
|
||||
|
||||
if ((spellSchoolMask & SPELL_SCHOOL_MASK_FROST) && _phase == PHASE_FROST)
|
||||
{
|
||||
++_hitcounter;
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ ObjectData const creatureData[] =
|
||||
{ NPC_SARTURA, DATA_SARTURA },
|
||||
{ NPC_CTHUN, DATA_CTHUN },
|
||||
{ NPC_EYE_OF_CTHUN, DATA_EYE_OF_CTHUN },
|
||||
{ NPC_OURO, DATA_OURO },
|
||||
{ NPC_OURO_SPAWNER, DATA_OURO_SPAWNER },
|
||||
{ NPC_MASTERS_EYE, DATA_MASTERS_EYE },
|
||||
{ NPC_VEKLOR, DATA_VEKLOR },
|
||||
|
||||
@@ -179,7 +179,7 @@ public:
|
||||
void AddSentinelsNear(Unit* /*nears*/)
|
||||
{
|
||||
std::list<Creature*> assistList;
|
||||
me->GetCreatureListWithEntryInGrid(assistList, 15264, 70.0f);
|
||||
me->GetCreatureListWithEntryInGrid(assistList, 15264, 100.0f);
|
||||
|
||||
if (assistList.empty())
|
||||
return;
|
||||
|
||||
@@ -273,7 +273,7 @@ struct npc_obsidian_eradicator : public ScriptedAI
|
||||
|
||||
if (me->GetPowerPct(POWER_MANA) >= 100.f)
|
||||
{
|
||||
DoCastAOE(SPELL_SHOCK_BLAST, true);
|
||||
DoCastAOE(SPELL_SHOCK_BLAST);
|
||||
}
|
||||
|
||||
context.Repeat(3500ms);
|
||||
@@ -406,7 +406,7 @@ struct npc_obsidian_nullifier : public ScriptedAI
|
||||
|
||||
if (me->GetPowerPct(POWER_MANA) >= 100.f)
|
||||
{
|
||||
DoCastAOE(SPELL_NULLIFY, true);
|
||||
DoCastAOE(SPELL_NULLIFY);
|
||||
}
|
||||
|
||||
context.Repeat(6s);
|
||||
@@ -445,6 +445,19 @@ struct npc_ahnqiraji_critter : public ScriptedAI
|
||||
me->RestoreFaction();
|
||||
|
||||
_scheduler.CancelAll();
|
||||
|
||||
// Don't attack nearby players randomly if they are the Twin's pet bugs.
|
||||
if (CreatureData const* crData = me->GetCreatureData())
|
||||
{
|
||||
ObjectGuid dbtableHighGuid = ObjectGuid::Create<HighGuid::Unit>(crData->id1, me->GetSpawnId());
|
||||
ObjectGuid targetGuid = sObjectMgr->GetLinkedRespawnGuid(dbtableHighGuid);
|
||||
|
||||
if (targetGuid.GetEntry() == NPC_VEKLOR)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
_scheduler.Schedule(100ms, [this](TaskContext context)
|
||||
{
|
||||
if (Player* player = me->SelectNearestPlayer(10.f))
|
||||
|
||||
@@ -750,8 +750,8 @@ public:
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != IN_PROGRESS)
|
||||
{
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "We are ready to go, High Overlord. The Lich King must fall!", 631, -ACTION_START_EVENT);
|
||||
SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
|
||||
AddGossipItemFor(player, 10953, 0, GOSSIP_SENDER_INFO, -ACTION_START_EVENT);
|
||||
SendGossipMenuFor(player, player->GetGossipTextId(10953, creature), creature->GetGUID());
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -964,8 +964,8 @@ public:
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != IN_PROGRESS)
|
||||
{
|
||||
AddGossipItemFor(player, 0, "Let it begin...", 631, -ACTION_START_EVENT + 1);
|
||||
SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
|
||||
AddGossipItemFor(player, 10933, 0, GOSSIP_SENDER_INFO, -ACTION_START_EVENT + 1);
|
||||
SendGossipMenuFor(player, player->GetGossipTextId(10933, creature), creature->GetGUID());
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -119,7 +119,7 @@ public:
|
||||
if (!PlayerList.IsEmpty())
|
||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
if (Player* player = i->GetSource())
|
||||
player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, player->GetOrientation());
|
||||
player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, player->m_homebindO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -648,10 +648,13 @@ class spell_dk_dancing_rune_weapon : public AuraScript
|
||||
{
|
||||
target = player->GetMeleeHitRedirectTarget(target);
|
||||
CalcDamageInfo damageInfo;
|
||||
player->CalculateMeleeDamage(target, 0, &damageInfo, eventInfo.GetDamageInfo()->GetAttackType());
|
||||
Unit::DealDamageMods(target, damageInfo.damage, &damageInfo.absorb);
|
||||
player->CalculateMeleeDamage(target, &damageInfo, eventInfo.GetDamageInfo()->GetAttackType());
|
||||
for (uint8 i = 0; i < MAX_ITEM_PROTO_DAMAGES; ++i)
|
||||
{
|
||||
Unit::DealDamageMods(target, damageInfo.damages[i].damage, &damageInfo.damages[i].absorb);
|
||||
damageInfo.damages[i].damage /= 2.0f;
|
||||
}
|
||||
damageInfo.attacker = dancingRuneWeapon;
|
||||
damageInfo.damage /= 2.0f;
|
||||
dancingRuneWeapon->SendAttackStateUpdate(&damageInfo);
|
||||
dancingRuneWeapon->DealMeleeDamage(&damageInfo, true);
|
||||
}
|
||||
|
||||
@@ -567,8 +567,14 @@ class spell_warr_rend : public AuraScript
|
||||
// $0.2 * (($MWB + $mwb) / 2 + $AP / 14 * $MWS) bonus per tick
|
||||
float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK);
|
||||
int32 mws = caster->GetAttackTime(BASE_ATTACK);
|
||||
float mwbMin = caster->GetWeaponDamageRange(BASE_ATTACK, MINDAMAGE);
|
||||
float mwbMax = caster->GetWeaponDamageRange(BASE_ATTACK, MAXDAMAGE);
|
||||
float mwbMin = 0.f;
|
||||
float mwbMax = 0.f;
|
||||
for (uint8 i = 0; i < MAX_ITEM_PROTO_DAMAGES; ++i)
|
||||
{
|
||||
mwbMin += caster->GetWeaponDamageRange(BASE_ATTACK, MINDAMAGE, i);
|
||||
mwbMax += caster->GetWeaponDamageRange(BASE_ATTACK, MAXDAMAGE, i);
|
||||
}
|
||||
|
||||
float mwb = ((mwbMin + mwbMax) / 2 + ap * mws / 14000) * 0.2f;
|
||||
amount += int32(caster->ApplyEffectModifiers(GetSpellInfo(), aurEff->GetEffIndex(), mwb));
|
||||
|
||||
|
||||
@@ -2542,6 +2542,64 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
enum ArcaniteDragonling
|
||||
{
|
||||
SPELL_FLAME_BUFFET = 9658,
|
||||
SPELL_FLAME_BREATH = 8873,
|
||||
|
||||
EVENT_FLAME_BUFFET = 1,
|
||||
EVENT_FLAME_BREATH = 2
|
||||
};
|
||||
|
||||
struct npc_arcanite_dragonling : public ScriptedAI
|
||||
{
|
||||
public:
|
||||
npc_arcanite_dragonling(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
creature->SetCanModifyStats(true);
|
||||
creature->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
me->SetPvP(true);
|
||||
events.Reset();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
events.ScheduleEvent(EVENT_FLAME_BUFFET, 4s);
|
||||
events.ScheduleEvent(EVENT_FLAME_BREATH, 12s);
|
||||
}
|
||||
|
||||
void IsSummonedBy(Unit* summoner) override
|
||||
{
|
||||
me->GetMotionMaster()->MoveFollow(summoner, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_FLAME_BUFFET:
|
||||
DoCastVictim(SPELL_FLAME_BUFFET);
|
||||
events.Repeat(12s);
|
||||
break;
|
||||
case EVENT_FLAME_BREATH:
|
||||
DoCastVictim(SPELL_FLAME_BREATH);
|
||||
events.Repeat(24s);
|
||||
break;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_npcs_special()
|
||||
{
|
||||
// Ours
|
||||
@@ -2568,4 +2626,5 @@ void AddSC_npcs_special()
|
||||
new npc_firework();
|
||||
new npc_spring_rabbit();
|
||||
new npc_stable_master();
|
||||
RegisterCreatureAI(npc_arcanite_dragonling);
|
||||
}
|
||||
|
||||
@@ -53,11 +53,10 @@ void RealmList::Close()
|
||||
void RealmList::LoadBuildInfo()
|
||||
{
|
||||
// 0 1 2 3 4 5 6
|
||||
if (QueryResult result = LoginDatabase.Query("SELECT majorVersion, minorVersion, bugfixVersion, hotfixVersion, build, winChecksumSeed, macChecksumSeed FROM build_info ORDER BY build ASC"))
|
||||
if (auto result = LoginDatabase.Query("SELECT majorVersion, minorVersion, bugfixVersion, hotfixVersion, build, winChecksumSeed, macChecksumSeed FROM build_info ORDER BY build ASC"))
|
||||
{
|
||||
do
|
||||
for (auto const& fields : *result)
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
RealmBuildInfo& build = _builds.emplace_back();
|
||||
build.MajorVersion = fields[0].Get<uint32>();
|
||||
build.MinorVersion = fields[1].Get<uint32>();
|
||||
@@ -87,7 +86,7 @@ void RealmList::LoadBuildInfo()
|
||||
{
|
||||
HexStrToByteArray(macHash, build.MacHash);
|
||||
}
|
||||
} while (result->NextRow());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,11 +148,10 @@ void RealmList::UpdateRealms(boost::system::error_code const& error)
|
||||
// Circle through results and add them to the realm map
|
||||
if (result)
|
||||
{
|
||||
do
|
||||
for (auto const& fields : *result)
|
||||
{
|
||||
try
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
uint32 realmId = fields[0].Get<uint32>();
|
||||
std::string name = fields[1].Get<std::string>();
|
||||
std::string externalAddressString = fields[2].Get<std::string>();
|
||||
@@ -221,7 +219,7 @@ void RealmList::UpdateRealms(boost::system::error_code const& error)
|
||||
LOG_ERROR("server.authserver", "Realmlist::UpdateRealms has thrown an exception: {}", ex.what());
|
||||
ABORT();
|
||||
}
|
||||
} while (result->NextRow());
|
||||
}
|
||||
}
|
||||
|
||||
for (auto itr = existingRealms.begin(); itr != existingRealms.end(); ++itr)
|
||||
|
||||
Reference in New Issue
Block a user