14 Commits
Author SHA1 Message Date
luis 61e5da7d30 Priority of the sacred flame 2026-09-18 17:24:33 -03:00
Céfiro_Caecias c4c374f027 DB/World: DBErrors Fixes 2026-09-18 16:19:31 -03:00
Céfiro_Caecias fd70992193 Delete sql/updates/world/master/2026_09_18_02_world_dberrors.sql 2026-09-18 15:40:24 -03:00
Céfiro_Caecias 4f28b6102f DB/World: DBErrors Fixes 2026-09-18 15:39:17 -03:00
luis a9bc53c831 Priority of The Sacred Flame Base 2026-09-18 14:25:08 -03:00
luis 660bf7cec9 ++ 2026-09-18 13:03:33 -03:00
luis c212ff96b9 full phase ccondition 2026-09-18 13:03:21 -03:00
luis 8d82d82732 Fix condition phase zone 2026-09-18 12:59:12 -03:00
luis ed5d0abfd3 Rookery 2026-09-18 12:41:57 -03:00
luis 2de3e034cc Rookery 2026-09-18 12:40:17 -03:00
luis 9432531975 Rlp dungeon follower 2026-09-18 11:27:40 -03:00
luis 75e50d8dda Merge achievements imp 2026-09-18 10:25:53 -03:00
luis 2f9c44c59c CONDITION_SOURCE_TYPE_PHASE_ZONE 2026-09-18 10:09:41 -03:00
Céfiro_Caecias b6368e27f3 DB/World: DBErrors Fixes 2026-09-18 08:45:12 -03:00
21 changed files with 2009 additions and 816 deletions
@@ -0,0 +1,31 @@
-- DBErors Fixes
UPDATE `creature_template` SET `ScriptName`='npc_hoi_infuser_sariya' WHERE `entry`=190405;
UPDATE `creature_template` SET `ScriptName`='npc_at_arcane_forager' WHERE `entry`=196694;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_squallbringer_cyraz' WHERE `entry`=190370;
UPDATE `creature_template` SET `ScriptName`='npc_at_corrupted_manafiend' WHERE `entry`=196045;
UPDATE `creature_template` SET `ScriptName`='npc_at_aggravated_skitterfly' WHERE `entry`=197406;
UPDATE `creature_template` SET `ScriptName`='npc_at_territorial_eagle' WHERE `entry`=192329;
UPDATE `creature_template` SET `ScriptName`='npc_at_alpha_eagle' WHERE `entry`=192333;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_containment_apparatus' WHERE `entry`=190342;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_primalist_infuser' WHERE `entry`=196043;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_primalist_earthshaker' WHERE `entry`=190371;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_aqua_rager' WHERE `entry`=190407;
UPDATE `creature_template` SET `ScriptName`='npc_at_vile_lasher' WHERE `entry`=197219;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_primalist_icecaller' WHERE `entry`=190377;
UPDATE `creature_template` SET `ScriptName`='npc_algethar_ancient_branch' WHERE `entry`=196548;
UPDATE `creature_template` SET `ScriptName`='npc_algethar_hungry_lasher' WHERE `entry` IN (196642,197398);
UPDATE `creature_template` SET `ScriptName`='npc_at_echoknight' WHERE `entry`=196200;
UPDATE `creature_template` SET `ScriptName`='npc_at_guardian_sentry' WHERE `entry`=192680;
UPDATE `creature_template` SET `ScriptName`='npc_at_spectral_invoker' WHERE `entry`=196202;
UPDATE `creature_template` SET `ScriptName`='npc_at_spellbound_battleaxe' WHERE `entry` IN (197904,196577);
UPDATE `creature_template` SET `ScriptName`='npc_at_vicious_ravager' WHERE `entry`=196671;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_glacial_proto_dragon' WHERE `entry`=190403;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_primalist_geomancer' WHERE `entry`=190345;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_dazzling_dragonfly' WHERE `entry`=190362;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_flamecaller_aymi' WHERE `entry`=190368;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_primalist_galesinger' WHERE `entry`=190373;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_primalist_ravager' WHERE `entry`=190348;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_primalist_shocktrooper' WHERE `entry`=199037;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_refti_defender' WHERE `entry`=190340;
UPDATE `creature_template` SET `ScriptName`='npc_hoi_skulking_zealot' WHERE `entry`=190359;
@@ -0,0 +1,650 @@
DELETE FROM `achievement_reward` WHERE `ID` IN (4854,4855,4856);
INSERT INTO `achievement_reward` (`ID`, `TitleA`, `TitleH`, `ItemID`, `Sender`, `Subject`, `Body`, `MailTemplateID`) VALUES
(4854, 189, 189, 0, 0, '', '', 0),
(4855, 190, 190, 0, 0, '', '', 0),
(4856, 191, 191, 0, 0, '', '', 0);
UPDATE `quest_details` SET `Emote2`=0 WHERE `ID`=63140;
UPDATE `quest_details` SET `Emote2`=0 WHERE `ID`=62189;
DELETE FROM `world_quest_template` WHERE `QuestID` IN (65119 /*Automa Ops*/, 65089 /*Frog'it*/, 50296 /*Billy Goat Barber*/, 50984 /*Work Order: Winter's Kiss*/, 64977 /*Step Into the Ring*/, 59803 /*For Honor*/);
INSERT INTO `world_quest_template` (`QuestID`, `Duration`, `VariableID`, `Value`) VALUES
(65119, 86400, 21275, 1), -- Automa Ops
(65089, 86400, 21262, 1), -- Frog'it
(50296, 86400, 14730, 1), -- Billy Goat Barber
(50984, 86400, 15917, 4), -- Work Order: Winter's Kiss
(64977, 86400, 21352, 1), -- Step Into the Ring
(59803, 21600, 19106, 1); -- For Honor
UPDATE `world_quest_template` SET `VariableID`=14243 WHERE `QuestID`=49098; -- Invasion Point: Cen'gar
UPDATE `world_quest_template` SET `VariableID`=14063 WHERE `QuestID`=49099; -- Invasion Point: Bonich
UPDATE `world_quest_template` SET `VariableID`=14065 WHERE `QuestID`=49097; -- Invasion Point: Sangua
UPDATE `world_quest_template` SET `VariableID`=14247 WHERE `QuestID`=49096; -- Invasion Point: Naigtal
DELETE FROM `spell_target_position` WHERE (`ID`=324558 AND `EffectIndex`=0 AND `OrderIndex`=0);
INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `OrderIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `VerifiedBuild`) VALUES
(324558, 0, 0, 2222, -2487.56005859375, 7664.080078125, 3985.5, 69814); -- Spell: 324558 (Teleport to Mad Duke's Parlor [DNT]) Effect 0: 252 (SPELL_EFFECT_TELEPORT_UNITS)
REPLACE INTO `spell_target_position` (`ID`, `EffectIndex`, `OrderIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `VerifiedBuild`) VALUES
(318374, 0, 0, 2222, -1754.328125, 6351.6552734375, 4216.50341796875, 69814), -- Spell: 318374 (Missile: Summon Manifestation (Flavor) [DNT]) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 0, 2222, 4587.39892578125, 7218.42578125, 4860.50732421875, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 1, 2222, 4506.5849609375, 7196.89404296875, 4866.75146484375, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 2, 2222, 4516.35009765625, 7210.50244140625, 4865.6533203125, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 3, 2222, 4527.8154296875, 7200.01806640625, 4865.08740234375, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 4, 2222, 4504.412109375, 7197.916015625, 4866.9453125, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 5, 2222, 4538.1533203125, 7197.71728515625, 4864.71875, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 6, 2222, 4586.8291015625, 7225.31396484375, 4860.5908203125, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 7, 2222, 4532.16357421875, 7187.44873046875, 4866.7587890625, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 8, 2222, 4542.822265625, 7216.03955078125, 4861.974609375, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 9, 2222, 4569.55615234375, 7231.2451171875, 4861.265625, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 10, 2222, 4515.08544921875, 7198.4501953125, 4866.5068359375, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 11, 2222, 4519.59375, 7201.861328125, 4865.87255859375, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 12, 2222, 4544.90283203125, 7181.04150390625, 4867.1494140625, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 13, 2222, 4528.06396484375, 7188.29345703125, 4865.8916015625, 69814), -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(346210, 0, 14, 2222, 4529.3740234375, 7210.36083984375, 4863.67578125, 69814); -- Spell: 346210 (Molten Eruption) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
UPDATE `creature_model_info` SET `BoundingRadius`=3.647588253021240234, `CombatReach`=3 WHERE `DisplayID`=97086;
UPDATE `creature_model_info` SET `BoundingRadius`=0.631452798843383789, `CombatReach`=1.5 WHERE `DisplayID`=98542;
UPDATE `creature_model_info` SET `BoundingRadius`=2.083333253860473632 WHERE `DisplayID`=93398;
UPDATE `creature_model_info` SET `BoundingRadius`=1.771305322647094726, `CombatReach`=2.222222328186035156 WHERE `DisplayID`=98203;
UPDATE `creature_model_info` SET `BoundingRadius`=2.317917585372924804, `CombatReach`=1.5 WHERE `DisplayID`=94409;
UPDATE `creature_model_info` SET `BoundingRadius`=5.102510452270507812, `CombatReach`=4.199999809265136718 WHERE `DisplayID`=92702;
UPDATE `creature_model_info` SET `BoundingRadius`=2.083333253860473632, `CombatReach`=5 WHERE `DisplayID`=96673;
UPDATE `creature_model_info` SET `BoundingRadius`=2.083333253860473632, `CombatReach`=1 WHERE `DisplayID` IN (96569, 96568);
UPDATE `creature_model_info` SET `BoundingRadius`=0.312619149684906005, `CombatReach`=0 WHERE `DisplayID`=94890;
UPDATE `creature_model_info` SET `BoundingRadius`=2.5, `CombatReach`=1.20000004768371582 WHERE `DisplayID`=94460;
UPDATE `creature_model_info` SET `BoundingRadius`=1.036973834037780761, `CombatReach`=2.20000004768371582 WHERE `DisplayID`=93161;
DELETE FROM `creature_template_spell` WHERE (`CreatureID`=166551 AND `Index`=3);
INSERT INTO `creature_template_spell` (`CreatureID`, `Index`, `Spell`, `VerifiedBuild`) VALUES
(166551, 3, 324651, 69814); -- Outcast Venthyr
UPDATE `creature_template_spell` SET `Spell`=324669 WHERE (`CreatureID`=166551 AND `Index`=2);
UPDATE `creature_template_spell` SET `Spell`=324666 WHERE (`CreatureID`=166551 AND `Index`=1);
UPDATE `creature_template_spell` SET `Spell`=324657 WHERE (`CreatureID`=166551 AND `Index`=0);
DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=170291 AND `MenuID`=25910);
INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES
(170291, 25910, 69814); -- Alchemist Leticia
REPLACE INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES
(158653, 1, 0, 0, 0, 0, 0, 0, 0, 206579, 0, 0, 0, 0, 0, 0, 0, 69814); -- 158653 (Prince Renathal)
REPLACE INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES
(25001, 158653, 69814); -- 158653 (Prince Renathal)
DELETE FROM `gossip_menu` WHERE (`MenuID`=25910 AND `TextID`=41065);
INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES
(25910, 41065, 69814); -- 170291 (Alchemist Leticia)
DELETE FROM `gossip_menu_option` WHERE (`MenuID`=25910 AND `OptionID`=0);
INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES
(25910, 53005, 0, 0, 'I am ready.', 35320, 0, 0, 0, 0, NULL, 0, 0, '', 0, NULL, NULL, 69814); -- OptionBroadcastTextID: 35320 - 35539 - 39152 - 52091 - 52966 - 68157 - 72264 - 98694 - 101165 - 102817 - 104314 - 105294 - 105455 - 105611 - 106714 - 107434 - 108067 - 110410 - 114311 - 115011 - 120845 - 120867 - 120960 - 122483 - 129525 - 130105 - 130536 - 132934 - 134034 - 136601 - 144577 - 152299 - 152826 - 162165 - 163727 - 163987 - 165913 - 169003
DELETE FROM `quest_details` WHERE `ID`=31780;
INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES
(31780, 1, 0, 0, 0, 0, 0, 0, 0, 67602); -- Old MacDonald
DELETE FROM `world_quest_template` WHERE `QuestID` IN (46021 /*Thel'draz*/, 46017 /*Shel'drozul*/);
INSERT INTO `world_quest_template` (`QuestID`, `Duration`, `VariableID`, `Value`) VALUES
(46021, 21600, 13084, 1), -- Thel'draz
(46017, 21600, 13083, 1); -- Shel'drozul
UPDATE `world_quest_template` SET `VariableID`=14062 WHERE `QuestID`=49091; -- Invasion Point: Val
DELETE FROM `creature_equip_template` WHERE (`CreatureID`=7865 AND `ID`=2);
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `AppearanceModID1`, `ItemVisual1`, `ItemID2`, `AppearanceModID2`, `ItemVisual2`, `ItemID3`, `AppearanceModID3`, `ItemVisual3`, `VerifiedBuild`) VALUES
(7865, 2, 2703, 0, 0, 1984, 0, 0, 5260, 0, 0, 68974); -- Wildhammer Sentry
DELETE FROM `ui_map_quest_line` WHERE (`UIMapId`=26 AND `QuestLineId` IN (5934,5751,5750));
INSERT INTO `ui_map_quest_line` (`UIMapId`, `QuestLineId`, `VerifiedBuild`) VALUES
(26, 5934, 68974),
(26, 5751, 68974),
(26, 5750, 68974);
DELETE FROM `creature_template_spell` WHERE (`CreatureID`=26125 AND `Index` IN (6,5,4));
INSERT INTO `creature_template_spell` (`CreatureID`, `Index`, `Spell`, `VerifiedBuild`) VALUES
(26125, 6, 47484, 68974), -- Risen Ghoul
(26125, 5, 47482, 68974), -- Risen Ghoul
(26125, 4, 47481, 68974); -- Risen Ghoul
DELETE FROM `gameobject_template_addon` WHERE `entry` IN (576094 /*[DNT] Niffen Ivy Fence 00*/, 613456 /*[DNT] Niffen Wheelbarrow 01 - Giant*/, 605203 /*[DNT] Niffen Rug 01 - Large*/, 574982 /*[DNT] Niffen Wheelbarrow 01*/, 618922 /*[DNT] Niffen Center Plant - Founder's Point*/, 574974 /*[DNT] Niffen Stall 02*/, 574951 /*[DNT] Niffen Hive 00*/, 574970 /*[DNT] Niffen Centerpiece*/, 574976 /*[DNT] Niffen Wagon*/, 576097 /*[DNT] Niffen Ivy Fence 02*/, 574973 /*[DNT] Niffen Stall 01*/, 619071 /*[DNT] Niffen Crate Stack 03*/, 601312 /*[DNT] Niffen Wheelbarrow 01 - Huge*/, 588841 /*[DNT] Niffen Wheelbarrow 01 - Large*/, 619069 /*[DNT] Niffen Crate Stack 01*/, 619070 /*[DNT] Niffen Crate Stack 02*/, 605202 /*[DNT] Niffen Rug 01*/, 574978 /*[DNT] Niffen Table 01*/, 574977 /*[DNT] Niffen Table 00*/, 581989 /*House - Plot 2*/, 582107 /*House - Plot 46*/, 581978 /*House - Plot 20*/, 581979 /*House - Plot 33*/, 582105 /*House - Plot 44*/, 581976 /*House - Plot 15*/, 582110 /*House - Plot 47*/, 581977 /*House - Plot 8*/, 581982 /*House - Plot 10*/, 581983 /*House - Plot 18*/, 582109 /*House - Plot 51*/, 581980 /*House - Plot 17*/, 581981 /*House - Plot 6*/, 581974 /*House - Plot 22*/, 581975 /*House - Plot 16*/, 582025 /*House - Plot 30*/, 582019 /*House - Plot 1*/, 582022 /*House - Plot 13*/, 581958 /*House - Plot 43*/, 582023 /*House - Plot 37*/, 582138 /*House - Plot 23*/, 582136 /*House - Plot 32*/, 582137 /*House - Plot 9*/, 582009 /*House - Plot 53*/, 582012 /*House - Plot 48*/, 582130 /*House - Plot 31*/, 582013 /*House - Plot 26*/, 582131 /*House - Plot 27*/, 581938 /*House - Plot 19*/, 582129 /*House - Plot 7*/, 581939 /*House - Plot 28*/, 582134 /*House - Plot 3*/, 582135 /*House - Plot 42*/, 581937 /*House - Plot 29*/, 582132 /*House - Plot 34*/, 582133 /*House - Plot 52*/, 581940 /*House - Plot 4*/, 581941 /*House - Plot 24*/, 581994 /*House - Plot 49*/, 581992 /*House - Plot 54*/, 582127 /*House - Plot 45*/, 582115 /*House - Plot 50*/, 581986 /*House - Plot 21*/, 582112 /*House - Plot 39*/, 581984 /*House - Plot 0*/, 581985 /*House - Plot 38*/, 581991 /*House - Plot 11*/);
INSERT INTO `gameobject_template_addon` (`entry`, `faction`, `flags`, `WorldEffectID`, `AIAnimKitID`) VALUES
(576094, 0, 0x20, 0, 0), -- [DNT] Niffen Ivy Fence 00
(613456, 0, 0x20, 0, 0), -- [DNT] Niffen Wheelbarrow 01 - Giant
(605203, 0, 0x20, 0, 0), -- [DNT] Niffen Rug 01 - Large
(574982, 0, 0x20, 0, 0), -- [DNT] Niffen Wheelbarrow 01
(618922, 0, 0x20, 0, 0), -- [DNT] Niffen Center Plant - Founder's Point
(574974, 0, 0x20, 0, 0), -- [DNT] Niffen Stall 02
(574951, 0, 0x20, 0, 0), -- [DNT] Niffen Hive 00
(574970, 0, 0x20, 0, 0), -- [DNT] Niffen Centerpiece
(574976, 0, 0x20, 0, 0), -- [DNT] Niffen Wagon
(576097, 0, 0x20, 0, 0), -- [DNT] Niffen Ivy Fence 02
(574973, 0, 0x20, 0, 0), -- [DNT] Niffen Stall 01
(619071, 0, 0x20, 0, 0), -- [DNT] Niffen Crate Stack 03
(601312, 0, 0x20, 0, 0), -- [DNT] Niffen Wheelbarrow 01 - Huge
(588841, 0, 0x20, 0, 0), -- [DNT] Niffen Wheelbarrow 01 - Large
(619069, 0, 0x20, 0, 0), -- [DNT] Niffen Crate Stack 01
(619070, 0, 0x20, 0, 0), -- [DNT] Niffen Crate Stack 02
(605202, 0, 0x20, 0, 0), -- [DNT] Niffen Rug 01
(574978, 0, 0x20, 0, 0), -- [DNT] Niffen Table 01
(574977, 0, 0x20, 0, 0), -- [DNT] Niffen Table 00
(581989, 0, 0x100020, 0, 0), -- House - Plot 2
(582107, 0, 0x100020, 0, 0), -- House - Plot 46
(581978, 0, 0x100020, 0, 0), -- House - Plot 20
(581979, 0, 0x100020, 0, 0), -- House - Plot 33
(582105, 0, 0x100020, 0, 0), -- House - Plot 44
(581976, 0, 0x100020, 0, 0), -- House - Plot 15
(582110, 0, 0x100020, 0, 0), -- House - Plot 47
(581977, 0, 0x100020, 0, 0), -- House - Plot 8
(581982, 0, 0x100020, 0, 0), -- House - Plot 10
(581983, 0, 0x100020, 0, 0), -- House - Plot 18
(582109, 0, 0x100020, 0, 0), -- House - Plot 51
(581980, 0, 0x100020, 0, 0), -- House - Plot 17
(581981, 0, 0x100020, 0, 0), -- House - Plot 6
(581974, 0, 0x100020, 0, 0), -- House - Plot 22
(581975, 0, 0x100020, 0, 0), -- House - Plot 16
(582025, 0, 0x100020, 0, 0), -- House - Plot 30
(582019, 0, 0x100020, 0, 0), -- House - Plot 1
(582022, 0, 0x100020, 0, 0), -- House - Plot 13
(581958, 0, 0x100020, 0, 0), -- House - Plot 43
(582023, 0, 0x100020, 0, 0), -- House - Plot 37
(582138, 0, 0x100020, 0, 0), -- House - Plot 23
(582136, 0, 0x100020, 0, 0), -- House - Plot 32
(582137, 0, 0x100020, 0, 0), -- House - Plot 9
(582009, 0, 0x100020, 0, 0), -- House - Plot 53
(582012, 0, 0x100020, 0, 0), -- House - Plot 48
(582130, 0, 0x100020, 0, 0), -- House - Plot 31
(582013, 0, 0x100020, 0, 0), -- House - Plot 26
(582131, 0, 0x100020, 0, 0), -- House - Plot 27
(581938, 0, 0x100020, 0, 0), -- House - Plot 19
(582129, 0, 0x100020, 0, 0), -- House - Plot 7
(581939, 0, 0x100020, 0, 0), -- House - Plot 28
(582134, 0, 0x100020, 0, 0), -- House - Plot 3
(582135, 0, 0x100020, 0, 0), -- House - Plot 42
(581937, 0, 0x100020, 0, 0), -- House - Plot 29
(582132, 0, 0x100020, 0, 0), -- House - Plot 34
(582133, 0, 0x100020, 0, 0), -- House - Plot 52
(581940, 0, 0x100020, 0, 0), -- House - Plot 4
(581941, 0, 0x100020, 0, 0), -- House - Plot 24
(581994, 0, 0x100020, 0, 0), -- House - Plot 49
(581992, 0, 0x100020, 0, 0), -- House - Plot 54
(582127, 0, 0x100020, 0, 0), -- House - Plot 45
(582115, 0, 0x100020, 0, 0), -- House - Plot 50
(581986, 0, 0x100020, 0, 0), -- House - Plot 21
(582112, 0, 0x100020, 0, 0), -- House - Plot 39
(581984, 0, 0x100020, 0, 0), -- House - Plot 0
(581985, 0, 0x100020, 0, 0), -- House - Plot 38
(581991, 0, 0x100020, 0, 0); -- House - Plot 11
DELETE FROM `gameobject_template` WHERE `entry`=582016;
INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `IconName`, `castBarCaption`, `unk1`, `size`, `Data0`, `Data1`, `Data2`, `Data3`, `Data4`, `Data5`, `Data6`, `Data7`, `Data8`, `Data9`, `Data10`, `Data11`, `Data12`, `Data13`, `Data14`, `Data15`, `Data16`, `Data17`, `Data18`, `Data19`, `Data20`, `Data21`, `Data22`, `Data23`, `Data24`, `Data25`, `Data26`, `Data27`, `Data28`, `Data29`, `Data30`, `Data31`, `Data32`, `Data33`, `Data34`, `RequiredLevel`, `ContentTuningId`, `VerifiedBuild`) VALUES
(582016, 43, 109571, 'House - Plot 14', '', '', '', 1, -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, 68974); -- House - Plot 14
REPLACE INTO `spell_target_position` (`ID`, `EffectIndex`, `OrderIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `VerifiedBuild`) VALUES
(437980, 0, 0, 2648, 2794.330078125, -1611.4300537109375, 325.678009033203125, 69814), -- Spell: 437980 (Creating Storm [DNT]) Effect 0: 3 (SPELL_EFFECT_DUMMY)
(437980, 0, 1, 2648, 2797.81005859375, -1619.1300048828125, 326.8900146484375, 69814), -- Spell: 437980 (Creating Storm [DNT]) Effect 0: 3 (SPELL_EFFECT_DUMMY)
(437980, 0, 2, 2648, 2795.8798828125, -1605.3699951171875, 326.07000732421875, 69814), -- Spell: 437980 (Creating Storm [DNT]) Effect 0: 3 (SPELL_EFFECT_DUMMY)
(437980, 0, 3, 2648, 2805.8701171875, -1611.02001953125, 325.156005859375, 69814), -- Spell: 437980 (Creating Storm [DNT]) Effect 0: 3 (SPELL_EFFECT_DUMMY)
(441699, 0, 0, 2648, 2856.852294921875, -1606.46240234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 1, 2648, 2861.47021484375, -1600.7457275390625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 2, 2648, 2870.3955078125, -1601.0672607421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 3, 2648, 2869.712890625, -1604.416259765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 4, 2648, 2892.783935546875, -1599.6353759765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 5, 2648, 2892.5712890625, -1598.0133056640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 6, 2648, 2896.169921875, -1599.3587646484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 7, 2648, 2892.29931640625, -1597.7974853515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 8, 2648, 2854.705078125, -1599.52880859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 9, 2648, 2853.801513671875, -1602.464111328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 10, 2648, 2860.400146484375, -1601.7777099609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 11, 2648, 2891.8984375, -1598.6741943359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 12, 2648, 2879.200439453125, -1602.35400390625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 13, 2648, 2875.776611328125, -1599.2320556640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 14, 2648, 2876.608154296875, -1606.866943359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 15, 2648, 2891.17333984375, -1598.28759765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 16, 2648, 2856.351806640625, -1606.2882080078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 17, 2648, 2874.392822265625, -1599.5994873046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 18, 2648, 2891.798095703125, -1605.958251953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 19, 2648, 2895.993408203125, -1603.1865234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 20, 2648, 2858.52099609375, -1598.9107666015625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 21, 2648, 2856.897705078125, -1607.3135986328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 22, 2648, 2873.892578125, -1599.4072265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 23, 2648, 2889.44775390625, -1604.104736328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 24, 2648, 2877.814208984375, -1602.514892578125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 25, 2648, 2869.80126953125, -1601.663818359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 26, 2648, 2887.926513671875, -1600.7349853515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 27, 2648, 2853.359130859375, -1603.8983154296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 28, 2648, 2858.454833984375, -1607.8946533203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 29, 2648, 2871.483154296875, -1601.3984375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 30, 2648, 2889.7177734375, -1600.8682861328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 31, 2648, 2854.12744140625, -1602.3048095703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 32, 2648, 2871.7529296875, -1607.2147216796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 33, 2648, 2895.66259765625, -1604.439453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 34, 2648, 2873.94482421875, -1598.3443603515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 35, 2648, 2861.90478515625, -1603.336669921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 36, 2648, 2861.60009765625, -1604.0093994140625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 37, 2648, 2856.18359375, -1606.219482421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 38, 2648, 2855.4365234375, -1601.024658203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 39, 2648, 2877.8818359375, -1606.4857177734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 40, 2648, 2870.04150390625, -1603.9932861328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 41, 2648, 2878.891357421875, -1604.7373046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 42, 2648, 2871.199951171875, -1603.645751953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 43, 2648, 2895.18701171875, -1599.2476806640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 44, 2648, 2853.037353515625, -1602.0426025390625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 45, 2648, 2854.824951171875, -1601.814208984375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 46, 2648, 2894.3330078125, -1598.1925048828125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 47, 2648, 2862.24755859375, -1604.3902587890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 48, 2648, 2860.576904296875, -1601.744140625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 49, 2648, 2872.350830078125, -1605.9385986328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 50, 2648, 2853.984375, -1604.951904296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 51, 2648, 2874.626220703125, -1599.53515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 52, 2648, 2861.2216796875, -1601.0595703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 53, 2648, 2878.39794921875, -1601.8646240234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 54, 2648, 2870.08984375, -1600.8294677734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 55, 2648, 2888.306640625, -1602.37060546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 56, 2648, 2861.215087890625, -1605.89599609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 57, 2648, 2878.62548828125, -1604.884765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 58, 2648, 2878.973876953125, -1604.2900390625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 59, 2648, 2870.775390625, -1606.0924072265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 60, 2648, 2854.261962890625, -1600.2332763671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 61, 2648, 2897.251708984375, -1601.069580078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 62, 2648, 2856.44970703125, -1606.770263671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 63, 2648, 2876.663330078125, -1606.719482421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 64, 2648, 2857.496337890625, -1607.114990234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 65, 2648, 2877.99853515625, -1604.6611328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 66, 2648, 2872.955810546875, -1607.701904296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 67, 2648, 2860.72021484375, -1599.855712890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 68, 2648, 2859.6708984375, -1607.1483154296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 69, 2648, 2887.89599609375, -1602.3065185546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 70, 2648, 2893.79736328125, -1599.1815185546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 71, 2648, 2891.00732421875, -1606.28857421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 72, 2648, 2889.67333984375, -1603.8135986328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 73, 2648, 2857.790771484375, -1606.5106201171875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 74, 2648, 2875.44921875, -1607.1326904296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 75, 2648, 2873.151123046875, -1599.6334228515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 76, 2648, 2852.80029296875, -1604.7352294921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 77, 2648, 2860.645263671875, -1600.1591796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 78, 2648, 2888.54296875, -1604.6197509765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 79, 2648, 2890.587158203125, -1599.8931884765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 80, 2648, 2857.8916015625, -1598.470947265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 81, 2648, 2871.17724609375, -1599.606201171875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 82, 2648, 2878.009033203125, -1605.1484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 83, 2648, 2857.556884765625, -1600.287109375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 84, 2648, 2871.083740234375, -1605.77490234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 85, 2648, 2856.932861328125, -1608.280029296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 86, 2648, 2894.693359375, -1604.9158935546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 87, 2648, 2876.578125, -1600.26123046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 88, 2648, 2873.5634765625, -1598.8240966796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 89, 2648, 2876.771240234375, -1605.205322265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 90, 2648, 2891.47900390625, -1598.22265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 91, 2648, 2888.773681640625, -1600.990478515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 92, 2648, 2858.7021484375, -1598.9259033203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 93, 2648, 2890.539794921875, -1606.27001953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 94, 2648, 2878.233642578125, -1605.4901123046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 95, 2648, 2895.554443359375, -1604.5633544921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 96, 2648, 2889.094482421875, -1599.757568359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 97, 2648, 2853.66845703125, -1605.105712890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 98, 2648, 2859.65380859375, -1606.9439697265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 99, 2648, 2890.722900390625, -1607.0242919921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 100, 2648, 2888.646484375, -1602.3367919921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 101, 2648, 2878.10009765625, -1606.181884765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 102, 2648, 2870.9892578125, -1606.48828125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 103, 2648, 2897.126708984375, -1604.2496337890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 104, 2648, 2893.42529296875, -1605.5718994140625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 105, 2648, 2891.04052734375, -1599.2291259765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 106, 2648, 2892.349853515625, -1605.7086181640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 107, 2648, 2869.80322265625, -1604.837890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 108, 2648, 2870.973388671875, -1600.1583251953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 109, 2648, 2857.70849609375, -1598.898193359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 110, 2648, 2854.222412109375, -1603.56982421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 111, 2648, 2852.62109375, -1603.18359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 112, 2648, 2891.166015625, -1606.3770751953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 113, 2648, 2897.3408203125, -1601.404541015625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 114, 2648, 2877.9951171875, -1604.41162109375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 115, 2648, 2858.404296875, -1607.5030517578125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 116, 2648, 2852.825439453125, -1603.093017578125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 117, 2648, 2852.736328125, -1604.294921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 118, 2648, 2892.106201171875, -1605.792724609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 119, 2648, 2889.80078125, -1599.1849365234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 120, 2648, 2877.041259765625, -1607.0111083984375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 121, 2648, 2855.046630859375, -1601.1929931640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 122, 2648, 2894.36767578125, -1599.8114013671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 123, 2648, 2893.535400390625, -1599.6246337890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 124, 2648, 2872.898681640625, -1606.4447021484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 125, 2648, 2889.736083984375, -1601.34765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 126, 2648, 2870.416748046875, -1600.5037841796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 127, 2648, 2878.560546875, -1603.1197509765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 128, 2648, 2870.225341796875, -1603.45556640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 129, 2648, 2890.3798828125, -1599.0750732421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 130, 2648, 2888.24560546875, -1604.535400390625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 131, 2648, 2861.43603515625, -1600.52099609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 132, 2648, 2878.410400390625, -1605.433837890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 133, 2648, 2890.362548828125, -1606.497802734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 134, 2648, 2856.57080078125, -1600.1334228515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 135, 2648, 2870.04248046875, -1601.5472412109375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 136, 2648, 2889.716064453125, -1604.3673095703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 137, 2648, 2891.027099609375, -1598.3681640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 138, 2648, 2877.65380859375, -1600.9498291015625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 139, 2648, 2860.9912109375, -1601.7208251953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 140, 2648, 2894.479248046875, -1607.001220703125, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 141, 2648, 2896.935546875, -1602.221435546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 142, 2648, 2857.348388671875, -1607.2171630859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 143, 2648, 2860.078125, -1607.3203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 144, 2648, 2874.871337890625, -1606.55029296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 145, 2648, 2870.770751953125, -1601.1236572265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 146, 2648, 2888.5732421875, -1604.5692138671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 147, 2648, 2855.74267578125, -1607.59716796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 148, 2648, 2861.12353515625, -1602.5966796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 149, 2648, 2888.310791015625, -1602.188720703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 150, 2648, 2860.304931640625, -1602.4862060546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 151, 2648, 2891.276123046875, -1605.9512939453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 152, 2648, 2888.317138671875, -1602.50830078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 153, 2648, 2857.230224609375, -1599.2144775390625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 154, 2648, 2871.338134765625, -1604.4248046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 155, 2648, 2895.663330078125, -1601.678955078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 156, 2648, 2861.103271484375, -1600.934326171875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 157, 2648, 2858.32373046875, -1600.521240234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 158, 2648, 2858.676025390625, -1606.6009521484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 159, 2648, 2895.171630859375, -1604.7125244140625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 160, 2648, 2870.971923828125, -1599.9063720703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 161, 2648, 2854.642578125, -1606.374755859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 162, 2648, 2888.803466796875, -1602.9569091796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 163, 2648, 2893.182861328125, -1606.7430419921875, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 164, 2648, 2853.56787109375, -1600.4764404296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 165, 2648, 2874.64404296875, -1607.722900390625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 166, 2648, 2888.210693359375, -1602.728515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 167, 2648, 2854.225341796875, -1605.513671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 168, 2648, 2860.69580078125, -1606.1513671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 169, 2648, 2873.887939453125, -1606.164306640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 170, 2648, 2853.250244140625, -1604.437744140625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 171, 2648, 2892.139404296875, -1606.71240234375, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 172, 2648, 2896.3046875, -1600.76318359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 173, 2648, 2891.4765625, -1605.843994140625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 174, 2648, 2870.976318359375, -1603.7789306640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 175, 2648, 2878.5068359375, -1601.6365966796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 176, 2648, 2877.04833984375, -1600.3349609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 177, 2648, 2894.87451171875, -1604.9593505859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 178, 2648, 2887.75341796875, -1601.5152587890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 179, 2648, 2855.000244140625, -1605.2371826171875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 180, 2648, 2860.33349609375, -1604.553955078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 181, 2648, 2878.050048828125, -1604.16552734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 182, 2648, 2888.240234375, -1603.9886474609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 183, 2648, 2861.054931640625, -1606.1219482421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 184, 2648, 2876.5810546875, -1604.9921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 185, 2648, 2892.2109375, -1598.43896484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 186, 2648, 2854.584716796875, -1607.5052490234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 187, 2648, 2856.003662109375, -1606.102294921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 188, 2648, 2872.59912109375, -1598.5462646484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 189, 2648, 2860.705322265625, -1605.2083740234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 190, 2648, 2870.11865234375, -1604.1031494140625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 191, 2648, 2888.302734375, -1600.9700927734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 192, 2648, 2890.75732421875, -1599.1883544921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 193, 2648, 2891.0927734375, -1599.1043701171875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 194, 2648, 2855.97998046875, -1600.5892333984375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 195, 2648, 2895.691162109375, -1605.3099365234375, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 196, 2648, 2870.9404296875, -1603.1229248046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 197, 2648, 2892.283447265625, -1599.021728515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 198, 2648, 2893.12890625, -1607.1812744140625, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 199, 2648, 2897.093017578125, -1602.3564453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 200, 2648, 2874.3359375, -1607.3720703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 201, 2648, 2861.71923828125, -1602.8499755859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 202, 2648, 2873.361328125, -1599.5169677734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 203, 2648, 2871.236572265625, -1601.6842041015625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 204, 2648, 2874.345947265625, -1598.726318359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 205, 2648, 2893.099853515625, -1606.4259033203125, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 206, 2648, 2889.630126953125, -1604.50732421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 207, 2648, 2860.191162109375, -1601.7391357421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 208, 2648, 2895.86572265625, -1605.2166748046875, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 209, 2648, 2853.158935546875, -1604.3740234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 210, 2648, 2895.397216796875, -1600.9974365234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 211, 2648, 2888.44873046875, -1604.8074951171875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 212, 2648, 2860.7666015625, -1603.6446533203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 213, 2648, 2876.635009765625, -1598.840576171875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 214, 2648, 2875.722900390625, -1606.4913330078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 215, 2648, 2853.448974609375, -1606.05859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 216, 2648, 2878.5166015625, -1603.8021240234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 217, 2648, 2877.50439453125, -1599.5943603515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 218, 2648, 2895.578369140625, -1601.3936767578125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 219, 2648, 2894.158203125, -1599.3701171875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 220, 2648, 2871.47900390625, -1599.083251953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 221, 2648, 2853.671875, -1604.9163818359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 222, 2648, 2871.31787109375, -1602.9710693359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 223, 2648, 2873.710205078125, -1607.3197021484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 224, 2648, 2889.775634765625, -1598.581787109375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 225, 2648, 2861.24951171875, -1606.2005615234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 226, 2648, 2893.401123046875, -1606.8486328125, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 227, 2648, 2856.581298828125, -1600.1256103515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 228, 2648, 2861.25048828125, -1604.2659912109375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 229, 2648, 2853.049072265625, -1602.601318359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 230, 2648, 2860.0771484375, -1605.5421142578125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 231, 2648, 2854.16748046875, -1601.9630126953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 232, 2648, 2859.868896484375, -1607.6944580078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 233, 2648, 2877.7587890625, -1599.363525390625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 234, 2648, 2854.836669921875, -1606.943359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 235, 2648, 2854.625732421875, -1601.1112060546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 236, 2648, 2876.140869140625, -1598.37890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 237, 2648, 2870.54541015625, -1605.6318359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 238, 2648, 2853.694580078125, -1604.849609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 239, 2648, 2888.579345703125, -1600.00927734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 240, 2648, 2897.0302734375, -1602.8436279296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 241, 2648, 2875.095703125, -1599.7279052734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 242, 2648, 2876.06982421875, -1606.4044189453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 243, 2648, 2861.030517578125, -1606.041259765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 244, 2648, 2895.369140625, -1604.35400390625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 245, 2648, 2895.081787109375, -1599.3992919921875, 137.196868896484375, 69814); -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
REPLACE INTO `spell_target_position` (`ID`, `EffectIndex`, `OrderIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `VerifiedBuild`) VALUES
(441699, 0, 246, 2648, 2895.39013671875, -1604.3798828125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 247, 2648, 2876.567626953125, -1606.844482421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 248, 2648, 2861.80859375, -1603.802978515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 249, 2648, 2854.20263671875, -1605.009521484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 250, 2648, 2874.397216796875, -1606.43798828125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 251, 2648, 2876.702880859375, -1605.8321533203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 252, 2648, 2871.359619140625, -1602.270751953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 253, 2648, 2892.977783203125, -1598.478759765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 254, 2648, 2870.616943359375, -1600.976806640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 255, 2648, 2877.296875, -1601.361572265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 256, 2648, 2859.271728515625, -1599.283447265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 257, 2648, 2858.611328125, -1599.5191650390625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 258, 2648, 2888.252685546875, -1602.0267333984375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 259, 2648, 2890.052001953125, -1598.341796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 260, 2648, 2876.19189453125, -1605.857177734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 261, 2648, 2892.65380859375, -1607.574951171875, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 262, 2648, 2893.8828125, -1607.3450927734375, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 263, 2648, 2860.310302734375, -1601.250244140625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 264, 2648, 2854.081298828125, -1604.7481689453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 265, 2648, 2876.1630859375, -1605.93603515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 266, 2648, 2874.821533203125, -1606.6702880859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 267, 2648, 2858.332275390625, -1607.530517578125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 268, 2648, 2857.37890625, -1599.966064453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 269, 2648, 2856.91064453125, -1598.6397705078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 270, 2648, 2858.472412109375, -1607.1058349609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 271, 2648, 2891.90234375, -1598.339111328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 272, 2648, 2858.088134765625, -1600.338623046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 273, 2648, 2896.6064453125, -1604.82275390625, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 274, 2648, 2853.859619140625, -1606.0380859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 275, 2648, 2871.99560546875, -1599.467041015625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 276, 2648, 2853.513427734375, -1604.304931640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 277, 2648, 2878.054931640625, -1606.29833984375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 278, 2648, 2856.39306640625, -1600.32763671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 279, 2648, 2856.774658203125, -1598.9326171875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 280, 2648, 2861.96630859375, -1601.9010009765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 281, 2648, 2876.477783203125, -1605.51513671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 282, 2648, 2893.097412109375, -1606.272705078125, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 283, 2648, 2874.389404296875, -1598.788330078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 284, 2648, 2896.481201171875, -1603.990966796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 285, 2648, 2853.871337890625, -1600.7420654296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 286, 2648, 2895.6953125, -1603.07421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 287, 2648, 2875.0234375, -1599.2205810546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 288, 2648, 2891.405517578125, -1606.208251953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 289, 2648, 2888.4296875, -1605.212646484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 290, 2648, 2870.694091796875, -1600.1995849609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 291, 2648, 2871.623779296875, -1600.2979736328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 292, 2648, 2873.606201171875, -1606.8131103515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 293, 2648, 2894.162353515625, -1605.982666015625, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 294, 2648, 2878.477783203125, -1601.995849609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 295, 2648, 2861.558837890625, -1604.456298828125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 296, 2648, 2869.853271484375, -1604.378173828125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 297, 2648, 2869.6337890625, -1602.5701904296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 298, 2648, 2874.1455078125, -1606.27685546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 299, 2648, 2876.91748046875, -1606.2491455078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 300, 2648, 2855.4609375, -1599.2108154296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 301, 2648, 2889.27685546875, -1602.9405517578125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 302, 2648, 2894.726806640625, -1600.4964599609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 303, 2648, 2861.110107421875, -1602.557373046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 304, 2648, 2861.93115234375, -1602.8729248046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 305, 2648, 2877.84033203125, -1603.236083984375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 306, 2648, 2895.97314453125, -1601.5213623046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 307, 2648, 2861.221923828125, -1603.21435546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 308, 2648, 2857.508544921875, -1598.499755859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 309, 2648, 2853.092041015625, -1603.285888671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 310, 2648, 2891.258056640625, -1598.4525146484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 311, 2648, 2878.3037109375, -1600.5086669921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 312, 2648, 2892.5595703125, -1606.284912109375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 313, 2648, 2888.970947265625, -1601.2340087890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 314, 2648, 2857.91943359375, -1606.9813232421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 315, 2648, 2878.376220703125, -1600.2708740234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 316, 2648, 2877.48681640625, -1605.5518798828125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 317, 2648, 2893.352294921875, -1606.0062255859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 318, 2648, 2895.994384765625, -1602.84375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 319, 2648, 2874.419189453125, -1598.8511962890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 320, 2648, 2893.349365234375, -1598.774169921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 321, 2648, 2854.5263671875, -1606.98046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 322, 2648, 2854.87060546875, -1605.58203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 323, 2648, 2891.271240234375, -1598.77294921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 324, 2648, 2896.261474609375, -1599.7498779296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 325, 2648, 2876.966064453125, -1605.3929443359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 326, 2648, 2877.603515625, -1605.5631103515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 327, 2648, 2859.531005859375, -1606.5294189453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 328, 2648, 2871.4208984375, -1599.344970703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 329, 2648, 2889.750732421875, -1606.08740234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 330, 2648, 2876.686767578125, -1599.8763427734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 331, 2648, 2896.7978515625, -1601.564697265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 332, 2648, 2888.971435546875, -1599.8548583984375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 333, 2648, 2856.1328125, -1599.69287109375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 334, 2648, 2894.107421875, -1606.1917724609375, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 335, 2648, 2854.47802734375, -1600.39697265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 336, 2648, 2893.482666015625, -1605.9368896484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 337, 2648, 2875.16259765625, -1606.135498046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 338, 2648, 2859.768310546875, -1606.804443359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 339, 2648, 2888.521484375, -1603.2811279296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 340, 2648, 2853.4462890625, -1601.7581787109375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 341, 2648, 2858.235595703125, -1606.939453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 342, 2648, 2895.084228515625, -1600.7574462890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 343, 2648, 2897.21044921875, -1603.2640380859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 344, 2648, 2857.676513671875, -1608.1768798828125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 345, 2648, 2856.224365234375, -1600.5308837890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 346, 2648, 2871.27294921875, -1601.0450439453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 347, 2648, 2872.942138671875, -1606.6190185546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 348, 2648, 2854.99169921875, -1605.1661376953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 349, 2648, 2874.56494140625, -1599.5950927734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 350, 2648, 2855.7978515625, -1606.442626953125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 351, 2648, 2888.95654296875, -1601.5355224609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 352, 2648, 2854.96533203125, -1600.9808349609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 353, 2648, 2889.625244140625, -1598.9681396484375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 354, 2648, 2891.18701171875, -1606.4437255859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 355, 2648, 2892.494384765625, -1597.9136962890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 356, 2648, 2893.68115234375, -1606.8780517578125, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 357, 2648, 2857.876953125, -1599.2808837890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 358, 2648, 2860.927490234375, -1603.234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 359, 2648, 2871.284912109375, -1601.916259765625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 360, 2648, 2879.05419921875, -1604.230712890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 361, 2648, 2854.71337890625, -1599.9935302734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 362, 2648, 2889.313232421875, -1603.312744140625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 363, 2648, 2895.685791015625, -1606.37548828125, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 364, 2648, 2890.025390625, -1600.74560546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 365, 2648, 2894.466796875, -1606.7841796875, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 366, 2648, 2891.708984375, -1599.446044921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 367, 2648, 2854.95263671875, -1600.6124267578125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 368, 2648, 2874.3232421875, -1599.3809814453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 369, 2648, 2895.50732421875, -1601.6326904296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 370, 2648, 2878.483642578125, -1602.398681640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 371, 2648, 2857.54345703125, -1599.483642578125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 372, 2648, 2870.09521484375, -1600.418701171875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 373, 2648, 2890.95556640625, -1599.3009033203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 374, 2648, 2855.826416015625, -1600.27490234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 375, 2648, 2857.65283203125, -1599.455810546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 376, 2648, 2853.825927734375, -1602.960205078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 377, 2648, 2877.539794921875, -1603.7489013671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 378, 2648, 2875.800537109375, -1599.8289794921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 379, 2648, 2888.45556640625, -1605.2618408203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 380, 2648, 2893.310791015625, -1599.6474609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 381, 2648, 2893.53076171875, -1598.0762939453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 382, 2648, 2870.158935546875, -1605.3333740234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 383, 2648, 2873.877685546875, -1599.1011962890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 384, 2648, 2861.53076171875, -1602.4393310546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 385, 2648, 2896.46240234375, -1600.1063232421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 386, 2648, 2894.392822265625, -1605.3616943359375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 387, 2648, 2894.12646484375, -1598.01123046875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 388, 2648, 2871.379150390625, -1599.39453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 389, 2648, 2856.998046875, -1606.6082763671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 390, 2648, 2855.71044921875, -1606.9542236328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 391, 2648, 2892.730224609375, -1597.9345703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 392, 2648, 2896.163818359375, -1599.4266357421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 393, 2648, 2870.1591796875, -1603.0997314453125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 394, 2648, 2888.568603515625, -1603.140380859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 395, 2648, 2889.50390625, -1605.074462890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 396, 2648, 2896.15625, -1602.5389404296875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 397, 2648, 2877.175537109375, -1605.14111328125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 398, 2648, 2853.691650390625, -1600.4334716796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 399, 2648, 2892.038818359375, -1598.977783203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 400, 2648, 2857.4736328125, -1599.9906005859375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 401, 2648, 2878.670166015625, -1604.476806640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 402, 2648, 2860.286865234375, -1604.693115234375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 403, 2648, 2878.822021484375, -1604.132080078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 404, 2648, 2876.478271484375, -1599.0474853515625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 405, 2648, 2874.6064453125, -1599.1446533203125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 406, 2648, 2855.9150390625, -1598.8560791015625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 407, 2648, 2871.033935546875, -1599.765869140625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 408, 2648, 2876.785400390625, -1605.6011962890625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 409, 2648, 2889.55615234375, -1599.3681640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 410, 2648, 2872.66015625, -1605.873291015625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 411, 2648, 2872.044921875, -1600.5556640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 412, 2648, 2896.8271484375, -1602.5081787109375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 413, 2648, 2877.181396484375, -1605.1004638671875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 414, 2648, 2873.803955078125, -1605.98095703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 415, 2648, 2858.419921875, -1600.017822265625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 416, 2648, 2855.55224609375, -1606.98583984375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 417, 2648, 2888.62646484375, -1599.8128662109375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 418, 2648, 2896.223876953125, -1601.8787841796875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 419, 2648, 2879.051025390625, -1601.5560302734375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 420, 2648, 2893.91650390625, -1607.24853515625, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 421, 2648, 2852.9423828125, -1604.323974609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 422, 2648, 2893.0166015625, -1606.9896240234375, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 423, 2648, 2895.900634765625, -1599.3167724609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 424, 2648, 2860.5205078125, -1600.8492431640625, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 425, 2648, 2890.427734375, -1598.501220703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 426, 2648, 2853.416748046875, -1603.7830810546875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 427, 2648, 2893.832275390625, -1597.98095703125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 428, 2648, 2875.344482421875, -1607.7039794921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 429, 2648, 2894.685302734375, -1606.220458984375, 137.1968536376953125, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 430, 2648, 2858.543701171875, -1606.44580078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 431, 2648, 2853.982421875, -1603.78857421875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 432, 2648, 2870.07958984375, -1600.8565673828125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 433, 2648, 2878.823486328125, -1601.27099609375, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 434, 2648, 2859.8662109375, -1605.9366455078125, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(441699, 0, 435, 2648, 2856.56689453125, -1599.2586669921875, 137.196868896484375, 69814), -- Spell: 441699 (Oppressive Void) Effect 0: 32 (SPELL_EFFECT_TRIGGER_MISSILE)
(461085, 0, 0, 2648, 2794.114501953125, -1614.888916015625, 289.369384765625, 69814), -- Spell: 461085 (Lightning Swirl) Effect 0: 3 (SPELL_EFFECT_DUMMY)
(461085, 0, 1, 2648, 2801.72998046875, -1604.1771240234375, 291.166473388671875, 69814), -- Spell: 461085 (Lightning Swirl) Effect 0: 3 (SPELL_EFFECT_DUMMY)
(461085, 0, 2, 2648, 2794.126708984375, -1606.845458984375, 289.189453125, 69814), -- Spell: 461085 (Lightning Swirl) Effect 0: 3 (SPELL_EFFECT_DUMMY)
(461085, 0, 3, 2648, 2801.423583984375, -1613.8385009765625, 291.304443359375, 69814), -- Spell: 461085 (Lightning Swirl) Effect 0: 3 (SPELL_EFFECT_DUMMY)
(461085, 0, 4, 2648, 2796.09814453125, -1622.3992919921875, 290.07208251953125, 69814); -- Spell: 461085 (Lightning Swirl) Effect 0: 3 (SPELL_EFFECT_DUMMY)
UPDATE `creature_template_model` SET `CreatureDisplayID`=11686 WHERE (`Idx`=1 AND `CreatureID` IN (217687,228803,220429,220414,221555,221554,221553,221556));
UPDATE `creature_template_model` SET `CreatureDisplayID`=27823 WHERE (`CreatureID`=172629 AND `Idx`=1);
@@ -0,0 +1,8 @@
-- DBErrors Fixes
DELETE FROM `gameobject_template_addon` WHERE `entry` IN (574951,574970,574973,574974,574976,574977,574978,574982,576094,576097,581937,581938,581939,581940,581941,581958,581974,581975,581976,581977,581978,581979,581980,581981,581982,581983,581984,581985,581986,581989,581991,581992,581994,582009,582012,582013,582019,582022,582023,582025,582105,582107,582109,582110,582112,582115,582127,582129,582130,582131,582132,582133,582134,582135,582136,582137,582138,588841,601312,605202,605203,613456,618922,619069,619070,619071);
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_kyrioss_stormheart','spell_dark_gravity_explosion','spell_crush_reality_effect','spell_crush_reality','spell_kyrioss_thunderbolt','spell_kyrioss_chain_lightning','spell_chaotic_corruption','spell_dark_gravity_periodic','spell_kyrioss_unstable_charge','spell_kyrioss_lightning_dash','spell_kyrioss_lightning_torrent','spell_kyrioss_lightning_torrent_effect','spell_kyrioss_unstable_charge_explosion');
UPDATE `instance_template` SET `script`='instance_priority_of_the_sacred_flame' WHERE `map`=2649;
UPDATE `creature_template` SET `ScriptName`='boss_captain_dailcry' WHERE `entry`=207946;
UPDATE `creature_template` SET `ScriptName`='boss_baron_braunpyke' WHERE `entry`=207939;
UPDATE `creature_template` SET `ScriptName`='boss_prioress_murrpray' WHERE `entry`=207940;
@@ -858,6 +858,34 @@ void CriteriaHandler::UpdateCriteria(Criteria const* criteria, uint64 miscValue1
break;
}
break;
case CriteriaType::CompleteResearchProject:
if (miscValue1) // event-driven: specific project completed
SetCriteriaProgress(criteria, 1, referencePlayer);
else // login case: recompute from completed-project history
{
std::unordered_set<uint32> const& completed = referencePlayer->GetCompletedResearchProjects();
SetCriteriaProgress(criteria, completed.count(uint32(criteria->Entry->Asset.ResearchProjectID)) ? 1 : 0, referencePlayer);
}
break;
case CriteriaType::CompleteAnyResearchProject:
if (miscValue2) // event-driven: miscValue2 is the research branch id, nonzero for a real completion
SetCriteriaProgress(criteria, 1, referencePlayer, PROGRESS_ACCUMULATE);
else // login case: recount only completed projects matching this criteria's modifier tree
{
uint32 count = 0;
for (uint32 projectId : referencePlayer->GetCompletedResearchProjects())
if (ResearchProjectEntry const* project = sResearchProjectStore.LookupEntry(projectId))
if (!criteria->Modifier || ModifierTreeSatisfied(criteria->Modifier, project->Rarity, project->ResearchBranchID, nullptr, referencePlayer))
++count;
SetCriteriaProgress(criteria, count, referencePlayer);
}
break;
case CriteriaType::FindResearchObject:
SetCriteriaProgress(criteria, 1, referencePlayer, PROGRESS_ACCUMULATE);
break;
case CriteriaType::ExhaustAnyResearchSite:
SetCriteriaProgress(criteria, 1, referencePlayer, PROGRESS_ACCUMULATE);
break;
// FIXME: not triggered in code as result, need to implement
case CriteriaType::RunInstance:
case CriteriaType::EarnTeamArenaRating:
@@ -873,7 +901,6 @@ void CriteriaHandler::UpdateCriteria(Criteria const* criteria, uint64 miscValue1
case CriteriaType::CompleteQuestsCountForGuild:
case CriteriaType::HonorableKillsForGuild:
case CriteriaType::KillAnyCreatureForGuild:
case CriteriaType::CompleteAnyResearchProject:
case CriteriaType::CompleteGuildChallenge:
case CriteriaType::CompleteAnyGuildChallenge:
case CriteriaType::CompletedLFRDungeon:
@@ -884,8 +911,6 @@ void CriteriaHandler::UpdateCriteria(Criteria const* criteria, uint64 miscValue1
case CriteriaType::GroupedTankLeftEarlyInLFRDungeon:
case CriteriaType::LearnToy:
case CriteriaType::LearnAnyToy:
case CriteriaType::FindResearchObject:
case CriteriaType::ExhaustAnyResearchSite:
case CriteriaType::CompleteInternalCriteria:
case CriteriaType::KilledAllUnitsInSpawnRegion:
case CriteriaType::CreatedItemsByCastingSpellWithLimit:
@@ -1303,6 +1328,10 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi
case CriteriaType::ReachRenownLevel:
case CriteriaType::BankTabPurchased:
case CriteriaType::LearnTaxiNode:
case CriteriaType::CompleteResearchProject:
case CriteriaType::CompleteAnyResearchProject:
case CriteriaType::FindResearchObject:
case CriteriaType::ExhaustAnyResearchSite:
return progress->Counter >= requiredAmount;
case CriteriaType::EarnAchievement:
case CriteriaType::CompleteQuest:
@@ -2203,8 +2232,16 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
if (referencePlayer->GetRBGPersonalRating() < reqValue)
return false;
break;
case ModifierTreeType::ResearchProjectRarity: // 65 NYI
case ModifierTreeType::ResearchProjectBranch: // 66 NYI
case ModifierTreeType::ResearchProjectRarity: // 65
// miscValue1 is the completed project's rarity
if (miscValue1 != reqValue)
return false;
break;
case ModifierTreeType::ResearchProjectBranch: // 66
// miscValue2 is the completed project's research branch id
if (miscValue2 != reqValue)
return false;
break;
return false;
case ModifierTreeType::WorldStateExpression: // 67
if (WorldStateExpressionEntry const* worldStateExpression = sWorldStateExpressionStore.LookupEntry(reqValue))
@@ -5011,6 +5048,7 @@ inline bool IsCriteriaTypeStoredByAsset(CriteriaType type)
{
case CriteriaType::KillCreature:
case CriteriaType::WinBattleground:
case CriteriaType::CompleteResearchProject:
case CriteriaType::SkillRaised:
case CriteriaType::EarnAchievement:
case CriteriaType::CompleteQuestsInZone:
@@ -5044,6 +5082,7 @@ inline bool IsCriteriaTypeStoredByAsset(CriteriaType type)
case CriteriaType::DefeatDungeonEncounter:
case CriteriaType::LearnToy:
case CriteriaType::LearnAnyTransmog:
case CriteriaType::FindResearchObject:
return true;
default:
break;
+44 -1
View File
@@ -96,7 +96,10 @@ char const* const ConditionMgr::StaticSourceTypeData[CONDITION_SOURCE_TYPE_MAX_D
"Spawn Group",
"Player Condition",
"Skill Line Ability",
"Player Choice Response"
"Player Choice Response",
"GameObject Interaction",
"Loot Item",
"Phase Zone"
};
ConditionMgr::ConditionTypeInfo const ConditionMgr::StaticConditionTypeData[CONDITION_MAX] =
@@ -1183,6 +1186,7 @@ bool ConditionMgr::CanHaveSourceGroupSet(ConditionSourceType sourceType)
sourceType == CONDITION_SOURCE_TYPE_REFERENCE_CONDITION ||
sourceType == CONDITION_SOURCE_TYPE_PLAYER_CHOICE_RESPONSE ||
sourceType == CONDITION_SOURCE_TYPE_LOOT_ITEM ||
sourceType == CONDITION_SOURCE_TYPE_PHASE_ZONE ||
sourceType == CONDITION_SOURCE_GAMEOBJECT_INTERACTION);//Phase Area
}
@@ -1327,6 +1331,11 @@ bool ConditionMgr::IsSpellUsedInSpellClickConditions(uint32 spellId) const
return SpellsUsedInSpellClickConditions.find(spellId) != SpellsUsedInSpellClickConditions.end();
}
bool ConditionMgr::HasPhaseZoneConditions() const
{
return _hasPhaseZoneConditions;
}
ConditionContainer const* ConditionMgr::GetConditionsForAreaTrigger(uint32 areaTriggerId, bool isServerSide) const
{
auto itr = ConditionStore[CONDITION_SOURCE_TYPE_AREATRIGGER].find({ areaTriggerId, isServerSide ? 1 : 0, 0 });
@@ -1424,6 +1433,9 @@ void ConditionMgr::LoadConditions(bool isReload)
if (iSourceTypeOrReferenceId >= 0)
cond.SourceType = ConditionSourceType(iSourceTypeOrReferenceId);
if (iSourceTypeOrReferenceId == CONDITION_SOURCE_TYPE_PHASE_ZONE)
_hasPhaseZoneConditions = true;
if (iConditionTypeOrReference < 0)//it has a reference
{
if (iConditionTypeOrReference == iSourceTypeOrReferenceId)//self referencing, skip
@@ -1549,6 +1561,9 @@ void ConditionMgr::LoadConditions(bool isReload)
for (auto&& [id, conditions] : ConditionStore[CONDITION_SOURCE_TYPE_PHASE])
addToPhases(id, conditions);
for (auto&& [id, conditions] : ConditionStore[CONDITION_SOURCE_TYPE_PHASE_ZONE])
addToZonePhases(id, conditions);
for (auto&& [id, conditions] : ConditionStore[CONDITION_SOURCE_TYPE_GRAVEYARD])
addToGraveyardData(id, conditions);
@@ -1796,6 +1811,24 @@ void ConditionMgr::addToPhases(ConditionId const& id, std::shared_ptr<std::vecto
TC_LOG_ERROR("sql.sql", "{} Area {} does not have phase {}.", condition, id.SourceEntry, id.SourceGroup);
}
void ConditionMgr::addToZonePhases(ConditionId const& id, std::shared_ptr<std::vector<Condition>> conditions) const
{
if (std::vector<PhaseZoneInfo>* phases = const_cast<std::vector<PhaseZoneInfo>*>(sObjectMgr->GetPhasesForZone(id.SourceEntry)))
{
for (PhaseZoneInfo& phase : *phases)
{
if (phase.PhaseInfo->Id == id.SourceGroup)
{
phase.Conditions.insert(phase.Conditions.end(), conditions->begin(), conditions->end());
return;
}
}
}
for (Condition const& condition : *conditions)
TC_LOG_ERROR("sql.sql", "{} Zone {} does not have phase {}.", condition, id.SourceEntry, id.SourceGroup);
}
void ConditionMgr::addToGraveyardData(ConditionId const& id, std::shared_ptr<std::vector<Condition>> conditions) const
{
if (GraveyardData* graveyard = const_cast<GraveyardData*>(sObjectMgr->FindGraveyardData(id.SourceEntry, id.SourceGroup)))
@@ -2080,6 +2113,15 @@ bool ConditionMgr::isSourceTypeValid(Condition* cond) const
}
break;
}
case CONDITION_SOURCE_TYPE_PHASE_ZONE:
{
if (!cond->SourceEntry || !sAreaTableStore.LookupEntry(cond->SourceEntry))
{
TC_LOG_ERROR("sql.sql", "{} SourceEntry in `condition` table does not exist in AreaTable.db2, ignoring.", *cond);
return false;
}
break;
}
case CONDITION_SOURCE_TYPE_GRAVEYARD:
if (!sObjectMgr->FindGraveyardData(cond->SourceEntry, cond->SourceGroup))
{
@@ -2887,6 +2929,7 @@ void ConditionMgr::Clean()
conditionsMap.clear();
SpellsUsedInSpellClickConditions.clear();
_hasPhaseZoneConditions = false;
}
inline bool PlayerConditionCompare(int32 comparisonType, int32 value1, int32 value2)
+6 -1
View File
@@ -194,7 +194,8 @@ enum ConditionSourceType
CONDITION_SOURCE_TYPE_SKILL_LINE_ABILITY = 35,
CONDITION_SOURCE_TYPE_PLAYER_CHOICE_RESPONSE = 36,
CONDITION_SOURCE_GAMEOBJECT_INTERACTION = 37, //sourcegroup = 0 siempre Source_entry = GO_Template Entry
CONDITION_SOURCE_TYPE_LOOT_ITEM = 38,
CONDITION_SOURCE_TYPE_LOOT_ITEM = 38,
CONDITION_SOURCE_TYPE_PHASE_ZONE = 39,
CONDITION_SOURCE_TYPE_MAX_DB_ALLOWED,
CONDITION_SOURCE_TYPE_REFERENCE_CONDITION = CONDITION_SOURCE_TYPE_MAX_DB_ALLOWED, // internal, not set in db
CONDITION_SOURCE_TYPE_MAX // MAX
@@ -351,6 +352,8 @@ class TC_GAME_API ConditionMgr
bool IsSpellUsedInSpellClickConditions(uint32 spellId) const;
bool HasPhaseZoneConditions() const;
ConditionContainer const* GetConditionsForAreaTrigger(uint32 areaTriggerId, bool isServerSide) const;
bool IsObjectMeetingTrainerSpellConditions(uint32 trainerId, uint32 spellId, Player* player) const;
bool IsObjectMeetingVisibilityByObjectIdConditions(WorldObject const* obj, WorldObject const* seer) const;
@@ -379,6 +382,7 @@ class TC_GAME_API ConditionMgr
void addToGossipMenuItems(ConditionId const& id, std::shared_ptr<std::vector<Condition>> conditions) const;
void addToSpellImplicitTargetConditions(Condition const& cond) const;
void addToPhases(ConditionId const& id, std::shared_ptr<std::vector<Condition>> conditions) const;
void addToZonePhases(ConditionId const& id, std::shared_ptr<std::vector<Condition>> conditions) const;
void addToGraveyardData(ConditionId const& id, std::shared_ptr<std::vector<Condition>> conditions) const;
bool IsObjectMeetToConditionList(ConditionSourceInfo& sourceInfo, ConditionContainer const& conditions) const;
@@ -390,6 +394,7 @@ class TC_GAME_API ConditionMgr
ConditionEntriesByTypeArray ConditionStore;
std::unordered_set<uint32> SpellsUsedInSpellClickConditions;
bool _hasPhaseZoneConditions = false;
};
#define sConditionMgr ConditionMgr::instance()
+1 -1
View File
@@ -548,7 +548,7 @@ enum class CriteriaType : int16
{
KillCreature = 0, // Kill NPC "{Creature}"
WinBattleground = 1, // Win battleground "{Map}"
CompleteResearchProject = 2, /*NYI*/ // Complete research project "{ResearchProject}"
CompleteResearchProject = 2, // Complete research project "{ResearchProject}"
CompleteAnyResearchProject = 3, // Complete any research project
FindResearchObject = 4, // Find research object "{GameObjects}"
ReachLevel = 5, // Reach level
+14 -5
View File
@@ -5984,6 +5984,14 @@ void Player::SetSkill(uint32 id, uint16 step, uint16 newVal, uint16 maxVal)
UpdateCriteria(CriteriaType::AchieveSkillStep, id);
}
}
// Archaeology: seed active dig sites and research projects the moment the profession is
// learned mid-session; the login path already covers players who had it when loading.
if (id == SKILL_ARCHAEOLOGY && newVal)
{
InitializeResearchSites();
InitializeResearchProjects();
}
}
uint32 Player::GetProfessionSkillForExp(uint32 skill, int32 expansion) const
@@ -15183,7 +15191,7 @@ void Player::AddQuest(Quest const* quest, Object* questGiver)
SendQuestUpdate(quest_id);
bool updateVisibility = false;
if (quest->HasFlag(QUEST_FLAGS_UPDATE_PHASESHIFT))
if (quest->HasFlag(QUEST_FLAGS_UPDATE_PHASESHIFT) || sConditionMgr->HasPhaseZoneConditions())
updateVisibility = PhasingHandler::OnConditionChange(this, false);
if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER)) // check if Quest Tracker is enabled
@@ -15655,7 +15663,7 @@ void Player::RewardQuest(Quest const* quest, LootItemType rewardType, uint32 rew
SendQuestUpdate(quest_id, true, true);
bool updateVisibility = false;
if (quest->HasFlag(QUEST_FLAGS_UPDATE_PHASESHIFT))
if (quest->HasFlag(QUEST_FLAGS_UPDATE_PHASESHIFT) || sConditionMgr->HasPhaseZoneConditions())
updateVisibility = PhasingHandler::OnConditionChange(this, false);
//lets remove flag for delayed teleports
@@ -16382,7 +16390,7 @@ void Player::RemoveActiveQuest(uint32 questId, bool update /*= true*/)
{
SendQuestUpdate(questId);
if (quest && quest->HasFlag(QUEST_FLAGS_UPDATE_PHASESHIFT))
if (quest && (quest->HasFlag(QUEST_FLAGS_UPDATE_PHASESHIFT) || sConditionMgr->HasPhaseZoneConditions()))
updateVisibility = PhasingHandler::OnConditionChange(this, false);
}
@@ -16421,7 +16429,7 @@ void Player::RemoveRewardedQuest(uint32 questId, bool update /*= true*/)
{
SendQuestUpdate(questId);
if (quest && quest->HasFlag(QUEST_FLAGS_UPDATE_PHASESHIFT))
if (quest && (quest->HasFlag(QUEST_FLAGS_UPDATE_PHASESHIFT) || sConditionMgr->HasPhaseZoneConditions()))
updateVisibility = PhasingHandler::OnConditionChange(this, false);
}
@@ -16650,7 +16658,7 @@ void Player::SkipQuests(std::span<uint32 const> questIds)
SetRewardedQuest(questId);
SendQuestUpdate(questId, false);
if (!updateVisibility && quest->HasFlag(QUEST_FLAGS_UPDATE_PHASESHIFT))
if (!updateVisibility && (quest->HasFlag(QUEST_FLAGS_UPDATE_PHASESHIFT) || sConditionMgr->HasPhaseZoneConditions()))
updateVisibility = PhasingHandler::OnConditionChange(this, false);
sScriptMgr->OnQuestStatusChange(this, questId);
@@ -22626,6 +22634,7 @@ void Player::CompleteResearchProjectSolve(ArchaeologySolvePlan const& plan)
return;
RecordCompletedProject(plan.ProjectID);
UpdateCriteria(CriteriaType::CompleteResearchProject, plan.ProjectID);
UpdateCriteria(CriteriaType::CompleteAnyResearchProject, project->Rarity, plan.BranchID);
AdvanceResearchProject(plan.BranchID, plan.ProjectID);
@@ -333,6 +333,20 @@ void PhasingHandler::OnAreaChange(WorldObject* object)
areaEntry = sAreaTableStore.LookupEntry(areaEntry->ParentAreaID);
}
if (uint32 zoneId = object->GetZoneId())
if (std::vector<PhaseZoneInfo> const* newZonePhases = sObjectMgr->GetPhasesForZone(zoneId))
for (PhaseZoneInfo const& phaseZone : *newZonePhases)
{
uint32 phaseId = phaseZone.PhaseInfo->Id;
if (DisableMgr::IsDisabledFor(DISABLE_TYPE_PHASE_AREA, phaseId, object))
continue;
if (sConditionMgr->IsObjectMeetToConditions(srcInfo, phaseZone.Conditions))
phaseShift.AddPhase(phaseId, GetPhaseFlags(phaseId), &phaseZone.Conditions);
else
suppressedPhaseShift.AddPhase(phaseId, GetPhaseFlags(phaseId), &phaseZone.Conditions);
}
bool changed = phaseShift.Phases != oldPhases;
if (Unit* unit = object->ToUnit())
{
@@ -0,0 +1,159 @@
/*
* Copyright (C) WowCommunity Project
*
* This SourceCode is NOT free a software. Please hold everything Private
* and read our Terms
*/
#include "priority_of_the_sacred_flame.h"
#include "Containers.h"
#include "ScriptedCreature.h"
#include "ScriptMgr.h"
#include "TemporarySummon.h"
#include "MotionMaster.h"
#include "MovementTypedefs.h"
#include "ObjectAccessor.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "TaskScheduler.h"
enum Spells
{
SPELL_START_ENERGY = 454834,
SPELL_ENERGIZE = 422963,
SPELL_HAMMER_OF_PURITY = 423062,
SPELL_HAMMER_OF_PURITY_SPIN = 423076,
SPELL_HAMMER_OF_PURITY_BOUNCE = 423072,
SPELL_BURNING_LIGHT = 423051,
SPELL_CASTIGATORS_SHIELD = 423015,
SPELL_CASTIGATORS_DETONATION = 423018,
SPELL_CASTIGATORS_EXPLOSION = 423019,
SPELL_VINDICTIVE_WRATH = 422969,
};
enum Events
{
EVENT_HAMMER_OF_PURITY = 1,
EVENT_HAMMER_OF_PURITY_SPIN,
EVENT_BURNING_LIGHT,
EVENT_CASTIGATORS_SHIELD,
EVENT_CASTIGATORS_DETONATION,
EVENT_CASTIGATORS_EXPLOSION,
EVENT_CHECK_ENERGY,
EVENT_VINDICTIVE_WRATH,
};
// 207939 - Baron Braunpyke
struct boss_baron_braunpyke : public BossAI
{
boss_baron_braunpyke(Creature* creature) : BossAI(creature, DATA_BARON_BRAUNPYKE), _energy(0) { }
void Reset() override
{
BossAI::Reset();
_energy = 0;
_detonationTargets.clear();
}
void JustEngagedWith(Unit* who) override
{
BossAI::JustEngagedWith(who);
DoCastSelf(SPELL_START_ENERGY, true);
DoCastSelf(SPELL_ENERGIZE, true);
events.ScheduleEvent(EVENT_HAMMER_OF_PURITY, 10s);
events.ScheduleEvent(EVENT_BURNING_LIGHT, 19s);
events.ScheduleEvent(EVENT_CASTIGATORS_SHIELD, 24s);
events.ScheduleEvent(EVENT_CHECK_ENERGY, 1s);
}
// The Baron shields his two Arathi companions; fall back to players when solo.
std::vector<Unit*> SelectShieldTargets()
{
std::vector<Unit*> targets;
if (targets.size() < 2)
{
std::list<Unit*> players;
SelectTargetList(players, uint32(2 - targets.size()), SelectTargetMethod::Random, 0, 100.0f, true);
targets.insert(targets.end(), players.begin(), players.end());
}
return targets;
}
void ExecuteEvent(uint32 eventId) override
{
switch (eventId)
{
case EVENT_HAMMER_OF_PURITY:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
{
_hammerPosition = target->GetPosition();
me->CastSpell(_hammerPosition, SPELL_HAMMER_OF_PURITY, false);
events.ScheduleEvent(EVENT_HAMMER_OF_PURITY_SPIN, 2s);
}
events.Repeat(22s);
break;
case EVENT_HAMMER_OF_PURITY_SPIN:
me->CastSpell(_hammerPosition, SPELL_HAMMER_OF_PURITY_SPIN, true);
me->CastSpell(_hammerPosition, SPELL_HAMMER_OF_PURITY_BOUNCE, true);
break;
case EVENT_BURNING_LIGHT:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
me->CastSpell(target->GetPosition(), SPELL_BURNING_LIGHT, false);
events.Repeat(30s);
break;
case EVENT_CASTIGATORS_SHIELD:
{
_detonationTargets.clear();
for (Unit* target : SelectShieldTargets())
{
DoCast(target, SPELL_CASTIGATORS_SHIELD, true);
_detonationTargets.push_back(target->GetGUID());
}
if (!_detonationTargets.empty())
{
events.ScheduleEvent(EVENT_CASTIGATORS_DETONATION, 1s);
events.ScheduleEvent(EVENT_CASTIGATORS_EXPLOSION, 5s);
}
events.Repeat(25s);
break;
}
case EVENT_CASTIGATORS_DETONATION:
for (ObjectGuid guid : _detonationTargets)
if (Unit* target = ObjectAccessor::GetUnit(*me, guid))
me->CastSpell(target->GetPosition(), SPELL_CASTIGATORS_DETONATION, true);
break;
case EVENT_CASTIGATORS_EXPLOSION:
for (ObjectGuid guid : _detonationTargets)
if (Unit* target = ObjectAccessor::GetUnit(*me, guid))
me->CastSpell(target->GetPosition(), SPELL_CASTIGATORS_EXPLOSION, true);
break;
case EVENT_CHECK_ENERGY:
_energy += 2;
if (_energy >= 100)
{
_energy = 0;
events.ScheduleEvent(EVENT_VINDICTIVE_WRATH, 0ms);
}
events.Repeat(1s);
break;
case EVENT_VINDICTIVE_WRATH:
DoCastSelf(SPELL_VINDICTIVE_WRATH);
break;
default:
break;
}
}
private:
uint32 _energy;
Position _hammerPosition;
std::vector<ObjectGuid> _detonationTargets;
};
void AddSC_boss_baron_braunpyke()
{
RegisterPriorityoftheSacredflameCreatureAI(boss_baron_braunpyke);
}
@@ -0,0 +1,102 @@
/*
* Copyright (C) WowCommunity Project
*
* This SourceCode is NOT free a software. Please hold everything Private
* and read our Terms
*/
#include "priority_of_the_sacred_flame.h"
#include "Containers.h"
#include "ScriptedCreature.h"
#include "ScriptMgr.h"
#include "TemporarySummon.h"
#include "MotionMaster.h"
#include "MovementTypedefs.h"
#include "ObjectAccessor.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "TaskScheduler.h"
enum Spells
{
SPELL_STRENGTH_IN_NUMBERS = 424626,
SPELL_PIERCE_ARMOR = 424414,
SPELL_EARTHSHATTERING_SPEAR = 1238780,
SPELL_EARTHSHATTERING_SPEAR_IMPACT = 1238779,
SPELL_EARTHSHATTERING_SPEAR_DAMAGE = 1238782,
SPELL_BATTLE_CRY = 424419,
SPELL_SAVAGE_MAULING = 447429,
SPELL_SAVAGE_MAULING_STRIKE = 447439,
};
enum Events
{
EVENT_PIERCE_ARMOR = 1,
EVENT_EARTHSHATTERING_SPEAR,
EVENT_EARTHSHATTERING_SPEAR_IMPACT,
EVENT_BATTLE_CRY,
EVENT_SAVAGE_MAULING,
};
// 207946 - Captain Dailcry
struct boss_captain_dailcry : public BossAI
{
boss_captain_dailcry(Creature* creature) : BossAI(creature, DATA_CAPTAIN_DAILCRY) { }
void JustEngagedWith(Unit* who) override
{
BossAI::JustEngagedWith(who);
events.ScheduleEvent(EVENT_PIERCE_ARMOR, 3500ms);
events.ScheduleEvent(EVENT_EARTHSHATTERING_SPEAR, 3s);
events.ScheduleEvent(EVENT_BATTLE_CRY, 7s);
events.ScheduleEvent(EVENT_SAVAGE_MAULING, 20s);
}
void ExecuteEvent(uint32 eventId) override
{
switch (eventId)
{
case EVENT_PIERCE_ARMOR:
DoCastVictim(SPELL_PIERCE_ARMOR);
events.Repeat(13s);
break;
case EVENT_EARTHSHATTERING_SPEAR:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
{
_spearPosition = target->GetPosition();
me->CastSpell(_spearPosition, SPELL_EARTHSHATTERING_SPEAR, false);
me->CastSpell(_spearPosition, SPELL_EARTHSHATTERING_SPEAR_IMPACT, true);
events.ScheduleEvent(EVENT_EARTHSHATTERING_SPEAR_IMPACT, 3s);
}
events.Repeat(33s);
break;
case EVENT_EARTHSHATTERING_SPEAR_IMPACT:
me->CastSpell(_spearPosition, SPELL_EARTHSHATTERING_SPEAR_DAMAGE, true);
break;
case EVENT_BATTLE_CRY:
DoCastAOE(SPELL_BATTLE_CRY);
events.Repeat(33s);
break;
case EVENT_SAVAGE_MAULING:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
{
Position pos = target->GetPosition();
me->GetMotionMaster()->MoveCharge(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ());
DoCast(target, SPELL_SAVAGE_MAULING);
me->CastSpell(me, SPELL_SAVAGE_MAULING_STRIKE, true);
}
events.Repeat(33s);
break;
default:
break;
}
}
private:
Position _spearPosition;
};
void AddSC_boss_captain_dailcry()
{
RegisterPriorityoftheSacredflameCreatureAI(boss_captain_dailcry);
}
@@ -0,0 +1,195 @@
/*
* Copyright (C) WowCommunity Project
*
* This SourceCode is NOT free a software. Please hold everything Private
* and read our Terms
*/
#include "priority_of_the_sacred_flame.h"
#include "Containers.h"
#include "ScriptedCreature.h"
#include "ScriptMgr.h"
#include "TemporarySummon.h"
#include "MotionMaster.h"
#include "MovementTypedefs.h"
#include "ObjectAccessor.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "TaskScheduler.h"
enum Spells
{
SPELL_BLINDING_LIGHT = 1242783,
SPELL_STOKE_THE_FLAME = 460838,
SPELL_STOKE_THE_FLAME_2 = 460871,
SPELL_STOKE_THE_FLAME_REKINDLE = 444609,
SPELL_STOKE_THE_FLAME_REKINDLE_2 = 444611,
SPELL_HOLY_SMITE = 423536,
SPELL_PURIFY = 444546,
SPELL_PURIFY_PULSE = 425554,
SPELL_HOLY_FLAME = 451605,
SPELL_HOLY_FLAME_IMPACT = 451606,
SPELL_INNER_FIRE = 444608,
SPELL_INNER_FIRE_AURA = 423547,
SPELL_SANCTIFIED_GROUND = 425556,
SPELL_CLEAR_ENERGY = 448497,
SPELL_EMBRACE_THE_LIGHT_BIND = 423682,
SPELL_BARRIER_OF_LIGHT = 423588,
SPELL_EMBRACE_THE_LIGHT = 423664,
SPELL_EMBRACE_THE_LIGHT_TICK = 423665,
};
enum Events
{
EVENT_HOLY_SMITE = 1,
EVENT_PURIFY,
EVENT_HOLY_FLAME,
EVENT_INNER_FIRE,
EVENT_SANCTIFIED_GROUND,
EVENT_CHECK_ENERGY,
EVENT_INTERMISSION_START,
EVENT_EMBRACE_CHANNEL,
EVENT_INTERMISSION_END,
};
// 207940 - Prioress Murrpray
struct boss_prioress_murrpray : public BossAI
{
boss_prioress_murrpray(Creature* creature) : BossAI(creature, DATA_PRIORESS_MURRPRAY), _energy(0), _intermission(false) { }
void Reset() override
{
BossAI::Reset();
_energy = 0;
_intermission = false;
me->SetPowerType(POWER_ENERGY);
me->SetMaxPower(POWER_ENERGY, 100);
}
void JustEngagedWith(Unit* who) override
{
BossAI::JustEngagedWith(who);
me->SetPower(POWER_ENERGY, 0);
DoCastSelf(SPELL_BLINDING_LIGHT, true);
DoCastSelf(SPELL_STOKE_THE_FLAME, true);
DoCastSelf(SPELL_STOKE_THE_FLAME_2, true);
ScheduleBuildEvents();
events.ScheduleEvent(EVENT_CHECK_ENERGY, 1s);
}
void ScheduleBuildEvents()
{
events.ScheduleEvent(EVENT_HOLY_SMITE, 2s);
events.ScheduleEvent(EVENT_PURIFY, 12s);
events.ScheduleEvent(EVENT_HOLY_FLAME, 16s);
events.ScheduleEvent(EVENT_INNER_FIRE, 22s);
events.ScheduleEvent(EVENT_SANCTIFIED_GROUND, 30s);
}
void StartIntermission()
{
_intermission = true;
events.CancelEvent(EVENT_CHECK_ENERGY);
DoCastSelf(SPELL_CLEAR_ENERGY, true);
DoCastSelf(SPELL_EMBRACE_THE_LIGHT_BIND, true);
DoCastSelf(SPELL_BARRIER_OF_LIGHT, true);
events.ScheduleEvent(EVENT_EMBRACE_CHANNEL, 500ms);
}
void EndIntermission()
{
_intermission = false;
_energy = 0;
me->SetPower(POWER_ENERGY, 0);
DoCastSelf(SPELL_STOKE_THE_FLAME_REKINDLE, true);
DoCastSelf(SPELL_STOKE_THE_FLAME_REKINDLE_2, true);
ScheduleBuildEvents();
events.ScheduleEvent(EVENT_CHECK_ENERGY, 1s);
}
void SummonIntermissionAdds()
{
for (uint8 i = 0; i < 2; ++i)
{
Position pos = me->GetPosition();
pos.m_positionY += (i == 0 ? -8.0f : 8.0f);
me->SummonCreature(NPC_MELLEK_ZOMBIE_STALKER, pos, TEMPSUMMON_TIMED_DESPAWN, 35s);
}
for (uint8 i = 0; i < 3; ++i)
{
Position pos = me->GetRandomNearPosition(12.0f);
me->SummonCreature(NPC_ARATHI_NEOPHYTE, pos, TEMPSUMMON_TIMED_DESPAWN, 35s);
}
}
void ExecuteEvent(uint32 eventId) override
{
switch (eventId)
{
case EVENT_HOLY_SMITE:
DoCastVictim(SPELL_HOLY_SMITE);
events.Repeat(4s);
break;
case EVENT_PURIFY:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
DoCast(target, SPELL_PURIFY);
events.Repeat(25s);
break;
case EVENT_HOLY_FLAME:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
DoCast(target, SPELL_HOLY_FLAME);
events.Repeat(15s);
break;
case EVENT_INNER_FIRE:
DoCastSelf(SPELL_INNER_FIRE);
events.Repeat(25s);
break;
case EVENT_SANCTIFIED_GROUND:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
me->CastSpell(target->GetPosition(), SPELL_SANCTIFIED_GROUND, true);
events.Repeat(30s);
break;
case EVENT_CHECK_ENERGY:
if (!_intermission)
{
_energy += 2;
me->SetPower(POWER_ENERGY, std::min<uint32>(_energy, 100));
if (_energy >= 100)
StartIntermission();
}
events.Repeat(1s);
break;
case EVENT_INTERMISSION_START:
StartIntermission();
break;
case EVENT_EMBRACE_CHANNEL:
DoCastSelf(SPELL_EMBRACE_THE_LIGHT);
SummonIntermissionAdds();
events.ScheduleEvent(EVENT_INTERMISSION_END, 28s);
break;
case EVENT_INTERMISSION_END:
if (me->HasUnitState(UNIT_STATE_CASTING))
events.Repeat(1s);
else
EndIntermission();
break;
default:
break;
}
}
private:
uint32 _energy;
bool _intermission;
};
void AddSC_boss_prioress_murrpray()
{
RegisterPriorityoftheSacredflameCreatureAI(boss_prioress_murrpray);
}
@@ -0,0 +1,119 @@
/*
* Copyright WowCommunity Project by Thordekk
*
*/
#include "priority_of_the_sacred_flame.h"
#include "GameObject.h"
#include "Map.h"
#include "TemporarySummon.h"
#include "CreatureAI.h"
#include "Vehicle.h"
#include "Player.h"
#include "SpellScript.h"
#include "MotionMaster.h"
#include "CombatAI.h"
#include "CreatureAIImpl.h"
#include "ObjectAccessor.h"
#include "ScriptedGossip.h"
#include "SpellAuras.h"
#include "SpellAuraEffects.h"
#include "SpellInfo.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "InstanceScript.h"
#include "Group.h"
#include "ChallengeMode.h"
static constexpr ObjectData creatureData[] =
{
{ BOSS_CAPTAIN_DAILCRY, DATA_CAPTAIN_DAILCRY },
{ BOSS_BARON_BRAUNPYKE, DATA_BARON_BRAUNPYKE },
{ BOSS_PRIORESS_MURRPRAY, DATA_PRIORESS_MURRPRAY },
{ 0, 0 } // END
};
static constexpr ObjectData gameObjectData[] =
{
{ GO_PRIORY_DOOR, DATA_DAILCRY_DOOR },
{ GO_PRIORY_DOOR_02, DATA_BARON_DOOR },
{ GO_FIRE_BARRIER, DATA_MURRPRAY_DOOR },
{ 0, 0 } // END
};
static constexpr DungeonEncounterData const encounters[] =
{
{ DATA_CAPTAIN_DAILCRY, {{ 2847 }} },
{ DATA_BARON_BRAUNPYKE, {{ 2835 }} },
{ DATA_PRIORESS_MURRPRAY, {{ 2848 }} },
};
class instance_priority_of_the_sacred_flame : public InstanceMapScript
{
public:
instance_priority_of_the_sacred_flame() : InstanceMapScript(POSFScriptName, 2649) { }
struct instance_priority_of_the_sacred_flame_InstanceMapScript : public InstanceScript
{
instance_priority_of_the_sacred_flame_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadObjectData(creatureData, gameObjectData);
LoadDungeonEncounterData(encounters);
}
void OnPlayerEnter(Player* player) override
{
if (!player->GetGroup() || !player->GetGroup()->GetLeaderGUID())
return;
player->GetGroup()->AddFollowerModeBots(player);
}
void OnPlayerExit(Player* player)
{
if (!player->GetGroup())
return;
player->GetGroup()->DespawnFollowerModeBots(player);
}
bool SetBossState(uint32 id, EncounterState state) override
{
if (state == DONE)
{
switch (id)
{
case DATA_CAPTAIN_DAILCRY:
OpenDoor(DATA_DAILCRY_DOOR);
break;
case DATA_BARON_BRAUNPYKE:
OpenDoor(DATA_BARON_DOOR);
OpenDoor(DATA_MURRPRAY_DOOR);
break;
default:
break;
}
}
return InstanceScript::SetBossState(id, state);
}
void OpenDoor(uint32 data)
{
if (GameObject* door = GetGameObject(data))
door->SetGoState(GO_STATE_ACTIVE);
}
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
{
return new instance_priority_of_the_sacred_flame_InstanceMapScript(map);
}
};
void AddSC_instance_priority_of_the_sacred_flame()
{
new instance_priority_of_the_sacred_flame();
}
@@ -0,0 +1,72 @@
/*
* Copyright WowCommunity Project by Thordekk
*
*/
#ifndef DEF_PRIORITY_OF_THE_SACRED_FLAME_H_
#define DEF_PRIORITY_OF_THE_SACRED_FLAME_H_
#include "CreatureAIImpl.h"
#define POSFScriptName "instance_priority_of_the_sacred_flame"
#define DataHeader "POSF"
constexpr uint32 EncounterCount = 3;
enum priorityofthesacredflameDataTypes
{
// Encounters
DATA_CAPTAIN_DAILCRY = 0,
DATA_BARON_BRAUNPYKE,
DATA_PRIORESS_MURRPRAY,
// GameObjects
DATA_DAILCRY_DOOR,
DATA_BARON_DOOR,
DATA_MURRPRAY_DOOR,
};
enum priorityofthesacredflameCreatureIds
{
// Bosses
BOSS_CAPTAIN_DAILCRY = 207946,
BOSS_BARON_BRAUNPYKE = 207939, // rides a mount (Vehicle)
BOSS_PRIORESS_MURRPRAY = 207940,
// Trash
NPC_FERVENT_SHARPSHOOTER = 206694,
NPC_ARATHI_KNIGHT = 206696,
NPC_DEVOUT_PRIEST = 206697,
NPC_FANATICAL_CONJUROR = 206698,
NPC_WAR_LYNX = 206699,
NPC_ARDENT_PALADIN = 206704,
NPC_ARATHI_FOOTMAN = 206705,
NPC_LIGHTSPAWN = 206710,
NPC_ZEALOUS_TEMPLAR = 207949,
NPC_RISEN_FOOTMAN = 212835,
NPC_RISEN_MAGE = 221760,
NPC_ETERNAL_FLAME = 210851,
// Encounter support
NPC_ARATHI_NEOPHYTE = 211140,
NPC_MELLEK_ZOMBIE_STALKER = 211138,
};
enum priorityofthesacredflameGameObjectIds
{
GO_PRIORY_DOOR = 441670,
GO_PRIORY_DOOR_02 = 441671,
GO_NAVIGATION_DOOR = 441668,
GO_NAVIGATION_DOOR_02 = 441669,
GO_FIRE_BARRIER = 452050,
};
template <class AI, class T>
inline AI* GetPriorityoftheSacredflameAI(T* obj)
{
return GetInstanceAI<AI>(obj, POSFScriptName);
}
#define RegisterPriorityoftheSacredflameCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetPriorityoftheSacredflameAI)
#endif
@@ -0,0 +1,263 @@
/*
* Copyright (C) WowCommunity Project
*
* This SourceCode is NOT free a software. Please hold everything Private
* and read our Terms
*/
#include "priority_of_the_sacred_flame.h"
#include "Containers.h"
#include "ScriptedCreature.h"
#include "ScriptMgr.h"
#include "TemporarySummon.h"
#include "MotionMaster.h"
#include "ObjectAccessor.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "TaskScheduler.h"
#include <unordered_map>
#include <vector>
enum TrashSpells
{
// Fervent Sharpshooter (206694)
SPELL_SHOOT = 427629,
SPELL_POT_SHOT = 462859,
SPELL_CALTROPS = 453458,
// Arathi Knight (206696)
SPELL_IMPALE = 427621,
SPELL_DISRUPTING_SHOUT = 427609,
// Devout Priest (206697)
SPELL_HOLY_SMITE = 427357,
SPELL_GREATER_HEAL = 427356,
SPELL_INNER_FIRE_PRIEST = 428916,
// Fanatical Conjuror (206698)
SPELL_FIREBALL = 427469,
SPELL_FLAMESTRIKE = 427478,
// War Lynx (206699)
SPELL_POUNCE = 446776,
SPELL_GRIEVOUS_RIP = 446779,
// Ardent Paladin (206704)
SPELL_CONSECRATION = 424429,
SPELL_SACRED_TOLL = 448791,
// Arathi Footman (206705)
SPELL_DEFEND = 427342,
SPELL_SHATTERED_DEFENSES = 427360,
// Lightspawn (206710)
SPELL_PURIFICATION = 448787,
SPELL_BURST_OF_LIGHT = 427601,
// Zealous Templar (207949)
SPELL_SEAL_OF_LIGHTS_FURY = 427596,
SPELL_TEMPLARS_WRATH = 444728,
// Risen Footman (212835) / Risen Mage (221760)
SPELL_LIGHT_EXPULSION = 435156,
// Eternal Flame (210851)
SPELL_THE_SACRED_FLAME = 425544,
// Prioress Murrpray encounter support
SPELL_SUMMON_LIGHT_ZOMBIE = 425021,
SPELL_FIXATE = 425020,
SPELL_OVERWHELMING_POWER = 425022,
};
enum TrashEvents
{
EVENT_TRASH_SPELL_1 = 1,
EVENT_TRASH_SPELL_2,
EVENT_TRASH_SPELL_3,
EVENT_SUMMON_LIGHT_ZOMBIE = 101,
EVENT_FIXATE,
EVENT_OVERWHELMING_POWER,
};
enum class TrashTarget : uint8
{
Victim,
Random,
Self,
};
struct TrashSpell
{
uint32 spellId;
Milliseconds initial;
Milliseconds cooldown;
TrashTarget target;
};
static std::unordered_map<uint32, std::vector<TrashSpell>> const& GetTrashSpellTable()
{
static std::unordered_map<uint32, std::vector<TrashSpell>> const table =
{
{ NPC_FERVENT_SHARPSHOOTER, { { SPELL_SHOOT, 1s, 2s, TrashTarget::Victim }, { SPELL_POT_SHOT, 4s, 8s, TrashTarget::Random }, { SPELL_CALTROPS, 7s, 12s, TrashTarget::Random } } },
{ NPC_ARATHI_KNIGHT, { { SPELL_IMPALE, 2s, 5s, TrashTarget::Victim }, { SPELL_DISRUPTING_SHOUT, 8s, 14s, TrashTarget::Random } } },
{ NPC_DEVOUT_PRIEST, { { SPELL_HOLY_SMITE, 2s, 3s, TrashTarget::Victim }, { SPELL_GREATER_HEAL, 10s, 15s, TrashTarget::Self }, { SPELL_INNER_FIRE_PRIEST, 5s, 20s, TrashTarget::Self } } },
{ NPC_FANATICAL_CONJUROR, { { SPELL_FIREBALL, 2s, 3s, TrashTarget::Victim }, { SPELL_FLAMESTRIKE, 8s, 14s, TrashTarget::Random } } },
{ NPC_WAR_LYNX, { { SPELL_POUNCE, 3s, 8s, TrashTarget::Victim }, { SPELL_GRIEVOUS_RIP, 5s, 6s, TrashTarget::Victim } } },
{ NPC_ARDENT_PALADIN, { { SPELL_CONSECRATION, 4s, 12s, TrashTarget::Self }, { SPELL_SACRED_TOLL, 6s, 8s, TrashTarget::Victim } } },
{ NPC_ARATHI_FOOTMAN, { { SPELL_DEFEND, 3s, 16s, TrashTarget::Self }, { SPELL_SHATTERED_DEFENSES, 6s, 10s, TrashTarget::Victim } } },
{ NPC_LIGHTSPAWN, { { SPELL_PURIFICATION, 3s, 9s, TrashTarget::Victim }, { SPELL_BURST_OF_LIGHT, 8s, 15s, TrashTarget::Self } } },
{ NPC_ZEALOUS_TEMPLAR, { { SPELL_SEAL_OF_LIGHTS_FURY, 2s, 5s, TrashTarget::Victim }, { SPELL_TEMPLARS_WRATH, 7s, 12s, TrashTarget::Victim } } },
{ NPC_RISEN_FOOTMAN, { { SPELL_LIGHT_EXPULSION, 3s, 8s, TrashTarget::Random } } },
{ NPC_RISEN_MAGE, { { SPELL_FIREBALL, 2s, 3s, TrashTarget::Victim }, { SPELL_LIGHT_EXPULSION, 8s, 12s, TrashTarget::Random } } },
{ NPC_ETERNAL_FLAME, { { SPELL_THE_SACRED_FLAME, 3s, 8s, TrashTarget::Random } } },
};
return table;
}
// Shared AI used by generic Priory of the Sacred Flame trash mobs.
struct posf_trash_ai : public ScriptedAI
{
posf_trash_ai(Creature* creature) : ScriptedAI(creature) { }
void Reset() override
{
events.Reset();
_active.clear();
auto const& table = GetTrashSpellTable();
auto it = table.find(me->GetEntry());
if (it == table.end())
return;
uint32 eventId = EVENT_TRASH_SPELL_1;
for (TrashSpell const& spell : it->second)
{
_active[eventId] = spell;
events.ScheduleEvent(eventId, spell.initial);
++eventId;
}
}
void ExecuteEvent(uint32 eventId) override
{
auto it = _active.find(eventId);
if (it == _active.end())
return;
TrashSpell const& spell = it->second;
switch (spell.target)
{
case TrashTarget::Victim:
DoCastVictim(spell.spellId);
break;
case TrashTarget::Random:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
DoCast(target, spell.spellId);
break;
case TrashTarget::Self:
DoCastSelf(spell.spellId);
break;
}
events.Repeat(spell.cooldown);
}
private:
std::unordered_map<uint32, TrashSpell> _active;
};
// 211138 - Mellek Zombie Stalker: stationary summoner used during the intermission.
struct npc_mellek_zombie_stalker : public ScriptedAI
{
npc_mellek_zombie_stalker(Creature* creature) : ScriptedAI(creature), _summons(0) { }
void Reset() override
{
_summons = 0;
_summonTimer = 1s;
}
void UpdateAI(uint32 diff) override
{
if (_summons >= 4)
return;
if (_summonTimer <= Milliseconds(diff))
{
DoCastSelf(SPELL_SUMMON_LIGHT_ZOMBIE);
++_summons;
_summonTimer = 4s;
}
else
_summonTimer -= Milliseconds(diff);
}
private:
uint8 _summons;
Milliseconds _summonTimer;
};
// 211140 - Arathi Neophyte: fixates a player and pulses Overwhelming Power.
struct npc_arathi_neophyte : public ScriptedAI
{
npc_arathi_neophyte(Creature* creature) : ScriptedAI(creature) { }
void JustEngagedWith(Unit* /*who*/) override
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
DoCast(target, SPELL_FIXATE);
events.ScheduleEvent(EVENT_OVERWHELMING_POWER, 6s);
}
void ExecuteEvent(uint32 eventId) override
{
switch (eventId)
{
case EVENT_FIXATE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
DoCast(target, SPELL_FIXATE);
break;
case EVENT_OVERWHELMING_POWER:
DoCastSelf(SPELL_OVERWHELMING_POWER);
events.Repeat(8s);
break;
default:
break;
}
}
};
struct npc_fervent_sharpshooter : public posf_trash_ai { npc_fervent_sharpshooter(Creature* c) : posf_trash_ai(c) { } };
struct npc_arathi_knight : public posf_trash_ai { npc_arathi_knight(Creature* c) : posf_trash_ai(c) { } };
struct npc_devout_priest : public posf_trash_ai { npc_devout_priest(Creature* c) : posf_trash_ai(c) { } };
struct npc_fanatical_conjuror : public posf_trash_ai { npc_fanatical_conjuror(Creature* c) : posf_trash_ai(c) { } };
struct npc_war_lynx : public posf_trash_ai { npc_war_lynx(Creature* c) : posf_trash_ai(c) { } };
struct npc_ardent_paladin : public posf_trash_ai { npc_ardent_paladin(Creature* c) : posf_trash_ai(c) { } };
struct npc_arathi_footman : public posf_trash_ai { npc_arathi_footman(Creature* c) : posf_trash_ai(c) { } };
struct npc_lightspawn : public posf_trash_ai { npc_lightspawn(Creature* c) : posf_trash_ai(c) { } };
struct npc_zealous_templar : public posf_trash_ai { npc_zealous_templar(Creature* c) : posf_trash_ai(c) { } };
struct npc_risen_footman : public posf_trash_ai { npc_risen_footman(Creature* c) : posf_trash_ai(c) { } };
struct npc_risen_mage : public posf_trash_ai { npc_risen_mage(Creature* c) : posf_trash_ai(c) { } };
struct npc_eternal_flame : public posf_trash_ai { npc_eternal_flame(Creature* c) : posf_trash_ai(c) { } };
void AddSC_priority_of_the_sacred_flame()
{
RegisterPriorityoftheSacredflameCreatureAI(npc_fervent_sharpshooter);
RegisterPriorityoftheSacredflameCreatureAI(npc_arathi_knight);
RegisterPriorityoftheSacredflameCreatureAI(npc_devout_priest);
RegisterPriorityoftheSacredflameCreatureAI(npc_fanatical_conjuror);
RegisterPriorityoftheSacredflameCreatureAI(npc_war_lynx);
RegisterPriorityoftheSacredflameCreatureAI(npc_ardent_paladin);
RegisterPriorityoftheSacredflameCreatureAI(npc_arathi_footman);
RegisterPriorityoftheSacredflameCreatureAI(npc_lightspawn);
RegisterPriorityoftheSacredflameCreatureAI(npc_zealous_templar);
RegisterPriorityoftheSacredflameCreatureAI(npc_risen_footman);
RegisterPriorityoftheSacredflameCreatureAI(npc_risen_mage);
RegisterPriorityoftheSacredflameCreatureAI(npc_eternal_flame);
RegisterPriorityoftheSacredflameCreatureAI(npc_mellek_zombie_stalker);
RegisterPriorityoftheSacredflameCreatureAI(npc_arathi_neophyte);
}
@@ -1,8 +1,6 @@
/*
* Copyright (C) WowCommunity Project
* Copyright WowCommunity Project by Thordekk
*
* This SourceCode is NOT free a software. Please hold everything Private
* and read our Terms
*/
#include "the_rookery.h"
@@ -11,138 +9,75 @@
#include "ScriptMgr.h"
#include "TemporarySummon.h"
#include "MotionMaster.h"
#include "MovementTypedefs.h"
#include "ObjectAccessor.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "TaskScheduler.h"
enum KyriossSpells
{
// Initial Auras
SPELL_INITIAL_AURA_1 = 422356, // Aura from sniffed data
SPELL_RIDE_VEHICLE_HARDCODED = 46598, // Vehicle aura
SPELL_INITIAL_CAST_1 = 461582, // Initial cast
SPELL_JASERAH_ENERGIZE = 420573, // Fight start + every storm cycle
SPELL_JASERAH_STARTING_ENERGY = 461582, // Initial energy aura (pulled)
// Initial Phase
SPELL_CAST_THUNDER_PREP = 437858, // Pre-flight cast
SPELL_CAST_THUNDER_START = 449870, // Flight start cast
SPELL_CAST_THUNDERSTRIKE = 437980, // Repeated AoE attack
// Grounded phase
SPELL_CRASHING_THUNDER_1 = 1214324, // Crash cast (dive)
SPELL_CRASHING_THUNDER_2 = 1214325, // Crash cast (landing)
SPELL_CRASHING_THUNDER_HIT = 1214326, // Impact damage on landing
SPELL_WILD_LIGHTNING_CAST = 474018, // Wild Lightning trigger
SPELL_WILD_LIGHTNING_TARGET = 1214327, // Wild Lightning target select
// Stormheart Phase
SPELL_STORMHEART_TRANSITION = 420573, // Transition to Stormheart
SPELL_STORMHEART = 444324, // Stormheart aura
SPELL_THUNDERBOLT = 444411, // Thunderbolt ground strike
SPELL_THUNDERBOLT_EFFECT = 444407, // Additional Thunderbolt effect
SPELL_LIGHTNING_DASH = 419870, // Lightning Dash
SPELL_LIGHTNING_DASH_EFFECT = 461590, // Dash secondary effect
SPELL_CHAIN_LIGHTNING = 424148, // Chain Lightning
SPELL_STORMHEART_TICK = 444418, // Periodic tick during Stormheart
SPELL_AURA_STORM_ENHANCE = 420212, // Buff aura
SPELL_AURA_STORM_SHIELD = 469882, // Protective aura
SPELL_AURA_STORM_RESIST = 429619, // Resistance aura
SPELL_AURA_DAMAGE_REDUCTION = 204242, // Damage mitigation aura
SPELL_AURA_STUN = 197277, // Stun effect (placeholder)
// Unstable Charge
SPELL_UNSTABLE_CHARGE = 420739, // Unstable Charge aura
SPELL_UNSTABLE_BLAST = 424195, // Explosion on removal
// Lightning Torrent Phase
SPELL_LIGHTNING_TORRENT = 444123, // Torrent trigger
SPELL_LIGHTNING_TORRENT_DMG = 444250, // Torrent damage + stun
SPELL_TORRENT_PREP = 444034, // Jump prep cast
SPELL_TORRENT_TICK = 444044, // Torrent periodic effect
SPELL_TORRENT_AOE = 464868, // Repeated AoE in Torrent phase
SPELL_TORRENT_FINISH = 255618, // Final Torrent cast
// Misc
SPELL_ANCHOR_HERE = 45313 // Anchor position
// Storm / torrent phase
SPELL_LIGHTNING_TORRENT = 1214322, // Torrent main cast
SPELL_LIGHTNING_TORRENT_WARN = 444034, // Torrent visual/warning
SPELL_LIGHTNING_TORRENT_MID = 1214315, // Follow-up torrent cast
SPELL_LIGHTNING_TORRENT_ZONE = 1214323, // Torrent ground zone (GO)
SPELL_LIGHTNING_TORRENT_ALT = 444250, // Torrent secondary damage
SPELL_LIGHTNING_DASH_1 = 419870, // Dash start
SPELL_LIGHTNING_DASH_2 = 461590, // Dash charge
SPELL_LIGHTNING_DASH_3 = 419871, // Dash end
};
enum KyriossEvents
{
EVENT_INITIAL_AURAS = 1,
EVENT_INITIAL_CASTS,
EVENT_WAYPOINT_FLIGHT,
EVENT_REPEATED_THUNDERSTRIKE,
EVENT_STORMHEART_TRANSITION,
EVENT_STORMHEART_CASTS,
EVENT_LIGHTNING_DASH,
EVENT_CHAIN_LIGHTNING,
EVENT_THUNDERBOLT,
EVENT_UNSTABLE_CHARGE,
EVENT_LIGHTNING_TORRENT_TRANSITION,
EVENT_LIGHTNING_TORRENT_CASTS
};
enum KyriossTexts
{
SAY_LIGHTNING_TORRENT = 0,
EVENT_ENERGIZE = 1,
EVENT_CRASHING_THUNDER,
EVENT_CRASHING_THUNDER_HIT,
EVENT_WILD_LIGHTNING,
EVENT_TORRENT_BEGIN,
EVENT_TORRENT_MID,
EVENT_TORRENT_ZONE,
EVENT_TORRENT_ALT,
EVENT_LIGHTNING_DASH
};
enum KyriossMisc
{
POINT_FLIGHT_PATH = 1,
POINT_SHORT_WAYPOINT = 2,
POINT_CENTER_JUMP = 3,
POINT_CENTER_JUMP = 2,
};
static constexpr Position FlightWaypoints[] =
{
{2799.1172f, -1516.9341f, 356.84845f},
{2799.2136f, -1539.0226f, 340.55142f},
{2799.7292f, -1565.3646f, 342.7065f},
{2777.5435f, -1576.4618f, 342.17725f},
{2766.0635f, -1592.5538f, 341.9233f},
{2759.6824f, -1607.1406f, 340.48184f},
{2761.816f, -1626.9236f, 340.48184f},
{2766.308f, -1637.132f, 330.79257f},
{2773.7222f, -1646.3959f, 340.48184f},
{2781.4307f, -1651.625f, 340.48184f},
{2792.8281f, -1653.2396f, 340.48184f},
{2805.9106f, -1651.9462f, 340.48184f},
{2816.1885f, -1644.8716f, 340.48184f},
{2822.126f, -1637.606f, 340.48184f},
{2825.6328f, -1630.8976f, 340.48184f},
{2829.7996f, -1613.6459f, 340.48184f},
{2830.3628f, -1597.9983f, 340.48184f},
{2827.7673f, -1584.0538f, 340.48184f},
{2821.5088f, -1576.8942f, 340.48184f},
{2812.494f, -1573.0903f, 339.07608f},
{2801.9844f, -1576.5f, 336.18976f},
{2798.0496f, -1581.9584f, 332.41452f},
{2797.8994f, -1584.8108f, 330.7913f}
};
static constexpr Position ShortWaypoints[] =
{
{2791.8357f, -1586.3293f, 331.39374f}
};
static constexpr Position CenterJumpPosition = { 2800.0798f, -1614.0209f, 329.82184f };
// 209230 - Kyrioss
struct boss_kyrioss : public BossAI
{
boss_kyrioss(Creature* creature) : BossAI(creature, DATA_KYRIOSS), _thunderstrikeCount(0), _thunderboltCount(0) {}
boss_kyrioss(Creature* creature) : BossAI(creature, DATA_KYRIOSS) { }
void Reset() override
{
BossAI::Reset();
_thunderstrikeCount = 0;
_thunderboltCount = 0;
me->SetCanFly(true);
me->SetDisableGravity(true);
me->SetReactState(REACT_AGGRESSIVE);
}
void JustEngagedWith(Unit* who) override
{
BossAI::JustEngagedWith(who);
me->Attack(who, true);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
events.ScheduleEvent(EVENT_INITIAL_AURAS, 0s);
events.ScheduleEvent(EVENT_UNSTABLE_CHARGE, 10s);
DoCastSelf(SPELL_JASERAH_STARTING_ENERGY, true);
events.ScheduleEvent(EVENT_ENERGIZE, 0ms);
events.ScheduleEvent(EVENT_CRASHING_THUNDER, 6s);
events.ScheduleEvent(EVENT_WILD_LIGHTNING, 9s + 690ms);
events.ScheduleEvent(EVENT_TORRENT_BEGIN, 16s + 500ms);
}
void JustDied(Unit* /*killer*/) override
@@ -159,24 +94,8 @@ struct boss_kyrioss : public BossAI
_DespawnAtEvade();
}
void MovementInform(uint32 type, uint32 id) override
void MovementInform(uint32 /*type*/, uint32 /*id*/) override
{
if (type != POINT_MOTION_TYPE && type != EFFECT_MOTION_TYPE)
return;
switch (id)
{
case POINT_FLIGHT_PATH:
events.ScheduleEvent(EVENT_REPEATED_THUNDERSTRIKE, 6s);
break;
case POINT_SHORT_WAYPOINT:
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 0))
me->SetFacingToObject(target);
break;
case POINT_CENTER_JUMP:
events.ScheduleEvent(EVENT_LIGHTNING_TORRENT_CASTS, 6s);
break;
}
}
void UpdateAI(uint32 diff) override
@@ -191,383 +110,62 @@ struct boss_kyrioss : public BossAI
switch (events.ExecuteEvent())
{
case EVENT_INITIAL_AURAS:
DoCastSelf(SPELL_INITIAL_AURA_1);
DoCastSelf(SPELL_RIDE_VEHICLE_HARDCODED);
DoCastSelf(SPELL_INITIAL_CAST_1);
events.ScheduleEvent(EVENT_INITIAL_CASTS, 600ms);
case EVENT_ENERGIZE:
DoCastSelf(SPELL_JASERAH_ENERGIZE);
events.Repeat(42s + 500ms);
break;
case EVENT_INITIAL_CASTS:
me->StopMoving();
DoCastSelf(SPELL_CAST_THUNDER_PREP);
DoCastSelf(SPELL_CAST_THUNDER_START);
events.ScheduleEvent(EVENT_WAYPOINT_FLIGHT, 0s);
case EVENT_CRASHING_THUNDER:
DoCastSelf(SPELL_CRASHING_THUNDER_1);
DoCastAOE(SPELL_CRASHING_THUNDER_2);
events.ScheduleEvent(EVENT_CRASHING_THUNDER_HIT, 2s + 500ms);
events.Repeat(16s);
break;
case EVENT_WAYPOINT_FLIGHT:
me->GetMotionMaster()->MovePath(POINT_FLIGHT_PATH, false);
case EVENT_CRASHING_THUNDER_HIT:
DoCastSelf(SPELL_CRASHING_THUNDER_HIT, TRIGGERED_FULL_MASK);
break;
case EVENT_REPEATED_THUNDERSTRIKE:
DoCastAOE(SPELL_CAST_THUNDERSTRIKE);
events.ScheduleEvent(EVENT_STORMHEART_TRANSITION, 15s);
case EVENT_WILD_LIGHTNING:
DoCastSelf(SPELL_WILD_LIGHTNING_CAST, TRIGGERED_FULL_MASK);
DoCastSelf(SPELL_WILD_LIGHTNING_TARGET, TRIGGERED_FULL_MASK);
events.Repeat(16s);
break;
case EVENT_STORMHEART_TRANSITION:
DoCastSelf(SPELL_STORMHEART_TRANSITION);
me->SetFacingTo(4.6597996f);
DoCastSelf(SPELL_STORMHEART);
DoCastSelf(SPELL_AURA_STORM_ENHANCE); // From sniffed data
events.ScheduleEvent(EVENT_STORMHEART_CASTS, 12s);
case EVENT_TORRENT_BEGIN:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
{
DoCast(target, SPELL_LIGHTNING_TORRENT);
DoCast(target, SPELL_LIGHTNING_TORRENT_WARN, TRIGGERED_FULL_MASK);
}
events.ScheduleEvent(EVENT_TORRENT_MID, 1s + 500ms);
events.ScheduleEvent(EVENT_LIGHTNING_DASH, 1s);
events.Repeat(55s);
break;
case EVENT_STORMHEART_CASTS:
DoCastSelf(SPELL_THUNDERBOLT);
DoCastSelf(SPELL_THUNDERBOLT_EFFECT);
DoCastSelf(SPELL_AURA_STORM_SHIELD); // Periodic aura
events.ScheduleEvent(EVENT_LIGHTNING_DASH, 6s);
events.ScheduleEvent(EVENT_CHAIN_LIGHTNING, 18s);
events.ScheduleEvent(EVENT_THUNDERBOLT, 24s);
case EVENT_TORRENT_MID:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
DoCast(target, SPELL_LIGHTNING_TORRENT_MID);
events.ScheduleEvent(EVENT_TORRENT_ALT, 3s);
events.ScheduleEvent(EVENT_TORRENT_ZONE, 5s);
break;
case EVENT_TORRENT_ALT:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
DoCast(target, SPELL_LIGHTNING_TORRENT_ALT, TRIGGERED_FULL_MASK);
break;
case EVENT_TORRENT_ZONE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
DoCast(target, SPELL_LIGHTNING_TORRENT_ZONE, TRIGGERED_FULL_MASK);
break;
case EVENT_LIGHTNING_DASH:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
DoCast(target, SPELL_LIGHTNING_DASH);
DoCastAOE(SPELL_LIGHTNING_DASH_EFFECT);
me->GetMotionMaster()->MovePath(POINT_SHORT_WAYPOINT, false);
break;
case EVENT_CHAIN_LIGHTNING:
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 0))
DoCast(target, SPELL_CHAIN_LIGHTNING);
break;
case EVENT_THUNDERBOLT:
DoCastAOE(SPELL_THUNDERBOLT);
DoCastSelf(SPELL_STORMHEART_TICK);
DoCastSelf(SPELL_AURA_STORM_RESIST); // Periodic aura
events.ScheduleEvent(EVENT_LIGHTNING_TORRENT_TRANSITION, 12s);
break;
case EVENT_UNSTABLE_CHARGE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
DoCast(target, SPELL_UNSTABLE_CHARGE);
events.Repeat(20s); // Wowhead suggests periodic use
break;
case EVENT_LIGHTNING_TORRENT_TRANSITION:
me->GetMotionMaster()->MoveJump(1, CenterJumpPosition, 21.319666f, 21.319666f, POINT_CENTER_JUMP);
DoCastSelf(SPELL_TORRENT_PREP);
break;
case EVENT_LIGHTNING_TORRENT_CASTS:
DoCastAOE(SPELL_LIGHTNING_TORRENT);
DoCastVictim(SPELL_LIGHTNING_TORRENT_DMG);
Talk(SAY_LIGHTNING_TORRENT);
DoCastAOE(SPELL_TORRENT_AOE, TRIGGERED_FULL_MASK);
DoCastSelf(SPELL_TORRENT_FINISH); // Final cast from sniffed data
events.Repeat(6s); // Loops per sniffed data
break;
}
}
private:
uint32 _thunderstrikeCount;
uint32 _thunderboltCount;
};
// 424148 - Chain Lightning
class spell_kyrioss_chain_lightning : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_CHAIN_LIGHTNING });
}
void HandleDamage(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
if (!caster)
return;
// Scale damage based on instance difficulty
if (Map* map = caster->GetMap())
{
int32 damage = GetHitDamage();
// Adjust damage based on difficulty
if (map->IsHeroic())
damage = int32(damage * 1.25f); // 25% more damage on Heroic
else if (map->IsMythic())
damage = int32(damage * 1.5f); // 50% more damage on Mythic
SetHitDamage(damage);
}
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_kyrioss_chain_lightning::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
// 419870 - Lightning Dash
class spell_kyrioss_lightning_dash : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_LIGHTNING_DASH });
}
void HandleJump(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
if (!caster)
return;
// Apply the Tornado Winds aura when using Lightning Dash
caster->CastSpell(caster, 420679, true);
}
void Register() override
{
OnEffectLaunch += SpellEffectFn(spell_kyrioss_lightning_dash::HandleJump, EFFECT_0, SPELL_EFFECT_JUMP_CHARGE);
}
};
// 444325 - Stormheart (Trigger Missile)
class spell_kyrioss_stormheart : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_THUNDERBOLT });
}
void HandleTriggerMissile(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
if (!caster)
return;
Map* map = caster->GetMap();
if (!map->IsDungeon())
return;
// Get a random player to target with the lightning strike
std::list<Player*> playerList;
Map::PlayerList const& players = map->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
{
if (Player* player = itr->GetSource())
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
{
if (player->IsAlive() && !player->IsGameMaster() && player->IsInCombat())
playerList.push_back(player);
DoCastSelf(SPELL_LIGHTNING_DASH_2, TRIGGERED_FULL_MASK);
DoCast(target, SPELL_LIGHTNING_DASH_3, TRIGGERED_FULL_MASK);
}
break;
default:
break;
}
// If no valid players found, return
if (playerList.empty())
return;
// Select a random player
Player* target = Trinity::Containers::SelectRandomContainerElement(playerList);
if (!target)
return;
// Cast the lightning strike at the player's location
caster->CastSpell(target, 444411, true);
// Visual effect for the lightning strike
caster->SendPlaySpellVisual(target, 141941, 0, 0, 0.0f);
}
void Register() override
{
OnEffectLaunch += SpellEffectFn(spell_kyrioss_stormheart::HandleTriggerMissile, EFFECT_0, SPELL_EFFECT_TRIGGER_MISSILE);
}
};
// 444411 - Thunderbolt
class spell_kyrioss_thunderbolt : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_THUNDERBOLT });
}
void HandleDamage()
{
Unit* caster = GetCaster();
if (!caster)
return;
// Create visual lightning effect at the impact location
if (WorldLocation const* dest = GetExplTargetDest())
{
// Spawn visual lightning effect
caster->CastSpell(caster, 57930, true); // Lightning Strike visual
// Play thunder sound
caster->PlayDirectSound(3147); // Thunder sound
}
}
void HandleDamageAmount(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
if (!caster)
return;
// Scale damage based on instance difficulty
if (Map* map = caster->GetMap())
{
int32 damage = GetHitDamage();
// Adjust damage based on difficulty
if (map->IsHeroic())
damage = int32(damage * 1.25f); // 25% more damage on Heroic
else if (map->IsMythic())
damage = int32(damage * 1.5f); // 50% more damage on Mythic
SetHitDamage(damage);
}
}
void FilterTargets(std::list<WorldObject*>& targets)
{
Unit* caster = GetCaster();
if (!caster)
return;
targets.remove_if([caster](WorldObject* target)
{
return caster->GetDistance(target) > 6.0f;
});
}
void Register() override
{
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_kyrioss_thunderbolt::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY);
OnCast += SpellCastFn(spell_kyrioss_thunderbolt::HandleDamage);
OnEffectHitTarget += SpellEffectFn(spell_kyrioss_thunderbolt::HandleDamageAmount, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
// 420739 - Unstable Charge
class spell_kyrioss_unstable_charge : public AuraScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_UNSTABLE_BLAST });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
Unit* target = GetTarget();
Unit* caster = GetCaster();
if (!target || !caster)
return;
// When the aura is removed, cast the explosion damage spell
target->CastSpell(target, SPELL_UNSTABLE_BLAST, true);
// Visual effect for the explosion
target->SendPlaySpellVisual(target, 133309, 0, 0, 1.0f);
// Play thunder/lightning sound
target->PlayDirectSound(3147); // Thunder sound
}
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_kyrioss_unstable_charge::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL);
}
};
// 444123 - Lightning Torrent (Trigger)
class spell_kyrioss_lightning_torrent : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_LIGHTNING_TORRENT_DMG });
}
void HandleAfterCast()
{
Unit* caster = GetCaster();
if (!caster)
return;
caster->CastSpell(caster, SPELL_LIGHTNING_TORRENT_DMG, TRIGGERED_FULL_MASK);
}
void Register() override
{
AfterCast += SpellCastFn(spell_kyrioss_lightning_torrent::HandleAfterCast);
}
};
// 444250 - Lightning Torrent (Damage/Stun)
class spell_kyrioss_lightning_torrent_effect : public SpellScript
{
void HandleDamage(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
Unit* target = GetHitUnit();
if (!caster || !target)
return;
// Scale damage based on instance difficulty
if (Map* map = caster->GetMap())
{
int32 damage = GetHitDamage();
// Adjust damage based on difficulty
if (map->IsHeroic())
damage = int32(damage * 1.25f); // 25% more damage on Heroic
else if (map->IsMythic())
damage = int32(damage * 1.5f); // 50% more damage on Mythic
SetHitDamage(damage);
}
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_kyrioss_lightning_torrent_effect::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
// 424195 - Unstable Charge Explosion
class spell_kyrioss_unstable_charge_explosion : public SpellScript
{
void HandleDamage(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
if (!caster)
return;
// Scale damage based on instance difficulty
if (Map* map = caster->GetMap())
{
int32 damage = GetHitDamage();
// Adjust damage based on difficulty
if (map->IsHeroic())
damage = int32(damage * 1.25f); // 25% more damage on Heroic
else if (map->IsMythic())
damage = int32(damage * 1.5f); // 50% more damage on Mythic
SetHitDamage(damage);
}
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_kyrioss_unstable_charge_explosion::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
void AddSC_boss_kyrioss()
{
RegisterTheRookeryCreatureAI(boss_kyrioss);
RegisterSpellScript(spell_kyrioss_chain_lightning);
RegisterSpellScript(spell_kyrioss_lightning_dash);
RegisterSpellScript(spell_kyrioss_stormheart);
RegisterSpellScript(spell_kyrioss_thunderbolt);
RegisterSpellScript(spell_kyrioss_unstable_charge);
RegisterSpellScript(spell_kyrioss_lightning_torrent);
RegisterSpellScript(spell_kyrioss_lightning_torrent_effect);
RegisterSpellScript(spell_kyrioss_unstable_charge_explosion);
}
}
@@ -1,8 +1,6 @@
/*
* Copyright (C) WowCommunity Project
* Copyright WowCommunity Project by Thordekk
*
* This SourceCode is NOT free a software. Please hold everything Private
* and read our Terms
*/
#include "the_rookery.h"
@@ -12,23 +10,31 @@
enum Spells
{
// Chaotic Corruption
SPELL_CHAOTIC_CORRUPTION = 424737,
SPELL_CHAOTIC_CORRUPTION_DOT = 424739,
SPELL_CHAOTIC_VULNERABILITY = 424797,
SPELL_DARK_GRAVITY = 425048,
SPELL_DARK_GRAVITY_DAMAGE = 425052,
SPELL_CRUSH_REALITY = 424958,
SPELL_CRUSH_REALITY_DAMAGE = 425113,
SPELL_REALITY_TEAR = 426136,
SPELL_LINGERING_VOID = 424966,
SPELL_DARK_GRAVITY_PERIODIC = 426160,
// Crush Reality
SPELL_CRUSH_REALITY = 424958,
SPELL_CRUSH_REALITY_DAMAGE = 425113,
SPELL_LINGERING_VOID_CRUSH = 424961,
SPELL_REALITY_TEAR = 426133,
SPELL_REALITY_TEAR_BEAM = 426136,
// Dark Gravity
SPELL_DARK_GRAVITY = 425048,
SPELL_DARK_GRAVITY_DAMAGE = 425052,
SPELL_LINGERING_VOID = 424966,
SPELL_DARK_GRAVITY_PERIODIC = 426160,
};
enum Events
{
EVENT_CHAOTIC_CORRUPTION = 1,
EVENT_CRUSH_REALITY,
EVENT_CRUSH_REALITY_DAMAGE,
EVENT_DARK_GRAVITY,
EVENT_CRUSH_REALITY
EVENT_REALITY_TEAR_BEAM
};
enum talks
@@ -55,9 +61,9 @@ struct boss_stormguard_gorren : public BossAI
{
Talk(TALK_INTRO);
BossAI::JustEngagedWith(who);
events.ScheduleEvent(EVENT_CHAOTIC_CORRUPTION, 5s);
events.ScheduleEvent(EVENT_CHAOTIC_CORRUPTION, 6s);
events.ScheduleEvent(EVENT_CRUSH_REALITY, 10s + 500ms);
events.ScheduleEvent(EVENT_DARK_GRAVITY, 15s);
events.ScheduleEvent(EVENT_CRUSH_REALITY, 25s);
}
void ExecuteEvent(uint32 eventId) override
@@ -65,29 +71,30 @@ struct boss_stormguard_gorren : public BossAI
switch (eventId)
{
case EVENT_CHAOTIC_CORRUPTION:
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
{
DoCast(target, SPELL_CHAOTIC_CORRUPTION);
if (IsMythic())
target->CastSpell(target, SPELL_CHAOTIC_VULNERABILITY, true);
}
Talk(TALK_AGGRO);
events.Repeat(20s);
events.Repeat(33s);
break;
case EVENT_DARK_GRAVITY:
DoCastAOE(SPELL_DARK_GRAVITY);
events.Repeat(30s);
break;
}
case EVENT_CRUSH_REALITY:
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
{
DoCast(target, SPELL_CRUSH_REALITY);
// Create void zones and reality tears
DoCast(target, SPELL_REALITY_TEAR_BEAM, TRIGGERED_FULL_MASK);
}
events.Repeat(16s);
events.ScheduleEvent(EVENT_CRUSH_REALITY_DAMAGE, 3s);
break;
}
case EVENT_CRUSH_REALITY_DAMAGE:
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
{
Position pos = target->GetPosition();
me->CastSpell(pos, SPELL_LINGERING_VOID, true);
DoCast(target, SPELL_CRUSH_REALITY_DAMAGE);
me->CastSpell(pos, SPELL_LINGERING_VOID_CRUSH, true);
for (uint8 i = 0; i < 8; ++i)
{
float angle = i * (M_PI / 4);
@@ -98,9 +105,27 @@ struct boss_stormguard_gorren : public BossAI
me->CastSpell(tearPos, SPELL_REALITY_TEAR, true);
}
}
events.Repeat(45s);
break;
}
case EVENT_DARK_GRAVITY:
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
{
Position pos = target->GetPosition();
me->CastSpell(pos, SPELL_DARK_GRAVITY, false);
me->CastSpell(pos, SPELL_LINGERING_VOID, true);
me->CastSpell(pos, SPELL_DARK_GRAVITY_PERIODIC, true);
me->CastSpell(pos, SPELL_DARK_GRAVITY_DAMAGE, true);
}
events.Repeat(33s);
break;
}
case EVENT_REALITY_TEAR_BEAM:
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
DoCast(target, SPELL_REALITY_TEAR_BEAM);
break;
}
default:
break;
}
@@ -109,202 +134,10 @@ struct boss_stormguard_gorren : public BossAI
void JustDied(Unit* /*killer*/) override
{
_JustDied();
Map::PlayerList const& players = me->GetMap()->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
if (Player* player = itr->GetSource())
player->RemoveAurasDueToSpell(SPELL_LINGERING_VOID);
}
};
// 424739 Chaotic Corruption DOT
class spell_chaotic_corruption : public AuraScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_CHAOTIC_CORRUPTION_DOT });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
Unit* target = GetTarget();
Unit* caster = GetCaster();
if (!target || !caster)
return;
// Find the nearest player to transfer the corruption to
Player* nearestPlayer = nullptr;
float minDistance = FLT_MAX;
Map* map = target->GetMap();
if (!map)
return;
Map::PlayerList const& players = map->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
{
if (Player* player = itr->GetSource())
{
if (player->IsAlive() && !player->IsGameMaster() && player != target)
{
float distance = target->GetDistance(player);
if (distance < minDistance)
{
minDistance = distance;
nearestPlayer = player;
}
}
}
}
// Transfer the corruption to the nearest player
if (nearestPlayer && minDistance < 30.0f) // Within reasonable range
{
caster->CastSpell(nearestPlayer, SPELL_CHAOTIC_CORRUPTION_DOT, true);
// Visual effect for the transfer
uint32 visualId = 135038; // From spell data
caster->SendPlaySpellVisual(nearestPlayer, visualId, 0, 0, 1.0f);
}
}
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_chaotic_corruption::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL);
}
};
// 424958 - Crush Reality
class spell_crush_reality : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ 425113 }); // Referenced spell in description
}
void HandleDummy(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
if (!caster)
return;
WorldLocation const* dest = GetExplTargetDest();
if (!dest)
return;
// Visual effect for the reality crush
caster->SendPlaySpellVisual(caster, 134903, 0, 0, 1.0f);
// Play a sound effect for the reality crush
caster->PlayDirectSound(18023); // Appropriate crushing sound
}
void Register() override
{
OnEffectHit += SpellEffectFn(spell_crush_reality::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
// 425113 - Crush Reality Effect
class spell_crush_reality_effect : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({
424961, // Lingering Void
426131 // Reality Tear
});
}
void FilterTargets(std::list<WorldObject*>& targets)
{
Unit* caster = GetCaster();
if (!caster)
return;
// Keep only players
targets.remove_if([](WorldObject* obj) {
return !obj->IsPlayer();
});
}
void Register() override
{
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_crush_reality_effect::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY);
}
};
// 425052 - Dark Gravity Explosion
class spell_dark_gravity_explosion : public SpellScript
{
void HandleKnockback(SpellEffIndex /*effIndex*/)
{
if (Unit* target = GetHitUnit())
{
if (Unit* caster = GetCaster())
{
// Apply knockback from caster position
Position casterPos = caster->GetPosition();
target->KnockbackFrom(casterPos, 15.0f, 15.0f);
}
}
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_dark_gravity_explosion::HandleKnockback, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
// 426160 - Dark Gravity Periodic Damage
class spell_dark_gravity_periodic : public AuraScript
{
void OnPeriodic(AuraEffect const* /*aurEff*/)
{
if (Unit* caster = GetCaster())
{
// Pull players toward the caster
Map* map = caster->GetMap();
if (!map)
return;
// Define pull radius - adjust as needed
float radius = 60.0f;
Map::PlayerList const& players = map->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
{
if (Player* player = itr->GetSource())
{
if (player->IsAlive() && player->IsWithinDist(caster, radius))
{
// Calculate direction vector toward caster
float angle = player->GetAbsoluteAngle(caster);
float pullStrength = 5.0f; // Adjust pull strength as needed
// Apply movement force toward caster
Position pullPos(player->GetPositionX() + cos(angle + M_PI) * 5.0f,
player->GetPositionY() + sin(angle + M_PI) * 5.0f,
player->GetPositionZ());
player->KnockbackFrom(pullPos, pullStrength, pullStrength);
}
}
}
}
}
void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_dark_gravity_periodic::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE);
}
};
void AddSC_boss_stormguard_gorren()
{
RegisterCreatureAI(boss_stormguard_gorren);
RegisterSpellScript(spell_chaotic_corruption);
RegisterSpellScript(spell_crush_reality);
RegisterSpellScript(spell_crush_reality_effect);
RegisterSpellScript(spell_dark_gravity_explosion);
RegisterSpellScript(spell_dark_gravity_periodic);
}
RegisterTheRookeryCreatureAI(boss_stormguard_gorren);
}
@@ -1,8 +1,6 @@
/*
* Copyright (C) WowCommunity Project
* Copyright WowCommunity Project by Thordekk
*
* This SourceCode is NOT free a software. Please hold everything Private
* and read our Terms
*/
#include "ScriptMgr.h"
@@ -10,157 +8,198 @@
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "TemporarySummon.h"
#include "ObjectAccessor.h"
enum Spells
{
// Voidstone Monstrosity
SPELL_NULL_UPHEAVAL = 423305,
SPELL_NULL_UPHEAVAL_DAMAGE = 423356,
SPELL_VOID_SHELL = 445262,
SPELL_UNLEASH_CORRUPTION = 429487,
SPELL_UNSTABLE_CORRUPTION = 429493,
SPELL_SEEPING_CORRUPTION = 433067,
SPELL_FULL_ENERGY = 448502,
SPELL_ATTACK_ME = 447441,
SPELL_TAINTED_WATERS = 455219,
SPELL_OBLIVION_WAVE = 445457,
SPELL_OBLIVION_WAVE_DAMAGE = 445537,
SPELL_ENTROPY = 423393,
SPELL_UNSTABLE_CORRUPTION = 429493,
SPELL_UNSTABLE_CORRUPTION_2 = 429499,
SPELL_UNLEASH_CORRUPTION = 429487,
SPELL_NULL_UPHEAVAL = 423305,
SPELL_NULL_UPHEAVAL_TRIGGER = 423145,
SPELL_NULL_UPHEAVAL_DAMAGE = 423356,
SPELL_STORMS_VENGEANCE = 423839,
SPELL_STORMRIDERS_CHARGE = 458082,
SPELL_STORMRIDER_PING = 428630,
SPELL_SEEPING_FRAGMENT = 458013,
// Voidstone Fragment
SPELL_RESHAPE = 428269,
// Voidstone Awakened
SPELL_CORRUPTION_OVERLOAD = 429029,
SPELL_SEEPING_FRAGMENT_DNT = 458014,
// Stormrider Vokmar
SPELL_STORMRIDERS_CHARGE = 458082,
SPELL_STORMS_VENGEANCE = 424371
SPELL_STORMS_VENGEANCE_VOKMAR = 424371,
SPELL_ANCHOR_HERE = 45313
};
enum Events
{
EVENT_NULL_UPHEAVAL = 1,
EVENT_VOID_SHELL,
EVENT_UNLEASH_CORRUPTION,
EVENT_OBLIVION_WAVE,
EVENT_ENTROPY_CHECK,
EVENT_OBLIVION_WAVE = 1,
EVENT_UNSTABLE_CORRUPTION,
EVENT_NULL_UPHEAVAL,
EVENT_STORMS_VENGEANCE,
EVENT_SUMMON_VOKMAR,
EVENT_VOKMAR_VENGEANCE,
EVENT_SPAWN_FRAGMENTS,
ACTION_START_ENCOUNTER
};
enum Talks
{
TALK_INTRO = 1,
TALK_AGGRO,
TALK_KILL,
TALK_DEATH
};
//207207
struct boss_voidstone_monstrosity : public BossAI
{
boss_voidstone_monstrosity(Creature* creature)
: BossAI(creature, DATA_VOIDSTONE_MONSTROSITY),
_voidShellActive(false),
_fragmentsSpawned(false)
_vulnerable(false)
{
}
void Reset() override
{
BossAI::Reset();
_vokmarGuid = ObjectGuid::Empty;
_voidShellActive = false;
_fragmentsSpawned = false;
_vulnerable = false;
}
void JustEngagedWith(Unit* who) override
{
Talk(TALK_AGGRO);
BossAI::JustEngagedWith(who);
events.ScheduleEvent(EVENT_NULL_UPHEAVAL, 10s);
events.ScheduleEvent(EVENT_VOID_SHELL, 15s);
events.ScheduleEvent(EVENT_UNLEASH_CORRUPTION, 8s);
events.ScheduleEvent(EVENT_OBLIVION_WAVE, 12s);
events.ScheduleEvent(EVENT_ENTROPY_CHECK, 2s);
events.ScheduleEvent(EVENT_SUMMON_VOKMAR, 5s);
events.ScheduleEvent(EVENT_SUMMON_VOKMAR, 1s);
DoCastSelf(SPELL_FULL_ENERGY, true);
DoCastSelf(SPELL_ATTACK_ME, true);
DoCastSelf(SPELL_TAINTED_WATERS, true);
ActivateVoidShell();
events.ScheduleEvent(EVENT_OBLIVION_WAVE, 6s);
events.ScheduleEvent(EVENT_UNSTABLE_CORRUPTION, 12s + 800ms);
events.ScheduleEvent(EVENT_NULL_UPHEAVAL, 42s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (_voidShellActive)
{
damage = CalculatePct(damage, 80); // Reduce damage by 20% during Void Shell
damage = CalculatePct(damage, 90); // Feeble while Void Shell holds (broken by Vokmar)
}
else if (_vulnerable)
{
damage = CalculatePct(damage, 150); // Takes extra damage when exposed
}
}
void JustDied(Unit* /*killer*/) override
{
_JustDied();
}
void ExecuteEvent(uint32 eventId) override
{
switch (eventId)
{
case EVENT_NULL_UPHEAVAL:
DoCastAOE(SPELL_NULL_UPHEAVAL);
if (!_fragmentsSpawned)
case EVENT_SUMMON_VOKMAR:
{
if (Creature* vokmar = me->SummonCreature(NPC_STORMRIDER_VOKMAR, 2800.0f, -1612.0f, 330.0f, 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30s))
{
// Spawn Voidstone Fragments
for (uint8 i = 0; i < 8; ++i)
{
float angle = i * (M_PI / 4);
Position pos = me->GetPosition();
pos.m_positionX += 10.0f * cos(angle);
pos.m_positionY += 10.0f * sin(angle);
if (Creature* fragment = me->SummonCreature(NPC_VOIDSTONE_FRAGMENT, pos))
fragment->CastSpell(fragment, SPELL_RESHAPE, false);
}
_fragmentsSpawned = true;
_vokmarGuid = vokmar->GetGUID();
vokmar->SetReactState(REACT_PASSIVE);
vokmar->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
vokmar->CastSpell(vokmar, SPELL_ANCHOR_HERE, true);
}
break;
}
case EVENT_OBLIVION_WAVE:
DoCastAOE(SPELL_OBLIVION_WAVE);
events.Repeat(30s);
break;
case EVENT_VOID_SHELL:
DoCastSelf(SPELL_VOID_SHELL);
_voidShellActive = true;
events.Repeat(45s);
break;
case EVENT_UNLEASH_CORRUPTION:
if (Unit* target1 = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
case EVENT_UNSTABLE_CORRUPTION:
{
std::list<Unit*> targets;
SelectTargetList(targets, 4, SelectTargetMethod::Random, 0, 40.0f, true);
bool leash = false;
for (Unit* target : targets)
{
if (Unit* target2 = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true, true, -SPELL_UNSTABLE_CORRUPTION))
{
DoCast(target1, SPELL_UNLEASH_CORRUPTION);
DoCast(target2, SPELL_UNLEASH_CORRUPTION);
}
leash = !leash;
DoCast(target, leash ? SPELL_UNSTABLE_CORRUPTION : SPELL_UNSTABLE_CORRUPTION_2);
}
events.Repeat(25s);
DoCastSelf(SPELL_UNLEASH_CORRUPTION, TRIGGERED_FULL_MASK);
events.Repeat(26s);
break;
case EVENT_OBLIVION_WAVE:
if (Unit* target = me->GetVictim())
DoCast(target, SPELL_OBLIVION_WAVE);
events.Repeat(18s);
}
case EVENT_NULL_UPHEAVAL:
{
DoCastSelf(SPELL_NULL_UPHEAVAL);
ActivateVoidShell();
events.ScheduleEvent(EVENT_SPAWN_FRAGMENTS, 2s + 500ms);
events.Repeat(32s);
break;
}
case EVENT_SPAWN_FRAGMENTS:
{
if (Creature* vokmar = ObjectAccessor::GetCreature(*me, _vokmarGuid))
{
vokmar->CastSpell(me, SPELL_STORMRIDERS_CHARGE, true);
}
case EVENT_ENTROPY_CHECK:
if (!me->IsWithinMeleeRange(me->GetVictim()))
DoCastAOE(SPELL_ENTROPY);
events.Repeat(2s);
for (uint8 i = 0; i < 4; ++i)
{
Position pos = me->GetNearPosition(8.0f, i * (M_PI / 2));
if (Creature* fragment = me->SummonCreature(NPC_VOIDSTONE_FRAGMENT, pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20s))
fragment->CastSpell(fragment, SPELL_RESHAPE, false);
}
DeactivateVoidShell();
events.ScheduleEvent(EVENT_STORMS_VENGEANCE, 2s);
events.ScheduleEvent(EVENT_VOKMAR_VENGEANCE, 2s);
break;
case EVENT_SUMMON_VOKMAR:
// Logic to summon Stormrider Vokmar
if (Creature* vokmar = me->SummonCreature(NPC_STORMRIDER_VOKMAR, me->GetPosition()))
vokmar->AI()->DoAction(ACTION_START_ENCOUNTER);
}
case EVENT_STORMS_VENGEANCE:
{
DoCastSelf(SPELL_STORMS_VENGEANCE);
events.ScheduleEvent(EVENT_NULL_UPHEAVAL, 20s);
events.ScheduleEvent(EVENT_OBLIVION_WAVE, 22s);
break;
}
case EVENT_VOKMAR_VENGEANCE:
{
if (Creature* vokmar = ObjectAccessor::GetCreature(*me, _vokmarGuid))
vokmar->CastSpell(me, SPELL_STORMS_VENGEANCE_VOKMAR, true);
events.Repeat(4s);
break;
}
default:
break;
}
}
private:
void ActivateVoidShell()
{
DoCastSelf(SPELL_VOID_SHELL);
_voidShellActive = true;
_vulnerable = false;
}
void DeactivateVoidShell()
{
me->RemoveAurasDueToSpell(SPELL_VOID_SHELL);
_voidShellActive = false;
_vulnerable = true;
}
ObjectGuid _vokmarGuid;
bool _voidShellActive;
bool _fragmentsSpawned;
bool _vulnerable;
};
void AddSC_boss_voidstone_monstrosity()
{
RegisterCreatureAI(boss_voidstone_monstrosity);
}
RegisterTheRookeryCreatureAI(boss_voidstone_monstrosity);
}
@@ -55,18 +55,16 @@ struct instance_the_rookery : public InstanceMapScript
if (!player->GetGroup() || !player->GetGroup()->GetLeaderGUID())
return;
ObjectGuid leaderguid = player->GetGroup()->GetLeaderGUID();
if (!leaderguid)
return;
if (Player* leader = ObjectAccessor::GetPlayer(*player, leaderguid))
{
faction_group = leader->GetTeamId();
}
player->GetGroup()->AddFollowerModeBots(player);
}
private:
TeamId faction_group = TEAM_HORDE;
void OnPlayerExit(Player* player)
{
if (!player->GetGroup())
return;
player->GetGroup()->DespawnFollowerModeBots(player);
}
};
};
@@ -29,7 +29,8 @@ enum TheRookeryCreatureIds : uint32
NPC_DARK_FRAGMENT = 218839,
NPC_STORMROOK = 209538,
NPC_VOIDSTONE_FRAGMENT = 227518,
NPC_STORMRIDER_VOKMAR = 218334,
NPC_STORMRIDER_VOKMAR = 211260,
NPC_STORMRIDER_VOKMAR_LEGION = 215967,
};
template <class AI, class T>
@@ -17,6 +17,13 @@ void AddSC_instance_the_rookery();
void AddSC_boss_stormguard_gorren();
void AddSC_boss_voidstone_monstrosity();
//Priority Of The Sacred Flame
void AddSC_instance_priority_of_the_sacred_flame();
void AddSC_boss_baron_braunpyke();
void AddSC_boss_captain_dailcry();
void AddSC_boss_prioress_murrpray();
void AddSC_priority_of_the_sacred_flame();
// The name of this function should match:
// void Add${NameOfDirectory}Scripts()
void AddWarWithinScripts()
@@ -28,4 +35,12 @@ void AddWarWithinScripts()
AddSC_instance_the_rookery();
AddSC_boss_stormguard_gorren();
AddSC_boss_voidstone_monstrosity();
//Priority Of The Sacred Flame
AddSC_instance_priority_of_the_sacred_flame();
AddSC_boss_baron_braunpyke();
AddSC_boss_captain_dailcry();
AddSC_boss_prioress_murrpray();
AddSC_priority_of_the_sacred_flame();
}