Merge branch 'azerothcore:master' into Playerbot
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
-- DB update 2022_03_25_00 -> 2022_03_27_00
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_25_00';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_25_00 2022_03_27_00 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1648306734434273023'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648306734434273023');
|
||||
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 12459) AND (`Item` IN (19362, 19434, 19435));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(12459, 19362, 0, 2, 0, 1, 0, 1, 1, 'Blackwing Warlock - Doom\'s Edge'),
|
||||
(12459, 19434, 0, 2, 0, 1, 0, 1, 1, 'Blackwing Warlock - Band of Dark Dominion'),
|
||||
(12459, 19435, 0, 2, 0, 1, 0, 1, 1, 'Blackwing Warlock - Essence Gatherer');
|
||||
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 12457) AND (`Item` IN (19362, 19434, 19435));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(12457, 19362, 0, 2, 0, 1, 0, 1, 1, 'Blackwing Spellbinder - Doom\'s Edge'),
|
||||
(12457, 19434, 0, 2, 0, 1, 0, 1, 1, 'Blackwing Spellbinder - Band of Dark Dominion'),
|
||||
(12457, 19435, 0, 2, 0, 1, 0, 1, 1, 'Blackwing Spellbinder - Essence Gatherer');
|
||||
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 12461) AND (`Item` IN (19362, 19434, 19435));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(12461, 19362, 0, 2, 0, 1, 0, 1, 1, 'Death Talon Overseer - Doom\'s Edge'),
|
||||
(12461, 19434, 0, 2, 0, 1, 0, 1, 1, 'Death Talon Overseer - Band of Dark Dominion'),
|
||||
(12461, 19435, 0, 2, 0, 1, 0, 1, 1, 'Death Talon Overseer - Essence Gatherer');
|
||||
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 12460) AND (`Item` IN (19354, 19438, 19439));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(12460, 19354, 0, 5, 0, 1, 0, 1, 1, 'Death Talon Wyrmguard - Draconic Avenger'),
|
||||
(12460, 19438, 0, 5, 0, 1, 0, 1, 1, 'Death Talon Wyrmguard - Ringo\'s Blizzard Boots'),
|
||||
(12460, 19439, 0, 5, 0, 1, 0, 1, 1, 'Death Talon Wyrmguard - Interlaced Shadow Jerkin');
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_00' WHERE sql_rev = '1648306734434273023';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,34 @@
|
||||
-- DB update 2022_03_27_00 -> 2022_03_27_01
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_00';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_00 2022_03_27_01 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647566741929769300'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647566741929769300');
|
||||
|
||||
SET @LEADERGUID := 84648;
|
||||
DELETE FROM `creature_formations` WHERE `memberGUID` IN (@LEADERGUID, 84639, 84650);
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
|
||||
(@LEADERGUID, @LEADERGUID, 0, 0, 3),
|
||||
(@LEADERGUID, 84639, 0, 0, 3),
|
||||
(@LEADERGUID, 84650, 0, 0, 3);
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_01' WHERE sql_rev = '1647566741929769300';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,31 @@
|
||||
-- DB update 2022_03_27_01 -> 2022_03_27_02
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_01';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_01 2022_03_27_02 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647788061160494500'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647788061160494500');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=12459 AND `source_type`=0 AND `id`=3;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(12459,0,3,0,6,0,100,0,0,0,0,0,0,41,0,0,0,0,0,0,11,14081,10,0,0,0,0,0,0,'Blackwing Warlock - On Death - Despawn nearest Demon Portals');
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_02' WHERE sql_rev = '1647788061160494500';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,551 @@
|
||||
-- DB update 2022_03_27_02 -> 2022_03_27_03
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_02';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_02 2022_03_27_03 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647450466526877000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647450466526877000');
|
||||
|
||||
/* Unliving Resident - GUID 4025 */
|
||||
|
||||
|
||||
SET @NPC := 4025;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -11095.1, `position_y` = -1910.74, `position_z` = 3.21322, `orientation` = 3.9274 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -11095.1, -1910.74, 3.21322, 100.0, 0),
|
||||
(@PATH, 2, -11094.6, -1892.78, 2.01981, 100.0, 0),
|
||||
(@PATH, 3, -11082.4, -1891.29, 1.17905, 100.0, 0),
|
||||
(@PATH, 4, -11051.7, -1898.53, -3.986, 100.0, 0),
|
||||
(@PATH, 5, -11038.2, -1906.65, -3.48946, 100.0, 0),
|
||||
(@PATH, 6, -11038.9, -1923.58, -4.59355, 100.0, 0),
|
||||
(@PATH, 7, -11052.0, -1932.28, -5.27407, 100.0, 0),
|
||||
(@PATH, 8, -11073.3, -1936.16, -7.25148, 100.0, 0),
|
||||
(@PATH, 9, -11104.5, -1945.88, -10.9586, 100.0, 0),
|
||||
(@PATH, 10, -11121.1, -1928.71, -12.5844, 100.0, 0),
|
||||
(@PATH, 11, -11133.4, -1888.57, -12.6572, 100.0, 0),
|
||||
(@PATH, 12, -11133.1, -1869.91, -11.7546, 100.0, 0),
|
||||
(@PATH, 13, -11120.5, -1848.14, -11.2241, 100.0, 0),
|
||||
(@PATH, 14, -11137.5, -1870.44, -13.1619, 100.0, 0),
|
||||
(@PATH, 15, -11134.2, -1905.88, -13.3185, 100.0, 0),
|
||||
(@PATH, 16, -11122.8, -1929.82, -12.7888, 100.0, 0),
|
||||
(@PATH, 17, -11097.8, -1944.76, -9.9939, 100.0, 0),
|
||||
(@PATH, 18, -11071.5, -1936.73, -6.91792, 100.0, 0),
|
||||
(@PATH, 19, -11049.2, -1932.39, -5.29754, 100.0, 0),
|
||||
(@PATH, 20, -11036.9, -1919.96, -4.30209, 100.0, 0),
|
||||
(@PATH, 21, -11037.8, -1906.61, -3.45571, 100.0, 0),
|
||||
(@PATH, 22, -11053.3, -1896.37, -3.74098, 100.0, 0),
|
||||
(@PATH, 23, -11071.2, -1893.61, -0.715124, 100.0, 0),
|
||||
(@PATH, 24, -11093.8, -1892.31, 2.02048, 100.0, 0);
|
||||
|
||||
|
||||
/* Unliving Resident - GUID 4030 */
|
||||
|
||||
|
||||
SET @NPC := 4030;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -11106.1, `position_y` = -1917.02, `position_z` = 1.84265, `orientation` = 5.27257 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -11106.1, -1917.02, 1.84265, 100.0, 0),
|
||||
(@PATH, 2, -11095.6, -1932.36, 4.8592, 100.0, 0),
|
||||
(@PATH, 3, -11101.0, -1976.97, 6.75665, 100.0, 0),
|
||||
(@PATH, 4, -11106.2, -1996.71, 12.7172, 100.0, 0),
|
||||
(@PATH, 5, -11126.0, -2005.13, 14.4021, 100.0, 0),
|
||||
(@PATH, 6, -11134.7, -1991.49, 16.7522, 100.0, 0),
|
||||
(@PATH, 7, -11145.5, -1971.53, 22.9096, 100.0, 0),
|
||||
(@PATH, 8, -11151.0, -1961.27, 22.8555, 100.0, 0),
|
||||
(@PATH, 9, -11158.0, -1961.54, 22.797, 100.0, 0),
|
||||
(@PATH, 10, -11170.1, -1968.57, 22.7836, 100.0, 0),
|
||||
(@PATH, 11, -11182.9, -1982.89, 22.7616, 100.0, 0),
|
||||
(@PATH, 12, -11181.5, -1994.34, 22.7571, 100.0, 0),
|
||||
(@PATH, 13, -11177.3, -2001.36, 22.7926, 100.0, 0),
|
||||
(@PATH, 14, -11183.6, -1990.17, 22.7412, 100.0, 0),
|
||||
(@PATH, 15, -11178.9, -1975.15, 22.7914, 100.0, 0),
|
||||
(@PATH, 16, -11154.5, -1961.37, 22.8387, 100.0, 0),
|
||||
(@PATH, 17, -11144.7, -1969.68, 22.8894, 100.0, 0),
|
||||
(@PATH, 18, -11134.0, -1996.18, 15.7482, 100.0, 0),
|
||||
(@PATH, 19, -11121.0, -2006.04, 13.8847, 100.0, 0),
|
||||
(@PATH, 20, -11107.6, -2001.98, 13.1692, 100.0, 0),
|
||||
(@PATH, 21, -11100.6, -1966.46, 2.36667, 100.0, 0),
|
||||
(@PATH, 22, -11096.0, -1933.57, 4.96026, 100.0, 0);
|
||||
|
||||
|
||||
/* Wailing Spectre - GUID 4051 */
|
||||
|
||||
|
||||
SET @NPC := 4051;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -11210.8, `position_y` = -2191.99, `position_z` = 22.7419, `orientation` = 2.71175 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -11210.8, -2191.99, 22.7419, 100.0, 1000),
|
||||
(@PATH, 2, -11241.0, -2198.84, 22.7022, 100.0, 0),
|
||||
(@PATH, 3, -11256.9, -2199.0, 22.7027, 100.0, 0),
|
||||
(@PATH, 4, -11282.8, -2194.2, 22.7064, 100.0, 0),
|
||||
(@PATH, 5, -11326.2, -2189.52, 22.7064, 100.0, 0),
|
||||
(@PATH, 6, -11366.9, -2185.51, 22.9566, 100.0, 1000),
|
||||
(@PATH, 7, -11326.3, -2189.22, 22.7074, 100.0, 0),
|
||||
(@PATH, 8, -11286.8, -2193.12, 22.7074, 100.0, 0),
|
||||
(@PATH, 9, -11246.0, -2200.46, 22.7043, 100.0, 0);
|
||||
|
||||
|
||||
/* Wailing Spectre - GUID 4055 */
|
||||
|
||||
|
||||
SET @NPC := 4055;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -11183.7, `position_y` = -2076.16, `position_z` = 35.5059, `orientation` = 1.53675 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -11183.7, -2076.16, 35.5059, 100.0, 0),
|
||||
(@PATH, 2, -11172.0, -2076.4, 35.5059, 100.0, 0),
|
||||
(@PATH, 3, -11193.6, -2074.82, 35.5059, 100.0, 0),
|
||||
(@PATH, 4, -11183.5, -2075.88, 35.5059, 100.0, 0),
|
||||
(@PATH, 5, -11185.9, -2102.24, 31.2394, 100.0, 0),
|
||||
(@PATH, 6, -11173.0, -2103.66, 31.2394, 100.0, 0),
|
||||
(@PATH, 7, -11195.6, -2101.73, 31.2394, 100.0, 0),
|
||||
(@PATH, 8, -11185.6, -2103.02, 31.2394, 100.0, 0),
|
||||
(@PATH, 9, -11188.0, -2129.38, 26.9742, 100.0, 0),
|
||||
(@PATH, 10, -11176.8, -2130.71, 26.9742, 100.0, 0),
|
||||
(@PATH, 11, -11197.1, -2129.47, 26.9742, 100.0, 0),
|
||||
(@PATH, 12, -11188.2, -2129.57, 26.9742, 100.0, 0),
|
||||
(@PATH, 13, -11190.6, -2161.87, 22.7, 100.0, 0),
|
||||
(@PATH, 14, -11188.1, -2130.17, 26.9744, 100.0, 0),
|
||||
(@PATH, 15, -11180.1, -2130.91, 26.9744, 100.0, 0),
|
||||
(@PATH, 16, -11198.9, -2128.94, 26.9728, 100.0, 0),
|
||||
(@PATH, 17, -11188.1, -2130.19, 26.9728, 100.0, 0),
|
||||
(@PATH, 18, -11185.8, -2102.4, 31.2392, 100.0, 0),
|
||||
(@PATH, 19, -11175.0, -2103.68, 31.2392, 100.0, 0),
|
||||
(@PATH, 20, -11194.7, -2101.89, 31.2392, 100.0, 0),
|
||||
(@PATH, 21, -11185.3, -2103.35, 31.2392, 100.0, 0),
|
||||
(@PATH, 22, -11183.6, -2075.87, 35.5054, 100.0, 0),
|
||||
(@PATH, 23, -11173.6, -2076.92, 35.5054, 100.0, 0),
|
||||
(@PATH, 24, -11192.5, -2075.51, 35.5054, 100.0, 0);
|
||||
|
||||
|
||||
|
||||
/* Green Recluse - GUID 4241 */
|
||||
|
||||
|
||||
SET @NPC := 4241;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -10963.0, `position_y` = 472.957, `position_z` = 41.2228, `orientation` = 3.66559 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -10963.0, 472.957, 41.2228, 100.0, 0),
|
||||
(@PATH, 2, -10982.5, 454.528, 39.7546, 100.0, 0),
|
||||
(@PATH, 3, -10994.2, 429.068, 38.7282, 100.0, 0),
|
||||
(@PATH, 4, -11027.2, 412.812, 33.6053, 100.0, 0),
|
||||
(@PATH, 5, -11033.6, 389.422, 34.703, 100.0, 0),
|
||||
(@PATH, 6, -11050.3, 372.899, 31.9925, 100.0, 0),
|
||||
(@PATH, 7, -11062.5, 352.555, 29.4821, 100.0, 0),
|
||||
(@PATH, 8, -11051.4, 336.537, 32.0397, 100.0, 0),
|
||||
(@PATH, 9, -11029.6, 327.061, 27.7174, 100.0, 0),
|
||||
(@PATH, 10, -11007.0, 325.887, 34.4693, 100.0, 0),
|
||||
(@PATH, 11, -10988.5, 353.52, 34.1904, 100.0, 0),
|
||||
(@PATH, 12, -10975.6, 363.202, 35.3692, 100.0, 0),
|
||||
(@PATH, 13, -10915.2, 396.127, 44.635, 100.0, 0),
|
||||
(@PATH, 14, -10902.3, 439.368, 45.3285, 100.0, 0),
|
||||
(@PATH, 15, -10907.2, 454.818, 44.8949, 100.0, 0),
|
||||
(@PATH, 16, -10934.8, 471.136, 42.0589, 100.0, 0);
|
||||
|
||||
|
||||
/* Bone Chewer - GUID 4401 */
|
||||
|
||||
|
||||
SET @NPC := 4401;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -10228.7, `position_y` = 351.048, `position_z` = 9.63406, `orientation` = 0.107699 WHERE `guid` = @NPC;
|
||||
|
||||
UPDATE `creature_addon` set `path_id` = @PATH WHERE `guid` = @NPC;
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -10228.7, 351.048, 9.63406, 100.0, 0),
|
||||
(@PATH, 2, -10220.9, 343.408, 8.31477, 100.0, 0),
|
||||
(@PATH, 3, -10208.7, 343.188, 8.91591, 100.0, 0),
|
||||
(@PATH, 4, -10196.6, 351.738, 8.76319, 100.0, 0),
|
||||
(@PATH, 5, -10185.2, 352.423, 10.7034, 100.0, 0),
|
||||
(@PATH, 6, -10176.9, 348.391, 9.77995, 100.0, 0),
|
||||
(@PATH, 7, -10168.9, 339.213, 8.52578, 100.0, 0),
|
||||
(@PATH, 8, -10165.7, 330.467, 7.31532, 100.0, 0),
|
||||
(@PATH, 9, -10169.3, 322.305, 6.54894, 100.0, 0),
|
||||
(@PATH, 10, -10180.0, 318.602, 6.77051, 100.0, 0),
|
||||
(@PATH, 11, -10191.2, 314.034, 7.17364, 100.0, 0),
|
||||
(@PATH, 12, -10198.5, 308.553, 5.12256, 100.0, 0),
|
||||
(@PATH, 13, -10197.0, 294.262, 2.72569, 100.0, 0),
|
||||
(@PATH, 14, -10194.3, 283.135, 2.02693, 100.0, 0),
|
||||
(@PATH, 15, -10196.5, 292.286, 2.58085, 100.0, 0),
|
||||
(@PATH, 16, -10199.8, 304.583, 3.86606, 100.0, 0),
|
||||
(@PATH, 17, -10197.7, 309.325, 5.48173, 100.0, 0),
|
||||
(@PATH, 18, -10187.4, 316.383, 7.23757, 100.0, 0),
|
||||
(@PATH, 19, -10175.7, 318.966, 6.44419, 100.0, 0),
|
||||
(@PATH, 20, -10166.8, 326.153, 6.87309, 100.0, 0),
|
||||
(@PATH, 21, -10167.0, 334.818, 7.94311, 100.0, 0),
|
||||
(@PATH, 22, -10171.3, 343.1, 9.22542, 100.0, 0),
|
||||
(@PATH, 23, -10180.8, 350.711, 10.2878, 100.0, 0),
|
||||
(@PATH, 24, -10192.7, 353.604, 9.31527, 100.0, 0),
|
||||
(@PATH, 25, -10202.0, 346.365, 7.84645, 100.0, 0),
|
||||
(@PATH, 26, -10216.3, 342.358, 8.45914, 100.0, 0),
|
||||
(@PATH, 27, -10225.1, 345.221, 8.72192, 100.0, 0),
|
||||
(@PATH, 28, -10229.0, 354.197, 9.80023, 100.0, 0);
|
||||
|
||||
|
||||
/* Skeletal Warder - GUID 4402 */
|
||||
|
||||
|
||||
SET @NPC := 4402;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -10414.1, `position_y` = 403.54, `position_z` = 47.7959, `orientation` = 3.0298 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -10414.1, 403.54, 47.7959, 100.0, 0),
|
||||
(@PATH, 2, -10411.0, 415.171, 40.1772, 100.0, 0),
|
||||
(@PATH, 3, -10392.9, 416.29, 29.1068, 100.0, 0),
|
||||
(@PATH, 4, -10379.0, 412.91, 29.0842, 100.0, 0),
|
||||
(@PATH, 5, -10348.1, 405.259, 15.9644, 100.0, 0),
|
||||
(@PATH, 6, -10320.1, 398.071, 15.8847, 100.0, 0),
|
||||
(@PATH, 7, -10285.7, 389.61, 15.6853, 100.0, 0),
|
||||
(@PATH, 8, -10313.8, 396.488, 15.7496, 100.0, 0),
|
||||
(@PATH, 9, -10345.2, 404.513, 16.0038, 100.0, 0),
|
||||
(@PATH, 10, -10371.0, 410.878, 27.9095, 100.0, 0),
|
||||
(@PATH, 11, -10384.4, 414.328, 29.0818, 100.0, 0),
|
||||
(@PATH, 12, -10406.5, 418.847, 38.4252, 100.0, 0);
|
||||
|
||||
|
||||
/* Skeletal Raider - GUID 4889 */
|
||||
|
||||
|
||||
SET @NPC := 4889;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -10317.6, `position_y` = 464.207, `position_z` = 15.8576, `orientation` = 3.84139 WHERE `guid` = @NPC;
|
||||
|
||||
UPDATE `creature_addon` set `path_id` = @PATH WHERE `guid` = @NPC;
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -10317.6, 464.207, 15.8576, 100.0, 0),
|
||||
(@PATH, 2, -10319.5, 457.095, 15.8678, 100.0, 0),
|
||||
(@PATH, 3, -10322.1, 450.572, 15.8676, 100.0, 0),
|
||||
(@PATH, 4, -10334.2, 443.355, 15.8676, 100.0, 0),
|
||||
(@PATH, 5, -10336.5, 434.0, 15.8676, 100.0, 0),
|
||||
(@PATH, 6, -10332.8, 424.144, 15.8676, 100.0, 0),
|
||||
(@PATH, 7, -10333.8, 410.908, 16.0555, 100.0, 0),
|
||||
(@PATH, 8, -10329.5, 401.654, 15.9962, 100.0, 0),
|
||||
(@PATH, 9, -10306.3, 394.629, 15.6852, 100.0, 0),
|
||||
(@PATH, 10, -10292.3, 395.424, 15.6853, 100.0, 0),
|
||||
(@PATH, 11, -10278.6, 399.561, 15.6853, 100.0, 0),
|
||||
(@PATH, 12, -10262.0, 397.602, 11.9738, 100.0, 0),
|
||||
(@PATH, 13, -10256.8, 393.674, 10.4135, 100.0, 0),
|
||||
(@PATH, 14, -10251.9, 389.152, 10.4135, 100.0, 0),
|
||||
(@PATH, 15, -10250.8, 381.205, 10.4135, 100.0, 0),
|
||||
(@PATH, 16, -10248.4, 376.254, 10.4135, 100.0, 0),
|
||||
(@PATH, 17, -10239.5, 379.492, 10.4135, 100.0, 0),
|
||||
(@PATH, 18, -10230.3, 378.412, 10.4135, 100.0, 0),
|
||||
(@PATH, 19, -10218.9, 364.708, 10.4135, 100.0, 0),
|
||||
(@PATH, 20, -10224.9, 373.694, 10.4135, 100.0, 0),
|
||||
(@PATH, 21, -10233.3, 379.872, 10.4135, 100.0, 0),
|
||||
(@PATH, 22, -10242.3, 377.349, 10.4135, 100.0, 0),
|
||||
(@PATH, 23, -10248.3, 376.22, 10.4135, 100.0, 0),
|
||||
(@PATH, 24, -10249.8, 384.505, 10.4135, 100.0, 0),
|
||||
(@PATH, 25, -10251.7, 389.067, 10.4135, 100.0, 0),
|
||||
(@PATH, 26, -10256.7, 393.442, 10.4135, 100.0, 0),
|
||||
(@PATH, 27, -10270.8, 400.448, 15.6855, 100.0, 0),
|
||||
(@PATH, 28, -10284.4, 397.469, 15.6853, 100.0, 0),
|
||||
(@PATH, 29, -10299.2, 394.302, 15.6853, 100.0, 0),
|
||||
(@PATH, 30, -10324.0, 397.968, 15.9209, 100.0, 0),
|
||||
(@PATH, 31, -10333.4, 407.719, 16.0532, 100.0, 0),
|
||||
(@PATH, 32, -10331.2, 417.762, 15.898, 100.0, 0),
|
||||
(@PATH, 33, -10334.3, 427.185, 15.8676, 100.0, 0),
|
||||
(@PATH, 34, -10336.4, 437.439, 15.8676, 100.0, 0),
|
||||
(@PATH, 35, -10327.6, 446.085, 15.8676, 100.0, 0),
|
||||
(@PATH, 36, -10322.2, 450.505, 15.8676, 100.0, 0);
|
||||
|
||||
|
||||
/* Black Widow Hatchling - GUID 4902 */
|
||||
|
||||
|
||||
SET @NPC := 4902;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -10301.6, `position_y` = 0.194063, `position_z` = 46.3445, `orientation` = 2.2823 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -10301.6, 0.194063, 46.3445, 100.0, 0),
|
||||
(@PATH, 2, -10308.1, 26.6428, 47.8693, 100.0, 0),
|
||||
(@PATH, 3, -10331.9, 39.0091, 47.9571, 100.0, 0),
|
||||
(@PATH, 4, -10360.0, 41.4104, 50.7178, 100.0, 0),
|
||||
(@PATH, 5, -10365.2, 36.9746, 51.8405, 100.0, 0),
|
||||
(@PATH, 6, -10359.5, 23.8917, 51.019, 100.0, 0),
|
||||
(@PATH, 7, -10332.1, -75.3978, 42.2366, 100.0, 0),
|
||||
(@PATH, 8, -10299.8, -99.7262, 42.2065, 100.0, 0),
|
||||
(@PATH, 9, -10303.5, -55.9479, 42.5999, 100.0, 0),
|
||||
(@PATH, 10, -10308.6, -36.9398, 41.8928, 100.0, 0),
|
||||
(@PATH, 11, -10308.8, -20.8141, 42.7561, 100.0, 0);
|
||||
|
||||
|
||||
/* Splinter Fist Warrior - GUID 5073 */
|
||||
|
||||
|
||||
SET @NPC := 5073;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -11110.0, `position_y` = -155.95, `position_z` = 11.7778, `orientation` = 0.459474 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -11110.0, -155.95, 11.7778, 100.0, 0),
|
||||
(@PATH, 2, -11108.8, -148.036, 13.2968, 100.0, 0),
|
||||
(@PATH, 3, -11118.4, -131.875, 12.0047, 100.0, 0),
|
||||
(@PATH, 4, -11121.8, -106.117, 11.5575, 100.0, 0),
|
||||
(@PATH, 5, -11121.7, -122.171, 12.0564, 100.0, 0),
|
||||
(@PATH, 6, -11109.8, -141.866, 12.9087, 100.0, 0);
|
||||
|
||||
|
||||
/* Skeletal Warder - GUID 5094 */
|
||||
|
||||
|
||||
SET @NPC := 5094;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -10355.1, `position_y` = 352.33, `position_z` = 15.9736, `orientation` = 6.04304 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -10355.1, 352.33, 15.9736, 100.0, 0),
|
||||
(@PATH, 2, -10347.7, 352.817, 15.9736, 100.0, 0),
|
||||
(@PATH, 3, -10345.5, 354.638, 15.9736, 100.0, 0),
|
||||
(@PATH, 4, -10344.5, 361.763, 15.9736, 100.0, 0),
|
||||
(@PATH, 5, -10348.3, 366.464, 15.9736, 100.0, 0),
|
||||
(@PATH, 6, -10351.5, 375.142, 15.9736, 100.0, 0),
|
||||
(@PATH, 7, -10344.1, 382.128, 15.9736, 100.0, 0),
|
||||
(@PATH, 8, -10344.5, 392.092, 15.9908, 100.0, 0),
|
||||
(@PATH, 9, -10345.4, 402.749, 16.0175, 100.0, 0),
|
||||
(@PATH, 10, -10369.4, 410.928, 26.8698, 100.0, 0),
|
||||
(@PATH, 11, -10378.6, 414.903, 29.0807, 100.0, 0),
|
||||
(@PATH, 12, -10379.9, 424.817, 29.0795, 100.0, 0),
|
||||
(@PATH, 13, -10386.0, 432.277, 29.0795, 100.0, 0),
|
||||
(@PATH, 14, -10387.2, 440.174, 24.8359, 100.0, 0),
|
||||
(@PATH, 15, -10380.7, 448.117, 24.834, 100.0, 0),
|
||||
(@PATH, 16, -10371.5, 455.446, 25.0028, 100.0, 0),
|
||||
(@PATH, 17, -10367.0, 467.777, 25.0028, 100.0, 0),
|
||||
(@PATH, 18, -10371.6, 481.233, 24.834, 100.0, 0),
|
||||
(@PATH, 19, -10363.2, 481.035, 24.8734, 100.0, 0),
|
||||
(@PATH, 20, -10367.5, 449.085, 24.834, 100.0, 0),
|
||||
(@PATH, 21, -10367.7, 437.808, 24.834, 100.0, 0),
|
||||
(@PATH, 22, -10368.1, 431.91, 27.4331, 100.0, 0),
|
||||
(@PATH, 23, -10374.8, 425.168, 29.0795, 100.0, 0),
|
||||
(@PATH, 24, -10381.9, 417.368, 29.0795, 100.0, 0),
|
||||
(@PATH, 25, -10385.8, 406.396, 29.0795, 100.0, 0),
|
||||
(@PATH, 26, -10379.2, 396.033, 29.0795, 100.0, 0),
|
||||
(@PATH, 27, -10377.8, 390.704, 27.058, 100.0, 0),
|
||||
(@PATH, 28, -10386.2, 381.035, 24.3922, 100.0, 0),
|
||||
(@PATH, 29, -10398.7, 368.109, 24.3969, 100.0, 0),
|
||||
(@PATH, 30, -10406.9, 352.263, 24.8339, 100.0, 0),
|
||||
(@PATH, 31, -10394.3, 343.694, 24.8339, 100.0, 0),
|
||||
(@PATH, 32, -10386.3, 368.522, 24.506, 100.0, 0),
|
||||
(@PATH, 33, -10395.6, 381.512, 24.3923, 100.0, 0),
|
||||
(@PATH, 34, -10397.7, 394.416, 25.9037, 100.0, 0),
|
||||
(@PATH, 35, -10389.8, 402.244, 29.0795, 100.0, 0),
|
||||
(@PATH, 36, -10393.0, 400.646, 29.0795, 100.0, 0),
|
||||
(@PATH, 37, -10398.1, 387.175, 24.8339, 100.0, 0),
|
||||
(@PATH, 38, -10389.0, 376.263, 24.3921, 100.0, 0),
|
||||
(@PATH, 39, -10391.3, 347.907, 24.5479, 100.0, 0),
|
||||
(@PATH, 40, -10404.2, 347.843, 24.442, 100.0, 0),
|
||||
(@PATH, 41, -10392.0, 375.448, 24.3937, 100.0, 0),
|
||||
(@PATH, 42, -10381.3, 385.024, 24.8339, 100.0, 0),
|
||||
(@PATH, 43, -10377.9, 390.278, 26.6428, 100.0, 0),
|
||||
(@PATH, 44, -10384.3, 400.086, 29.0795, 100.0, 0),
|
||||
(@PATH, 45, -10384.3, 412.797, 29.0795, 100.0, 0),
|
||||
(@PATH, 46, -10378.7, 421.913, 29.0795, 100.0, 0),
|
||||
(@PATH, 47, -10373.1, 426.184, 29.0795, 100.0, 0),
|
||||
(@PATH, 48, -10368.5, 430.843, 28.5664, 100.0, 0),
|
||||
(@PATH, 49, -10368.2, 443.341, 24.834, 100.0, 0),
|
||||
(@PATH, 50, -10379.0, 449.525, 24.8433, 100.0, 0),
|
||||
(@PATH, 51, -10384.5, 444.873, 24.834, 100.0, 0),
|
||||
(@PATH, 52, -10387.8, 436.284, 27.8481, 100.0, 0),
|
||||
(@PATH, 53, -10382.0, 429.461, 29.0795, 100.0, 0),
|
||||
(@PATH, 54, -10380.0, 419.797, 29.0795, 100.0, 0),
|
||||
(@PATH, 55, -10377.4, 414.224, 29.0795, 100.0, 0),
|
||||
(@PATH, 56, -10347.2, 405.139, 15.9772, 100.0, 0),
|
||||
(@PATH, 57, -10345.5, 399.519, 16.0451, 100.0, 0),
|
||||
(@PATH, 58, -10343.1, 385.361, 15.9725, 100.0, 0),
|
||||
(@PATH, 59, -10349.5, 378.241, 15.9736, 100.0, 0),
|
||||
(@PATH, 60, -10351.6, 372.054, 15.9736, 100.0, 0),
|
||||
(@PATH, 61, -10348.9, 366.719, 15.9736, 100.0, 0),
|
||||
(@PATH, 62, -10344.5, 362.374, 15.9736, 100.0, 0),
|
||||
(@PATH, 63, -10345.4, 355.239, 15.9736, 100.0, 0);
|
||||
|
||||
|
||||
/* Rabid Dire Wolf - GUID 5150 */
|
||||
|
||||
|
||||
SET @NPC := 5150;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -10177.6, `position_y` = 222.201, `position_z` = 23.1674, `orientation` = 2.62509 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -10177.6, 222.201, 23.1674, 100.0, 0),
|
||||
(@PATH, 2, -10168.8, 240.326, 22.6847, 100.0, 0),
|
||||
(@PATH, 3, -10166.9, 276.071, 23.1022, 100.0, 0),
|
||||
(@PATH, 4, -10178.8, 282.327, 23.6412, 100.0, 0),
|
||||
(@PATH, 5, -10202.2, 288.041, 26.1563, 100.0, 0),
|
||||
(@PATH, 6, -10219.9, 283.841, 32.6592, 100.0, 0),
|
||||
(@PATH, 7, -10232.2, 264.566, 33.3733, 100.0, 0),
|
||||
(@PATH, 8, -10232.0, 240.734, 31.767, 100.0, 0),
|
||||
(@PATH, 9, -10249.2, 236.713, 31.0763, 100.0, 0),
|
||||
(@PATH, 10, -10260.4, 213.571, 29.0039, 100.0, 0),
|
||||
(@PATH, 11, -10257.2, 190.051, 32.6815, 100.0, 0),
|
||||
(@PATH, 12, -10242.9, 161.452, 32.9415, 100.0, 0),
|
||||
(@PATH, 13, -10227.4, 148.997, 31.5172, 100.0, 0),
|
||||
(@PATH, 14, -10213.1, 134.704, 30.9467, 100.0, 0),
|
||||
(@PATH, 15, -10197.6, 139.533, 29.8189, 100.0, 0),
|
||||
(@PATH, 16, -10185.2, 154.721, 26.5017, 100.0, 0),
|
||||
(@PATH, 17, -10176.7, 177.115, 24.2734, 100.0, 0),
|
||||
(@PATH, 18, -10241.7, 159.204, 32.9059, 100.0, 0);
|
||||
|
||||
|
||||
/* Plague Spreader - GUID 5969 */
|
||||
|
||||
|
||||
SET @NPC := 5969;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -10342.1, `position_y` = 173.163, `position_z` = 16.1488, `orientation` = 4.31581 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -10342.1, 173.163, 16.1488, 100.0, 0),
|
||||
(@PATH, 2, -10344.3, 191.582, 25.7489, 100.0, 0),
|
||||
(@PATH, 3, -10342.7, 178.137, 18.1823, 100.0, 0),
|
||||
(@PATH, 4, -10338.8, 147.441, 3.48252, 100.0, 0),
|
||||
(@PATH, 5, -10340.9, 138.639, 4.90493, 100.0, 0),
|
||||
(@PATH, 6, -10360.4, 134.447, 2.25113, 100.0, 0),
|
||||
(@PATH, 7, -10342.9, 133.15, 5.46266, 100.0, 0),
|
||||
(@PATH, 8, -10335.7, 128.401, 3.961, 100.0, 0),
|
||||
(@PATH, 9, -10331.1, 107.815, 1.7015, 100.0, 0),
|
||||
(@PATH, 10, -10333.2, 137.227, 3.82124, 100.0, 0),
|
||||
(@PATH, 11, -10286.2, 147.016, 2.79024, 100.0, 0),
|
||||
(@PATH, 12, -10329.6, 139.619, 2.96308, 100.0, 0);
|
||||
|
||||
|
||||
/* Nightbane Worgen - GUID 6063 */
|
||||
|
||||
|
||||
SET @NPC := 6063;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -10288.3, `position_y` = -785.67, `position_z` = 48.9806, `orientation` = 1.26872 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -10288.3, -785.67, 48.9806, 100.0, 0),
|
||||
(@PATH, 2, -10328.0, -811.732, 45.3941, 100.0, 0),
|
||||
(@PATH, 3, -10339.0, -811.817, 46.3963, 100.0, 0),
|
||||
(@PATH, 4, -10351.8, -803.15, 49.1603, 100.0, 0),
|
||||
(@PATH, 5, -10369.9, -799.214, 53.3723, 100.0, 0),
|
||||
(@PATH, 6, -10379.8, -803.096, 50.8648, 100.0, 0),
|
||||
(@PATH, 7, -10399.0, -822.987, 47.6148, 100.0, 0),
|
||||
(@PATH, 8, -10400.4, -838.233, 49.7322, 100.0, 0),
|
||||
(@PATH, 9, -10384.2, -854.297, 45.8654, 100.0, 0),
|
||||
(@PATH, 10, -10358.5, -879.575, 42.8552, 100.0, 0),
|
||||
(@PATH, 11, -10339.7, -905.276, 38.3699, 100.0, 0),
|
||||
(@PATH, 12, -10321.3, -910.707, 38.4765, 100.0, 0),
|
||||
(@PATH, 13, -10305.2, -895.979, 39.7254, 100.0, 0),
|
||||
(@PATH, 14, -10290.0, -867.965, 40.6098, 100.0, 0),
|
||||
(@PATH, 15, -10266.6, -848.708, 41.6361, 100.0, 0),
|
||||
(@PATH, 16, -10252.6, -829.123, 42.5013, 100.0, 0),
|
||||
(@PATH, 17, -10242.0, -811.97, 41.2834, 100.0, 0),
|
||||
(@PATH, 18, -10257.8, -798.468, 44.4208, 100.0, 0),
|
||||
(@PATH, 19, -10275.7, -782.271, 46.6242, 100.0, 0),
|
||||
(@PATH, 20, -10278.7, -771.588, 47.5163, 100.0, 0),
|
||||
(@PATH, 21, -10288.4, -785.682, 48.9411, 100.0, 0);
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_03' WHERE sql_rev = '1647450466526877000';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,71 @@
|
||||
-- DB update 2022_03_27_03 -> 2022_03_27_04
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_03';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_03 2022_03_27_04 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1648294393927803100'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648294393927803100');
|
||||
|
||||
DELETE FROM `linked_respawn` WHERE `guid` BETWEEN 2000009 AND 2000049;
|
||||
INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES
|
||||
(2000009,84387,0),
|
||||
(2000010,84387,0),
|
||||
(2000011,84387,0),
|
||||
(2000012,84387,0),
|
||||
(2000013,84387,0),
|
||||
(2000014,84387,0),
|
||||
(2000015,84387,0),
|
||||
(2000016,84387,0),
|
||||
(2000017,84387,0),
|
||||
(2000018,84387,0),
|
||||
(2000019,84387,0),
|
||||
(2000020,84387,0),
|
||||
(2000021,84387,0),
|
||||
(2000022,84387,0),
|
||||
(2000023,84387,0),
|
||||
(2000024,84387,0),
|
||||
(2000025,84387,0),
|
||||
(2000026,84387,0),
|
||||
(2000027,84387,0),
|
||||
(2000028,84387,0),
|
||||
(2000029,84387,0),
|
||||
(2000030,84387,0),
|
||||
(2000031,84387,0),
|
||||
(2000032,84387,0),
|
||||
(2000033,84387,0),
|
||||
(2000034,84387,0),
|
||||
(2000035,84387,0),
|
||||
(2000036,84387,0),
|
||||
(2000037,84387,0),
|
||||
(2000038,84387,0),
|
||||
(2000039,84387,0),
|
||||
(2000040,84387,0),
|
||||
(2000041,84387,0),
|
||||
(2000042,84387,0),
|
||||
(2000043,84387,0),
|
||||
(2000044,84387,0),
|
||||
(2000045,84387,0),
|
||||
(2000046,84387,0),
|
||||
(2000047,84387,0),
|
||||
(2000048,84387,0),
|
||||
(2000049,84387,0);
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_04' WHERE sql_rev = '1648294393927803100';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,29 @@
|
||||
-- DB update 2022_03_27_04 -> 2022_03_27_05
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_04';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_04 2022_03_27_05 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647104625347732100'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647104625347732100');
|
||||
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_salvaged_siege_engine' WHERE `entry`=33060;
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_05' WHERE sql_rev = '1647104625347732100';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,39 @@
|
||||
-- DB update 2022_03_27_05 -> 2022_03_27_06
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_05';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_05 2022_03_27_06 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647097838805578400'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647097838805578400');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (23751, 23752, 23753);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(23751, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 15, 182817, 30, 0, 0, 0, 0, 0, 0, 'North Tent - On Spellhit - Despawn Flames'),
|
||||
(23751, 0, 0, 1, 8, 0, 100, 0, 42356, 0, 0, 0, 0, 33, 23751, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'North Tent - On Spellhit - Kill Credit'),
|
||||
(23751, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 50, 182817, 60, 0, 0, 0, 0, 20, 186310, 40, 0, 0, 0, 0, 5, 0, 'North Tent - On Spellhit - Summon GameObject'),
|
||||
(23752, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 15, 182817, 30, 0, 0, 0, 0, 0, 0, 'Northeast Tent - On Spellhit - Despawn Flames'),
|
||||
(23752, 0, 0, 1, 8, 0, 100, 0, 42356, 0, 0, 0, 0, 33, 23752, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Northeast Tent - On Spellhit - Kill Credit'),
|
||||
(23752, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 50, 182817, 60, 0, 0, 0, 0, 20, 186310, 40, 0, 0, 0, 0, 5, 0, 'Northeast Tent - On Spellhit - Summon GameObject'),
|
||||
(23753, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 15, 182817, 30, 0, 0, 0, 0, 0, 0, 'East Tent - On Spellhit - Despawn Flames'),
|
||||
(23753, 0, 0, 1, 8, 0, 100, 0, 42356, 0, 0, 0, 0, 33, 23753, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'East Tent - On Spellhit - Kill Credit'),
|
||||
(23753, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 50, 182817, 60, 0, 0, 0, 0, 20, 186310, 40, 0, 0, 0, 0, 5, 0, 'East Tent - On Spellhit - Summon GameObject');
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_06' WHERE sql_rev = '1647097838805578400';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,29 @@
|
||||
-- DB update 2022_03_27_06 -> 2022_03_27_07
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_06';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_06 2022_03_27_07 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647426130709105800'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647426130709105800');
|
||||
|
||||
UPDATE `spell_proc_event` SET `ppmRate` = 1 WHERE `entry` = 27787;
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_07' WHERE sql_rev = '1647426130709105800';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,32 @@
|
||||
-- DB update 2022_03_27_07 -> 2022_03_27_08
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_07';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_07 2022_03_27_08 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647644720221305200'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647644720221305200');
|
||||
|
||||
DELETE FROM `npc_text` WHERE `ID` IN (1675,1676);
|
||||
INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `BroadcastTextID0`, `lang0`, `Probability0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `BroadcastTextID1`, `lang1`, `Probability1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `BroadcastTextID2`, `lang2`, `Probability2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `BroadcastTextID3`, `lang3`, `Probability3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `BroadcastTextID4`, `lang4`, `Probability4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `BroadcastTextID5`, `lang5`, `Probability5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `BroadcastTextID6`, `lang6`, `Probability6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `BroadcastTextID7`, `lang7`, `Probability7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `VerifiedBuild`) VALUES
|
||||
(1676, 'The Plates of Uldum are discs synthesized by the Creators that allow access into the Uldum compound. These discs house and store specific data related to the Creators\' activities here.$B$BPhysically, they are nearly identical in circumference to the disc set you currently possess. Their markings, however, are directly related to information on Uldum as opposed to the Uldaman complex.', '', 4061, 0, 1, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 11723),
|
||||
(1675, 'My purpose is to regulate access to the Uldum complex for the Creators. I allow entry into the compound only when the solicitor exhibits for access the proper sequencing discs.$B$BYour disc set currently does not contain the Plates of Uldum, the primary prerequisite for entry. Access is not granted unless the Plates of Uldum are present.', '', 4055, 0, 1, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 11723);
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_08' WHERE sql_rev = '1647644720221305200';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,312 @@
|
||||
-- DB update 2022_03_27_08 -> 2022_03_27_09
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_08';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_08 2022_03_27_09 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647998826935283089'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647998826935283089');
|
||||
|
||||
REPLACE INTO `item_template_locale` (`ID`, `locale`, `Name`, `Description`, `VerifiedBuild`) VALUES
|
||||
(886, 'ruRU', 'Черный металлический короткий меч', '', 0),
|
||||
(997, 'ruRU', 'Огненный меч Увечья', '', 0),
|
||||
(1029, 'ruRU', 'Табличка Тотема змея', '', 0),
|
||||
(1057, 'ruRU', 'Табличка Восстановления III', '', 0),
|
||||
(1133, 'ruRU', 'Рог снежного волка', '', 0),
|
||||
(1134, 'ruRU', 'Рог Серого волка', '', 0),
|
||||
(1146, 'ruRU', 'Манускрипт: Воскрешение', '', 0),
|
||||
(1254, 'ruRU', 'Малый камень огня', '', 0),
|
||||
(1623, 'ruRU', 'Мешочек из кожи ящера', '', 0),
|
||||
(1977, 'ruRU', 'Сумка на 20 ячеек', '', 0),
|
||||
(2021, 'ruRU', 'Зеленый панцирный щит', '', 0),
|
||||
(2410, 'ruRU', 'Дымный факел', '', 0),
|
||||
(2413, 'ruRU', 'Игреневая лошадь', '', 0),
|
||||
(2415, 'ruRU', 'Белый жеребец', '', 0),
|
||||
(2556, 'ruRU', 'Рецепт: эликсир наречий', '', 0),
|
||||
(2719, 'ruRU', 'Маленький латунный ключ', '', 0),
|
||||
(2920, 'ruRU', 'Священная реликвия', '', 0),
|
||||
(2921, 'ruRU', 'Благословенная реликвия', '', 0),
|
||||
(2922, 'ruRU', 'Реликвия духа', '', 0),
|
||||
(2929, 'ruRU', 'Могильная гниль', 'Используется разбойниками при изготовлении яда.', 0),
|
||||
(2932, 'ruRU', 'Лоза Мучений', 'Используется разбойниками при изготовлении яда.', 0),
|
||||
(3003, 'ruRU', 'Реликвия Ока', '', 0),
|
||||
(3004, 'ruRU', 'Реликвия Мертвых', '', 0),
|
||||
(3005, 'ruRU', 'Реликвия Истины', '', 0),
|
||||
(3144, 'ruRU', 'Гримуар пылающего духа II', '', 0),
|
||||
(3227, 'ruRU', 'Посох Ночной Погибели', '', 0),
|
||||
(3467, 'ruRU', 'Матовый железный ключ', '', 0),
|
||||
(3499, 'ruRU', 'Отполированный золотой ключ', '', 0),
|
||||
(3675, 'ruRU', 'Догоревший факел', '', 0),
|
||||
(3704, 'ruRU', 'Ржавый железный ключ', '', 0),
|
||||
(3762, 'ruRU', 'Сумка библиотекаря', '', 0),
|
||||
(4143, 'ruRU', 'Фолиант сотворения пищи II', '', 0),
|
||||
(4273, 'ruRU', 'Кодекс Исцеления', '', 0),
|
||||
(4882, 'ruRU', 'Ключ Бенедикта', '', 0),
|
||||
(4930, 'ruRU', 'Кожаная сумка ручной работы', '', 0),
|
||||
(4959, 'ruRU', 'Сломанный метательный томагавк', '', 0),
|
||||
(4981, 'ruRU', 'Поясной мешочек Агмонда', '', 0),
|
||||
(4988, 'ruRU', 'Горящее обсидиановое кольцо', '', 0),
|
||||
(5004, 'ruRU', 'Знак Кирин-Тора', '', 0),
|
||||
(5005, 'ruRU', 'Подвеска Неостывших углей', '', 0),
|
||||
(5008, 'ruRU', 'Кольцо Ртути', '', 0),
|
||||
(5013, 'ruRU', 'Свежая луковица', '', 0),
|
||||
(5105, 'ruRU', 'Разрывной патрон', '', 0),
|
||||
(5150, 'ruRU', 'Книга Целительного прикосновения III', '', 0),
|
||||
(5229, 'ruRU', 'Пустой усиленный кровавый камень', '', 0),
|
||||
(5330, 'ruRU', 'Реликтовая эльфийская чаша', '', 0),
|
||||
(5396, 'ruRU', 'Ключ от Тлеющего ущелья', '', 0),
|
||||
(5397, 'ruRU', 'Порох Братства Справедливости', '', 0),
|
||||
(5517, 'ruRU', 'Крошечный бронзовый ключ', 'Реактив для заклинаний магов', 0),
|
||||
(5518, 'ruRU', 'Крошечный железный ключ', 'Реактив для заклинаний магов', 0),
|
||||
(5522, 'ruRU', 'Камень чар', '', 0),
|
||||
(5603, 'ruRU', 'Джутовый мешок Визбанга', '', 0),
|
||||
(5657, 'ruRU', 'Рецепт: быстродействующая отрава', '', 0),
|
||||
(5660, 'ruRU', 'Манускрипт печати праведности', '', 0),
|
||||
(5663, 'ruRU', 'Рог Красного Волка', '', 0),
|
||||
(5823, 'ruRU', 'Ядовитый гриб', '', 0),
|
||||
(5858, 'ruRU', 'Призовой сундучок гоблинов', 'Открой и получишь приз!', 0),
|
||||
(5874, 'ruRU', 'Сбруя: черный баран', '', 0),
|
||||
(5875, 'ruRU', 'Сбруя: синий баран', '', 0),
|
||||
(6130, 'ruRU', 'Рубашка зверолова', '', 0),
|
||||
(6182, 'ruRU', 'Тусклый факел', '', 0),
|
||||
(6183, 'ruRU', 'Незажженный плохой факел', '', 0),
|
||||
(6216, 'ruRU', 'Таинственный порошок', 'Используется зачаровывателями для наложения некоторых чар.', 0),
|
||||
(6276, 'ruRU', 'Заплесневелая записка', '', 0),
|
||||
(6277, 'ruRU', 'Заплесневелый пергамент', '', 0),
|
||||
(6278, 'ruRU', 'Заплесневелый свиток', '', 0),
|
||||
(6279, 'ruRU', 'Заплесневелое письмо', '', 0),
|
||||
(6280, 'ruRU', 'Заплесневелое послание', '', 0),
|
||||
(6295, 'ruRU', '15-фунтовый илистый луциан', '', 0),
|
||||
(6345, 'ruRU', 'Формула: укрепить плащ - охрана', 'Обучает применению к плащу постоянных чар, усиливающих броню на 10.', 0),
|
||||
(6374, 'ruRU', 'Зачарованный порошок', 'Используется зачаровывателями для наложения некоторых чар.', 0),
|
||||
(6376, 'ruRU', 'Формула чар для обуви: выносливость I', 'Обучает применению к обуви постоянных чар, повышающих выносливость на 1.', 0),
|
||||
(6490, 'ruRU', 'Темный пергамент', '', 0),
|
||||
(6491, 'ruRU', 'Тяжелый пергамент', '', 0),
|
||||
(6492, 'ruRU', 'Закопченый пергамент', '', 0),
|
||||
(6495, 'ruRU', 'Потрепанный пергамент', '', 0),
|
||||
(6496, 'ruRU', 'Подробный пергамент', '', 0),
|
||||
(6497, 'ruRU', 'Записка на пергаменте', '', 0),
|
||||
(6544, 'ruRU', 'Свиток призыва демона Бездны', '', 0),
|
||||
(6589, 'ruRU', 'Иридиевое кольцо', '', 0),
|
||||
(6619, 'ruRU', 'Учебник: путь защиты', '', 0),
|
||||
(6623, 'ruRU', 'Свиток призыва суккуба', '', 0),
|
||||
(6648, 'ruRU', 'Свиток тотема каменной кожи', '', 0),
|
||||
(6649, 'ruRU', 'Свиток опаляющего тотема', '', 0),
|
||||
(6754, 'ruRU', 'Большой кошель', '', 0),
|
||||
(6891, 'ruRU', 'Рецепт: яйцо с травами', 'Обучает приготовлению яйца с травами.', 0),
|
||||
(6988, 'ruRU', 'Свиток призыва охотника Скверны', '', 0),
|
||||
(7192, 'ruRU', 'Чертеж: гоблинские реактивные сапоги', 'Обучает изготовлению гоблинских реактивных сапог.', 0),
|
||||
(7426, 'ruRU', 'Небесно-голубое кольцо', '', 0),
|
||||
(7427, 'ruRU', 'Лазурный талисман', '', 0),
|
||||
(7466, 'ruRU', 'Киноварное кольцо', '', 0),
|
||||
(7467, 'ruRU', 'Киноварное ожерелье', '', 0),
|
||||
(7497, 'ruRU', 'Кольцо из слоновой кости', '', 0),
|
||||
(7547, 'ruRU', 'Ониксовое кольцо', '', 0),
|
||||
(7548, 'ruRU', 'Ониксовое колье', '', 0),
|
||||
(7550, 'ruRU', 'Честь Воителя', '', 0),
|
||||
(7681, 'ruRU', 'Осколок обсидианового голема', '', 0),
|
||||
(7716, 'ruRU', 'Поврежденное ожерелье', '', 0),
|
||||
(7923, 'ruRU', 'Ключ от Башни Братства Справедливости', '', 0),
|
||||
(7986, 'ruRU', 'Чертеж: изысканная мифриловая кираса', '', 0),
|
||||
(7987, 'ruRU', 'Чертеж: изысканный мифриловый шлем', '', 0),
|
||||
(7988, 'ruRU', 'Чертеж: изысканные мифриловые сапоги', '', 0),
|
||||
(7994, 'ruRU', 'Чертеж: орочьи боевые поножи', '', 0),
|
||||
(8072, 'ruRU', 'Ключ башни Силиксиза', '', 0),
|
||||
(8147, 'ruRU', 'Крошечный медный ключ', 'Реактив для заклинаний магов', 0),
|
||||
(8546, 'ruRU', 'Мощные ароматические соли', '', 0),
|
||||
(8583, 'ruRU', 'Рог ездового коня-скелета', '', 0),
|
||||
(8589, 'ruRU', 'Старый свисток бежевого ящера', '', 0),
|
||||
(8590, 'ruRU', 'Старый свисток обсидианового ящера', '', 0),
|
||||
(8628, 'ruRU', 'Поводья пятнистого ночного саблезуба', '', 0),
|
||||
(8630, 'ruRU', 'Поводья бенгальского тигра', '', 0),
|
||||
(8633, 'ruRU', 'Поводья леопарда', '', 0),
|
||||
(8840, 'ruRU', 'Фолиант Сотворения самоцвета маны II', '', 0),
|
||||
(8964, 'ruRU', 'Кодекс быстрого исцеления', '', 0),
|
||||
(9299, 'ruRU', 'Код от сейфа Термоштепселя', '', 0),
|
||||
(9311, 'ruRU', 'Обычные письменные принадлежности', '', 0),
|
||||
(9417, 'ruRU', 'Архиаэдский осколок', '', 0),
|
||||
(9443, 'ruRU', 'Использованный препарат тканей монстра', '', 0),
|
||||
(9489, 'ruRU', 'Гироматический генератор льда', '', 0),
|
||||
(10460, 'ruRU', 'Кровь Хаккари', '', 0),
|
||||
(10580, 'ruRU', 'Гоблинская "коробка с сюрпризом"', '', 0),
|
||||
(10683, 'ruRU', 'Ранец исследователя', '', 0),
|
||||
(10719, 'ruRU', 'Передвижная сирена', '', 0),
|
||||
(10723, 'ruRU', 'Любительское радио гномов', '', 0),
|
||||
(10757, 'ruRU', 'Оберег Осквернителя', 'Полный амулет Рак\'лиха', 0),
|
||||
(11079, 'ruRU', 'Отрубленная голова Гор\'теша', 'Отрубленная голова Гор\'теша насажена на пику.', 0),
|
||||
(12144, 'ruRU', 'Яйцехладоскоп', '', 0),
|
||||
(12947, 'ruRU', 'Кольцо отваги Алекса', '', 0),
|
||||
(13065, 'ruRU', 'Жезл Аллистария', '', 0),
|
||||
(13302, 'ruRU', 'Ключ от почтового ящика в торговом ряду', '', 0),
|
||||
(13303, 'ruRU', 'Ключ от почтового ящика на Площади рыцарей', '', 0),
|
||||
(13304, 'ruRU', 'Ключ от почтового ящика на Праздничной улице', '', 0),
|
||||
(13305, 'ruRU', 'Ключ от почтового ящика на Площади старейшины', '', 0),
|
||||
(13306, 'ruRU', 'Ключ от почтового ящика на Королевской площали', '', 0),
|
||||
(13307, 'ruRU', 'Ключ от почтового ящика Эзры Гримма', '', 0),
|
||||
(13602, 'ruRU', 'Большой камень чар', '', 0),
|
||||
(13603, 'ruRU', 'Крупный камень чар', '', 0),
|
||||
(13699, 'ruRU', 'Камень огня', '', 0),
|
||||
(13700, 'ruRU', 'Большой камень огня', '', 0),
|
||||
(13701, 'ruRU', 'Крупный камень огня', '', 0),
|
||||
(13812, 'ruRU', 'Кольцо Рассвета', '', 0),
|
||||
(13873, 'ruRU', 'Ключ от смотровой', '', 0),
|
||||
(14062, 'ruRU', 'Верховой кодо', '', 0),
|
||||
(14100, 'ruRU', 'Одеяние из яркой ткани', '', 0),
|
||||
(14104, 'ruRU', 'Штаны из яркой ткани', '', 0),
|
||||
(15054, 'ruRU', 'Вулканические поножи', '', 0),
|
||||
(15068, 'ruRU', 'Мундир из кожи ледопарда', '', 0),
|
||||
(15069, 'ruRU', 'Поножи из кожи ледопарда', '', 0),
|
||||
(15070, 'ruRU', 'Перчатки из кожи ледопарда', '', 0),
|
||||
(15071, 'ruRU', 'Сапоги из кожи ледопарда', '', 0),
|
||||
(15072, 'ruRU', 'Химерические поножи', '', 0),
|
||||
(15074, 'ruRU', 'Химерические перчатки', '', 0),
|
||||
(15075, 'ruRU', 'Химерический жилет', '', 0),
|
||||
(16057, 'ruRU', 'Ранец исследователя', '', 0),
|
||||
(16085, 'ruRU', 'Искусник первой помощи: исцели себя сам', '', 0),
|
||||
(16315, 'ruRU', 'Накидка старшины', '', 0),
|
||||
(16336, 'ruRU', 'Накидка старшины', '', 0),
|
||||
(16337, 'ruRU', 'Накидка старшины', '', 0),
|
||||
(16339, 'ruRU', 'Скакун командора', '', 0),
|
||||
(17242, 'ruRU', 'Ключ от сундука Салема', 'Открывает сундук темного священника Салема.', 0),
|
||||
(17262, 'ruRU', 'Ключ Джеймса', 'Открывает сундук, украденный из Собора Света.', 0),
|
||||
(17323, 'ruRU', 'Маяк Малверика', '', 0),
|
||||
(17325, 'ruRU', 'Маяк Джезтора', '', 0),
|
||||
(17362, 'ruRU', 'Маяк Рисона', '', 0),
|
||||
(17363, 'ruRU', 'Маяк Рисона', '', 0),
|
||||
(17384, 'ruRU', 'Портативный резак Зинфиззлекса', '', 0),
|
||||
(17410, 'ruRU', 'Портативный резак Зинфиззлекса', '', 0),
|
||||
(17505, 'ruRU', 'Маяк Ичмена', '', 0),
|
||||
(17506, 'ruRU', 'Маяк Змейера', '', 0),
|
||||
(17782, 'ruRU', 'Талисман Соединения Осколков', '', 0),
|
||||
(17967, 'ruRU', 'Очищенная чешуя ониксии', '', 0),
|
||||
(18154, 'ruRU', 'Письменные принадлежности Близзарда', '', 0),
|
||||
(18266, 'ruRU', 'Ключ от внутреннего двора клана Гордок', '', 0),
|
||||
(18268, 'ruRU', 'Ключ от внутренней двери клана Гордок', '', 0),
|
||||
(18964, 'ruRU', 'Черепашье яйцо (головастая морская черепаха)', 'Призыв и освобождение хрустогрыза по щелчку правой кнопкой мыши.', 0),
|
||||
(19322, 'ruRU', 'Почетный знак Песни Войны', 'Знак за победу в Ущелье Песни Войны.', 0),
|
||||
(20364, 'ruRU', 'Тестовый снарядный ящик', '', 0),
|
||||
(20591, 'ruRU', 'Прочная мужская маска дворфа', '', 0),
|
||||
(20596, 'ruRU', 'Прочная мужская маска таурена', '', 0),
|
||||
(20819, 'ruRU', 'Ограненный малахит', '', 0),
|
||||
(20822, 'ruRU', 'Ограненный тигровый глаз', '', 0),
|
||||
(20825, 'ruRU', 'Ограненный камень теней', '', 0),
|
||||
(20829, 'ruRU', 'Ограненный лунный камень', '', 0),
|
||||
(20952, 'ruRU', 'Ограненный агат', '', 0),
|
||||
(20953, 'ruRU', 'Ограненный нефрит', '', 0),
|
||||
(20956, 'ruRU', 'Подвеска серебряной розы', '', 0),
|
||||
(20962, 'ruRU', 'Ограненный аквамарин', '', 0),
|
||||
(20965, 'ruRU', 'Ограненный рубин', '', 0),
|
||||
(21691, 'ruRU', 'Испорченные грязью рукавицы', '', 0),
|
||||
(21761, 'ruRU', 'Ключ от сундука Скарабея', '', 0),
|
||||
(21762, 'ruRU', 'Ключ от большого сундука Скарабея', '', 0),
|
||||
(21772, 'ruRU', 'Ограненный сапфир', '', 0),
|
||||
(21773, 'ruRU', 'Ограненный опал', '', 0),
|
||||
(21785, 'ruRU', 'Ограненный изумруд', '', 0),
|
||||
(21786, 'ruRU', 'Ограненный азеротский алмаз', '', 0),
|
||||
(21793, 'ruRU', 'Подвеска из арканитового меча', '', 0),
|
||||
(22058, 'ruRU', 'Портрет ко дню Святого Валентина', '', 0),
|
||||
(22095, 'ruRU', 'Наручники Пяти Громов', '', 0),
|
||||
(22096, 'ruRU', 'Сапоги Пяти Громов', '', 0),
|
||||
(22097, 'ruRU', 'Капюшон Пяти Громов', '', 0),
|
||||
(22098, 'ruRU', 'Шнурованный ремень Пяти Громов', '', 0),
|
||||
(22099, 'ruRU', 'Рукавицы Пяти Громов', '', 0),
|
||||
(22100, 'ruRU', 'Килт Пяти Громов', '', 0),
|
||||
(22101, 'ruRU', 'Наплечье Пяти Громов', '', 0),
|
||||
(22102, 'ruRU', 'Жилет Пяти Громов', '', 0),
|
||||
(22128, 'ruRU', 'Великий камень огня', '', 0),
|
||||
(22646, 'ruRU', 'Мастерский камень чар', '', 0),
|
||||
(22736, 'ruRU', 'Адонис, Жнец душ', 'Это пространственный клинок. Иногда он выпадает с этого уровня реальности.', 0),
|
||||
(22896, 'ruRU', 'Исцеляющий кристалл', '', 0),
|
||||
(23233, 'ruRU', 'Красный брианит Силы - материал', '', 0),
|
||||
(23234, 'ruRU', 'Синий брианит Ловкости', '', 0),
|
||||
(23235, 'ruRU', 'Желтый брианит выносливости', '', 0),
|
||||
(23462, 'ruRU', 'Фолиант верховного вождя: Разрушение', '', 0),
|
||||
(23578, 'ruRU', 'Диетическое зелье Максоуса', 'Пища для Ума', 0),
|
||||
(23579, 'ruRU', 'Классическое зелье Максоуса', 'Оригинал.', 0),
|
||||
(23683, 'ruRU', 'Пастилка от кашля из кристальных пластинок', '', 0),
|
||||
(23684, 'ruRU', 'Бинты Хрустального дара', '', 0),
|
||||
(23754, 'ruRU', 'Шкура щетинистого копытня', '', 0),
|
||||
(23831, 'ruRU', 'Гоблинский пульт управления танком', '', 0),
|
||||
(23832, 'ruRU', 'Гномский пульт управления танком', '', 0),
|
||||
(23840, 'ruRU', 'Удаленный почтовый терминал', '', 0),
|
||||
(23855, 'ruRU', 'Огненная чароткань', '', 0),
|
||||
(24269, 'ruRU', 'Тяжелая сеть из ткани Пустоты', '', 0),
|
||||
(25580, 'ruRU', 'QR 9867 Поножи воина', '', 0),
|
||||
(25581, 'ruRU', 'QR 9867 Охотничьи перчатки', '', 0),
|
||||
(25582, 'ruRU', 'QR 9867 Друидический пояс лунного совуха', '', 0),
|
||||
(25627, 'ruRU', 'QR 9922 Щит', '', 0),
|
||||
(25684, 'ruRU', 'Талисман Кокорека', '', 0),
|
||||
(25706, 'ruRU', 'Приказы Луанги', '', 0),
|
||||
(25747, 'ruRU', '(Испорчено) Чертеж мана-бомбы, стр. 1', '', 0),
|
||||
(25748, 'ruRU', '(Испорчено) Чертеж мана-бомбы, стр. 2', '', 0),
|
||||
(25749, 'ruRU', '(Испорчено) Чертеж мана-бомбы, стр. 3', '', 0),
|
||||
(25750, 'ruRU', '(Испорчено) Чертеж мана-бомбы, стр. 4', '', 0),
|
||||
(25840, 'ruRU', 'Экстракт посмертия', '', 0),
|
||||
(25884, 'ruRU', 'Изначальная каменная статуя', '', 0),
|
||||
(28043, 'ruRU', 'Подвеска ловчего демонов', '', 0),
|
||||
(28044, 'ruRU', 'Кольцо ловчего демонов', '', 0),
|
||||
(28046, 'ruRU', 'Послание Легиона', 'Запечатано печатью Араззиуса.', 0),
|
||||
(28107, 'ruRU', 'Послание Легиона', 'Запечатано печатью Араззиуса.', 0),
|
||||
(28110, 'ruRU', 'Толстый гном и Тощий эльф', '', 0),
|
||||
(28131, 'ruRU', 'Разбойничий гранатомет', '', 0),
|
||||
(28598, 'ruRU', 'Инструкция по созданию сквернобота', '', 0),
|
||||
(29311, 'ruRU', 'Инструкция по созданию сквернобота', '', 0),
|
||||
(29790, 'ruRU', 'Разрушительные заряды', '', 0),
|
||||
(29887, 'ruRU', 'Коробка для боеприпасов "Охотник-150"', '', 0),
|
||||
(30438, 'ruRU', 'Ключ от склада Легиона', '', 0),
|
||||
(30630, 'ruRU', 'Энергетическая матрица сквернобота', '', 0),
|
||||
(30717, 'ruRU', 'Подвеска Вестника', '', 0),
|
||||
(30805, 'ruRU', 'Утолщенные перчатки незапятнанности', '', 0),
|
||||
(30845, 'ruRU', 'Знак Всемагической Защиты', '', 0),
|
||||
(31665, 'ruRU', 'Игрушечный ДУ танк-миномет', 'Заметка: Безопасно для детей. Не стреляет.', 0),
|
||||
(31704, 'ruRU', 'Ключ Урагана', 'Прозрачный ключ, который будто бы связан лучами света.', 0),
|
||||
(32595, 'ruRU', 'Реагент - пыль Оргелы', '', 0),
|
||||
(32642, 'ruRU', 'Изначальная темная руна', 'Энергия Скверны заполняет пространство вокруг руны.', 0),
|
||||
(32972, 'ruRU', 'Пивные очки', '', 0),
|
||||
(33063, 'ruRU', 'Очень черствый хлеб', 'Несъедобно, но сойдет, чтобы отстоять вашу выпивку.', 0),
|
||||
(35517, 'ruRU', 'Выкройка: наручники молниеносной реакции', '', 0),
|
||||
(35518, 'ruRU', 'Выкройка: наручи сообразительности', '', 0),
|
||||
(35519, 'ruRU', 'Выкройка: наручи обновленной жизни', '', 0),
|
||||
(35520, 'ruRU', 'Выкройка: наручники живой земли', '', 0),
|
||||
(35521, 'ruRU', 'Выкройка: наплечники живой земли', '', 0),
|
||||
(35522, 'ruRU', 'Выкройка: мантия сообразительности', '', 0),
|
||||
(35523, 'ruRU', 'Выкройка: наплечные пластины обновленной жизни', '', 0),
|
||||
(35524, 'ruRU', 'Выкройка: наплечники молниеносной реакции', '', 0),
|
||||
(35525, 'ruRU', 'Выкройка: мантия быстрого исцеления', '', 0),
|
||||
(35526, 'ruRU', 'Выкройка: повязки быстрого исцеления', '', 0),
|
||||
(35527, 'ruRU', 'Выкройка: наручи молниеносного удара', '', 0),
|
||||
(35529, 'ruRU', 'Чертеж: наручи рассветной стали', '', 0),
|
||||
(35531, 'ruRU', 'Чертеж: наручи из быстростали', '', 0),
|
||||
(35533, 'ruRU', 'Эскиз: амулет бьющего ключа', 'Обучает изготовлению амулета бьющего ключа.', 0),
|
||||
(35535, 'ruRU', 'Эскиз: колье из закаленного кория', '', 0),
|
||||
(35537, 'ruRU', 'Эскиз: подвеска солнечного огня', '', 0),
|
||||
(35538, 'ruRU', 'Эскиз: кольцо бьющего ключа', '', 0),
|
||||
(35539, 'ruRU', 'Выкройка: панцирь Солнца и Тени', '', 0),
|
||||
(35541, 'ruRU', 'Выкройка: стрелецкие перчатки Феникса', '', 0),
|
||||
(35544, 'ruRU', 'Выкройка: перчатки вечного света', '', 0),
|
||||
(35545, 'ruRU', 'Выкройка: кожаный нагрудный доспех солнца', '', 0),
|
||||
(35546, 'ruRU', 'Выкройка: кожаные рукавицы Солнца', '', 0),
|
||||
(35548, 'ruRU', 'Выкройка: одеяние вечного света', '', 0),
|
||||
(35549, 'ruRU', 'Выкройка: пронизанный солнцем нагрудный доспех', '', 0),
|
||||
(35550, 'ruRU', 'Выкройка: пронизанные солнцем чешуйчатые перчатки', '', 0),
|
||||
(35551, 'ruRU', 'Выкройка: повязки солнечного огня', '', 0),
|
||||
(35553, 'ruRU', 'Чертеж: кулачные перчатки из закаленного кория', '', 0);
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_09' WHERE sql_rev = '1647998826935283089';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,319 @@
|
||||
-- DB update 2022_03_27_09 -> 2022_03_27_10
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_09';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_09 2022_03_27_10 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647999537361228262'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647999537361228262');
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(176005, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176006, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176007, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176008, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176009, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176010, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176011, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176012, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176013, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176014, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176015, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176016, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176017, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176018, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176019, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176020, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176021, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176022, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176023, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176024, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176025, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176026, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176027, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176028, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176029, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176030, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176031, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176032, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176033, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176034, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176035, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176036, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176037, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176038, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176039, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176040, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176041, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176042, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176043, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176044, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176045, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176046, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176047, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176048, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176049, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176050, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176051, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176052, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176053, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176054, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176055, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176056, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176057, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176058, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176059, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176060, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176061, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176062, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176063, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176064, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176065, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176066, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176067, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176068, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176069, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176070, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176071, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176072, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176073, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176074, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176075, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176076, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176077, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176078, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176079, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176098, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176099, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176100, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176101, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176102, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176103, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176104, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176105, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176106, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176107, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176108, 'ruRU', 'Скамейка подземки', '', 0),
|
||||
(176109, 'ruRU', 'Скамейка подземки', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(57748, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(82139, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(82140, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(57709, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(57710, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(57725, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(57726, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(57727, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(57749, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(57750, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(57751, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(57752, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(57753, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70518, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70519, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70520, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70521, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70522, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70523, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70524, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70525, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70526, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70527, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70528, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70530, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70531, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70532, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70533, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70534, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70535, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70536, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70537, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70538, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70539, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70540, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70541, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70542, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70543, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70544, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70545, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70546, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70547, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70548, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70549, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70551, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70552, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70553, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70554, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70555, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70556, 'ruRU', 'Фонарный столб', '', 0),
|
||||
(70557, 'ruRU', 'Фонарный столб', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(142111, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(143987, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(143988, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(143989, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(143990, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(144570, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(153578, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(163313, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(185471, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(142119, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(175864, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(181639, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(187260, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(195629, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(195624, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(195625, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(195626, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(195628, 'ruRU', 'Почтовый ящик', '', 0),
|
||||
(195627, 'ruRU', 'Почтовый ящик', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(28611, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(28612, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(171648, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(171649, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(35577, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(35578, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(35580, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(35581, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(35588, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(35589, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(37474, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(37475, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(37480, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(37481, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(37483, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(37484, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(37492, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(37493, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(38024, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0),
|
||||
(38025, 'ruRU', 'Дворфийский стул с высокой спинкой', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(172943, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(172998, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173000, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173124, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173201, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(172999, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173001, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173002, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173003, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173004, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173126, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173228, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173229, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173230, 'ruRU', 'Могучее пламя', '', 0),
|
||||
(173231, 'ruRU', 'Могучее пламя', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(32367, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32370, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32396, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32397, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32398, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32399, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32402, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32405, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32410, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32411, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32430, 'ruRU', 'Главные ворота Стальгорна', '', 0),
|
||||
(32440, 'ruRU', 'Главные ворота Стальгорна', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(142947, 'ruRU', 'Каменный стул', '', 0),
|
||||
(171674, 'ruRU', 'Каменный стул', '', 0),
|
||||
(142948, 'ruRU', 'Каменный стул', '', 0),
|
||||
(171567, 'ruRU', 'Каменный стул', '', 0),
|
||||
(171568, 'ruRU', 'Каменный стул', '', 0),
|
||||
(171675, 'ruRU', 'Каменный стул', '', 0),
|
||||
(171676, 'ruRU', 'Каменный стул', '', 0),
|
||||
(171677, 'ruRU', 'Каменный стул', '', 0),
|
||||
(171718, 'ruRU', 'Каменный стул', '', 0),
|
||||
(171719, 'ruRU', 'Каменный стул', '', 0),
|
||||
(171720, 'ruRU', 'Каменный стул', '', 0),
|
||||
(171721, 'ruRU', 'Каменный стул', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(32356, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32360, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32363, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32371, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32408, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32413, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32418, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32421, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32423, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32786, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32788, 'ruRU', 'Зал Исследователей', '', 0),
|
||||
(32793, 'ruRU', 'Зал Исследователей', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(32372, 'ruRU', 'Великая Кузня', '', 0),
|
||||
(32373, 'ruRU', 'Великая Кузня', '', 0),
|
||||
(32374, 'ruRU', 'Великая Кузня', '', 0),
|
||||
(32375, 'ruRU', 'Великая Кузня', '', 0),
|
||||
(32378, 'ruRU', 'Великая Кузня', '', 0),
|
||||
(32379, 'ruRU', 'Великая Кузня', '', 0),
|
||||
(32392, 'ruRU', 'Великая Кузня', '', 0),
|
||||
(32395, 'ruRU', 'Великая Кузня', '', 0),
|
||||
(32436, 'ruRU', 'Великая Кузня', '', 0),
|
||||
(32789, 'ruRU', 'Великая Кузня', '', 0),
|
||||
(32790, 'ruRU', 'Великая Кузня', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(19522, 'ruRU', 'Котел', '', 0),
|
||||
(59529, 'ruRU', 'Котел', '', 0),
|
||||
(59530, 'ruRU', 'Котел', '', 0),
|
||||
(177244, 'ruRU', 'Котел', '', 0),
|
||||
(20878, 'ruRU', 'Котел', '', 0),
|
||||
(74077, 'ruRU', 'Котел', '', 0),
|
||||
(141845, 'ruRU', 'Котел', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(188130, 'ruRU', 'Камень Льда', '', 0),
|
||||
(188134, 'ruRU', 'Камень Льда', '', 0),
|
||||
(188135, 'ruRU', 'Камень Льда', '', 0),
|
||||
(188139, 'ruRU', 'Камень Льда', '', 0),
|
||||
(188145, 'ruRU', 'Камень Льда', '', 0),
|
||||
(188146, 'ruRU', 'Камень Льда', '', 0),
|
||||
(188147, 'ruRU', 'Камень Льда', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(9847, 'ruRU', 'Очаг для приготовления пищи', '', 0),
|
||||
(10388, 'ruRU', 'Очаг для приготовления пищи', '', 0),
|
||||
(175592, 'ruRU', 'Очаг для приготовления пищи', '', 0),
|
||||
(175600, 'ruRU', 'Очаг для приготовления пищи', '', 0),
|
||||
(175604, 'ruRU', 'Очаг для приготовления пищи', '', 0),
|
||||
(175605, 'ruRU', 'Очаг для приготовления пищи', '', 0),
|
||||
(184618, 'ruRU', 'Очаг для приготовления пищи', '', 0);
|
||||
|
||||
REPLACE INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) VALUES
|
||||
(176080, 'ruRU', 'Подземка', '', 0),
|
||||
(176081, 'ruRU', 'Подземка', '', 0),
|
||||
(176082, 'ruRU', 'Подземка', '', 0),
|
||||
(176083, 'ruRU', 'Подземка', '', 0),
|
||||
(176084, 'ruRU', 'Подземка', '', 0),
|
||||
(176085, 'ruRU', 'Подземка', '', 0);
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_10' WHERE sql_rev = '1647999537361228262';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,31 @@
|
||||
-- DB update 2022_03_27_10 -> 2022_03_27_11
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_10';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_10 2022_03_27_11 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647761424947662456'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647761424947662456');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_item_runic_healing_injector';
|
||||
INSERT INTO `spell_script_names` VALUES
|
||||
(67489,'spell_item_runic_healing_injector');
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_11' WHERE sql_rev = '1647761424947662456';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,31 @@
|
||||
-- DB update 2022_03_27_11 -> 2022_03_27_12
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_11';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_11 2022_03_27_12 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647762029984921289'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647762029984921289');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_lightwell');
|
||||
INSERT INTO `spell_script_names` VALUES
|
||||
(60123,'spell_pri_lightwell');
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_12' WHERE sql_rev = '1647762029984921289';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,30 @@
|
||||
-- DB update 2022_03_27_12 -> 2022_03_27_13
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_12';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_12 2022_03_27_13 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647861814144531389'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647861814144531389');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_item_dimensional_ripper_area52';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (36890,'spell_item_dimensional_ripper_area52');
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_13' WHERE sql_rev = '1647861814144531389';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,31 @@
|
||||
-- DB update 2022_03_27_13 -> 2022_03_27_14
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_13';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_13 2022_03_27_14 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647924729405978168'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647924729405978168');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_death_knight_initiate_visual');
|
||||
INSERT INTO `spell_script_names` VALUES
|
||||
(51519, 'spell_death_knight_initiate_visual');
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_14' WHERE sql_rev = '1647924729405978168';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,31 @@
|
||||
-- DB update 2022_03_27_14 -> 2022_03_27_15
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_14';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_14 2022_03_27_15 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1647923874715608181'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647923874715608181');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_q1846_bending_shinbone');
|
||||
INSERT INTO `spell_script_names` VALUES
|
||||
(8856, 'spell_q1846_bending_shinbone');
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_15' WHERE sql_rev = '1647923874715608181';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,34 @@
|
||||
-- DB update 2022_03_27_15 -> 2022_03_27_16
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_15';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_15 2022_03_27_16 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1648289846118024900'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648289846118024900');
|
||||
|
||||
-- Fix selectable doors
|
||||
UPDATE `gameobject_template_addon` SET `faction` = 114, `flags` = `flags`|32 WHERE `entry` IN (176964, 179117, 179365);
|
||||
UPDATE `gameobject_template_addon` SET `flags` = `flags`|4 WHERE `entry` = 179115;
|
||||
|
||||
-- Fix Blackwing technicians spawn time
|
||||
UPDATE `creature` SET `spawntimesecs` = 604800 WHERE `id1` = 13996;
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_16' WHERE sql_rev = '1648289846118024900';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,29 @@
|
||||
-- DB update 2022_03_27_16 -> 2022_03_27_17
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_16';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_16 2022_03_27_17 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1648255016918528600'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648255016918528600');
|
||||
|
||||
DELETE FROM `creature_loot_template` WHERE `Entry` = 11502 AND `Item` = 17982;
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_17' WHERE sql_rev = '1648255016918528600';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,149 @@
|
||||
-- DB update 2022_03_27_17 -> 2022_03_27_18
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_17';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_17 2022_03_27_18 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1648309713111396700'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648309713111396700');
|
||||
|
||||
SET @CGUID := 2000060;
|
||||
DELETE FROM `creature_addon` WHERE `guid` BETWEEN 84556 AND 84566;
|
||||
DELETE FROM `linked_respawn` WHERE `guid` BETWEEN 84556 AND 84566;
|
||||
DELETE FROM `linked_respawn` WHERE `guid` IN (85788,85793,85797,85798,85799,85802,85805);
|
||||
DELETE FROM `creature` WHERE `id1`=12468;
|
||||
INSERT INTO `creature` (`guid`, `id1`, `map`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`) VALUES
|
||||
(@CGUID,12468,469,1,1,1,-7655.51,-1100.16,449.243,3.54007,600,0,0,1,0,2,0,0,0,''),
|
||||
(@CGUID+1,12468,469,1,1,1,-7592.86,-1075.23,449.246,2.65568,600,0,0,1,0,2,0,0,0,''),
|
||||
(@CGUID+2,12468,469,1,1,1,-7673.25,-1039.96,440.28,2.46326,600,0,0,1,0,2,0,0,0,''),
|
||||
(@CGUID+3,12468,469,1,1,1,-7649.78,-1057.55,449.247,5.57555,600,0,0,1,0,2,0,0,0,''),
|
||||
(@CGUID+4,12468,469,1,1,1,-7668.59,-986.566,440.329,5.74399,600,0,0,1,0,2,0,0,0,''),
|
||||
(@CGUID+5,12468,469,1,1,1,-7624.29,-1035.04,449.244,4.62018,600,0,0,1,0,2,0,0,0,''),
|
||||
(@CGUID+6,12468,469,1,1,1,-7639.27,-968.392,440.092,5.84041,600,0,0,1,0,2,0,0,0,''),
|
||||
(@CGUID+7,12468,469,1,1,1,-7620.51,-998.365,440.319,2.62407,600,0,0,1,0,2,0,0,0,''),
|
||||
(@CGUID+8,12468,469,1,1,1,-7695.27,-1005.48,440.297,5.80156,600,0,0,1,0,2,0,0,0,''),
|
||||
(@CGUID+9,12468,469,1,1,1,-7630.35,-1101.33,449.246,1.63947,600,0,0,1,0,2,0,0,0,''),
|
||||
(@CGUID+10,12468,469,1,1,1,-7649.74,-1019.88,440.318,2.38942,600,0,0,1,0,2,0,0,0,'');
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID AND @CGUID+10;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`, `bytes2`) VALUES
|
||||
(@CGUID,@CGUID*10,1),
|
||||
(@CGUID+1,(@CGUID+1)*10,1),
|
||||
(@CGUID+2,(@CGUID+2)*10,1),
|
||||
(@CGUID+3,(@CGUID+3)*10,1),
|
||||
(@CGUID+4,(@CGUID+4)*10,1),
|
||||
(@CGUID+5,(@CGUID+5)*10,1),
|
||||
(@CGUID+6,(@CGUID+6)*10,1),
|
||||
(@CGUID+7,(@CGUID+7)*10,1),
|
||||
(@CGUID+8,(@CGUID+8)*10,1),
|
||||
(@CGUID+9,(@CGUID+9)*10,1),
|
||||
(@CGUID+10,(@CGUID+10)*10,1);
|
||||
|
||||
SET @PATH_ID := @CGUID*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7680.62,-1110.73,449.126,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7648.96,-1087.89,449.164,100,0,0,0,100,0);
|
||||
|
||||
SET @PATH_ID := (@CGUID+1)*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7633.58,-1053.72,449.164,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7591.82,-1076.51,449.164,100,0,0,0,100,0);
|
||||
|
||||
SET @PATH_ID := (@CGUID+2)*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7705.59,-1013.9,440.401,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7670.4,-1038.78,440.197,100,0,0,0,100,0);
|
||||
|
||||
SET @PATH_ID := (@CGUID+3)*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7624.98,-1078.78,449.164,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7609.39,-1084.48,449.164,100,0,0,0,100,0),
|
||||
(@PATH_ID,3,-7624.98,-1078.78,449.164,100,0,0,0,100,0),
|
||||
(@PATH_ID,4,-7651.04,-1056.83,449.172,100,0,0,0,100,0);
|
||||
|
||||
SET @PATH_ID := (@CGUID+4)*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7633.23,-1007.72,440.262,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7667.67,-987.11,439.986,100,0,0,0,100,0);
|
||||
|
||||
SET @PATH_ID := (@CGUID+5)*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7625.61,-1049.31,449.164,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7608.66,-1082.75,449.164,100,0,0,0,100,0),
|
||||
(@PATH_ID,3,-7625.61,-1049.31,449.164,100,0,0,0,100,0),
|
||||
(@PATH_ID,4,-7624.89,-1036.41,449.164,100,0,0,0,100,0);
|
||||
|
||||
SET @PATH_ID := (@CGUID+6)*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7605.95,-984.189,440.111,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7640.56,-967.494,440.29,100,0,0,0,100,0);
|
||||
|
||||
SET @PATH_ID := (@CGUID+7)*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7653.81,-979.409,440.263,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7619.22,-999.321,440.287,100,0,0,0,100,0);
|
||||
|
||||
SET @PATH_ID := (@CGUID+8)*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7676.08,-1015.52,439.983,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7668.89,-1020.34,440.279,100,0,0,0,100,0),
|
||||
(@PATH_ID,3,-7676.08,-1015.52,439.983,100,0,0,0,100,0),
|
||||
(@PATH_ID,4,-7696.82,-1004.11,440.216,100,0,0,0,100,0);
|
||||
|
||||
SET @PATH_ID := (@CGUID+9)*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7631.94,-1078.19,449.164,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7642.19,-1059.9,449.165,100,0,0,0,100,0),
|
||||
(@PATH_ID,3,-7631.94,-1078.19,449.164,100,0,0,0,100,0),
|
||||
(@PATH_ID,4,-7629.75,-1102.86,449.164,100,0,0,0,100,0);
|
||||
|
||||
SET @PATH_ID := (@CGUID+10)*10;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH_ID;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH_ID,1,-7664.98,-1005.61,440.254,100,0,0,0,100,0),
|
||||
(@PATH_ID,2,-7684.11,-996.917,440.204,100,0,0,0,100,0),
|
||||
(@PATH_ID,3,-7664.98,-1005.61,440.254,100,0,0,0,100,0),
|
||||
(@PATH_ID,4,-7647.92,-1020.32,440.232,100,0,0,0,100,0);
|
||||
|
||||
DELETE FROM `linked_respawn` WHERE `guid` BETWEEN @CGUID AND @CGUID+10;
|
||||
INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES
|
||||
(@CGUID,84387,0),
|
||||
(@CGUID+1,84387,0),
|
||||
(@CGUID+2,84387,0),
|
||||
(@CGUID+3,84387,0),
|
||||
(@CGUID+4,84387,0),
|
||||
(@CGUID+5,84387,0),
|
||||
(@CGUID+6,84387,0),
|
||||
(@CGUID+7,84387,0),
|
||||
(@CGUID+8,84387,0),
|
||||
(@CGUID+9,84387,0),
|
||||
(@CGUID+10,84387,0);
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_18' WHERE sql_rev = '1648309713111396700';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -0,0 +1,30 @@
|
||||
-- DB update 2022_03_27_18 -> 2022_03_27_19
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_18';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_18 2022_03_27_19 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1642567672467945212'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1642567672467945212');
|
||||
|
||||
UPDATE `smart_scripts` SET `event_param2`=0 WHERE `entryorguid`=17215 AND `source_type`=0 AND `id`=2 AND `link`=0;
|
||||
UPDATE `smart_scripts` SET `event_param2`=0 WHERE `entryorguid`=17214 AND `source_type`=0 AND `id`=0 AND `link`=0;
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_19' WHERE sql_rev = '1642567672467945212';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
||||
-- DB update 2022_03_27_20 -> 2022_03_27_21
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_03_27_20';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_03_27_20 2022_03_27_21 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1648383353183302321'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648383353183302321');
|
||||
-- This updates the existing proc to allow trinket to pop on any melee damage including melee spells
|
||||
UPDATE `spell_proc_event` SET `SchoolMask`='1' AND `ProcFlags`='20' WHERE `entry`='15600';
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_03_27_21' WHERE sql_rev = '1648383353183302321';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -177,6 +177,8 @@ public:
|
||||
/// == Fields =======================================
|
||||
virtual void PassengerBoarded(Unit* /*passenger*/, int8 /*seatId*/, bool /*apply*/) {}
|
||||
|
||||
virtual bool BeforeSpellClick(Unit* /*clicker*/) { return true; }
|
||||
|
||||
virtual void OnSpellClick(Unit* /*clicker*/, bool& /*result*/) { }
|
||||
|
||||
virtual bool CanSeeAlways(WorldObject const* /*obj*/) { return false; }
|
||||
|
||||
@@ -179,12 +179,6 @@ void SmartAI::GenerateWayPointArray(Movement::PointsArray* points)
|
||||
|
||||
void SmartAI::StartPath(bool run, uint32 path, bool repeat, Unit* invoker)
|
||||
{
|
||||
if (me->IsInCombat())// no wp movement in combat
|
||||
{
|
||||
LOG_ERROR("scripts.ai.sai", "SmartAI::StartPath: Creature entry {} wanted to start waypoint movement while in combat, ignoring.", me->GetEntry());
|
||||
return;
|
||||
}
|
||||
|
||||
if (HasEscortState(SMART_ESCORT_ESCORTING))
|
||||
StopPath();
|
||||
|
||||
|
||||
@@ -4400,6 +4400,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
|
||||
{
|
||||
if (e.event.quest.quest && var0 != e.event.quest.quest)
|
||||
return;
|
||||
RecalcTimer(e, e.event.quest.cooldownMin, e.event.quest.cooldownMax);
|
||||
ProcessAction(e, unit, var0);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1009,7 +1009,14 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
case SMART_EVENT_ACCEPTED_QUEST:
|
||||
case SMART_EVENT_REWARD_QUEST:
|
||||
if (e.event.quest.quest && !IsQuestValid(e, e.event.quest.quest))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!IsMinMaxValid(e, e.event.quest.cooldownMin, e.event.quest.cooldownMax))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case SMART_EVENT_RECEIVE_EMOTE:
|
||||
{
|
||||
|
||||
@@ -123,8 +123,8 @@ enum SMART_EVENT
|
||||
SMART_EVENT_FRIENDLY_MISSING_BUFF = 16, // SpellId, Radius, RepeatMin, RepeatMax
|
||||
SMART_EVENT_SUMMONED_UNIT = 17, // CreatureId(0 all), CooldownMin, CooldownMax
|
||||
SMART_EVENT_TARGET_MANA_PCT = 18, // ManaMin%, ManaMax%, RepeatMin, RepeatMax
|
||||
SMART_EVENT_ACCEPTED_QUEST = 19, // QuestID(0any)
|
||||
SMART_EVENT_REWARD_QUEST = 20, // QuestID(0any)
|
||||
SMART_EVENT_ACCEPTED_QUEST = 19, // QuestID (0 = any), CooldownMin, CooldownMax
|
||||
SMART_EVENT_REWARD_QUEST = 20, // QuestID (0 = any), CooldownMin, CooldownMax
|
||||
SMART_EVENT_REACHED_HOME = 21, // NONE
|
||||
SMART_EVENT_RECEIVE_EMOTE = 22, // EmoteId, CooldownMin, CooldownMax, condition, val1, val2, val3
|
||||
SMART_EVENT_HAS_AURA = 23, // Param1 = SpellID, Param2 = Stack amount, Param3/4 RepeatMin, RepeatMax
|
||||
@@ -293,6 +293,8 @@ struct SmartEvent
|
||||
struct
|
||||
{
|
||||
uint32 quest;
|
||||
uint32 cooldownMin;
|
||||
uint32 cooldownMax;
|
||||
} quest;
|
||||
|
||||
struct
|
||||
|
||||
@@ -476,9 +476,19 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer)
|
||||
m_PlayersInWar[TEAM_HORDE].clear();
|
||||
|
||||
if (!endByTimer) // win alli/horde
|
||||
{
|
||||
uint32 const worldStateId = GetDefenderTeam() == TEAM_ALLIANCE ? WORLDSTATE_ALLIANCE_KEEP_CAPTURED : WORLDSTATE_HORDE_KEEP_CAPTURED;
|
||||
sWorld->setWorldState(worldStateId, sWorld->getWorldState(worldStateId) + 1);
|
||||
|
||||
SendWarning((GetDefenderTeam() == TEAM_ALLIANCE) ? BATTLEFIELD_WG_TEXT_WIN_KEEP : (BATTLEFIELD_WG_TEXT_WIN_KEEP + 2));
|
||||
}
|
||||
else // defend alli/horde
|
||||
{
|
||||
uint32 const worldStateId = GetDefenderTeam() == TEAM_ALLIANCE ? WORLDSTATE_ALLIANCE_KEEP_DEFENDED : WORLDSTATE_HORDE_KEEP_DEFENDED;
|
||||
sWorld->setWorldState(worldStateId, sWorld->getWorldState(worldStateId) + 1);
|
||||
|
||||
SendWarning((GetDefenderTeam() == TEAM_ALLIANCE) ? BATTLEFIELD_WG_TEXT_DEFEND_KEEP : (BATTLEFIELD_WG_TEXT_DEFEND_KEEP + 2));
|
||||
}
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
@@ -898,6 +908,11 @@ void BattlefieldWG::FillInitialWorldStates(WorldPacket& data)
|
||||
data << uint32(BATTLEFIELD_WG_WORLD_STATE_VEHICLE_A) << uint32(GetData(BATTLEFIELD_WG_DATA_VEHICLE_A));
|
||||
data << uint32(BATTLEFIELD_WG_WORLD_STATE_MAX_VEHICLE_A) << GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A);
|
||||
|
||||
data << uint32(WORLDSTATE_HORDE_KEEP_CAPTURED) << uint32(sWorld->getWorldState(WORLDSTATE_HORDE_KEEP_CAPTURED));
|
||||
data << uint32(WORLDSTATE_HORDE_KEEP_DEFENDED) << uint32(sWorld->getWorldState(WORLDSTATE_HORDE_KEEP_DEFENDED));
|
||||
data << uint32(WORLDSTATE_ALLIANCE_KEEP_CAPTURED) << uint32(sWorld->getWorldState(WORLDSTATE_ALLIANCE_KEEP_CAPTURED));
|
||||
data << uint32(WORLDSTATE_ALLIANCE_KEEP_DEFENDED) << uint32(sWorld->getWorldState(WORLDSTATE_ALLIANCE_KEEP_DEFENDED));
|
||||
|
||||
for (GameObjectBuilding::const_iterator itr = BuildingsInZone.begin(); itr != BuildingsInZone.end(); ++itr)
|
||||
data << (*itr)->m_WorldState << (*itr)->m_State;
|
||||
|
||||
@@ -913,7 +928,7 @@ void BattlefieldWG::SendInitWorldStatesTo(Player* player)
|
||||
data << uint32(m_MapId);
|
||||
data << uint32(m_ZoneId);
|
||||
data << uint32(0);
|
||||
data << uint16(10 + BuildingsInZone.size() + WorkshopsList.size()); // Number of fields
|
||||
data << uint16(14 + BuildingsInZone.size() + WorkshopsList.size()); // Number of fields
|
||||
|
||||
FillInitialWorldStates(data);
|
||||
|
||||
|
||||
@@ -523,7 +523,11 @@ enum WintergraspWorldstates
|
||||
WORLDSTATE_WORKSHOP_SE = 3703,
|
||||
WORLDSTATE_WORKSHOP_SW = 3702,
|
||||
WORLDSTATE_WORKSHOP_K_W = 3698,
|
||||
WORLDSTATE_WORKSHOP_K_E = 3699
|
||||
WORLDSTATE_WORKSHOP_K_E = 3699,
|
||||
WORLDSTATE_HORDE_KEEP_CAPTURED = 4022,
|
||||
WORLDSTATE_HORDE_KEEP_DEFENDED = 4024,
|
||||
WORLDSTATE_ALLIANCE_KEEP_CAPTURED = 4023,
|
||||
WORLDSTATE_ALLIANCE_KEEP_DEFENDED = 4025,
|
||||
};
|
||||
|
||||
// TODO: Handle this with creature_text ?
|
||||
|
||||
@@ -1045,7 +1045,7 @@ void MovementInfo::OutDebug()
|
||||
}
|
||||
|
||||
WorldObject::WorldObject(bool isWorldObject) : WorldLocation(),
|
||||
LastUsedScriptID(0), m_name(""), m_isActive(false), m_visibilityDistanceOverride(false), m_isWorldObject(isWorldObject), m_zoneScript(nullptr),
|
||||
LastUsedScriptID(0), m_name(""), m_isActive(false), m_visibilityDistanceOverride(), m_isWorldObject(isWorldObject), m_zoneScript(nullptr),
|
||||
_zoneId(0), _areaId(0), _floorZ(INVALID_HEIGHT), _outdoors(false), _liquidData(), _updatePositionData(false), m_transport(nullptr),
|
||||
m_currMap(nullptr), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_useCombinedPhases(true), m_notifyflags(0), m_executed_notifies(0)
|
||||
{
|
||||
|
||||
@@ -737,22 +737,13 @@ void Player::SendMirrorTimer(MirrorTimerType Type, uint32 MaxValue, uint32 Curre
|
||||
StopMirrorTimer(Type);
|
||||
return;
|
||||
}
|
||||
WorldPacket data(SMSG_START_MIRROR_TIMER, (21));
|
||||
data << (uint32)Type;
|
||||
data << CurrentValue;
|
||||
data << MaxValue;
|
||||
data << Regen;
|
||||
data << (uint8)0;
|
||||
data << (uint32)0; // spell id
|
||||
GetSession()->SendPacket(&data);
|
||||
SendDirectMessage(WorldPackets::Misc::StartMirrorTimer(Type, CurrentValue, MaxValue, Regen, 0, 0).Write());
|
||||
}
|
||||
|
||||
void Player::StopMirrorTimer(MirrorTimerType Type)
|
||||
{
|
||||
m_MirrorTimer[Type] = DISABLED_MIRROR_TIMER;
|
||||
WorldPacket data(SMSG_STOP_MIRROR_TIMER, 4);
|
||||
data << (uint32)Type;
|
||||
GetSession()->SendPacket(&data);
|
||||
SendDirectMessage(WorldPackets::Misc::StopMirrorTimer(Type).Write());
|
||||
}
|
||||
|
||||
bool Player::IsImmuneToEnvironmentalDamage()
|
||||
@@ -7132,10 +7123,6 @@ void Player::CastItemCombatSpell(Unit* target, WeaponAttackType attType, uint32
|
||||
continue;
|
||||
}
|
||||
|
||||
// not allow proc extra attack spell at extra attack
|
||||
if (m_extraAttacks && spellInfo->HasEffect(SPELL_EFFECT_ADD_EXTRA_ATTACKS))
|
||||
return;
|
||||
|
||||
float chance = (float)spellInfo->ProcChance;
|
||||
|
||||
if (spellData.SpellPPMRate)
|
||||
|
||||
@@ -231,7 +231,6 @@ Unit::Unit(bool isWorldObject) : WorldObject(isWorldObject),
|
||||
m_modAttackSpeedPct[OFF_ATTACK] = 1.0f;
|
||||
m_modAttackSpeedPct[RANGED_ATTACK] = 1.0f;
|
||||
|
||||
m_extraAttacks = 0;
|
||||
m_canDualWield = false;
|
||||
|
||||
m_rootTimes = 0;
|
||||
@@ -316,6 +315,8 @@ Unit::Unit(bool isWorldObject) : WorldObject(isWorldObject),
|
||||
_lastLiquid = nullptr;
|
||||
|
||||
_oldFactionId = 0;
|
||||
|
||||
_lastExtraAttackSpell = 0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
@@ -430,6 +431,23 @@ void Unit::Update(uint32 p_time)
|
||||
}
|
||||
}
|
||||
|
||||
_lastDamagedTargetGuid = ObjectGuid::Empty;
|
||||
if (_lastExtraAttackSpell)
|
||||
{
|
||||
while (!extraAttacksTargets.empty())
|
||||
{
|
||||
auto itr = extraAttacksTargets.begin();
|
||||
ObjectGuid targetGuid = itr->first;
|
||||
uint32 count = itr->second;
|
||||
extraAttacksTargets.erase(itr);
|
||||
if (Unit* victim = ObjectAccessor::GetUnit(*this, targetGuid))
|
||||
{
|
||||
HandleProcExtraAttackFor(victim, count);
|
||||
}
|
||||
}
|
||||
_lastExtraAttackSpell = 0;
|
||||
}
|
||||
|
||||
// not implemented before 3.0.2
|
||||
// xinef: if attack time > 0, reduce by diff
|
||||
// if on next update, attack time < 0 assume player didnt attack - set to 0
|
||||
@@ -2286,8 +2304,15 @@ void Unit::CalcHealAbsorb(HealInfo& healInfo)
|
||||
|
||||
void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extra)
|
||||
{
|
||||
if (HasUnitState(UNIT_STATE_CANNOT_AUTOATTACK) || HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED))
|
||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (HasUnitState(UNIT_STATE_CANNOT_AUTOATTACK) && !extra)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!victim->IsAlive())
|
||||
return;
|
||||
@@ -2304,6 +2329,11 @@ void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extr
|
||||
if (attType != BASE_ATTACK && attType != OFF_ATTACK)
|
||||
return; // ignore ranged case
|
||||
|
||||
if (!extra && _lastExtraAttackSpell)
|
||||
{
|
||||
_lastExtraAttackSpell = 0;
|
||||
}
|
||||
|
||||
bool meleeAttack = true;
|
||||
|
||||
// melee attack spell casted at main hand attack only - no normal melee dmg dealt
|
||||
@@ -2345,6 +2375,8 @@ void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extr
|
||||
|
||||
//TriggerAurasProcOnEvent(damageInfo);
|
||||
|
||||
_lastDamagedTargetGuid = victim->GetGUID();
|
||||
|
||||
DealMeleeDamage(&damageInfo, true);
|
||||
|
||||
DamageInfo dmgInfo(damageInfo);
|
||||
@@ -2457,15 +2489,31 @@ bool Unit::GetMeleeAttackPoint(Unit* attacker, Position& pos)
|
||||
return true;
|
||||
}
|
||||
|
||||
void Unit::HandleProcExtraAttackFor(Unit* victim)
|
||||
void Unit::HandleProcExtraAttackFor(Unit* victim, uint32 count)
|
||||
{
|
||||
while (m_extraAttacks)
|
||||
while (count)
|
||||
{
|
||||
--count;
|
||||
AttackerStateUpdate(victim, BASE_ATTACK, true);
|
||||
--m_extraAttacks;
|
||||
}
|
||||
}
|
||||
|
||||
void Unit::AddExtraAttacks(uint32 count)
|
||||
{
|
||||
ObjectGuid targetGUID = _lastDamagedTargetGuid;
|
||||
if (!targetGUID)
|
||||
{
|
||||
if (ObjectGuid selection = GetTarget())
|
||||
{
|
||||
targetGUID = selection; // Spell was cast directly (not triggered by aura)
|
||||
}
|
||||
else
|
||||
return;
|
||||
}
|
||||
|
||||
extraAttacksTargets[targetGUID] += count;
|
||||
}
|
||||
|
||||
MeleeHitOutcome Unit::RollMeleeOutcomeAgainst(Unit const* victim, WeaponAttackType attType) const
|
||||
{
|
||||
// This is only wrapper
|
||||
@@ -8418,7 +8466,7 @@ bool Unit::HandleAuraProc(Unit* victim, uint32 damage, Aura* triggeredByAura, Sp
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlags, uint32 procEx, uint32 cooldown, uint32 procPhase)
|
||||
bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlags, uint32 procEx, uint32 cooldown, uint32 procPhase, ProcEventInfo& eventInfo)
|
||||
{
|
||||
// Get triggered aura spell info
|
||||
SpellInfo const* auraSpellInfo = triggeredByAura->GetSpellInfo();
|
||||
@@ -8904,8 +8952,23 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg
|
||||
}
|
||||
|
||||
// not allow proc extra attack spell at extra attack
|
||||
if (m_extraAttacks && triggerEntry->HasEffect(SPELL_EFFECT_ADD_EXTRA_ATTACKS))
|
||||
return false;
|
||||
if (triggerEntry->HasEffect(SPELL_EFFECT_ADD_EXTRA_ATTACKS))
|
||||
{
|
||||
uint32 lastExtraAttackSpell = eventInfo.GetActor()->GetLastExtraAttackSpell();
|
||||
|
||||
// Patch 1.12.0(?) extra attack abilities can no longer chain proc themselves
|
||||
if (lastExtraAttackSpell == trigger_spell_id)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Patch 2.2.0 Sword Specialization (Warrior, Rogue) extra attack can no longer proc additional extra attacks
|
||||
// 3.3.5 Sword Specialization (Warrior), Hack and Slash (Rogue)
|
||||
if (lastExtraAttackSpell == 16459 || lastExtraAttackSpell == 66923)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Custom requirements (not listed in procEx) Warning! damage dealing after this
|
||||
// Custom triggered spells
|
||||
@@ -10742,15 +10805,15 @@ void Unit::SendEnergizeSpellLog(Unit* victim, uint32 spellID, uint32 damage, Pow
|
||||
|
||||
void Unit::EnergizeBySpell(Unit* victim, uint32 spellID, uint32 damage, Powers powerType)
|
||||
{
|
||||
SendEnergizeSpellLog(victim, spellID, damage, powerType);
|
||||
// needs to be called after sending spell log
|
||||
victim->ModifyPower(powerType, damage);
|
||||
victim->ModifyPower(powerType, damage, false);
|
||||
|
||||
if (powerType != POWER_HAPPINESS)
|
||||
{
|
||||
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellID);
|
||||
victim->getHostileRefMgr().threatAssist(this, float(damage) * 0.5f, spellInfo);
|
||||
}
|
||||
|
||||
SendEnergizeSpellLog(victim, spellID, damage, powerType);
|
||||
}
|
||||
|
||||
float Unit::SpellPctDamageModsDone(Unit* victim, SpellInfo const* spellProto, DamageEffectType damagetype)
|
||||
@@ -13440,7 +13503,7 @@ int32 Unit::GetHealthGain(int32 dVal)
|
||||
}
|
||||
|
||||
// returns negative amount on power reduction
|
||||
int32 Unit::ModifyPower(Powers power, int32 dVal)
|
||||
int32 Unit::ModifyPower(Powers power, int32 dVal, bool withPowerUpdate /*= true*/)
|
||||
{
|
||||
if (dVal == 0)
|
||||
return 0;
|
||||
@@ -13452,7 +13515,7 @@ int32 Unit::ModifyPower(Powers power, int32 dVal)
|
||||
int32 val = dVal + curPower;
|
||||
if (val <= 0)
|
||||
{
|
||||
SetPower(power, 0);
|
||||
SetPower(power, 0, withPowerUpdate);
|
||||
return -curPower;
|
||||
}
|
||||
|
||||
@@ -13460,12 +13523,12 @@ int32 Unit::ModifyPower(Powers power, int32 dVal)
|
||||
|
||||
if (val < maxPower)
|
||||
{
|
||||
SetPower(power, val);
|
||||
SetPower(power, val, withPowerUpdate);
|
||||
gain = val - curPower;
|
||||
}
|
||||
else if (curPower != maxPower)
|
||||
{
|
||||
SetPower(power, maxPower);
|
||||
SetPower(power, maxPower, withPowerUpdate);
|
||||
gain = maxPower - curPower;
|
||||
}
|
||||
|
||||
@@ -14832,7 +14895,7 @@ void Unit::SetMaxHealth(uint32 val)
|
||||
SetHealth(val);
|
||||
}
|
||||
|
||||
void Unit::SetPower(Powers power, uint32 val)
|
||||
void Unit::SetPower(Powers power, uint32 val, bool withPowerUpdate /*= true*/)
|
||||
{
|
||||
if (GetPower(power) == val)
|
||||
return;
|
||||
@@ -14843,11 +14906,14 @@ void Unit::SetPower(Powers power, uint32 val)
|
||||
|
||||
SetStatInt32Value(static_cast<uint16>(UNIT_FIELD_POWER1) + power, val);
|
||||
|
||||
WorldPacket data(SMSG_POWER_UPDATE);
|
||||
data << GetPackGUID();
|
||||
data << uint8(power);
|
||||
data << uint32(val);
|
||||
SendMessageToSet(&data, GetTypeId() == TYPEID_PLAYER);
|
||||
if (withPowerUpdate)
|
||||
{
|
||||
WorldPacket data(SMSG_POWER_UPDATE);
|
||||
data << GetPackGUID();
|
||||
data << uint8(power);
|
||||
data << uint32(val);
|
||||
SendMessageToSet(&data, GetTypeId() == TYPEID_PLAYER);
|
||||
}
|
||||
|
||||
// group update
|
||||
if (GetTypeId() == TYPEID_PLAYER)
|
||||
@@ -15841,7 +15907,7 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u
|
||||
{
|
||||
LOG_DEBUG("spells.aura", "ProcDamageAndSpell: casting spell {} (triggered by {} aura of spell {})", spellInfo->Id, (isVictim ? "a victim's" : "an attacker's"), triggeredByAura->GetId());
|
||||
// Don`t drop charge or add cooldown for not started trigger
|
||||
if (HandleProcTriggerSpell(target, damage, triggeredByAura, procSpellInfo, procFlag, procExtra, cooldown, procPhase))
|
||||
if (HandleProcTriggerSpell(target, damage, triggeredByAura, procSpellInfo, procFlag, procExtra, cooldown, procPhase, eventInfo))
|
||||
takeCharges = true;
|
||||
break;
|
||||
}
|
||||
@@ -15900,7 +15966,7 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u
|
||||
{
|
||||
LOG_DEBUG("spells.aura", "ProcDamageAndSpell: casting spell {} (triggered with value by {} aura of spell {})", spellInfo->Id, (isVictim ? "a victim's" : "an attacker's"), triggeredByAura->GetId());
|
||||
|
||||
if (HandleProcTriggerSpell(target, damage, triggeredByAura, procSpellInfo, procFlag, procExtra, cooldown, procPhase))
|
||||
if (HandleProcTriggerSpell(target, damage, triggeredByAura, procSpellInfo, procFlag, procExtra, cooldown, procPhase, eventInfo))
|
||||
takeCharges = true;
|
||||
break;
|
||||
}
|
||||
@@ -16303,10 +16369,6 @@ void Unit::AddComboPoints(Unit* target, int8 count)
|
||||
return;
|
||||
}
|
||||
|
||||
// remove Premed-like effects
|
||||
// (NB: this Aura removes the already-added CP when it expires from duration - now that we've added CP, this shouldn't happen anymore)
|
||||
RemoveAurasByType(SPELL_AURA_RETAIN_COMBO_POINTS);
|
||||
|
||||
if (target && target != m_comboTarget)
|
||||
{
|
||||
if (m_comboTarget)
|
||||
@@ -18931,6 +18993,15 @@ void Unit::JumpTo(WorldObject* obj, float speedZ)
|
||||
|
||||
bool Unit::HandleSpellClick(Unit* clicker, int8 seatId)
|
||||
{
|
||||
Creature* creature = ToCreature();
|
||||
if (creature && creature->IsAIEnabled)
|
||||
{
|
||||
if (!creature->AI()->BeforeSpellClick(clicker))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool result = false;
|
||||
uint32 spellClickEntry = GetVehicleKit() ? GetVehicleKit()->GetCreatureEntry() : GetEntry();
|
||||
SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(spellClickEntry);
|
||||
@@ -18999,7 +19070,6 @@ bool Unit::HandleSpellClick(Unit* clicker, int8 seatId)
|
||||
result = true;
|
||||
}
|
||||
|
||||
Creature* creature = ToCreature();
|
||||
if (creature && creature->IsAIEnabled)
|
||||
creature->AI()->OnSpellClick(clicker, result);
|
||||
|
||||
|
||||
@@ -1416,10 +1416,10 @@ public:
|
||||
void setPowerType(Powers power);
|
||||
[[nodiscard]] uint32 GetPower(Powers power) const { return GetUInt32Value(static_cast<uint16>(UNIT_FIELD_POWER1) + power); }
|
||||
[[nodiscard]] uint32 GetMaxPower(Powers power) const { return GetUInt32Value(static_cast<uint16>(UNIT_FIELD_MAXPOWER1) + power); }
|
||||
void SetPower(Powers power, uint32 val);
|
||||
void SetPower(Powers power, uint32 val, bool withPowerUpdate = true);
|
||||
void SetMaxPower(Powers power, uint32 val);
|
||||
// returns the change in power
|
||||
int32 ModifyPower(Powers power, int32 val);
|
||||
int32 ModifyPower(Powers power, int32 val, bool withPowerUpdate = true);
|
||||
int32 ModifyPowerPct(Powers power, float pct, bool apply = true);
|
||||
|
||||
[[nodiscard]] uint32 GetAttackTime(WeaponAttackType att) const
|
||||
@@ -1507,7 +1507,13 @@ public:
|
||||
|
||||
void CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* damageInfo, WeaponAttackType attackType = BASE_ATTACK, const bool sittingVictim = false);
|
||||
void DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss);
|
||||
void HandleProcExtraAttackFor(Unit* victim);
|
||||
|
||||
void HandleProcExtraAttackFor(Unit* victim, uint32 count);
|
||||
void SetLastExtraAttackSpell(uint32 spellId) { _lastExtraAttackSpell = spellId; }
|
||||
[[nodiscard]] uint32 GetLastExtraAttackSpell() const { return _lastExtraAttackSpell; }
|
||||
void AddExtraAttacks(uint32 count);
|
||||
void SetLastDamagedTargetGuid(ObjectGuid const& guid) { _lastDamagedTargetGuid = guid; }
|
||||
[[nodiscard]] ObjectGuid const& GetLastDamagedTargetGuid() const { return _lastDamagedTargetGuid; }
|
||||
|
||||
void CalculateSpellDamageTaken(SpellNonMeleeDamage* damageInfo, int32 damage, SpellInfo const* spellInfo, WeaponAttackType attackType = BASE_ATTACK, bool crit = false);
|
||||
void DealSpellDamage(SpellNonMeleeDamage* damageInfo, bool durabilityLoss, Spell const* spell = nullptr);
|
||||
@@ -2474,7 +2480,7 @@ private:
|
||||
bool IsTriggeredAtSpellProcEvent(Unit* victim, Aura* aura, WeaponAttackType attType, bool isVictim, bool active, SpellProcEventEntry const*& spellProcEvent, ProcEventInfo const& eventInfo);
|
||||
bool HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown);
|
||||
bool HandleAuraProc(Unit* victim, uint32 damage, Aura* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown, bool* handled);
|
||||
bool HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown, uint32 procPhase);
|
||||
bool HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown, uint32 procPhase, ProcEventInfo& eventInfo);
|
||||
bool HandleOverrideClassScriptAuraProc(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 cooldown);
|
||||
bool HandleAuraRaidProcFromChargeWithValue(AuraEffect* triggeredByAura);
|
||||
bool HandleAuraRaidProcFromCharge(AuraEffect* triggeredByAura);
|
||||
@@ -2518,6 +2524,10 @@ private:
|
||||
uint32 _oldFactionId; ///< faction before charm
|
||||
|
||||
[[nodiscard]] float processDummyAuras(float TakenTotalMod) const;
|
||||
|
||||
uint32 _lastExtraAttackSpell;
|
||||
std::unordered_map<ObjectGuid /*guid*/, uint32 /*count*/> extraAttacksTargets;
|
||||
ObjectGuid _lastDamagedTargetGuid;
|
||||
};
|
||||
|
||||
namespace Acore
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "Log.h"
|
||||
#include "LootMgr.h"
|
||||
#include "MapMgr.h"
|
||||
#include "MiscPackets.h"
|
||||
#include "Object.h"
|
||||
#include "ObjectAccessor.h"
|
||||
#include "ObjectMgr.h"
|
||||
@@ -1570,9 +1571,9 @@ void WorldSession::HandleWorldStateUITimerUpdate(WorldPacket& /*recv_data*/)
|
||||
// empty opcode
|
||||
LOG_DEBUG("network", "WORLD: CMSG_WORLD_STATE_UI_TIMER_UPDATE");
|
||||
|
||||
WorldPacket data(SMSG_WORLD_STATE_UI_TIMER_UPDATE, 4);
|
||||
data << uint32(GameTime::GetGameTime().count());
|
||||
SendPacket(&data);
|
||||
WorldPackets::Misc::UITime response;
|
||||
response.Time = GameTime::GetGameTime().count();
|
||||
SendPacket(response.Write());
|
||||
}
|
||||
|
||||
void WorldSession::HandleReadyForAccountDataTimes(WorldPacket& /*recv_data*/)
|
||||
|
||||
@@ -83,6 +83,33 @@ WorldPacket const* WorldPackets::Misc::RandomRoll::Write()
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Misc::StartMirrorTimer::Write()
|
||||
{
|
||||
_worldPacket << uint32(Timer);
|
||||
_worldPacket << uint32(Value);
|
||||
_worldPacket << uint32(MaxValue);
|
||||
_worldPacket << int32(Scale);
|
||||
_worldPacket << uint8(Paused);
|
||||
_worldPacket << uint32(SpellID);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Misc::PauseMirrorTimer::Write()
|
||||
{
|
||||
_worldPacket << uint32(Timer);
|
||||
_worldPacket << uint8(Paused);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Misc::StopMirrorTimer::Write()
|
||||
{
|
||||
_worldPacket << uint32(Timer);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Misc::CrossedInebriationThreshold::Write()
|
||||
{
|
||||
_worldPacket << Guid;
|
||||
@@ -91,3 +118,10 @@ WorldPacket const* WorldPackets::Misc::CrossedInebriationThreshold::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Misc::UITime::Write()
|
||||
{
|
||||
_worldPacket << uint32(Time);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -114,6 +114,46 @@ namespace WorldPackets
|
||||
ObjectGuid Roller;
|
||||
};
|
||||
|
||||
class StartMirrorTimer final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
StartMirrorTimer() : ServerPacket(SMSG_START_MIRROR_TIMER, 21) { }
|
||||
StartMirrorTimer(uint32 timer, uint32 value, uint32 maxValue, int32 scale, bool paused, uint32 spellID) :
|
||||
ServerPacket(SMSG_START_MIRROR_TIMER, 21), Timer(timer), Value(value), MaxValue(maxValue), Scale(scale), Paused(paused), SpellID(spellID) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
uint32 Timer = 0;
|
||||
uint32 Value = 0;
|
||||
uint32 MaxValue = 0;
|
||||
int32 Scale = 0;
|
||||
bool Paused = false;
|
||||
uint32 SpellID = 0;
|
||||
};
|
||||
|
||||
class PauseMirrorTimer final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
PauseMirrorTimer() : ServerPacket(SMSG_PAUSE_MIRROR_TIMER, 5) { }
|
||||
PauseMirrorTimer(uint32 timer, bool paused) : ServerPacket(SMSG_PAUSE_MIRROR_TIMER, 5), Timer(timer), Paused(paused) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
uint32 Timer = 0;
|
||||
bool Paused = true;
|
||||
};
|
||||
|
||||
class StopMirrorTimer final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
StopMirrorTimer() : ServerPacket(SMSG_STOP_MIRROR_TIMER, 4) { }
|
||||
StopMirrorTimer(uint32 timer) : ServerPacket(SMSG_STOP_MIRROR_TIMER, 4), Timer(timer) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
uint32 Timer = 0;
|
||||
};
|
||||
|
||||
class DurabilityDamageDeath final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
@@ -134,6 +174,16 @@ namespace WorldPackets
|
||||
uint32 ItemID = 0;
|
||||
|
||||
};
|
||||
|
||||
class UITime final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
UITime() : ServerPacket(SMSG_WORLD_STATE_UI_TIMER_UPDATE, 4) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
uint32 Time = 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2605,6 +2605,8 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
// Do damage and triggers
|
||||
else if (m_damage > 0)
|
||||
{
|
||||
caster->SetLastDamagedTargetGuid(unitTarget->GetGUID());
|
||||
|
||||
// Fill base damage struct (unitTarget - is real spell target)
|
||||
SpellNonMeleeDamage damageInfo(caster, unitTarget, m_spellInfo, m_spellSchoolMask);
|
||||
|
||||
@@ -4039,11 +4041,20 @@ void Spell::_handle_finish_phase()
|
||||
// Real add combo points from effects
|
||||
if (m_comboTarget && m_comboPointGain)
|
||||
{
|
||||
// remove Premed-like effects unless they were caused by ourselves
|
||||
// (this Aura removes the already-added CP when it expires from duration - now that we've added CP, this shouldn't happen anymore!)
|
||||
if (!m_spellInfo->HasAura(SPELL_AURA_RETAIN_COMBO_POINTS))
|
||||
{
|
||||
m_caster->RemoveAurasByType(SPELL_AURA_RETAIN_COMBO_POINTS);
|
||||
}
|
||||
|
||||
m_caster->AddComboPoints(m_comboTarget, m_comboPointGain);
|
||||
}
|
||||
|
||||
if (m_caster->m_extraAttacks && GetSpellInfo()->HasEffect(SPELL_EFFECT_ADD_EXTRA_ATTACKS))
|
||||
m_caster->HandleProcExtraAttackFor(m_caster->GetVictim());
|
||||
if (m_spellInfo->HasEffect(SPELL_EFFECT_ADD_EXTRA_ATTACKS))
|
||||
{
|
||||
m_caster->SetLastExtraAttackSpell(m_spellInfo->Id);
|
||||
}
|
||||
|
||||
if (!IsAutoRepeat() && !IsNextMeleeSwingSpell())
|
||||
if (m_caster->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||
@@ -4461,10 +4472,12 @@ void Spell::SendSpellStart()
|
||||
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) || m_spellInfo->HasAttribute(SPELL_ATTR0_CU_NEEDS_AMMO_DATA))
|
||||
castFlags |= CAST_FLAG_PROJECTILE;
|
||||
if ((m_caster->GetTypeId() == TYPEID_PLAYER ||
|
||||
(m_caster->GetTypeId() == TYPEID_UNIT && m_caster->IsPet()))
|
||||
&& m_spellInfo->PowerType != POWER_HEALTH)
|
||||
|
||||
if ((m_caster->GetTypeId() == TYPEID_PLAYER || (m_caster->GetTypeId() == TYPEID_UNIT && m_caster->IsPet()))
|
||||
&& m_spellInfo->PowerType != POWER_HEALTH && m_powerCost != 0)
|
||||
{
|
||||
castFlags |= CAST_FLAG_POWER_LEFT_SELF;
|
||||
}
|
||||
|
||||
if (m_spellInfo->RuneCostID && m_spellInfo->PowerType == POWER_RUNE)
|
||||
castFlags |= CAST_FLAG_NO_GCD; // not needed, but Blizzard sends it
|
||||
@@ -4518,10 +4531,11 @@ void Spell::SendSpellGo()
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) || m_spellInfo->HasAttribute(SPELL_ATTR0_CU_NEEDS_AMMO_DATA))
|
||||
castFlags |= CAST_FLAG_PROJECTILE; // arrows/bullets visual
|
||||
|
||||
if ((m_caster->GetTypeId() == TYPEID_PLAYER ||
|
||||
(m_caster->GetTypeId() == TYPEID_UNIT && m_caster->IsPet()))
|
||||
&& m_spellInfo->PowerType != POWER_HEALTH)
|
||||
castFlags |= CAST_FLAG_POWER_LEFT_SELF; // should only be sent to self, but the current messaging doesn't make that possible
|
||||
if ((m_caster->GetTypeId() == TYPEID_PLAYER || (m_caster->GetTypeId() == TYPEID_UNIT && m_caster->IsPet()))
|
||||
&& m_spellInfo->PowerType != POWER_HEALTH && m_powerCost != 0) // should only be sent to self, but the current messaging doesn't make that possible
|
||||
{
|
||||
castFlags |= CAST_FLAG_POWER_LEFT_SELF;
|
||||
}
|
||||
|
||||
if ((m_caster->GetTypeId() == TYPEID_PLAYER)
|
||||
&& (m_caster->getClass() == CLASS_DEATH_KNIGHT)
|
||||
@@ -5052,7 +5066,9 @@ void Spell::TakePower()
|
||||
|
||||
// Set the five second timer
|
||||
if (PowerType == POWER_MANA && m_powerCost > 0)
|
||||
{
|
||||
m_caster->SetLastManaUse(GameTime::GetGameTimeMS().count());
|
||||
}
|
||||
}
|
||||
|
||||
void Spell::TakeAmmo()
|
||||
|
||||
@@ -1287,39 +1287,6 @@ void Spell::EffectTeleportUnits(SpellEffIndex /*effIndex*/)
|
||||
}
|
||||
return;
|
||||
}
|
||||
// Dimensional Ripper - Area 52
|
||||
case 36890:
|
||||
{
|
||||
if (roll_chance_i(50)) // 50% success
|
||||
{
|
||||
int32 rand_eff = urand(1, 4);
|
||||
switch (rand_eff)
|
||||
{
|
||||
case 1:
|
||||
// soul split - evil
|
||||
m_caster->CastSpell(m_caster, 36900, true);
|
||||
break;
|
||||
case 2:
|
||||
// soul split - good
|
||||
m_caster->CastSpell(m_caster, 36901, true);
|
||||
break;
|
||||
case 3:
|
||||
// Increase the size
|
||||
m_caster->CastSpell(m_caster, 36895, true);
|
||||
break;
|
||||
case 4:
|
||||
// Transform
|
||||
{
|
||||
if (m_caster->ToPlayer()->GetTeamId() == TEAM_ALLIANCE)
|
||||
m_caster->CastSpell(m_caster, 36897, true);
|
||||
else
|
||||
m_caster->CastSpell(m_caster, 36899, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1516,13 +1483,6 @@ void Spell::EffectHeal(SpellEffIndex /*effIndex*/)
|
||||
|
||||
addhealth += damageAmount;
|
||||
}
|
||||
// Runic Healing Injector (heal increased by 25% for engineers - 3.2.0 patch change)
|
||||
else if (m_spellInfo->Id == 67489)
|
||||
{
|
||||
if (Player* player = m_caster->ToPlayer())
|
||||
if (player->HasSkill(SKILL_ENGINEERING))
|
||||
AddPct(addhealth, 25);
|
||||
}
|
||||
// Swiftmend - consumes Regrowth or Rejuvenation
|
||||
else if (m_spellInfo->TargetAuraState == AURA_STATE_SWIFTMEND && unitTarget->HasAuraState(AURA_STATE_SWIFTMEND, m_spellInfo, m_caster))
|
||||
{
|
||||
@@ -3822,17 +3782,6 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
|
||||
{
|
||||
switch (m_spellInfo->Id)
|
||||
{
|
||||
// Bending Shinbone
|
||||
case 8856:
|
||||
{
|
||||
if (!itemTarget && m_caster->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
uint32 spell_id = roll_chance_i(20) ? 8854 : 8855;
|
||||
|
||||
m_caster->CastSpell(m_caster, spell_id, true, nullptr);
|
||||
return;
|
||||
}
|
||||
// Brittle Armor - need remove one 24575 Brittle Armor aura
|
||||
case 24590:
|
||||
unitTarget->RemoveAuraFromStack(24575);
|
||||
@@ -3974,84 +3923,6 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
|
||||
m_caster->TextEmote(buf);
|
||||
break;
|
||||
}
|
||||
// Death Knight Initiate Visual
|
||||
case 51519:
|
||||
{
|
||||
if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT)
|
||||
return;
|
||||
|
||||
uint32 iTmpSpellId = 0;
|
||||
switch (unitTarget->GetDisplayId())
|
||||
{
|
||||
case 25369:
|
||||
iTmpSpellId = 51552;
|
||||
break; // bloodelf female
|
||||
case 25373:
|
||||
iTmpSpellId = 51551;
|
||||
break; // bloodelf male
|
||||
case 25363:
|
||||
iTmpSpellId = 51542;
|
||||
break; // draenei female
|
||||
case 25357:
|
||||
iTmpSpellId = 51541;
|
||||
break; // draenei male
|
||||
case 25361:
|
||||
iTmpSpellId = 51537;
|
||||
break; // dwarf female
|
||||
case 25356:
|
||||
iTmpSpellId = 51538;
|
||||
break; // dwarf male
|
||||
case 25372:
|
||||
iTmpSpellId = 51550;
|
||||
break; // forsaken female
|
||||
case 25367:
|
||||
iTmpSpellId = 51549;
|
||||
break; // forsaken male
|
||||
case 25362:
|
||||
iTmpSpellId = 51540;
|
||||
break; // gnome female
|
||||
case 25359:
|
||||
iTmpSpellId = 51539;
|
||||
break; // gnome male
|
||||
case 25355:
|
||||
iTmpSpellId = 51534;
|
||||
break; // human female
|
||||
case 25354:
|
||||
iTmpSpellId = 51520;
|
||||
break; // human male
|
||||
case 25360:
|
||||
iTmpSpellId = 51536;
|
||||
break; // nightelf female
|
||||
case 25358:
|
||||
iTmpSpellId = 51535;
|
||||
break; // nightelf male
|
||||
case 25368:
|
||||
iTmpSpellId = 51544;
|
||||
break; // orc female
|
||||
case 25364:
|
||||
iTmpSpellId = 51543;
|
||||
break; // orc male
|
||||
case 25371:
|
||||
iTmpSpellId = 51548;
|
||||
break; // tauren female
|
||||
case 25366:
|
||||
iTmpSpellId = 51547;
|
||||
break; // tauren male
|
||||
case 25370:
|
||||
iTmpSpellId = 51545;
|
||||
break; // troll female
|
||||
case 25365:
|
||||
iTmpSpellId = 51546;
|
||||
break; // troll male
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
unitTarget->CastSpell(unitTarget, iTmpSpellId, true);
|
||||
Creature* npc = unitTarget->ToCreature();
|
||||
npc->LoadEquipment();
|
||||
return;
|
||||
}
|
||||
// Deathbolt from Thalgran Blightbringer
|
||||
// reflected by Freya's Ward
|
||||
// Retribution by Sevenfold Retribution
|
||||
@@ -4121,48 +3992,6 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
|
||||
else
|
||||
unitTarget->CastSpell(unitTarget, 59314, true);
|
||||
|
||||
return;
|
||||
}
|
||||
case 60123: // Lightwell
|
||||
{
|
||||
if (m_caster->GetTypeId() != TYPEID_UNIT || !m_caster->ToCreature()->IsSummon())
|
||||
return;
|
||||
|
||||
uint32 spell_heal;
|
||||
|
||||
switch (m_caster->GetEntry())
|
||||
{
|
||||
case 31897:
|
||||
spell_heal = 7001;
|
||||
break;
|
||||
case 31896:
|
||||
spell_heal = 27873;
|
||||
break;
|
||||
case 31895:
|
||||
spell_heal = 27874;
|
||||
break;
|
||||
case 31894:
|
||||
spell_heal = 28276;
|
||||
break;
|
||||
case 31893:
|
||||
spell_heal = 48084;
|
||||
break;
|
||||
case 31883:
|
||||
spell_heal = 48085;
|
||||
break;
|
||||
default:
|
||||
LOG_ERROR("spells.effect", "Unknown Lightwell spell caster {}", m_caster->GetEntry());
|
||||
return;
|
||||
}
|
||||
|
||||
// proc a spellcast
|
||||
if (Aura* chargesAura = m_caster->GetAura(59907))
|
||||
{
|
||||
m_caster->CastSpell(unitTarget, spell_heal, true, nullptr, nullptr, m_caster->ToTempSummon()->GetSummonerGUID());
|
||||
if (chargesAura->ModCharges(-1))
|
||||
m_caster->ToTempSummon()->UnSummon();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
// Stoneclaw Totem
|
||||
@@ -4835,17 +4664,18 @@ void Spell::EffectResurrect(SpellEffIndex effIndex)
|
||||
void Spell::EffectAddExtraAttacks(SpellEffIndex effIndex)
|
||||
{
|
||||
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!unitTarget || !unitTarget->IsAlive() || !unitTarget->GetVictim())
|
||||
if (!unitTarget || !unitTarget->IsAlive())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (unitTarget->m_extraAttacks)
|
||||
return;
|
||||
unitTarget->AddExtraAttacks(damage);
|
||||
|
||||
unitTarget->m_extraAttacks = damage;
|
||||
|
||||
ExecuteLogEffectExtraAttacks(effIndex, unitTarget->GetVictim(), damage);
|
||||
ExecuteLogEffectExtraAttacks(effIndex, unitTarget, damage);
|
||||
}
|
||||
|
||||
void Spell::EffectParry(SpellEffIndex /*effIndex*/)
|
||||
|
||||
@@ -4168,6 +4168,11 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->AttributesEx2 |= SPELL_ATTR2_IGNORE_LINE_OF_SIGHT;
|
||||
});
|
||||
|
||||
ApplySpellFix({ 22247 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->AttributesCu |= SPELL_ATTR0_CU_DONT_BREAK_STEALTH;
|
||||
});
|
||||
|
||||
// Manastorm
|
||||
ApplySpellFix({ 21097 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
|
||||
+24
-3
@@ -51,7 +51,8 @@ enum Events
|
||||
|
||||
enum Actions
|
||||
{
|
||||
ACTION_DISARMED = 0
|
||||
ACTION_DEACTIVATE = 0,
|
||||
ACTION_DISARMED = 1
|
||||
};
|
||||
|
||||
class boss_broodlord : public CreatureScript
|
||||
@@ -75,6 +76,18 @@ public:
|
||||
events.ScheduleEvent(EVENT_CHECK, 1000);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
_JustDied();
|
||||
|
||||
std::list<GameObject*> _goList;
|
||||
GetGameObjectListWithEntryInGrid(_goList, me, GO_SUPPRESSION_DEVICE, 200.0f);
|
||||
for (std::list<GameObject*>::const_iterator itr = _goList.begin(); itr != _goList.end(); itr++)
|
||||
{
|
||||
((*itr)->AI()->DoAction(ACTION_DEACTIVATE));
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
@@ -183,11 +196,19 @@ class go_suppression_device : public GameObjectScript
|
||||
|
||||
void DoAction(int32 action) override
|
||||
{
|
||||
if (action == ACTION_DISARMED)
|
||||
if (action == ACTION_DEACTIVATE)
|
||||
{
|
||||
_events.CancelEvent(EVENT_SUPPRESSION_RESET);
|
||||
}
|
||||
else if (action == ACTION_DISARMED)
|
||||
{
|
||||
Deactivate();
|
||||
_events.CancelEvent(EVENT_SUPPRESSION_CAST);
|
||||
_events.ScheduleEvent(EVENT_SUPPRESSION_RESET, urand(30000, 120000));
|
||||
|
||||
if (_instance->GetBossState(DATA_BROODLORD_LASHLAYER) != DONE)
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_SUPPRESSION_RESET, urand(30000, 120000));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+13
-13
@@ -34,6 +34,7 @@ enum Events
|
||||
EVENT_CHECK_PHASE_2,
|
||||
EVENT_START_EVENT,
|
||||
EVENT_SHADOW_BOLT,
|
||||
EVENT_SHADOW_BOLT_VOLLEY,
|
||||
EVENT_FEAR,
|
||||
EVENT_SILENCE,
|
||||
EVENT_MIND_CONTROL,
|
||||
@@ -298,7 +299,8 @@ public:
|
||||
SetCombatMovement(false);
|
||||
AttackStart(SelectTarget(SelectTargetMethod::Random, 0, 200.f, true));
|
||||
events.ScheduleEvent(EVENT_SHADOWBLINK, 500);
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT, urand(3000, 10000));
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT, 3000);
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT_VOLLEY, urand(13000, 15000));
|
||||
events.ScheduleEvent(EVENT_FEAR, urand(10000, 20000));
|
||||
events.ScheduleEvent(EVENT_SILENCE, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_MIND_CONTROL, urand(30000, 35000));
|
||||
@@ -388,17 +390,12 @@ public:
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_SHADOW_BOLT:
|
||||
switch (urand(0, 1))
|
||||
{
|
||||
case 0:
|
||||
DoCastAOE(SPELL_SHADOWBOLT_VOLLEY);
|
||||
break;
|
||||
case 1:
|
||||
DoCastRandomTarget(SPELL_SHADOWBOLT, 0, 150.f);
|
||||
break;
|
||||
}
|
||||
DoResetThreat();
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT, urand(3000, 10000));
|
||||
DoCastRandomTarget(SPELL_SHADOWBOLT, 0, 150.f);
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT, urand(2000, 4000));
|
||||
break;
|
||||
case EVENT_SHADOW_BOLT_VOLLEY:
|
||||
DoCastAOE(SPELL_SHADOWBOLT_VOLLEY);
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT_VOLLEY, 19000, 25000);
|
||||
break;
|
||||
case EVENT_FEAR:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40, true))
|
||||
@@ -412,7 +409,7 @@ public:
|
||||
case EVENT_MIND_CONTROL:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40, true))
|
||||
DoCast(target, SPELL_SHADOW_COMMAND);
|
||||
events.ScheduleEvent(EVENT_MIND_CONTROL, urand(30000, 35000));
|
||||
events.ScheduleEvent(EVENT_MIND_CONTROL, urand(24000, 30000));
|
||||
break;
|
||||
case EVENT_SHADOWBLINK:
|
||||
DoCastSelf(SPELL_SHADOWBLINK);
|
||||
@@ -436,6 +433,7 @@ public:
|
||||
events.CancelEvent(EVENT_MIND_CONTROL);
|
||||
events.CancelEvent(EVENT_FEAR);
|
||||
events.CancelEvent(EVENT_SHADOW_BOLT);
|
||||
events.CancelEvent(EVENT_SHADOW_BOLT_VOLLEY);
|
||||
events.CancelEvent(EVENT_SILENCE);
|
||||
DoCastSelf(SPELL_ROOT_SELF, true);
|
||||
me->SetVisible(false);
|
||||
@@ -470,6 +468,8 @@ public:
|
||||
me->SetUInt32Value(UNIT_NPC_FLAGS, 0);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
|
||||
// Due to Nefarius despawning himself on Vael, we need to update the guid on instance to prevent unwanted behaviours as encounter not resetting at all.
|
||||
instance->SetGuidData(DATA_LORD_VICTOR_NEFARIUS, me->GetGUID());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -124,7 +124,7 @@ public:
|
||||
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 10000);
|
||||
events.ScheduleEvent(EVENT_FLAME_BREATH, 15000);
|
||||
events.ScheduleEvent(EVENT_FIRE_NOVA, 20000);
|
||||
events.ScheduleEvent(EVENT_FIRE_NOVA, 5000);
|
||||
events.ScheduleEvent(EVENT_TAIL_SWEEP, 11000);
|
||||
events.ScheduleEvent(EVENT_BURNING_ADRENALINE, 15000);
|
||||
}
|
||||
@@ -220,7 +220,7 @@ public:
|
||||
break;
|
||||
case EVENT_FIRE_NOVA:
|
||||
DoCastVictim(SPELL_FIRE_NOVA);
|
||||
events.ScheduleEvent(EVENT_FIRE_NOVA, 15000);
|
||||
events.ScheduleEvent(EVENT_FIRE_NOVA, urand(3000, 5000));
|
||||
break;
|
||||
case EVENT_TAIL_SWEEP:
|
||||
DoCastAOE(SPELL_TAIL_SWEEP);
|
||||
|
||||
+12
@@ -357,6 +357,18 @@ public:
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void SetGuidData(uint32 type, ObjectGuid data) override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DATA_LORD_VICTOR_NEFARIUS:
|
||||
victorNefariusGUID = data;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnUnitDeath(Unit* unit) override
|
||||
{
|
||||
switch (unit->GetEntry())
|
||||
|
||||
@@ -1171,6 +1171,52 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class spell_death_knight_initiate_visual : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_death_knight_initiate_visual);
|
||||
|
||||
void HandleScriptEffect(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
Creature* target = GetHitCreature();
|
||||
if (!target)
|
||||
return;
|
||||
|
||||
uint32 spellId;
|
||||
switch (target->GetDisplayId())
|
||||
{
|
||||
case 25369: spellId = 51552; break; // bloodelf female
|
||||
case 25373: spellId = 51551; break; // bloodelf male
|
||||
case 25363: spellId = 51542; break; // draenei female
|
||||
case 25357: spellId = 51541; break; // draenei male
|
||||
case 25361: spellId = 51537; break; // dwarf female
|
||||
case 25356: spellId = 51538; break; // dwarf male
|
||||
case 25372: spellId = 51550; break; // forsaken female
|
||||
case 25367: spellId = 51549; break; // forsaken male
|
||||
case 25362: spellId = 51540; break; // gnome female
|
||||
case 25359: spellId = 51539; break; // gnome male
|
||||
case 25355: spellId = 51534; break; // human female
|
||||
case 25354: spellId = 51520; break; // human male
|
||||
case 25360: spellId = 51536; break; // nightelf female
|
||||
case 25358: spellId = 51535; break; // nightelf male
|
||||
case 25368: spellId = 51544; break; // orc female
|
||||
case 25364: spellId = 51543; break; // orc male
|
||||
case 25371: spellId = 51548; break; // tauren female
|
||||
case 25366: spellId = 51547; break; // tauren male
|
||||
case 25370: spellId = 51545; break; // troll female
|
||||
case 25365: spellId = 51546; break; // troll male
|
||||
default: return;
|
||||
}
|
||||
|
||||
target->CastSpell(target, spellId, true);
|
||||
target->LoadEquipment();
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_death_knight_initiate_visual::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_the_scarlet_enclave_c1()
|
||||
{
|
||||
// Ours
|
||||
@@ -1191,4 +1237,6 @@ void AddSC_the_scarlet_enclave_c1()
|
||||
new npc_scarlet_miner();
|
||||
new npc_scarlet_miner_cart();
|
||||
new go_inconspicuous_mine_car();
|
||||
|
||||
RegisterSpellScript(spell_death_knight_initiate_visual);
|
||||
}
|
||||
|
||||
@@ -268,6 +268,11 @@ public:
|
||||
|
||||
BindPlayers();
|
||||
me->SetInCombatWithZone();
|
||||
|
||||
if (!_startTimer)
|
||||
{
|
||||
TurnGates(true, false);
|
||||
}
|
||||
}
|
||||
|
||||
void InitializeAI() override
|
||||
|
||||
@@ -242,17 +242,19 @@ public:
|
||||
summons.DespawnAll();
|
||||
|
||||
if (m_pInstance)
|
||||
{
|
||||
m_pInstance->SetData(TYPE_KOLOGARN, NOT_STARTED);
|
||||
|
||||
// Open the door inside Kologarn chamber
|
||||
if (GameObject* door = m_pInstance->instance->GetGameObject(m_pInstance->GetGuidData(GO_KOLOGARN_DOORS)))
|
||||
door->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
AttachLeftArm();
|
||||
AttachRightArm();
|
||||
|
||||
// Reset breath on pull
|
||||
breathReady = false;
|
||||
|
||||
// Open the door inside Kologarn chamber
|
||||
if (GameObject* door = me->FindNearestGameObject(GO_KOLOGARN_DOORS, 100.0f))
|
||||
door->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
void DoAction(int32 param) override
|
||||
@@ -301,6 +303,13 @@ public:
|
||||
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
if (m_pInstance)
|
||||
{
|
||||
// Open the door inside Kologarn chamber
|
||||
if (GameObject* door = m_pInstance->instance->GetGameObject(m_pInstance->GetGuidData(GO_KOLOGARN_DOORS)))
|
||||
door->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
if (GameObject* bridge = me->FindNearestGameObject(GO_KOLOGARN_BRIDGE, 100))
|
||||
bridge->SetGoState(GO_STATE_READY);
|
||||
|
||||
@@ -384,8 +393,13 @@ public:
|
||||
me->setActive(true);
|
||||
|
||||
// Close the door inside Kologarn chamber
|
||||
if (GameObject* door = me->FindNearestGameObject(GO_KOLOGARN_DOORS, 100.0f))
|
||||
door->SetGoState(GO_STATE_READY);
|
||||
if (m_pInstance)
|
||||
{
|
||||
if (GameObject* door = m_pInstance->instance->GetGameObject(m_pInstance->GetGuidData(GO_KOLOGARN_DOORS)))
|
||||
{
|
||||
door->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -16,12 +16,14 @@
|
||||
*/
|
||||
|
||||
#include "ulduar.h"
|
||||
#include "CombatAI.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedGossip.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
#include "Vehicle.h"
|
||||
|
||||
class npc_ulduar_keeper : public CreatureScript
|
||||
{
|
||||
@@ -423,6 +425,31 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
struct npc_salvaged_siege_engine : public VehicleAI
|
||||
{
|
||||
npc_salvaged_siege_engine(Creature* creature) : VehicleAI(creature) { }
|
||||
|
||||
bool BeforeSpellClick(Unit* clicker) override
|
||||
{
|
||||
if (Vehicle* vehicle = me->GetVehicleKit())
|
||||
{
|
||||
if (vehicle->IsVehicleInUse())
|
||||
{
|
||||
if (Unit* turret = vehicle->GetPassenger(7))
|
||||
{
|
||||
if (!turret->GetVehicleKit()->IsVehicleInUse())
|
||||
{
|
||||
turret->HandleSpellClick(clicker);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_ulduar()
|
||||
{
|
||||
new npc_ulduar_keeper();
|
||||
@@ -435,4 +462,6 @@ void AddSC_ulduar()
|
||||
|
||||
new AreaTrigger_at_celestial_planetarium_enterance();
|
||||
new go_call_tram();
|
||||
|
||||
RegisterCreatureAI(npc_salvaged_siege_engine);
|
||||
}
|
||||
|
||||
@@ -20,17 +20,18 @@
|
||||
#include "MapMgr.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "OutdoorPvP.h"
|
||||
#include "OutdoorPvPMgr.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "World.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "GameTime.h"
|
||||
|
||||
OutdoorPvPTF::OutdoorPvPTF()
|
||||
{
|
||||
m_TypeId = OUTDOOR_PVP_TF;
|
||||
|
||||
m_IsLocked = false;
|
||||
m_JustLocked = false;
|
||||
m_LockTimer = TF_LOCK_TIME;
|
||||
m_LockTimerUpdate = 0;
|
||||
|
||||
@@ -105,6 +106,71 @@ void OutdoorPvPTF::SendRemoveWorldStates(Player* player)
|
||||
}
|
||||
}
|
||||
|
||||
void OutdoorPvPTF::SaveRequiredWorldStates() const
|
||||
{
|
||||
sWorld->setWorldState(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
sWorld->setWorldState(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
|
||||
sWorld->setWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, m_IsLocked);
|
||||
|
||||
// Save expiry as unix
|
||||
uint32 const lockExpireTime = GameTime::GetGameTime().count() + (m_LockTimer / IN_MILLISECONDS);
|
||||
sWorld->setWorldState(TF_UI_LOCKED_TIME_HOURS, lockExpireTime);
|
||||
}
|
||||
|
||||
void OutdoorPvPTF::ResetZoneToTeamControlled(TeamId team)
|
||||
{
|
||||
switch (team)
|
||||
{
|
||||
case TEAM_HORDE:
|
||||
m_HordeTowersControlled = TF_TOWER_NUM;
|
||||
m_AllianceTowersControlled = 0;
|
||||
break;
|
||||
case TEAM_ALLIANCE:
|
||||
m_HordeTowersControlled = 0;
|
||||
m_AllianceTowersControlled = TF_TOWER_NUM;
|
||||
break;
|
||||
case TEAM_NEUTRAL:
|
||||
m_HordeTowersControlled = 0;
|
||||
m_AllianceTowersControlled = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
for (auto& [guid, tower] : m_capturePoints)
|
||||
{
|
||||
dynamic_cast<OPvPCapturePointTF*>(tower)->ResetToTeamControlled(team);
|
||||
}
|
||||
|
||||
SendUpdateWorldState(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
SendUpdateWorldState(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
}
|
||||
|
||||
void OPvPCapturePointTF::ResetToTeamControlled(TeamId team)
|
||||
{
|
||||
switch (team)
|
||||
{
|
||||
case TEAM_HORDE:
|
||||
m_State = OBJECTIVESTATE_HORDE;
|
||||
m_OldState = OBJECTIVESTATE_HORDE;
|
||||
m_team = TEAM_HORDE;
|
||||
break;
|
||||
case TEAM_ALLIANCE:
|
||||
m_State = OBJECTIVESTATE_ALLIANCE;
|
||||
m_OldState = OBJECTIVESTATE_ALLIANCE;
|
||||
m_team = TEAM_ALLIANCE;
|
||||
break;
|
||||
case TEAM_NEUTRAL:
|
||||
m_State = OBJECTIVESTATE_NEUTRAL;
|
||||
m_OldState = OBJECTIVESTATE_NEUTRAL;
|
||||
m_team = TEAM_NEUTRAL;
|
||||
break;
|
||||
}
|
||||
|
||||
m_value = 0.0f;
|
||||
ChangeState();
|
||||
SendChangePhase();
|
||||
}
|
||||
|
||||
void OPvPCapturePointTF::UpdateTowerState()
|
||||
{
|
||||
m_PvP->SendUpdateWorldState(uint32(TFTowerWorldStates[m_TowerType].n), uint32(bool(m_TowerState & TF_TOWERSTATE_N)));
|
||||
@@ -141,6 +207,7 @@ bool OutdoorPvPTF::Update(uint32 diff)
|
||||
{
|
||||
TeamApplyBuff(TEAM_ALLIANCE, TF_CAPTURE_BUFF);
|
||||
m_IsLocked = true;
|
||||
m_JustLocked = true;
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(1));
|
||||
@@ -150,6 +217,7 @@ bool OutdoorPvPTF::Update(uint32 diff)
|
||||
{
|
||||
TeamApplyBuff(TEAM_HORDE, TF_CAPTURE_BUFF);
|
||||
m_IsLocked = true;
|
||||
m_JustLocked = true;
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(1));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(0));
|
||||
@@ -160,17 +228,29 @@ bool OutdoorPvPTF::Update(uint32 diff)
|
||||
TeamCastSpell(TEAM_ALLIANCE, -TF_CAPTURE_BUFF);
|
||||
TeamCastSpell(TEAM_HORDE, -TF_CAPTURE_BUFF);
|
||||
}
|
||||
|
||||
SendUpdateWorldState(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
SendUpdateWorldState(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
}
|
||||
|
||||
if (m_IsLocked)
|
||||
{
|
||||
if (m_JustLocked)
|
||||
{
|
||||
m_JustLocked = false;
|
||||
SaveRequiredWorldStates();
|
||||
}
|
||||
|
||||
// lock timer is down, release lock
|
||||
if (m_LockTimer < diff)
|
||||
{
|
||||
m_LockTimer = TF_LOCK_TIME;
|
||||
m_LockTimerUpdate = 0;
|
||||
m_IsLocked = false;
|
||||
|
||||
ResetZoneToTeamControlled(TEAM_NEUTRAL);
|
||||
SaveRequiredWorldStates();
|
||||
|
||||
SendUpdateWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(1));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
|
||||
@@ -182,20 +262,21 @@ bool OutdoorPvPTF::Update(uint32 diff)
|
||||
if (m_LockTimerUpdate < diff)
|
||||
{
|
||||
m_LockTimerUpdate = TF_LOCK_TIME_UPDATE;
|
||||
uint32 minutes_left = m_LockTimer / 60000;
|
||||
hours_left = minutes_left / 60;
|
||||
minutes_left -= hours_left * 60;
|
||||
second_digit = minutes_left % 10;
|
||||
first_digit = minutes_left / 10;
|
||||
RecalculateClientUILockTime();
|
||||
|
||||
SendUpdateWorldState(TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, first_digit);
|
||||
SendUpdateWorldState(TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, second_digit);
|
||||
SendUpdateWorldState(TF_UI_LOCKED_TIME_HOURS, hours_left);
|
||||
}
|
||||
else m_LockTimerUpdate -= diff;
|
||||
else
|
||||
{
|
||||
m_LockTimerUpdate -= diff;
|
||||
}
|
||||
|
||||
m_LockTimer -= diff;
|
||||
}
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
@@ -251,7 +332,8 @@ bool OutdoorPvPTF::SetupOutdoorPvP()
|
||||
m_AllianceTowersControlled = 0;
|
||||
m_HordeTowersControlled = 0;
|
||||
|
||||
m_IsLocked = false;
|
||||
m_IsLocked = bool(sWorld->getWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY));
|
||||
m_JustLocked = false;
|
||||
m_LockTimer = TF_LOCK_TIME;
|
||||
m_LockTimerUpdate = 0;
|
||||
hours_left = 6;
|
||||
@@ -270,6 +352,30 @@ bool OutdoorPvPTF::SetupOutdoorPvP()
|
||||
AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_SE));
|
||||
AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_S));
|
||||
|
||||
if (m_IsLocked)
|
||||
{
|
||||
// Core shutdown while locked -- init from latest known data in WorldState
|
||||
// Convert from unix
|
||||
int32 const lockRemainingTime = int32((sWorld->getWorldState(TF_UI_LOCKED_TIME_HOURS) - GameTime::GetGameTime().count()) * IN_MILLISECONDS);
|
||||
if (lockRemainingTime > 0)
|
||||
{
|
||||
m_LockTimer = lockRemainingTime;
|
||||
RecalculateClientUILockTime();
|
||||
|
||||
uint32 const hordeTowers = uint32(sWorld->getWorldState(TF_UI_TOWER_COUNT_H));
|
||||
uint32 const allianceTowers = uint32(sWorld->getWorldState(TF_UI_TOWER_COUNT_A));
|
||||
TeamId const controllingTeam = hordeTowers > allianceTowers ? TEAM_HORDE : TEAM_ALLIANCE;
|
||||
|
||||
ResetZoneToTeamControlled(controllingTeam);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Lock expired while core was offline
|
||||
m_IsLocked = false;
|
||||
SaveRequiredWorldStates();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,10 +32,10 @@ const uint32 OutdoorPvPTFBuffZones[OutdoorPvPTFBuffZonesNum] =
|
||||
};
|
||||
|
||||
// locked for 6 hours after capture
|
||||
const uint32 TF_LOCK_TIME = 3600 * 6 * 1000;
|
||||
const uint32 TF_LOCK_TIME = 6 * HOUR * IN_MILLISECONDS;
|
||||
|
||||
// update lock timer every 1/4 minute (overkill, but this way it's sure the timer won't "jump" 2 minutes at once.)
|
||||
const uint32 TF_LOCK_TIME_UPDATE = 15000;
|
||||
const uint32 TF_LOCK_TIME_UPDATE = 15 * IN_MILLISECONDS;
|
||||
|
||||
// blessing of auchindoun
|
||||
#define TF_CAPTURE_BUFF 33377
|
||||
@@ -138,6 +138,8 @@ public:
|
||||
bool HandlePlayerEnter(Player* player) override;
|
||||
void HandlePlayerLeave(Player* player) override;
|
||||
|
||||
void ResetToTeamControlled(TeamId team);
|
||||
|
||||
void UpdateTowerState();
|
||||
|
||||
protected:
|
||||
@@ -162,6 +164,19 @@ public:
|
||||
|
||||
void SendRemoveWorldStates(Player* player) override;
|
||||
|
||||
void SaveRequiredWorldStates() const;
|
||||
|
||||
void ResetZoneToTeamControlled(TeamId team);
|
||||
|
||||
void RecalculateClientUILockTime()
|
||||
{
|
||||
uint32 minutes_left = m_LockTimer / 60000;
|
||||
hours_left = minutes_left / 60;
|
||||
minutes_left -= hours_left * 60;
|
||||
second_digit = minutes_left % 10;
|
||||
first_digit = minutes_left / 10;
|
||||
}
|
||||
|
||||
uint32 GetAllianceTowersControlled() const;
|
||||
void SetAllianceTowersControlled(uint32 count);
|
||||
|
||||
@@ -172,6 +187,7 @@ public:
|
||||
|
||||
private:
|
||||
bool m_IsLocked;
|
||||
bool m_JustLocked;
|
||||
uint32 m_LockTimer;
|
||||
uint32 m_LockTimerUpdate;
|
||||
|
||||
|
||||
@@ -2101,6 +2101,61 @@ class spell_item_scroll_of_recall : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 36890 - Dimensional Ripper - Area 52
|
||||
enum DimensionalRipperArea52
|
||||
{
|
||||
SPELL_TRANSPORTER_MALFUNCTION = 36895,
|
||||
SPELL_TRANSFORM_HORDE = 36897,
|
||||
SPELL_TRANSFORM_ALLIANCE = 36899,
|
||||
SPELL_SOUL_SPLIT_EVIL = 36900,
|
||||
SPELL_SOUL_SPLIT_GOOD = 36901
|
||||
};
|
||||
|
||||
class spell_item_dimensional_ripper_area52 : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_item_dimensional_ripper_area52);
|
||||
|
||||
bool Load() override
|
||||
{
|
||||
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
if (!roll_chance_i(50)) // 50% success
|
||||
return;
|
||||
|
||||
Unit* caster = GetCaster();
|
||||
|
||||
uint32 spellId = 0;
|
||||
switch (urand(0, 3))
|
||||
{
|
||||
case 0:
|
||||
spellId = SPELL_TRANSPORTER_MALFUNCTION;
|
||||
break;
|
||||
case 1:
|
||||
spellId = SPELL_SOUL_SPLIT_EVIL;
|
||||
break;
|
||||
case 2:
|
||||
spellId = SPELL_SOUL_SPLIT_GOOD;
|
||||
break;
|
||||
case 3:
|
||||
if (caster->ToPlayer()->GetTeamId() == TEAM_ALLIANCE)
|
||||
spellId = SPELL_TRANSFORM_HORDE;
|
||||
else
|
||||
spellId = SPELL_TRANSFORM_ALLIANCE;
|
||||
break;
|
||||
}
|
||||
|
||||
caster->CastSpell(caster, spellId, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_item_dimensional_ripper_area52::HandleScript, EFFECT_0, SPELL_EFFECT_TELEPORT_UNITS);
|
||||
}
|
||||
};
|
||||
|
||||
// 71169 - Shadow's Fate (Shadowmourne questline)
|
||||
enum ShadowsFate
|
||||
{
|
||||
@@ -3184,6 +3239,28 @@ class spell_item_rocket_boots : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
class spell_item_runic_healing_injector : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_item_runic_healing_injector);
|
||||
|
||||
bool Load() override
|
||||
{
|
||||
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
|
||||
}
|
||||
|
||||
void HandleHeal(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Player* caster = GetCaster()->ToPlayer())
|
||||
if (caster->HasSkill(SKILL_ENGINEERING))
|
||||
SetHitHeal(GetHitHeal() * 1.25f);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_item_runic_healing_injector::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL);
|
||||
}
|
||||
};
|
||||
|
||||
enum PygmyOil
|
||||
{
|
||||
SPELL_PYGMY_OIL_PYGMY_AURA = 53806,
|
||||
@@ -3585,6 +3662,7 @@ void AddSC_item_spell_scripts()
|
||||
RegisterSpellScript(spell_item_piccolo_of_the_flaming_fire);
|
||||
RegisterSpellScript(spell_item_savory_deviate_delight);
|
||||
RegisterSpellScript(spell_item_scroll_of_recall);
|
||||
RegisterSpellScript(spell_item_dimensional_ripper_area52);
|
||||
RegisterSpellScript(spell_item_unsated_craving);
|
||||
RegisterSpellScript(spell_item_shadows_fate);
|
||||
RegisterSpellScript(spell_item_shadowmourne);
|
||||
@@ -3612,6 +3690,7 @@ void AddSC_item_spell_scripts()
|
||||
RegisterSpellScript(spell_item_nitro_boots);
|
||||
RegisterSpellScript(spell_item_teach_language);
|
||||
RegisterSpellScript(spell_item_rocket_boots);
|
||||
RegisterSpellScript(spell_item_runic_healing_injector);
|
||||
RegisterSpellScript(spell_item_pygmy_oil);
|
||||
RegisterSpellScript(spell_item_unusual_compass);
|
||||
RegisterSpellScript(spell_item_chicken_cover);
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellMgr.h"
|
||||
#include "SpellScript.h"
|
||||
#include "TemporarySummon.h"
|
||||
|
||||
enum PriestSpells
|
||||
{
|
||||
@@ -37,6 +38,7 @@ enum PriestSpells
|
||||
SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL = 56161,
|
||||
SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL = 48153,
|
||||
SPELL_PRIEST_ITEM_EFFICIENCY = 37595,
|
||||
SPELL_PRIEST_LIGHTWELL_CHARGES = 59907,
|
||||
SPELL_PRIEST_MANA_LEECH_PROC = 34650,
|
||||
SPELL_PRIEST_PENANCE_R1 = 47540,
|
||||
SPELL_PRIEST_PENANCE_R1_DAMAGE = 47758,
|
||||
@@ -61,6 +63,16 @@ enum PriestSpellIcons
|
||||
PRIEST_ICON_ID_PAIN_AND_SUFFERING = 2874,
|
||||
};
|
||||
|
||||
enum Mics
|
||||
{
|
||||
PRIEST_LIGHTWELL_NPC_1 = 31897,
|
||||
PRIEST_LIGHTWELL_NPC_2 = 31896,
|
||||
PRIEST_LIGHTWELL_NPC_3 = 31895,
|
||||
PRIEST_LIGHTWELL_NPC_4 = 31894,
|
||||
PRIEST_LIGHTWELL_NPC_5 = 31893,
|
||||
PRIEST_LIGHTWELL_NPC_6 = 31883
|
||||
};
|
||||
|
||||
class spell_pri_shadowfiend_scaling : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_pri_shadowfiend_scaling);
|
||||
@@ -359,6 +371,48 @@ class spell_pri_item_greater_heal_refund : public AuraScript
|
||||
}
|
||||
};
|
||||
|
||||
// 60123 - Lightwell
|
||||
class spell_pri_lightwell : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_pri_lightwell);
|
||||
|
||||
bool Load() override
|
||||
{
|
||||
return GetCaster()->GetTypeId() == TYPEID_UNIT;
|
||||
}
|
||||
|
||||
void HandleScriptEffect(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
Creature* caster = GetCaster()->ToCreature();
|
||||
if (!caster || !caster->IsSummon())
|
||||
return;
|
||||
|
||||
uint32 lightwellRenew = 0;
|
||||
switch (caster->GetEntry())
|
||||
{
|
||||
case PRIEST_LIGHTWELL_NPC_1: lightwellRenew = 7001; break;
|
||||
case PRIEST_LIGHTWELL_NPC_2: lightwellRenew = 27873; break;
|
||||
case PRIEST_LIGHTWELL_NPC_3: lightwellRenew = 27874; break;
|
||||
case PRIEST_LIGHTWELL_NPC_4: lightwellRenew = 28276; break;
|
||||
case PRIEST_LIGHTWELL_NPC_5: lightwellRenew = 48084; break;
|
||||
case PRIEST_LIGHTWELL_NPC_6: lightwellRenew = 48085; break;
|
||||
}
|
||||
|
||||
// proc a spellcast
|
||||
if (Aura* chargesAura = caster->GetAura(SPELL_PRIEST_LIGHTWELL_CHARGES))
|
||||
{
|
||||
caster->CastSpell(GetHitUnit(), lightwellRenew, caster->ToTempSummon()->GetSummonerGUID());
|
||||
if (chargesAura->ModCharges(-1))
|
||||
caster->ToTempSummon()->UnSummon();
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_pri_lightwell::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
// -7001 - Lightwell Renew
|
||||
class spell_pri_lightwell_renew : public AuraScript
|
||||
{
|
||||
@@ -854,6 +908,7 @@ void AddSC_priest_spell_scripts()
|
||||
RegisterSpellScript(spell_pri_guardian_spirit);
|
||||
RegisterSpellScript(spell_pri_hymn_of_hope);
|
||||
RegisterSpellScript(spell_pri_item_greater_heal_refund);
|
||||
RegisterSpellScript(spell_pri_lightwell);
|
||||
RegisterSpellScript(spell_pri_lightwell_renew);
|
||||
RegisterSpellScript(spell_pri_mana_burn);
|
||||
RegisterSpellScript(spell_pri_mana_leech);
|
||||
|
||||
@@ -840,6 +840,33 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
enum BendingShinbone
|
||||
{
|
||||
SPELL_BENDING_SHINBONE1 = 8854,
|
||||
SPELL_BENDING_SHINBONE2 = 8855
|
||||
};
|
||||
|
||||
class spell_q1846_bending_shinbone : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_q1846_bending_shinbone);
|
||||
|
||||
void HandleScriptEffect(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
Item* target = GetHitItem();
|
||||
Unit* caster = GetCaster();
|
||||
if (!target && caster->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
uint32 const spellId = roll_chance_i(20) ? SPELL_BENDING_SHINBONE1 : SPELL_BENDING_SHINBONE2;
|
||||
caster->CastSpell(caster, spellId, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_q1846_bending_shinbone::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
// 9712 - Thaumaturgy Channel
|
||||
enum ThaumaturgyChannel
|
||||
{
|
||||
@@ -2400,6 +2427,7 @@ void AddSC_quest_spell_scripts()
|
||||
RegisterSpellScript(spell_q10985_light_of_the_naaru);
|
||||
RegisterSpellScript(spell_q9718_crow_transform);
|
||||
new spell_q55_sacred_cleansing();
|
||||
RegisterSpellScript(spell_q1846_bending_shinbone);
|
||||
RegisterSpellScript(spell_q2203_thaumaturgy_channel);
|
||||
RegisterSpellScript(spell_q5206_test_fetid_skull);
|
||||
RegisterSpellScript(spell_q6124_6129_apply_salve);
|
||||
|
||||
Reference in New Issue
Block a user