From 32009468c8dce5fcf9a84331d5a91334486b5dfd Mon Sep 17 00:00:00 2001 From: Nefertumm Date: Sun, 3 Apr 2022 03:14:41 -0300 Subject: [PATCH] fix(Core/BWL): Blackwing Lair improvements (#11244) --- .../rev_1648780747131852300.sql | 366 ++++++++++++++++++ .../BlackwingLair/boss_nefarian.cpp | 49 ++- .../BlackwingLair/instance_blackwing_lair.cpp | 15 +- 3 files changed, 424 insertions(+), 6 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1648780747131852300.sql diff --git a/data/sql/updates/pending_db_world/rev_1648780747131852300.sql b/data/sql/updates/pending_db_world/rev_1648780747131852300.sql new file mode 100644 index 000000000..4b767555b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1648780747131852300.sql @@ -0,0 +1,366 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648780747131852300'); + +-- Drakonid spawners +UPDATE `creature_template` SET `AIName` = '', `ScriptName` = 'npc_drakonid_spawner' WHERE `entry` IN (14307, 14309, 14310, 14311, 14312); + +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (14307, 14309, 14310, 14311, 14312) AND `source_type` = 0; + +-- Krixix respawn time +UPDATE `creature` SET `spawntimesecs` = 1800 WHERE `guid` = 84627; + +-- Razorgore: Override the mechanic immune mask since they are pretty wrong. +UPDATE `creature_template` SET `mechanic_immune_mask` = 617299803 WHERE `entry` = 12435; + +SET @GUID := 84557; +SET @PATH := @GUID * 10; +UPDATE `creature` SET `position_x` = -7496.66, `position_y` = -1038.1, `position_z` = 449.242, `orientation` = 3.77, `MovementType` = 2 WHERE `guid` = @GUID; +DELETE FROM `creature_addon` WHERE `guid` = @GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `bytes2`) VALUES +(@GUID, @PATH, 1); + +DELETE FROM `waypoint_data` WHERE `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`,`wpguid`) VALUES +(@PATH, 1, -7496.66, -1038.1, 449.242, 3.80725, 5000, 0, 0, 100, 0), +(@PATH, 2, -7525.39, -1059.24, 449.242, 3.77583, 5000, 0, 0, 100, 0); + +SET @GUID := 84558; +SET @PATH := @GUID * 10; +UPDATE `creature` SET `position_x` = -7527.93, `position_y` = -979.702, `position_z` = 449.242, `orientation` = 0.57, `MovementType` = 2 WHERE `guid` = @GUID; +DELETE FROM `creature_addon` WHERE `guid` = @GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `bytes2`) VALUES +(@GUID, @PATH, 1); + +DELETE FROM `waypoint_data` WHERE `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`,`wpguid`) VALUES +(@PATH, 1, -7530.46, -991.187, 449.243, 0.575341, 5000, 0, 0, 100, 0), +(@PATH, 2, -7513.23, -978.857, 449.243, 0.602829, 5000, 0, 0, 100, 0); + +SET @GUID := 85756; +SET @PATH := @GUID * 10; +UPDATE `creature` SET `position_x` = -7419.65, `position_y` = -913.131, `position_z` = 464.984, `orientation` = 3.77272, `MovementType` = 2 WHERE `guid` = @GUID; +DELETE FROM `creature_addon` WHERE `guid` = @GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `bytes2`) VALUES +(@GUID, @PATH, 1); + +DELETE FROM `waypoint_data` WHERE `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`,`wpguid`) VALUES +(@PATH, 1, -7412.51, -930.747, 465.035, 5.31515, 5000, 0, 0, 100, 0), +(@PATH, 2, -7432.42, -902.277, 465.032, 2.16414, 5000, 0, 0, 100, 0); + +SET @GUID := 85759; +SET @PATH := @GUID * 10; +UPDATE `creature` SET `position_x` = -7448.3, `position_y` = -934.665, `position_z` = 464.984, `orientation` = 3.4581, `MovementType` = 2 WHERE `guid` = @GUID; +DELETE FROM `creature_addon` WHERE `guid` = @GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `bytes2`) VALUES +(@GUID, @PATH, 1); + +DELETE FROM `waypoint_data` WHERE `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`,`wpguid`) VALUES +(@PATH, 1, -7433.41, -946.726, 465.036, 5.3285, 5000, 0, 0, 100, 0), +(@PATH, 2, -7455.8, -915.137, 465.016, 2.18612, 5000, 0, 0, 100, 0); + +SET @GUID := 84840; +SET @PATH := @GUID * 10; +UPDATE `creature` SET `position_x` = -7476.91, `position_y` = -878.195, `position_z` = 464.984, `orientation` = 4.09632, `MovementType` = 2 WHERE `guid` = @GUID; +DELETE FROM `creature_addon` WHERE `guid` = @GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `bytes2`) VALUES +(@GUID, @PATH, 1); + +DELETE FROM `waypoint_data` WHERE `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`,`wpguid`) VALUES +(@PATH, 1, -7475.45, -894.514, 465.218, 3.73025, 5000, 0, 0, 100, 0), +(@PATH, 2, -7452.86, -878.005, 465.218, 3.7381, 5000, 0, 0, 100, 0); + +SET @GUID := 84625; +SET @PATH := @GUID * 10; +UPDATE `creature` SET `position_x` = -7515.62, `position_y` = -910.707, `position_z` = 457.576, `orientation` = 5.11366, `MovementType` = 2 WHERE `guid` = @GUID; +DELETE FROM `creature_addon` WHERE `guid` = @GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `bytes2`) VALUES +(@GUID, @PATH, 1); + +DELETE FROM `waypoint_data` WHERE `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`,`wpguid`) VALUES +(@PATH, 1, -7494.78, -914.672, 457.856, 3.76402, 5000, 0, 0, 100, 0), +(@PATH, 2, -7513.27, -927.939, 457.856, 3.76402, 5000, 0, 0, 100, 0); + +DELETE FROM `creature` WHERE `guid` BETWEEN 84519 AND 84532; +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 +(84519,12467,469,1,1,1,-7525.67,-925.212,427.908,2.226160,604800,0,0,242775,0,0,0,0,0,''), +(84520,12467,469,1,1,1,-7590.30,-930.078,428.261,5.859410,604800,0,0,242775,0,0,0,0,0,''), +(84521,12464,469,1,1,1,-7580.70,-945.092,428.161,1.699940,604800,0,0,113295,0,0,0,0,0,''), +(84522,12464,469,1,1,1,-7583.51,-924.026,428.317,4.854110,604800,0,0,113295,0,0,0,0,0,''), +(84523,12464,469,1,1,1,-7527.41,-911.406,427.920,4.517160,604800,0,0,113295,0,0,0,0,0,''), +(84524,12464,469,1,1,1,-7534.23,-926.704,427.963,1.292320,604800,0,0,113295,0,0,0,0,0,''), +(84525,12465,469,1,1,1,-7539.97,-921.612,428.016,0.495137,604800,0,0,88025,24860,0,0,0,0,''), +(84526,12465,469,1,1,1,-7523.96,-917.881,427.921,3.282520,604800,0,0,88025,24860,0,0,0,0,''), +(84527,12465,469,1,1,1,-7573.80,-927.041,428.258,4.127620,604800,0,0,88025,24860,0,0,0,0,''), +(84528,12465,469,1,1,1,-7590.22,-939.636,428.222,0.745684,604800,0,0,88025,24860,0,0,0,0,''), +(84529,12463,469,1,1,1,-7568.89,-934.958,428.192,3.054760,604800,0,0,129480,0,0,0,0,0,''), +(84530,12463,469,1,1,1,-7539.57,-914.064,428.012,5.615940,604800,0,0,129480,0,0,0,0,0,''); + +DELETE FROM `creature_formations` WHERE `memberGUID` BETWEEN 84519 AND 84532; + +SET @LEADERGUID := 84519; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES +(@LEADERGUID, @LEADERGUID, 0, 0, 3), +(@LEADERGUID, 84523, 0, 0, 3), +(@LEADERGUID, 84524, 0, 0, 3), +(@LEADERGUID, 84525, 0, 0, 3), +(@LEADERGUID, 84526, 0, 0, 3), +(@LEADERGUID, 84530, 0, 0, 3); + +SET @LEADERGUID := 84520; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES +(@LEADERGUID, @LEADERGUID, 0, 0, 3), +(@LEADERGUID, 84521, 0, 0, 3), +(@LEADERGUID, 84522, 0, 0, 3), +(@LEADERGUID, 84527, 0, 0, 3), +(@LEADERGUID, 84528, 0, 0, 3), +(@LEADERGUID, 84529, 0, 0, 3); + +SET @GUID := 139981; +DELETE FROM `creature` WHERE `guid` BETWEEN @GUID+0 AND @GUID+119; +DELETE FROM `creature` WHERE `id1` IN (14022, 14023, 14025); +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 +(@GUID+0,14022,469,1,1,0,-7656.85,-975.140,440.287,0.418879,30,2,0,4578,0,1,0,0,0,''), +(@GUID+1,14022,469,1,1,0,-7673.17,-988.168,440.308,3.147420,30,2,0,4578,0,1,0,0,0,''), +(@GUID+2,14022,469,1,1,0,-7645.70,-1016.46,440.304,4.160730,30,2,0,4578,0,1,0,0,0,''), +(@GUID+3,14022,469,1,1,0,-7633.50,-1062.02,449.247,3.276870,30,2,0,4578,0,1,0,0,0,''), +(@GUID+4,14022,469,1,1,0,-7648.70,-1025.35,440.260,2.615480,30,2,0,4578,0,1,0,0,0,''), +(@GUID+5,14022,469,1,1,0,-7643.36,-1017.60,440.309,3.797910,30,2,0,4578,0,1,0,0,0,''), +(@GUID+6,14022,469,1,1,0,-7669.85,-1042.61,440.230,1.710420,30,2,0,4578,0,1,0,0,0,''), +(@GUID+7,14022,469,1,1,0,-7647.48,-1093.84,449.247,3.141590,30,2,0,4578,0,1,0,0,0,''), +(@GUID+8,14022,469,1,1,0,-7658.36,-1071.11,449.247,5.314750,30,2,0,4578,0,1,0,0,0,''), +(@GUID+9,14022,469,1,1,0,-7678.29,-1123.55,449.099,0.216448,30,2,0,4578,0,1,0,0,0,''), +(@GUID+10,14022,469,1,1,0,-7681.89,-998.110,440.342,4.886920,30,2,0,4578,0,1,0,0,0,''), +(@GUID+11,14022,469,1,1,0,-7624.56,-1038.27,449.247,3.210850,30,2,0,4578,0,1,0,0,0,''), +(@GUID+12,14022,469,1,1,0,-7618.44,-1038.33,449.247,2.844890,30,2,0,4578,0,1,0,0,0,''), +(@GUID+13,14022,469,1,1,0,-7622.55,-978.518,440.129,3.727570,30,2,0,4578,0,1,0,0,0,''), +(@GUID+14,14022,469,1,1,0,-7695.47,-1017.10,440.395,5.258800,30,2,0,4578,0,1,0,0,0,''), +(@GUID+15,14022,469,1,1,0,-7619.76,-1047.64,449.247,5.672320,30,2,0,4578,0,1,0,0,0,''), +(@GUID+16,14022,469,1,1,0,-7652.35,-992.230,440.070,3.031760,30,2,0,4578,0,1,0,0,0,''), +(@GUID+17,14022,469,1,1,0,-7708.75,-1082.18,446.224,0.642683,30,2,0,4578,0,1,0,0,0,''), +(@GUID+18,14022,469,1,1,0,-7693.29,-1094.91,449.205,3.071780,30,2,0,4578,0,1,0,0,0,''), +(@GUID+19,14022,469,1,1,0,-7634.62,-961.161,440.345,3.817430,30,2,0,4578,0,1,0,0,0,''), +(@GUID+20,14022,469,1,1,0,-7601.64,-1050.85,449.247,3.706210,30,2,0,4578,0,1,0,0,0,''), +(@GUID+21,14022,469,1,1,0,-7600.73,-1025.35,449.247,0.750492,30,2,0,4578,0,1,0,0,0,''), +(@GUID+22,14022,469,1,1,0,-7632.46,-1003.41,440.346,0.453786,30,2,0,4578,0,1,0,0,0,''), +(@GUID+23,14022,469,1,1,0,-7653.06,-1092.68,449.247,1.853380,30,2,0,4578,0,1,0,0,0,''), +(@GUID+24,14022,469,1,1,0,-7716.05,-1071.89,445.260,3.266290,30,2,0,4578,0,1,0,0,0,''), +(@GUID+25,14022,469,1,1,0,-7597.61,-1067.39,449.247,5.794490,30,2,0,4578,0,1,0,0,0,''), +(@GUID+26,14022,469,1,1,0,-7681.28,-1007.74,440.067,5.285090,30,2,0,4578,0,1,0,0,0,''), +(@GUID+27,14022,469,1,1,0,-7598.69,-1072.55,449.247,3.642720,30,2,0,4578,0,1,0,0,0,''), +(@GUID+28,14022,469,1,1,0,-7643.34,-997.209,440.345,4.276060,30,2,0,4578,0,1,0,0,0,''), +(@GUID+29,14022,469,1,1,0,-7676.78,-1036.71,440.065,1.702620,30,2,0,4578,0,1,0,0,0,''), +(@GUID+30,14022,469,1,1,0,-7582.47,-1062.96,449.247,1.538600,30,2,0,4578,0,1,0,0,0,''), +(@GUID+31,14022,469,1,1,0,-7574.83,-1066.29,449.247,0.474864,30,2,0,4578,0,1,0,0,0,''), +(@GUID+32,14022,469,1,1,0,-7645.29,-1001.86,440.070,2.672880,30,2,0,4578,0,1,0,0,0,''), +(@GUID+33,14022,469,1,1,0,-7695.45,-1029.21,440.560,6.205080,30,2,0,4578,0,1,0,0,0,''), +(@GUID+34,14022,469,1,1,0,-7705.58,-1088.98,449.118,0.130458,30,2,0,4578,0,1,0,0,0,''), +(@GUID+35,14022,469,1,1,0,-7703.89,-1056.78,443.540,5.681620,30,2,0,4578,0,1,0,0,0,''), +(@GUID+36,14022,469,1,1,0,-7644.60,-1102.49,449.164,2.220650,30,2,0,4578,0,1,0,0,0,''), +(@GUID+37,14022,469,1,1,0,-7654.64,-1113.16,449.167,2.682660,30,2,0,4578,0,1,0,0,0,''), +(@GUID+38,14022,469,1,1,0,-7657.92,-985.007,440.070,5.076520,30,2,0,4578,0,1,0,0,0,''), +(@GUID+39,14022,469,1,1,0,-7670.19,-1018.47,440.282,2.967060,30,2,0,4578,0,1,0,0,0,''), +(@GUID+40,14023,469,1,1,0,-7621.75,-1068.85,449.247,4.537140,30,2,0,4578,0,1,0,0,0,''), +(@GUID+41,14023,469,1,1,0,-7666.00,-1036.99,440.265,3.985100,30,2,0,4578,0,1,0,0,0,''), +(@GUID+42,14023,469,1,1,0,-7641.10,-1015.70,440.314,3.860240,30,2,0,4578,0,1,0,0,0,''), +(@GUID+43,14023,469,1,1,0,-7667.06,-991.905,440.069,6.152400,30,2,0,4578,0,1,0,0,0,''), +(@GUID+44,14023,469,1,1,0,-7666.45,-1044.84,440.189,5.026550,30,2,0,4578,0,1,0,0,0,''), +(@GUID+45,14023,469,1,1,0,-7646.14,-1022.28,440.289,4.230200,30,2,0,4578,0,1,0,0,0,''), +(@GUID+46,14023,469,1,1,0,-7647.05,-1068.97,449.247,5.300560,30,2,0,4578,0,1,0,0,0,''), +(@GUID+47,14023,469,1,1,0,-7655.83,-1066.95,449.247,5.362040,30,2,0,4578,0,1,0,0,0,''), +(@GUID+48,14023,469,1,1,0,-7684.35,-1122.91,449.081,1.732460,30,2,0,4578,0,1,0,0,0,''), +(@GUID+49,14023,469,1,1,0,-7669.68,-1112.44,449.140,2.278570,30,2,0,4578,0,1,0,0,0,''), +(@GUID+50,14023,469,1,1,0,-7695.53,-1013.02,440.098,0.124663,30,2,0,4578,0,1,0,0,0,''), +(@GUID+51,14023,469,1,1,0,-7681.77,-992.085,440.280,4.788320,30,2,0,4578,0,1,0,0,0,''), +(@GUID+52,14023,469,1,1,0,-7641.78,-987.448,440.346,3.682650,30,2,0,4578,0,1,0,0,0,''), +(@GUID+53,14023,469,1,1,0,-7622.71,-1029.08,449.247,3.679820,30,2,0,4578,0,1,0,0,0,''), +(@GUID+54,14023,469,1,1,0,-7624.89,-1046.62,449.247,1.291540,30,2,0,4578,0,1,0,0,0,''), +(@GUID+55,14023,469,1,1,0,-7683.09,-1108.72,449.222,4.717610,30,2,0,4578,0,1,0,0,0,''), +(@GUID+56,14023,469,1,1,0,-7630.01,-1069.40,449.247,4.700070,30,2,0,4578,0,1,0,0,0,''), +(@GUID+57,14023,469,1,1,0,-7636.66,-963.865,440.356,3.594040,30,2,0,4578,0,1,0,0,0,''), +(@GUID+58,14023,469,1,1,0,-7618.11,-1059.93,449.247,0.819205,30,2,0,4578,0,1,0,0,0,''), +(@GUID+59,14023,469,1,1,0,-7602.88,-1031.50,449.247,4.538010,30,2,0,4578,0,1,0,0,0,''), +(@GUID+60,14023,469,1,1,0,-7629.85,-1001.31,440.346,2.271360,30,2,0,4578,0,1,0,0,0,''), +(@GUID+61,14023,469,1,1,0,-7719.53,-1067.46,445.260,6.119290,30,2,0,4578,0,1,0,0,0,''), +(@GUID+62,14023,469,1,1,0,-7594.80,-1086.24,449.247,3.612830,30,2,0,4578,0,1,0,0,0,''), +(@GUID+63,14023,469,1,1,0,-7673.18,-1009.97,440.342,1.910180,30,2,0,4578,0,1,0,0,0,''), +(@GUID+64,14023,469,1,1,0,-7687.76,-1025.21,440.355,5.037370,30,2,0,4578,0,1,0,0,0,''), +(@GUID+65,14023,469,1,1,0,-7639.89,-990.146,440.346,0.193068,30,2,0,4578,0,1,0,0,0,''), +(@GUID+66,14023,469,1,1,0,-7685.87,-1036.16,440.467,5.900170,30,2,0,4578,0,1,0,0,0,''), +(@GUID+67,14023,469,1,1,0,-7571.00,-1064.30,449.247,0.281585,30,2,0,4578,0,1,0,0,0,''), +(@GUID+68,14023,469,1,1,0,-7694.26,-1023.88,440.464,5.507510,30,2,0,4578,0,1,0,0,0,''), +(@GUID+69,14023,469,1,1,0,-7706.02,-1062.06,445.176,3.792420,30,2,0,4578,0,1,0,0,0,''), +(@GUID+70,14023,469,1,1,0,-7695.12,-1055.39,440.674,0.290690,30,2,0,4578,0,1,0,0,0,''), +(@GUID+71,14023,469,1,1,0,-7681.60,-1087.51,449.209,5.061450,30,2,0,4578,0,1,0,0,0,''), +(@GUID+72,14023,469,1,1,0,-7641.50,-1100.43,449.164,2.073550,30,2,0,4578,0,1,0,0,0,''), +(@GUID+73,14023,469,1,1,0,-7703.90,-1083.14,447.703,0.094823,30,2,0,4578,0,1,0,0,0,''), +(@GUID+74,14023,469,1,1,0,-7674.31,-1026.79,440.066,1.865490,30,2,0,4578,0,1,0,0,0,''), +(@GUID+75,14023,469,1,1,0,-7665.73,-1009.91,440.343,2.205850,30,2,0,4578,0,1,0,0,0,''), +(@GUID+76,14023,469,1,1,0,-7667.65,-987.774,440.069,5.589750,30,2,0,4578,0,1,0,0,0,''), +(@GUID+77,14025,469,1,1,0,-7638.10,-1016.86,440.273,4.800860,30,2,0,4578,0,1,0,0,0,''), +(@GUID+78,14025,469,1,1,0,-7661.50,-988.088,440.070,0.698132,30,2,0,4578,0,1,0,0,0,''), +(@GUID+79,14025,469,1,1,0,-7621.99,-1077.23,449.247,1.518440,30,2,0,4578,0,1,0,0,0,''), +(@GUID+80,14025,469,1,1,0,-7635.98,-1012.13,440.314,4.383170,30,2,0,4578,0,1,0,0,0,''), +(@GUID+81,14025,469,1,1,0,-7648.13,-1057.97,449.247,5.941390,30,2,0,4578,0,1,0,0,0,''), +(@GUID+82,14025,469,1,1,0,-7660.00,-1041.10,440.189,5.594050,30,2,0,4578,0,1,0,0,0,''), +(@GUID+83,14025,469,1,1,0,-7640.15,-1011.70,440.069,2.039260,30,2,0,4578,0,1,0,0,0,''), +(@GUID+84,14025,469,1,1,0,-7636.04,-1078.19,449.247,4.724240,30,2,0,4578,0,1,0,0,0,''), +(@GUID+85,14025,469,1,1,0,-7678.87,-1129.23,449.082,2.039950,30,2,0,4578,0,1,0,0,0,''), +(@GUID+86,14025,469,1,1,0,-7689.31,-1115.75,449.084,1.673430,30,2,0,4578,0,1,0,0,0,''), +(@GUID+87,14025,469,1,1,0,-7657.58,-1104.80,449.165,2.134630,30,2,0,4578,0,1,0,0,0,''), +(@GUID+88,14025,469,1,1,0,-7625.20,-1033.05,449.247,3.024800,30,2,0,4578,0,1,0,0,0,''), +(@GUID+89,14025,469,1,1,0,-7625.08,-1051.81,449.247,5.339600,30,2,0,4578,0,1,0,0,0,''), +(@GUID+90,14025,469,1,1,0,-7703.72,-1015.03,440.505,0.992070,30,2,0,4578,0,1,0,0,0,''), +(@GUID+91,14025,469,1,1,0,-7684.85,-993.854,440.275,3.903650,30,2,0,4578,0,1,0,0,0,''), +(@GUID+92,14025,469,1,1,0,-7627.40,-988.568,440.086,2.128170,30,2,0,4578,0,1,0,0,0,''), +(@GUID+93,14025,469,1,1,0,-7683.67,-1096.39,449.191,5.950870,30,2,0,4578,0,1,0,0,0,''), +(@GUID+94,14025,469,1,1,0,-7597.26,-1019.24,449.247,2.158640,30,2,0,4578,0,1,0,0,0,''), +(@GUID+95,14025,469,1,1,0,-7634.91,-956.022,440.252,4.611050,30,2,0,4578,0,1,0,0,0,''), +(@GUID+96,14025,469,1,1,0,-7632.52,-1008.38,440.331,5.703210,30,2,0,4578,0,1,0,0,0,''), +(@GUID+97,14025,469,1,1,0,-7640.47,-961.673,440.261,4.000540,30,2,0,4578,0,1,0,0,0,''), +(@GUID+98,14025,469,1,1,0,-7609.71,-1054.55,449.247,0.642570,30,2,0,4578,0,1,0,0,0,''), +(@GUID+99,14025,469,1,1,0,-7625.70,-1000.88,440.346,2.489070,30,2,0,4578,0,1,0,0,0,''), +(@GUID+100,14025,469,1,1,0,-7612.87,-1067.80,449.247,4.569420,30,2,0,4578,0,1,0,0,0,''), +(@GUID+101,14025,469,1,1,0,-7642.84,-1075.91,449.247,5.089710,30,2,0,4578,0,1,0,0,0,''), +(@GUID+102,14025,469,1,1,0,-7710.85,-1073.44,445.260,3.383970,30,2,0,4578,0,1,0,0,0,''), +(@GUID+103,14025,469,1,1,0,-7713.35,-1064.88,445.260,5.567600,30,2,0,4578,0,1,0,0,0,''), +(@GUID+104,14025,469,1,1,0,-7659.99,-1016.20,440.343,2.182820,30,2,0,4578,0,1,0,0,0,''), +(@GUID+105,14025,469,1,1,0,-7605.22,-1080.31,449.247,0.443425,30,2,0,4578,0,1,0,0,0,''), +(@GUID+107,14025,469,1,1,0,-7682.46,-1041.22,440.430,3.464380,30,2,0,4578,0,1,0,0,0,''), +(@GUID+108,14025,469,1,1,0,-7685.91,-1027.90,440.355,4.536050,30,2,0,4578,0,1,0,0,0,''), +(@GUID+109,14025,469,1,1,0,-7633.73,-980.541,440.083,5.242260,30,2,0,4578,0,1,0,0,0,''), +(@GUID+110,14025,469,1,1,0,-7565.33,-1067.00,449.247,6.055660,30,2,0,4578,0,1,0,0,0,''), +(@GUID+111,14025,469,1,1,0,-7636.82,-1099.29,449.247,2.600540,30,2,0,4578,0,1,0,0,0,''), +(@GUID+112,14025,469,1,1,0,-7689.85,-1044.19,440.577,1.326450,30,2,0,4578,0,1,0,0,0,''), +(@GUID+113,14025,469,1,1,0,-7688.77,-1048.17,440.547,0.774210,30,2,0,4578,0,1,0,0,0,''), +(@GUID+114,14025,469,1,1,0,-7644.24,-1110.22,449.164,5.095760,30,2,0,4578,0,1,0,0,0,''), +(@GUID+115,14025,469,1,1,0,-7671.53,-1082.71,449.149,4.838210,30,2,0,4578,0,1,0,0,0,''), +(@GUID+116,14025,469,1,1,0,-7699.41,-1090.67,449.112,3.441250,30,2,0,4578,0,1,0,0,0,''), +(@GUID+117,14025,469,1,1,0,-7711.81,-1078.94,445.176,4.772370,30,2,0,4578,0,1,0,0,0,''), +(@GUID+118,14025,469,1,1,0,-7665.29,-983.930,440.324,0.696732,30,2,0,4578,0,1,0,0,0,''), +(@GUID+119,14025,469,1,1,0,-7669.01,-1002.58,440.343,1.902410,30,2,0,4578,0,1,0,0,0,''); + +DELETE FROM `linked_respawn` WHERE `guid` IN (84531, 84532, 85839, 85840, 85841, 85843, 85850, 85851, 85853, 85854, 85855, 85856, 85857, 85858, 85859, 85861, 85862, 85865, 85875, 85884); +DELETE FROM `linked_respawn` WHERE `guid` BETWEEN @GUID+0 AND @GUID+119; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@GUID+0, 84387,0), +(@GUID+1, 84387,0), +(@GUID+2, 84387,0), +(@GUID+3, 84387,0), +(@GUID+4, 84387,0), +(@GUID+5, 84387,0), +(@GUID+6, 84387,0), +(@GUID+7, 84387,0), +(@GUID+8, 84387,0), +(@GUID+9, 84387,0), +(@GUID+10, 84387,0), +(@GUID+11, 84387,0), +(@GUID+12, 84387,0), +(@GUID+13, 84387,0), +(@GUID+14, 84387,0), +(@GUID+15, 84387,0), +(@GUID+16, 84387,0), +(@GUID+17, 84387,0), +(@GUID+18, 84387,0), +(@GUID+19, 84387,0), +(@GUID+20, 84387,0), +(@GUID+21, 84387,0), +(@GUID+22, 84387,0), +(@GUID+23, 84387,0), +(@GUID+24, 84387,0), +(@GUID+25, 84387,0), +(@GUID+26, 84387,0), +(@GUID+27, 84387,0), +(@GUID+28, 84387,0), +(@GUID+29, 84387,0), +(@GUID+30, 84387,0), +(@GUID+31, 84387,0), +(@GUID+32, 84387,0), +(@GUID+33, 84387,0), +(@GUID+34, 84387,0), +(@GUID+35, 84387,0), +(@GUID+36, 84387,0), +(@GUID+37, 84387,0), +(@GUID+38, 84387,0), +(@GUID+39, 84387,0), +(@GUID+40, 84387,0), +(@GUID+41, 84387,0), +(@GUID+42, 84387,0), +(@GUID+43, 84387,0), +(@GUID+44, 84387,0), +(@GUID+45, 84387,0), +(@GUID+46, 84387,0), +(@GUID+47, 84387,0), +(@GUID+48, 84387,0), +(@GUID+49, 84387,0), +(@GUID+50, 84387,0), +(@GUID+51, 84387,0), +(@GUID+52, 84387,0), +(@GUID+53, 84387,0), +(@GUID+54, 84387,0), +(@GUID+55, 84387,0), +(@GUID+56, 84387,0), +(@GUID+57, 84387,0), +(@GUID+58, 84387,0), +(@GUID+59, 84387,0), +(@GUID+60, 84387,0), +(@GUID+61, 84387,0), +(@GUID+62, 84387,0), +(@GUID+63, 84387,0), +(@GUID+64, 84387,0), +(@GUID+65, 84387,0), +(@GUID+66, 84387,0), +(@GUID+67, 84387,0), +(@GUID+68, 84387,0), +(@GUID+69, 84387,0), +(@GUID+70, 84387,0), +(@GUID+71, 84387,0), +(@GUID+72, 84387,0), +(@GUID+73, 84387,0), +(@GUID+74, 84387,0), +(@GUID+75, 84387,0), +(@GUID+76, 84387,0), +(@GUID+77, 84387,0), +(@GUID+78, 84387,0), +(@GUID+79, 84387,0), +(@GUID+80, 84387,0), +(@GUID+81, 84387,0), +(@GUID+82, 84387,0), +(@GUID+83, 84387,0), +(@GUID+84, 84387,0), +(@GUID+85, 84387,0), +(@GUID+86, 84387,0), +(@GUID+87, 84387,0), +(@GUID+88, 84387,0), +(@GUID+89, 84387,0), +(@GUID+90, 84387,0), +(@GUID+91, 84387,0), +(@GUID+92, 84387,0), +(@GUID+93, 84387,0), +(@GUID+94, 84387,0), +(@GUID+95, 84387,0), +(@GUID+96, 84387,0), +(@GUID+97, 84387,0), +(@GUID+98, 84387,0), +(@GUID+99, 84387,0), +(@GUID+100,84387,0), +(@GUID+101,84387,0), +(@GUID+102,84387,0), +(@GUID+103,84387,0), +(@GUID+104,84387,0), +(@GUID+105,84387,0), +(@GUID+107,84387,0), +(@GUID+108,84387,0), +(@GUID+109,84387,0), +(@GUID+110,84387,0), +(@GUID+111,84387,0), +(@GUID+112,84387,0), +(@GUID+113,84387,0), +(@GUID+114,84387,0), +(@GUID+115,84387,0), +(@GUID+116,84387,0), +(@GUID+117,84387,0), +(@GUID+118,84387,0), +(@GUID+119,84387,0); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp index 2d756c139..6001af2ae 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp @@ -53,10 +53,14 @@ enum Events EVENT_SUCCESS_1, EVENT_SUCCESS_2, EVENT_SUCCESS_3, + // Drakonid Spawner + EVENT_SPAWN_CHROMATIC_DRAKONID, + // EVENT_SPAWN_ADDS, // placeholder, already defined above. ACTION_RESET = 0, ACTION_KILLED = 1, - ACTION_ADD_KILLED = 2 + ACTION_ADD_KILLED = 2, + ACTION_SPAWNER_STOP = 3 }; enum Says @@ -140,6 +144,7 @@ enum Spells SPELL_SPAWN_BRONZE_DRAKONID = 22657, SPELL_SPAWN_BLUE_DRAKONID = 22658, SPELL_SPAWN_CHROMATIC_DRAKONID = 22680, + SPELL_SPAWN_DRAKONID_GEN = 22653, // Nefarian SPELL_SHADOWFLAME_INITIAL = 22992, @@ -437,9 +442,11 @@ public: events.CancelEvent(EVENT_SILENCE); DoCastSelf(SPELL_ROOT_SELF, true); me->SetVisible(false); - // Despawn the spawners. - summons.DespawnEntry(_nefarianLeftTunnel); - summons.DespawnEntry(_nefarianRightTunnel); + // Stop spawning adds + EntryCheckPredicate pred(_nefarianRightTunnel); + summons.DoAction(ACTION_SPAWNER_STOP, pred); + EntryCheckPredicate pred2(_nefarianLeftTunnel); + summons.DoAction(ACTION_SPAWNER_STOP, pred2); return; } events.ScheduleEvent(EVENT_CHECK_PHASE_2, 1000); @@ -624,7 +631,7 @@ struct boss_nefarian : public BossAI break; case EVENT_TAILLASH: // Cast NYI since we need a better check for behind target - DoCastVictim(SPELL_TAILLASH); + DoCastAOE(SPELL_TAILLASH); events.ScheduleEvent(EVENT_TAILLASH, 10000); break; case EVENT_CLASSCALL: @@ -883,6 +890,37 @@ struct npc_corrupted_totem : public ScriptedAI bool _auraAdded; }; +struct npc_drakonid_spawner : public ScriptedAI +{ + npc_drakonid_spawner(Creature* creature) : ScriptedAI(creature) { } + + void DoAction(int32 action) override + { + if (action == ACTION_SPAWNER_STOP) + { + me->RemoveAurasDueToSpell(SPELL_SPAWN_DRAKONID_GEN); + _scheduler.CancelAll(); + } + } + + void IsSummonedBy(Unit* /*summoner*/) override + { + DoCastSelf(SPELL_SPAWN_DRAKONID_GEN); + _scheduler.Schedule(10s, 60s, [this](TaskContext /*context*/) + { + DoCastSelf(SPELL_SPAWN_CHROMATIC_DRAKONID); + }); + } + + void UpdateAI(uint32 diff) override + { + _scheduler.Update(diff); + } + +protected: + TaskScheduler _scheduler; +}; + std::unordered_map const classCallSpells = { { SPELL_MAGE, CLASS_MAGE }, @@ -1211,6 +1249,7 @@ void AddSC_boss_nefarian() new boss_victor_nefarius(); RegisterCreatureAI(boss_nefarian); RegisterCreatureAI(npc_corrupted_totem); + RegisterCreatureAI(npc_drakonid_spawner); RegisterSpellScript(spell_class_call_handler); RegisterSpellScript(aura_class_call_wild_magic); RegisterSpellScript(aura_class_call_siphon_blessing); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp index 0cfb761c7..bd9651e53 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp @@ -393,8 +393,9 @@ public: case NPC_CHROMATIC_DRAKONID: case NPC_GREEN_DRAKONID: case NPC_RED_DRAKONID: - if (Creature* summon = unit->ToCreature()) + if (Creature* summon = unit->ToTempSummon()) { + summon->SetCorpseDelay(DAY * IN_MILLISECONDS); summon->UpdateEntry(NPC_BONE_CONSTRUCT); summon->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); summon->SetReactState(REACT_PASSIVE); @@ -407,6 +408,18 @@ public: nefarius->AI()->DoAction(ACTION_NEFARIUS_ADD_KILLED); } } + else // Something happened, try another way + { + if (Creature* nefarius = summon->FindNearestCreature(NPC_VICTOR_NEFARIUS, 500.f, true)) + { + victorNefariusGUID = nefarius->GetGUID(); + + if (nefarius->AI()) + { + nefarius->AI()->DoAction(ACTION_NEFARIUS_ADD_KILLED); + } + } + } } break; }