Merge branch 'azerothcore:master' into Playerbot

This commit is contained in:
ZhengPeiRu21
2022-03-27 11:23:15 -06:00
committed by GitHub
52 changed files with 3865 additions and 281 deletions
@@ -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`;
+551
View File
@@ -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`;
+312
View File
@@ -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`;
+319
View File
@@ -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`;
+149
View File
@@ -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`;
+2
View File
@@ -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 ?
+1 -1
View File
@@ -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)
{
+2 -15
View File
@@ -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)
+98 -28
View File
@@ -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);
+14 -4
View File
@@ -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
+4 -3
View File
@@ -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;
};
}
}
+25 -9
View File
@@ -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()
+7 -177
View File
@@ -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)
{
@@ -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));
}
}
}
@@ -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());
}
}
@@ -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);
@@ -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);
}
+114 -8
View File
@@ -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;
}
+18 -2
View File
@@ -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;
+79
View File
@@ -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);
+28
View File
@@ -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);