This commit is contained in:
SistemasCPU
2026-09-14 01:32:57 +02:00
14 changed files with 1206 additions and 180 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# Introduction:
WowCommunity Project is a World of Warcraft blizzlike design based on TrinityCore, which is based on the Midnight Expansion version 12.1.0.69587.
WowCommunity Project is a World of Warcraft blizzlike design based on TrinityCore, which is based on the Midnight Expansion version 12.1.0.69814.
# Developers:
@@ -0,0 +1,288 @@
DELETE FROM `areatrigger_create_properties` WHERE `Id`=1612 AND `IsCustom`=0;
INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `PositionalSoundKitId`, `TimeToTargetScale`, `Speed`, `SpeedIsTime`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `Roll`, `Pitch`, `Yaw`, `TargetRoll`, `TargetPitch`, `TargetYaw`, `ScriptName`, `VerifiedBuild`) VALUES (1612, 0, 6095, 0, 24, 0, 0, 0, 0, -1, 0, 0, NULL, 0, 2500, 20, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, 'at_mage_arcane_orb', 69587);
INSERT IGNORE INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(55342, 'spell_mage_mirror_image');
UPDATE creature_template SET ScriptName = 'npc_pet_mage_mirror_image' WHERE entry = 31216;
UPDATE creature_template SET ScriptName = '' WHERE entry IN (47243, 47244);
UPDATE `quest_poi` SET `VerifiedBuild`=69814 WHERE (`QuestID`=72293 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=72293 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=50562 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=48639 AND `BlobIndex`=0 AND `Idx1`=3) OR (`QuestID`=48639 AND `BlobIndex`=3 AND `Idx1`=2) OR (`QuestID`=48639 AND `BlobIndex`=2 AND `Idx1`=1) OR (`QuestID`=48639 AND `BlobIndex`=1 AND `Idx1`=0) OR (`QuestID`=43179 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=42234 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=42234 AND `BlobIndex`=0 AND `Idx1`=0);
UPDATE `quest_poi_points` SET `VerifiedBuild`=69814 WHERE (`QuestID`=72293 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=72293 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=50562 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=3 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=43179 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=42234 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=42234 AND `Idx1`=0 AND `Idx2`=0);
DELETE FROM `world_quest_template` WHERE `QuestID` IN (42788 /*Maw of Souls: Return of the Beast*/, 46236 /*Stonebound Soldiers*/, 55823 /*Bounty: A Few Crabs*/, 41127 /*Gunksnout Infestation*/, 42082 /*The Shattered Locus*/, 60950 /*A Matter of Stealth*/, 44939 /*The Nighthold: Seeds of Destruction*/, 54287 /*Naga Attack!*/, 44769 /*Arming the Populace*/, 51706 /*Deadwood*/, 41093 /*DANGER: Durguth*/, 57023 /*Weighted Mogu Artifact*/, 50496 /*Glompmaw*/, 41144 /*Return to the River*/, 57101 /*Zan-Tien Serpent Cage*/, 51839 /*Squirgle of the Depths*/, 41089 /*Lords of the Hills*/, 70422 /*Dragonrider Racing - Emerald Gardens Ascent*/, 40850 /*Prisoners of Greystone*/, 42241 /*Halls of Valor: A Worthy Challenge*/, 41705 /*Assault on Thunder Totem*/, 70012 /*Protect the Nets!*/, 51909 /*Grozgore*/, 51115 /*Zunashi the Exile*/, 43324 /*Rage of the Owlbeasts*/, 52140 /*A Thorny Problem*/, 51815 /*Eggstermination*/, 57563 /*Mogu Assault Tracker*/, 41949 /*The Drekirjar Return*/, 45559 /*Behind Enemy Portals*/, 51118 /*Bloodwing Bonepicker*/, 43606 /*WANTED: Arcavellus*/, 50516 /*Wardrummer Zurula*/, 57272 /*Bloodbound Effigy*/, 57543 /*Executor of N'Zoth*/, 45049 /*Like the Wind*/, 43599 /*Warden Tower Assault: Blackhawk's Bulwark*/, 41211 /*Neltharion's Lair: Neltharion's Treasure*/, 42744 /*Darkheart Thicket: Preserving the Preservers*/, 42927 /*DANGER: Malisandra*/, 46933 /*Felrglrglrglrgl*/, 52298 /*The MOTHERLODE!!: The Smarts Are In His Horn!*/, 51901 /*Crushtacean*/, 44294 /*WANTED: Sekhan*/, 42234 /*The Valarjar*/, 55792 /*Requisition: More Cone Shells*/, 58740 /*Subjugated Serpents*/, 42652 /*Ancient Exemplars*/, 58481 /*Rituals of Blood*/, 54821 /*Athrikus Narassin*/, 44812 /*Running on Empty*/, 70420 /*Dragonrider Racing - Fen Flythrough*/, 43709 /*Seal Clubbing*/, 58334 /*Mistfall In Flames*/, 43325 /*Ley Race*/, 43179 /*The Kirin Tor of Dalaran*/, 43327 /*The Magic of Flight*/, 46829 /*Abuso elemental*/, 57718 /*Bound in Stone*/, 57008 /*Assault: The Warring Clans*/, 43183 /*Warden Tower Assault: Starstalker's Point*/, 42124 /*Hags and Hexes*/, 43827 /*Stormwing the Portals*/, 41821 /*WANTED: Shara Felbreath*/, 57256 /*Stormchosen Arena*/, 43766 /*The Magic of Flight*/, 43771 /*The Magic of Flight*/, 42021 /*Investigation at Mak'rana*/, 46288 /*Everyone to the Front*/, 41824 /*WANTED: Arru*/, 44119 /*DANGER: Volshax, Breaker of Will*/, 43751 /*Oh, Ship!*/, 54678 /*Anything We Can Salvage*/, 46508 /*Tomb of Sargeras: Azshara's Reach*/, 42154 /*Help a Whelp*/, 58370 /*Empowered Demolisher*/, 44017 /*WANTED: Apothecary Faldren*/, 42076 /*Shadowfen Village*/, 42176 /*Rise of Skovald*/, 47624 /*Bury It*/, 41948 /*All Pets Go to Heaven*/, 43513 /*Na'zak the Fiend*/);
INSERT INTO `world_quest_template` (`QuestID`, `Duration`, `VariableID`, `Value`) VALUES
(42788, 345600, 11908, 3), -- Maw of Souls: Return of the Beast
(46236, 86400, 13207, 2), -- Stonebound Soldiers
(55823, 86400, 17518, 1), -- Bounty: A Few Crabs
(41127, 86400, 11365, 2), -- Gunksnout Infestation
(42082, 86400, 11573, 1), -- The Shattered Locus
(60950, 86400, 19551, 1), -- A Matter of Stealth
(44939, 604800, 12759, 8), -- The Nighthold: Seeds of Destruction
(54287, 86400, 16704, 1), -- Naga Attack!
(44769, 86400, 12692, 1), -- Arming the Populace
(51706, 86400, 15276, 3), -- Deadwood
(41093, 259200, 10805, 1), -- DANGER: Durguth
(57023, 86400, 18098, 1), -- Weighted Mogu Artifact
(50496, 86400, 14794, 1), -- Glompmaw
(41144, 86400, 10920, 1), -- Return to the River
(57101, 86400, 18101, 1), -- Zan-Tien Serpent Cage
(51839, 86400, 15530, 1), -- Squirgle of the Depths
(41089, 259200, 10798, 1), -- Lords of the Hills
(70422, 302400, 22383, 1), -- Dragonrider Racing - Emerald Gardens Ascent
(40850, 86400, 11267, 1), -- Prisoners of Greystone
(42241, 345600, 11606, 3), -- Halls of Valor: A Worthy Challenge
(41705, 86400, 11355, 1), -- Assault on Thunder Totem
(70012, 302400, 22290, 1), -- Protect the Nets!
(51909, 86400, 15577, 1), -- Grozgore
(51115, 86400, 15088, 1), -- Zunashi the Exile
(43324, 86400, 12159, 1), -- Rage of the Owlbeasts
(52140, 86400, 15612, 2), -- A Thorny Problem
(51815, 86400, 15519, 1), -- Eggstermination
(57563, 302400, 17995, 2), -- Mogu Assault Tracker
(41949, 86400, 11482, 1), -- The Drekirjar Return
(45559, 86400, 12905, 4), -- Behind Enemy Portals
(51118, 86400, 15091, 1), -- Bloodwing Bonepicker
(43606, 86400, 11753, 3), -- WANTED: Arcavellus
(50516, 86400, 14818, 1), -- Wardrummer Zurula
(57272, 86400, 18109, 1), -- Bloodbound Effigy
(57543, 86400, 18484, 1), -- Executor of N'Zoth
(45049, 259200, 12770, 1), -- Like the Wind
(43599, 86400, 11187, 1), -- Warden Tower Assault: Blackhawk's Bulwark
(41211, 259200, 12211, 1), -- Neltharion's Lair: Neltharion's Treasure
(42744, 259200, 12211, 1), -- Darkheart Thicket: Preserving the Preservers
(42927, 259200, 12060, 1), -- DANGER: Malisandra
(46933, 86400, 13173, 2), -- Felrglrglrglrgl
(52298, 345600, 15731, 2), -- The MOTHERLODE!!: The Smarts Are In His Horn!
(51901, 86400, 15582, 1), -- Crushtacean
(44294, 86400, 11409, 3), -- WANTED: Sekhan
(42234, 259200, 12215, 1), -- The Valarjar
(55792, 86400, 17472, 1), -- Requisition: More Cone Shells
(58740, 86400, 18541, 4), -- Subjugated Serpents
(42652, 86400, 11884, 1), -- Ancient Exemplars
(58481, 86400, 18542, 2), -- Rituals of Blood
(54821, 86400, 17015, 1), -- Athrikus Narassin
(44812, 86400, 12710, 1), -- Running on Empty
(70420, 302400, 22381, 1), -- Dragonrider Racing - Fen Flythrough
(43709, 86400, 12299, 1), -- Seal Clubbing
(58334, 86400, 18526, 1), -- Mistfall In Flames
(43325, 259200, 12463, 1), -- Ley Race
(43179, 259200, 12211, 1), -- The Kirin Tor of Dalaran
(43327, 259200, 12464, 1), -- The Magic of Flight
(46829, 86400, 13372, 1), -- Abuso elemental
(57718, 86400, 18540, 1), -- Bound in Stone
(57008, 302400, 17995, 2), -- Assault: The Warring Clans
(43183, 86400, 11084, 2), -- Warden Tower Assault: Starstalker's Point
(42124, 86400, 11604, 1), -- Hags and Hexes
(43827, 86400, 11452, 2), -- Stormwing the Portals
(41821, 86400, 11390, 2), -- WANTED: Shara Felbreath
(57256, 86400, 18107, 1), -- Stormchosen Arena
(43766, 259200, 12467, 1), -- The Magic of Flight
(43771, 259200, 12470, 1), -- The Magic of Flight
(42021, 86400, 11539, 1), -- Investigation at Mak'rana
(46288, 86400, 13183, 2), -- Everyone to the Front
(41824, 86400, 11393, 2), -- WANTED: Arru
(44119, 345600, 12445, 1), -- DANGER: Volshax, Breaker of Will
(43751, 86400, 12320, 1), -- Oh, Ship!
(54678, 86400, 17070, 1), -- Anything We Can Salvage
(46508, 604800, 13408, 8), -- Tomb of Sargeras: Azshara's Reach
(42154, 86400, 11626, 1), -- Help a Whelp
(58370, 86400, 18528, 1), -- Empowered Demolisher
(44017, 64800, 12393, 1), -- WANTED: Apothecary Faldren
(42076, 86400, 11565, 1), -- Shadowfen Village
(42176, 86400, 11637, 1), -- Rise of Skovald
(47624, 86400, 13636, 1), -- Bury It
(41948, 86400, 11490, 1), -- All Pets Go to Heaven
(43513, 604800, 12250, 1); -- Na'zak the Fiend
UPDATE `world_quest_template` SET `VariableID`=14242 WHERE `QuestID`=49097; -- Invasion Point: Sangua
UPDATE `world_quest_template` SET `VariableID`=14063 WHERE `QuestID`=49099; -- Invasion Point: Bonich
UPDATE `world_quest_template` SET `VariableID`=14064 WHERE `QuestID`=49098; -- Invasion Point: Cen'gar
DELETE FROM `world_quest_template` WHERE `QuestID` IN (42788 /*Maw of Souls: Return of the Beast*/, 46236 /*Stonebound Soldiers*/, 55823 /*Bounty: A Few Crabs*/, 41127 /*Gunksnout Infestation*/, 42082 /*The Shattered Locus*/, 44939 /*The Nighthold: Seeds of Destruction*/, 54287 /*Naga Attack!*/, 44769 /*Arming the Populace*/, 51706 /*Deadwood*/, 41093 /*DANGER: Durguth*/, 50496 /*Glompmaw*/, 41144 /*Return to the River*/, 51839 /*Squirgle of the Depths*/, 41089 /*Lords of the Hills*/, 70422 /*Dragonrider Racing - Emerald Gardens Ascent*/, 40850 /*Prisoners of Greystone*/, 42241 /*Halls of Valor: A Worthy Challenge*/, 70012 /*Protect the Nets!*/, 51909 /*Grozgore*/, 51115 /*Zunashi the Exile*/, 47496 /*Bunker Buster*/, 43324 /*Rage of the Owlbeasts*/, 52140 /*A Thorny Problem*/, 51815 /*Eggstermination*/, 41949 /*The Drekirjar Return*/, 45559 /*Behind Enemy Portals*/, 51118 /*Bloodwing Bonepicker*/, 43606 /*WANTED: Arcavellus*/, 50516 /*Wardrummer Zurula*/, 57543 /*Executor of N'Zoth*/, 45049 /*Like the Wind*/, 43599 /*Warden Tower Assault: Blackhawk's Bulwark*/, 41211 /*Neltharion's Lair: Neltharion's Treasure*/, 43434 /*WANTED: Fathnyr*/, 42744 /*Darkheart Thicket: Preserving the Preservers*/, 42927 /*DANGER: Malisandra*/, 46933 /*Felrglrglrglrgl*/, 52298 /*The MOTHERLODE!!: The Smarts Are In His Horn!*/, 51901 /*Crushtacean*/, 44294 /*WANTED: Sekhan*/, 41171 /*The Reliquary Calls*/, 42234 /*The Valarjar*/, 55792 /*Requisition: More Cone Shells*/, 42652 /*Ancient Exemplars*/, 54821 /*Athrikus Narassin*/, 44812 /*Running on Empty*/, 70420 /*Dragonrider Racing - Fen Flythrough*/, 43325 /*Ley Race*/, 43179 /*The Kirin Tor of Dalaran*/, 43327 /*The Magic of Flight*/, 46829 /*Abuso elemental*/, 41513 /*Felwort*/, 43183 /*Warden Tower Assault: Starstalker's Point*/, 42124 /*Hags and Hexes*/, 42101 /*Language of the Lost*/, 43827 /*Stormwing the Portals*/, 43766 /*The Magic of Flight*/, 43771 /*The Magic of Flight*/, 46288 /*Everyone to the Front*/, 41824 /*WANTED: Arru*/, 44119 /*DANGER: Volshax, Breaker of Will*/, 43751 /*Oh, Ship!*/, 41055 /*Primal Payback*/, 54678 /*Anything We Can Salvage*/, 46508 /*Tomb of Sargeras: Azshara's Reach*/, 42154 /*Help a Whelp*/, 44017 /*WANTED: Apothecary Faldren*/, 42076 /*Shadowfen Village*/, 42176 /*Rise of Skovald*/, 47624 /*Bury It*/, 52168 /*It's Lit*/, 41948 /*All Pets Go to Heaven*/, 43513 /*Na'zak the Fiend*/);
INSERT INTO `world_quest_template` (`QuestID`, `Duration`, `VariableID`, `Value`) VALUES
(42788, 345600, 11908, 3), -- Maw of Souls: Return of the Beast
(46236, 86400, 13207, 2), -- Stonebound Soldiers
(55823, 86400, 17518, 1), -- Bounty: A Few Crabs
(41127, 86400, 11365, 2), -- Gunksnout Infestation
(42082, 86400, 11573, 1), -- The Shattered Locus
(44939, 604800, 12759, 8), -- The Nighthold: Seeds of Destruction
(54287, 86400, 16704, 1), -- Naga Attack!
(44769, 86400, 12692, 1), -- Arming the Populace
(51706, 86400, 15276, 3), -- Deadwood
(41093, 259200, 10805, 1), -- DANGER: Durguth
(50496, 86400, 14794, 1), -- Glompmaw
(41144, 86400, 10920, 1), -- Return to the River
(51839, 86400, 15530, 1), -- Squirgle of the Depths
(41089, 259200, 10798, 1), -- Lords of the Hills
(70422, 302400, 22383, 1), -- Dragonrider Racing - Emerald Gardens Ascent
(40850, 86400, 11267, 1), -- Prisoners of Greystone
(42241, 345600, 11606, 3), -- Halls of Valor: A Worthy Challenge
(70012, 302400, 22290, 1), -- Protect the Nets!
(51909, 86400, 15577, 1), -- Grozgore
(51115, 86400, 15088, 1), -- Zunashi the Exile
(47496, 86400, 13693, 1), -- Bunker Buster
(43324, 86400, 12159, 1), -- Rage of the Owlbeasts
(52140, 86400, 15612, 2), -- A Thorny Problem
(51815, 86400, 15519, 1), -- Eggstermination
(41949, 86400, 11482, 1), -- The Drekirjar Return
(45559, 86400, 12905, 4), -- Behind Enemy Portals
(51118, 86400, 15091, 1), -- Bloodwing Bonepicker
(43606, 86400, 11753, 3), -- WANTED: Arcavellus
(50516, 86400, 14818, 1), -- Wardrummer Zurula
(57543, 86400, 18484, 1), -- Executor of N'Zoth
(45049, 259200, 12770, 1), -- Like the Wind
(43599, 86400, 11187, 1), -- Warden Tower Assault: Blackhawk's Bulwark
(41211, 259200, 12211, 1), -- Neltharion's Lair: Neltharion's Treasure
(43434, 86400, 12146, 1), -- WANTED: Fathnyr
(42744, 259200, 12211, 1), -- Darkheart Thicket: Preserving the Preservers
(42927, 259200, 12060, 1), -- DANGER: Malisandra
(46933, 86400, 13173, 2), -- Felrglrglrglrgl
(52298, 345600, 15731, 2), -- The MOTHERLODE!!: The Smarts Are In His Horn!
(51901, 86400, 15582, 1), -- Crushtacean
(44294, 86400, 11409, 3), -- WANTED: Sekhan
(41171, 1209600, 11371, 2), -- The Reliquary Calls
(42234, 259200, 12215, 1), -- The Valarjar
(55792, 86400, 17472, 1), -- Requisition: More Cone Shells
(42652, 86400, 11884, 1), -- Ancient Exemplars
(54821, 86400, 17015, 1), -- Athrikus Narassin
(44812, 86400, 12710, 1), -- Running on Empty
(70420, 302400, 22381, 1), -- Dragonrider Racing - Fen Flythrough
(43325, 259200, 12463, 1), -- Ley Race
(43179, 259200, 12211, 1), -- The Kirin Tor of Dalaran
(43327, 259200, 12464, 1), -- The Magic of Flight
(46829, 86400, 13372, 1), -- Abuso elemental
(41513, 259200, 11160, 1), -- Felwort
(43183, 86400, 11084, 2), -- Warden Tower Assault: Starstalker's Point
(42124, 86400, 11604, 1), -- Hags and Hexes
(42101, 86400, 11580, 1), -- Language of the Lost
(43827, 86400, 11452, 2), -- Stormwing the Portals
(43766, 259200, 12467, 1), -- The Magic of Flight
(43771, 259200, 12470, 1), -- The Magic of Flight
(46288, 86400, 13183, 2), -- Everyone to the Front
(41824, 86400, 11393, 2), -- WANTED: Arru
(44119, 345600, 12445, 1), -- DANGER: Volshax, Breaker of Will
(43751, 86400, 12320, 1), -- Oh, Ship!
(41055, 86400, 10924, 2), -- Primal Payback
(54678, 86400, 17070, 1), -- Anything We Can Salvage
(46508, 604800, 13408, 8), -- Tomb of Sargeras: Azshara's Reach
(42154, 86400, 11626, 1), -- Help a Whelp
(44017, 64800, 12393, 1), -- WANTED: Apothecary Faldren
(42076, 86400, 11565, 1), -- Shadowfen Village
(42176, 86400, 11637, 1), -- Rise of Skovald
(47624, 86400, 13636, 1), -- Bury It
(52168, 86400, 15652, 1), -- It's Lit
(41948, 86400, 11490, 1), -- All Pets Go to Heaven
(43513, 604800, 12250, 1); -- Na'zak the Fiend
UPDATE `world_quest_template` SET `VariableID`=14242 WHERE `QuestID`=49097; -- Invasion Point: Sangua
UPDATE `world_quest_template` SET `VariableID`=14063 WHERE `QuestID`=49099; -- Invasion Point: Bonich
UPDATE `spawn_tracking_template` SET `VerifiedBuild`=69814 WHERE `SpawnTrackingId` IN (2013901, 1969369, 2001112, 2013906, 1740988, 836163, 959412, 953666, 953667, 953669, 1448534);
UPDATE `spawn_tracking_template` SET `PhaseId`=0, `VerifiedBuild`=69814 WHERE `SpawnTrackingId`=1814882; -- Map: 870 (Pandaria) - Phase: 0
UPDATE `spawn_tracking_template` SET `PhaseId`=0, `VerifiedBuild`=69814 WHERE `SpawnTrackingId`=1738340; -- Map: 1 (Kalimdor) - Phase: 0
UPDATE `spawn_tracking_template` SET `PhaseId`=0, `VerifiedBuild`=69814 WHERE `SpawnTrackingId`=1734909; -- Map: 1220 (Broken Isles) - Phase: 0
UPDATE `spawn_tracking_template` SET `PhaseId`=27393 WHERE `SpawnTrackingId`=2853599;
UPDATE `spawn_tracking_template` SET `PhaseId`=29045 WHERE `SpawnTrackingId`=3257755;
UPDATE `spawn_tracking_template` SET `MapId`=1669, `VerifiedBuild`=69814 WHERE `SpawnTrackingId` IN (1386863, 1386861); -- Map: 1669 (Argus) - Phase: 0
UPDATE `spawn_tracking_template` SET `MapId`=1712, `VerifiedBuild`=69814 WHERE `SpawnTrackingId`=1402352; -- Map: 1712 (Antorus, the Burning Throne) - Phase: 0
UPDATE `spawn_tracking_template` SET `MapId`=1220, `VerifiedBuild`=69814 WHERE `SpawnTrackingId` IN (1051130, 1174116); -- Map: 1220 (Broken Isles) - Phase: 0
REPLACE INTO `spell_target_position` (`ID`, `EffectIndex`, `OrderIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `VerifiedBuild`) VALUES
(384827, 0, 0, 2520, -3207.38720703125, 3950.77685546875, 97.4217987060546875, 69814); -- Spell: 384827 (Call Hyenas) Effect 0: 28 (SPELL_EFFECT_SUMMON)
DELETE FROM `creature_template_difficulty` WHERE (`DifficultyID`=205 AND `Entry` IN (194273,54983,191926,191752,194675,186191,185528,186694,185529,185508,185534,185691,186206,191726,186793,186766,197335,197332,197334));
INSERT INTO `creature_template_difficulty` (`Entry`, `DifficultyID`, `HealthScalingExpansion`, `HealthModifier`, `ManaModifier`, `CreatureDifficultyID`, `TypeFlags`, `TypeFlags2`, `TypeFlags3`) VALUES
(194273, 205, 9, 1, 1, 222502, 0x200048, 0, 0), -- Witherling
(54983, 205, 11, 1, 1, 30528, 0x0, 0, 0), -- Treant
(191926, 205, 9, 12, 1, 220135, 0x200048, 2147483648, 0), -- Fishface
(191752, 205, 9, 1, 1, 219957, 0x0, 0, 0), -- Focus of Decay
(194675, 205, 9, 1, 1, 222908, 0x0, 67108866, 0), -- Decaying Cauldron
(186191, 205, 9, 6, 1, 210509, 0x200048, 2147483648, 0), -- Decay Speaker
(185528, 205, 9, 4.25, 1, 209767, 0x200048, 0, 0), -- Trickclaw Mystic
(186694, 205, 9, 1, 1, 211019, 0x0, 67108864, 0), -- Slain Tuskarr
(185529, 205, 9, 8, 1, 209768, 0x200048, 2147483648, 0), -- Bracken Warscourge
(185508, 205, 9, 4.5, 1, 209747, 0x200048, 0, 0), -- Claw Fighter
(185534, 205, 9, 4, 1, 209773, 0x200048, 0, 0), -- Bonebolt Hunter
(185691, 205, 9, 3.5, 1, 209946, 0x200048, 0, 0), -- Vicious Hyena
(186206, 205, 9, 5.5, 1, 210524, 0x200048, 0, 0), -- Cruel Bonecrusher
(191726, 205, 9, 1, 1, 219931, 0x0, 67108864, 0), -- Slain Tuskarr
(186793, 205, 9, 1, 1, 211202, 0x0, 0, 0), -- [DNT] Corpse Post
(186766, 205, 9, 1, 1, 211171, 0x0, 0, 0), -- Captive Tuskarr
(197335, 205, 9, 5, 1, 225673, 0x0, 0, 0), -- Bertinuat
(197332, 205, 9, 5, 1, 225670, 0x0, 0, 0), -- Japukitat
(197334, 205, 9, 5, 1, 225672, 0x0, 0, 0); -- Sentiu
DELETE FROM `creature_template_difficulty` WHERE (`DifficultyID`=205 AND `Entry` IN (194273,54983,191926,191752,186191,194675,185529,186694,185528,185691,185508,186766,186206,185534,186793,197335,197334,197332,191726));
INSERT INTO `creature_template_difficulty` (`Entry`, `DifficultyID`, `LevelScalingDeltaMin`, `LevelScalingDeltaMax`, `ContentTuningID`, `StaticFlags1`, `StaticFlags2`, `StaticFlags3`, `StaticFlags4`, `StaticFlags5`, `StaticFlags6`, `StaticFlags7`, `StaticFlags8`, `VerifiedBuild`) VALUES
(194273, 205, 0, 0, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 194273 (Witherling) - CanSwim
(54983, 205, 0, 0, 482, 0x20000100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 54983 (Treant) - Sessile, Floating
(191926, 205, 1, 1, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 191926 (Fishface) - CanSwim
(191752, 205, 0, 0, 2847, 0x20000100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 191752 (Focus of Decay) - Sessile, Floating
(186191, 205, 1, 1, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 186191 (Decay Speaker) - CanSwim
(194675, 205, 0, 0, 2847, 0x20000100, 0x0, 0x2000000, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 194675 (Decaying Cauldron) - Sessile, Floating - CannotTurn
(185529, 205, 1, 1, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 185529 (Bracken Warscourge) - CanSwim
(186694, 205, 0, 0, 2847, 0x20000100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 186694 (Slain Tuskarr) - Sessile, Floating
(185528, 205, 0, 0, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 185528 (Trickclaw Mystic) - CanSwim
(185691, 205, 0, 0, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 185691 (Vicious Hyena) - CanSwim
(185508, 205, 0, 0, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 185508 (Claw Fighter) - CanSwim
(186766, 205, 0, 0, 2847, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 186766 (Captive Tuskarr) -
(186206, 205, 0, 0, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 186206 (Cruel Bonecrusher) - CanSwim
(185534, 205, 0, 0, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 185534 (Bonebolt Hunter) - CanSwim
(186793, 205, 0, 0, 2847, 0x20000100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 186793 ([DNT] Corpse Post) - Sessile, Floating
(197335, 205, 0, 0, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 197335 (Bertinuat) - CanSwim
(197334, 205, 0, 0, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 197334 (Sentiu) - CanSwim
(197332, 205, 0, 0, 2847, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 69814), -- 197332 (Japukitat) - CanSwim
(191726, 205, 0, 0, 2847, 0x20000100, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 69814); -- 191726 (Slain Tuskarr) - Sessile, Floating - UntargetableByClient
UPDATE `creature_model_info` SET `VerifiedBuild`=69814 WHERE `DisplayID` IN (141424, 129792, 99197, 99196, 109908, 92725, 28282, 28111, 108585, 108586, 108494, 106069, 106071, 106099, 106068, 109949, 108447, 106070, 106038, 106294, 68523, 107989, 6121, 109883, 109884, 105554, 107993, 101428, 71690, 105699, 54677, 81393, 11908, 81391, 106604, 109135, 121443, 107352, 104894, 104893, 105690, 105700, 10827, 105704, 121442, 40689, 40693, 107363, 105696, 105697, 105695, 105647, 113755, 107685, 2711, 107601, 105828, 105637, 108659, 105677, 105651, 105769, 10270, 105636, 105632, 107600, 1534, 105631, 105771, 105688, 105689, 92726, 106388, 107245, 106396, 107602, 72724, 111077, 19670, 42722, 42720, 5446, 27823, 122774, 122773, 1694, 21342, 111076, 37310, 37311, 137392, 45881, 14492, 36656, 99383, 221, 338, 33303, 37850, 1141, 22769, 142813, 110111, 99496, 3285, 146139, 110173, 15921, 146137, 83108, 38804, 5081, 5080, 99389, 99187, 99186, 99185, 99193, 1486, 109492, 1477, 1418, 142123, 110234, 27261, 110231, 10591, 99379, 32928, 99381, 2176, 106965, 106966, 99391, 110242, 3167, 107560, 64062, 105546, 122142);
UPDATE `creature_model_info` SET `BoundingRadius`=0.150000005960464477, `VerifiedBuild`=69814 WHERE `DisplayID`=106930;
UPDATE `creature_template_gossip` SET `VerifiedBuild`=69814 WHERE (`CreatureID`=194675 AND `MenuID`=28992);
UPDATE `npc_vendor` SET `VerifiedBuild`=69814 WHERE (`entry`=32639 AND `item`=4565 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=64670 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=183950 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=180733 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=183951 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=183952 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=183953 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=183954 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=183955 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=6219 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=39505 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=20815 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=39354 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=6532 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=3371 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=38426 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=32639 AND `item`=14341 AND `ExtendedCost`=0 AND `type`=1);
UPDATE `gossip_menu` SET `VerifiedBuild`=69814 WHERE (`MenuID`=28992 AND `TextID`=194675);
UPDATE `gossip_menu_option` SET `OptionText`='<The stench of the pot is revolting, you can hardly stand near it, much less imagine detoxifying it somehow.> \n|cFFFF0000[Requires at least 25 skill in Dragon Isles Alchemy.]|r', `VerifiedBuild`=69814 WHERE (`MenuID`=28992 AND `OptionID`=0);
UPDATE creature_template SET ScriptName='npc_brh_decay_speaker' WHERE entry=186191;
UPDATE creature_template SET ScriptName='npc_brh_fetid_rotsinger' WHERE entry=186226;
UPDATE creature_template SET ScriptName='npc_brh_rotbow_stalker' WHERE entry=186208;
UPDATE creature_template SET ScriptName='npc_brh_bonebolt_hunter' WHERE entry=185534;
UPDATE creature_template SET ScriptName='npc_brh_trickclaw_mystic' WHERE entry=185528;
UPDATE creature_template SET ScriptName='npc_brh_filth_caller' WHERE entry=185656;
UPDATE creature_template SET ScriptName='npc_brh_vile_rothexer' WHERE entry=187224;
UPDATE creature_template SET ScriptName='npc_brh_cruel_bonecrusher' WHERE entry=186206;
UPDATE creature_template SET ScriptName='npc_brh_infected_lasher' WHERE entry=189363;
UPDATE creature_template SET ScriptName='npc_brh_decayed_elder' WHERE entry=189531;
UPDATE creature_template SET ScriptName='npc_brh_claw_fighter' WHERE entry=185508;
UPDATE creature_template SET ScriptName='npc_brh_bracken_warscourge' WHERE entry=185529;
UPDATE creature_template SET ScriptName='npc_brh_stinkbreath' WHERE entry=187033;
UPDATE creature_template SET ScriptName='npc_brh_rotfang_hyena' WHERE entry=194745;
UPDATE creature_template SET ScriptName='npc_brh_gutchewer_bear' WHERE entry=186284;
UPDATE creature_template SET ScriptName='npc_brh_wither_biter' WHERE entry=187315;
UPDATE creature_template SET ScriptName='npc_brh_wither_biter' WHERE entry=194273;
UPDATE creature_template SET ScriptName='npc_brh_brackenhide_gnoll' WHERE entry=194373;
UPDATE creature_template SET ScriptName='npc_brh_brackenhide_slasher' WHERE entry=194467;
UPDATE creature_template SET ScriptName='npc_brh_fledgling_slasher' WHERE entry=194469;
UPDATE creature_template SET ScriptName='npc_brh_rothexer_fledgling' WHERE entry=194487;
UPDATE creature_template SET ScriptName='npc_brh_monstrous_decay' WHERE entry=186227;
UPDATE creature_template SET ScriptName='npc_brh_decaying_slime' WHERE entry=189299;
UPDATE creature_template SET ScriptName='npc_brh_decaying_slime' WHERE entry=194330;
@@ -0,0 +1,145 @@
-- 2026_09_14_06_world.sql — restore serverside_spell with conflict-free IDs
-- 1260001: FREE in client DB2 → OK
-- 1260002: EXISTS in client DB2 → conflict, use 1260031 (FREE)
-- 1260003: FREE in client DB2 → OK
-- Restore serverside_spell
DELETE FROM `serverside_spell` WHERE `Id` IN (1260001, 1260002, 1260003, 1260031);
INSERT INTO `serverside_spell` (
`Id`, `DifficultyID`, `CategoryId`, `Dispel`, `Mechanic`,
`Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`,
`AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`,
`AttributesEx11`, `AttributesEx12`, `AttributesEx13`, `AttributesEx14`, `AttributesEx15`, `AttributesEx16`,
`Stances`, `StancesNot`, `Targets`, `TargetCreatureType`, `RequiresSpellFocus`, `FacingCasterFlags`,
`CasterAuraState`, `TargetAuraState`, `ExcludeCasterAuraState`, `ExcludeTargetAuraState`,
`CasterAuraSpell`, `TargetAuraSpell`, `ExcludeCasterAuraSpell`, `ExcludeTargetAuraSpell`,
`CasterAuraType`, `TargetAuraType`, `ExcludeCasterAuraType`, `ExcludeTargetAuraType`,
`CastingTimeIndex`, `RecoveryTime`, `CategoryRecoveryTime`, `StartRecoveryCategory`, `StartRecoveryTime`,
`InterruptFlags`, `AuraInterruptFlags1`, `AuraInterruptFlags2`, `ChannelInterruptFlags1`, `ChannelInterruptFlags2`,
`ProcFlags`, `ProcFlags2`, `ProcChance`, `ProcCharges`, `ProcCooldown`, `ProcBasePPM`,
`MaxLevel`, `BaseLevel`, `SpellLevel`, `DurationIndex`, `RangeIndex`, `Speed`, `LaunchDelay`,
`StackAmount`, `EquippedItemClass`, `EquippedItemSubClassMask`, `EquippedItemInventoryTypeMask`,
`ContentTuningId`, `SpellName`, `ConeAngle`, `ConeWidth`, `MaxTargetLevel`, `MaxAffectedTargets`,
`SpellFamilyName`, `SpellFamilyFlags1`, `SpellFamilyFlags2`, `SpellFamilyFlags3`, `SpellFamilyFlags4`,
`DmgClass`, `PreventionType`, `AreaGroupId`, `SchoolMask`, `ChargeCategoryId`
) VALUES
-- Rupture: frontal cone, instant cast
(1260001, 0, 0, 0, 0,
0x00000180, 0x00000004, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
1, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 100, 0, 0, 0,
0, 0, 0, 0, 7, 0, 0,
0, -1, 0, 0,
0, 'Delve Rupture', 45, 45, 0, 0,
0, 0, 0, 0, 0,
1, 0, 0, 1, 0),
-- Burrowing Tremors: channeled, periodic self-damage + snare
-- ID 1260002 conflicts with client DB2 → use 1260031
(1260031, 0, 0, 0, 0,
0x00000800, 0x00000004, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
2, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 100, 0, 0, 0,
0, 0, 0, 65, 12, 0, 0,
0, -1, 0, 0,
0, 'Delve Burrowing Tremors', 0, 0, 0, 0,
0, 0, 0, 0, 0,
1, 0, 0, 1, 0),
-- Stinging Swarm: instant AoE nature damage aura
(1260003, 0, 0, 0, 0,
0x00000100, 0x00000004, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
1, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 100, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0,
0, -1, 0, 0,
0, 'Delve Stinging Swarm', 0, 0, 0, 0,
0, 0, 0, 0, 0,
1, 0, 0, 4, 0);
-- Restore serverside_spell_effect
DELETE FROM `serverside_spell_effect` WHERE `SpellID` IN (1260001, 1260002, 1260003, 1260031);
INSERT INTO `serverside_spell_effect` (
`SpellID`, `EffectIndex`, `DifficultyID`,
`Effect`, `EffectAura`, `EffectAmplitude`, `EffectAttributes`,
`EffectAuraPeriod`, `EffectBonusCoefficient`, `EffectChainAmplitude`, `EffectChainTargets`,
`EffectItemType`, `EffectMechanic`, `EffectPointsPerResource`, `EffectPosFacing`,
`EffectRealPointsPerLevel`, `EffectTriggerSpell`, `BonusCoefficientFromAP`,
`PvpMultiplier`, `Coefficient`, `Variance`, `ResourceCoefficient`, `GroupSizeBasePointsCoefficient`,
`EffectBasePoints`, `EffectMiscValue1`, `EffectMiscValue2`,
`EffectRadiusIndex1`, `EffectRadiusIndex2`,
`EffectSpellClassMask1`, `EffectSpellClassMask2`, `EffectSpellClassMask3`, `EffectSpellClassMask4`,
`ImplicitTarget1`, `ImplicitTarget2`
) VALUES
-- Rupture: effect 0 = school damage, cone in front of caster
(1260001, 0, 0,
3, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0,
1, 1, 0, 0, 0,
300, 0, 0,
8, 19,
0, 0, 0, 0,
6, 0),
-- Burrowing Tremors: effect 0 = apply aura periodically damage self + snare
(1260031, 0, 0,
0, 4, 1000, 0,
1000, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0,
1, 1, 0, 0, 0,
150, 0, 0,
8, 8,
0, 0, 0, 0,
1, 0),
(1260031, 1, 0,
0, 42, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0,
1, 1, 0, 0, 0,
0, 0, 0,
0, 0,
0, 0, 0, 0,
1, 0),
-- Stinging Swarm: effect 0 = apply aura periodically damage (nature)
(1260003, 0, 0,
0, 4, 1000, 0,
1000, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0,
1, 1, 0, 0, 0,
200, 0, 0,
8, 8,
0, 0, 0, 0,
6, 0);
-- Fix spell_script_names
DELETE FROM `spell_script_names` WHERE `spell_id` = 1260001;
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(1260001, 'DreadPit::spell_delve_rupture');
@@ -16,18 +16,28 @@
enum decatriarchspells
{
SPELL_DECAYING_STRENGHT = 373960,
SPELL_ROBUST_TOTEM = 373942,
SPELL_COOKING_ROOTCLOUD = 376170,
SPELL_DECAY_STRIKE = 373917,
//Decatriarch Wratheye (sniff 12.1 Brackenhide Hollow)
SPELL_CHOKING_ROTCLOUD = 376170, //loc target rotcloud (~45s)
SPELL_DECAYSTRIKE = 373912, //single target strike (~20s)
SPELL_DECAYSTRIKE_HIT = 373917, //strike impact damage
SPELL_DECAYSTRIKE_2 = 373915, //second impact
SPELL_ROTBURST_TOTEM = 373942, //summon Rotburst Totem (~18s)
SPELL_ROTBURST_TOTEM_GO = 373950, //totem spell cast
SPELL_ROTBURST_TOTEM_FX = 373944, //totem burst effect
SPELL_DECAYING_STRENGTH = 373960, //empower cast (special)
SPELL_DECAYING_STRENGTH_AOE = 396161, //applies to group
SPELL_DECAYING_STRENGTH_FX = 387106, //telegraph visual
SPELL_WITHERED_ERUPTION = 387264, //eruption damage on impaired
SPELL_ROTTING_SICKNESS = 385361, //sickness debuff (late fight)
};
enum decatriarchevents
{
EVENT_DECAYING_STRENGHT = 1, //40s
EVENT_ROBUST_TOTEM, //16s
EVENT_COOKING_ROOTCLOUD, //5s
EVENT_DECAY_STRIKE, //11s
EVENT_ROTBURST_TOTEM = 1,
EVENT_DECAYSTRIKE,
EVENT_CHOKING_ROTCLOUD,
EVENT_DECAYING_STRENGTH,
EVENT_ROTTING_SICKNESS,
};
//186121
@@ -39,14 +49,16 @@ struct Boss_Decatriarch_Wratheye : public BossAI
{
events.Reset();
}
void JustEngagedWith(Unit* who) override
{
BossAI::JustEngagedWith(who);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
events.ScheduleEvent(EVENT_DECAYING_STRENGHT, 40s);
events.ScheduleEvent(EVENT_ROBUST_TOTEM, 16s);
events.ScheduleEvent(EVENT_COOKING_ROOTCLOUD, 5s);
events.ScheduleEvent(EVENT_DECAY_STRIKE, 11s);
events.ScheduleEvent(EVENT_ROTBURST_TOTEM, 15s);
events.ScheduleEvent(EVENT_DECAYSTRIKE, 11s);
events.ScheduleEvent(EVENT_CHOKING_ROTCLOUD, 6s);
events.ScheduleEvent(EVENT_DECAYING_STRENGTH, 41s);
events.ScheduleEvent(EVENT_ROTTING_SICKNESS, 100s);
}
void EnterEvadeMode(EvadeReason /*why*/) override
@@ -61,8 +73,6 @@ struct Boss_Decatriarch_Wratheye : public BossAI
{
_JustDied();
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
// me->SummonGameObject(380834, -3335.98f, 3654.75f, 109.633f, 2.12159f, QuaternionData(), 0s);
}
void UpdateAI(uint32 const diff)
@@ -81,38 +91,42 @@ struct Boss_Decatriarch_Wratheye : public BossAI
{
switch (eventId)
{
case EVENT_DECAYING_STRENGHT:
DoCastVictim(SPELL_DECAYING_STRENGHT);
events.ScheduleEvent(EVENT_DECAYING_STRENGHT, 39s);
case EVENT_ROTBURST_TOTEM:
DoCastVictim(SPELL_ROTBURST_TOTEM);
DoCastSelf(SPELL_ROTBURST_TOTEM_GO);
events.ScheduleEvent(EVENT_ROTBURST_TOTEM, 18s);
break;
case EVENT_DECAY_STRIKE:
case EVENT_DECAYSTRIKE:
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 0, 100.0f, true))
{
me->CastSpell(target, SPELL_DECAY_STRIKE);
DoCast(target, SPELL_DECAYSTRIKE);
DoCast(target, SPELL_DECAYSTRIKE_HIT);
DoCast(target, SPELL_DECAYSTRIKE_2);
}
events.ScheduleEvent(EVENT_DECAY_STRIKE, 12s);
events.ScheduleEvent(EVENT_DECAYSTRIKE, 20s);
break;
case EVENT_ROBUST_TOTEM:
DoCastVictim(SPELL_ROBUST_TOTEM);
events.ScheduleEvent(EVENT_ROBUST_TOTEM, 16s);
case EVENT_CHOKING_ROTCLOUD:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
me->CastSpell(target, SPELL_CHOKING_ROTCLOUD);
events.ScheduleEvent(EVENT_CHOKING_ROTCLOUD, 45s);
break;
case EVENT_COOKING_ROOTCLOUD:
if (Unit* target = SelectTarget(SelectTargetMethod::MinDistance, 0, 100.0f, true))
{
me->CastSpell(target, SPELL_COOKING_ROOTCLOUD);
}
events.ScheduleEvent(EVENT_COOKING_ROOTCLOUD, 5s);
case EVENT_DECAYING_STRENGTH:
DoCastVictim(SPELL_DECAYING_STRENGTH);
DoCastSelf(SPELL_DECAYING_STRENGTH_FX);
DoCastAOE(SPELL_DECAYING_STRENGTH_AOE);
DoCastAOE(SPELL_WITHERED_ERUPTION);
events.ScheduleEvent(EVENT_DECAYING_STRENGTH, 45s);
break;
case EVENT_ROTTING_SICKNESS:
DoCastAOE(SPELL_ROTTING_SICKNESS);
break;
default:
break;
}
}
}
};
void AddSC_Boss_Decatriarch_Wratheye()
{
RegisterBrackenhideHollowCreatureAI(Boss_Decatriarch_Wratheye);
@@ -20,46 +20,46 @@
enum GutshootSpells
{
SPELL_CALL_HIENAS = 394540,
SPELL_ENSNARING_TRAP_VISUAL = 385359,
SPELL_ENSNARING_TRAP_DAMAGE = 384148,
SPELL_MEAT_TOSS = 384416,
SPELL_MASTER_CALL = 384633,
SPELL_GUT_SHOOT_TANK = 384353,
SPELL_CRIPPLING_BITE = 384577,
//Gutshot (sniff 12.1 Brackenhide Hollow, hunter boss)
SPELL_GUTSHOT_SHOOT = 382620, //ranged shot, cast ~1.5s
SPELL_ENSNARING_VISUAL = 385359, //trap telegraph
SPELL_ENSNARING_TRAP = 385356, //trap summon (two placed)
SPELL_ENSNARING_HOOK = 383979, //trap hook/trigger
SPELL_ENSNARING_DAMAGE = 384148, //trap damage
SPELL_ENSNARING_SNAP = 383986, //trap snap damage
SPELL_ENSNARING_THORN = 383974, //trap thorns damage
SPELL_CALL_HYENAS = 384827, //summon Rotfang Hyenas
SPELL_MASTERS_CALL = 384633, //4s cast
SPELL_MASTERS_CALL_HIT = 384638, //call impact
};
enum GutshotEvents
{
EVENT_SHOOT = 1,
EVENT_ENSNARING_TRAP,
EVENT_GUTSHOOT_TANK,
EVENT_MASTER_CALL,
EVENT_MEAT_TOSS,
EVENT_BITE,
EVENT_CALL_HIENAS,
EVENT_CALL_HYENAS,
EVENT_MASTERS_CALL,
};
//186116
class Boss_Gutshoot186116 : public BossAI
{
public:
Boss_Gutshoot186116(Creature* creature) : BossAI(creature, DATA_GUTSHOT)
{
}
Boss_Gutshoot186116(Creature* creature) : BossAI(creature, DATA_GUTSHOT) { }
void Reset() override
{
events.Reset();
}
void JustEngagedWith(Unit* who) override
{
BossAI::JustEngagedWith(who);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
events.ScheduleEvent(EVENT_ENSNARING_TRAP, 8s);
events.ScheduleEvent(EVENT_GUTSHOOT_TANK, 12s);
events.ScheduleEvent(EVENT_MASTER_CALL, 16s);
events.ScheduleEvent(EVENT_MEAT_TOSS, 20s);
events.ScheduleEvent(EVENT_BITE, 14s);
events.ScheduleEvent(EVENT_CALL_HIENAS, 30s);
events.ScheduleEvent(EVENT_SHOOT, 3s);
events.ScheduleEvent(EVENT_ENSNARING_TRAP, 12s);
events.ScheduleEvent(EVENT_CALL_HYENAS, 34s);
events.ScheduleEvent(EVENT_MASTERS_CALL, 39s);
}
void EnterEvadeMode(EvadeReason /*why*/) override
@@ -92,43 +92,30 @@ public:
{
switch (eventId)
{
case EVENT_SHOOT:
DoCastVictim(SPELL_GUTSHOT_SHOOT);
events.ScheduleEvent(EVENT_SHOOT, 8s);
break;
case EVENT_ENSNARING_TRAP:
DoCastVictim(SPELL_ENSNARING_TRAP_VISUAL);
DoCastVictim(SPELL_ENSNARING_TRAP_DAMAGE);
events.ScheduleEvent(EVENT_ENSNARING_TRAP, 8s);
DoCastVictim(SPELL_ENSNARING_VISUAL);
DoCastVictim(SPELL_ENSNARING_TRAP);
DoCastVictim(SPELL_ENSNARING_HOOK);
DoCastVictim(SPELL_ENSNARING_DAMAGE);
events.ScheduleEvent(EVENT_ENSNARING_TRAP, 20s);
break;
case EVENT_GUTSHOOT_TANK:
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 0, 100.0f, true))
{
me->CastSpell(target, SPELL_GUT_SHOOT_TANK);
}
events.ScheduleEvent(EVENT_GUTSHOOT_TANK, 12s);
case EVENT_CALL_HYENAS:
DoCastVictim(SPELL_CALL_HYENAS);
events.ScheduleEvent(EVENT_CALL_HYENAS, 33s);
break;
case EVENT_MASTER_CALL:
DoCastVictim(SPELL_MASTER_CALL);
events.ScheduleEvent(EVENT_MASTER_CALL, 16s);
break;
case EVENT_MEAT_TOSS:
if (Unit* target = SelectTarget(SelectTargetMethod::MinDistance, 0, 100.0f, true))
{
me->CastSpell(target, SPELL_MEAT_TOSS);
}
events.ScheduleEvent(EVENT_MEAT_TOSS, 20s);
break;
case EVENT_BITE:
DoCastVictim(SPELL_CRIPPLING_BITE);
events.ScheduleEvent(EVENT_BITE, 14s);
break;
case EVENT_CALL_HIENAS:
DoCastVictim(SPELL_CALL_HIENAS);
events.ScheduleEvent(EVENT_BITE, 30s);
case EVENT_MASTERS_CALL:
DoCastVictim(SPELL_MASTERS_CALL);
DoCastVictim(SPELL_MASTERS_CALL_HIT);
events.ScheduleEvent(EVENT_MASTERS_CALL, 24s);
break;
default:
break;
}
}
}
};
@@ -20,24 +20,31 @@
enum Spells
{
//Rira
SPELL_SAVAGE_CHARGE = 381419,
SPELL_SAVAGE_CHARGE_F = 381444, //charge in front of player then cast savage charge
SPELL_BLADESTORM = 377827, //,381835 , 377830 damage
SPELL_BLADESTORM_DAMAGE = 377830,
SPELL_BLADESTORM_VISUAL = 381834, //checked visual circle
SPELL_BLADESTORM_AURA = 377844, // fixate on player
//Rira Hackclaw (sniff 12.1 Brackenhide Hollow)
SPELL_BLADESTORM_VISUAL = 381834, //visual circle
SPELL_BLADESTORM_CAST = 381835, //main bladestorm cast
SPELL_BLADESTORM_SWEEP = 377832, //sweep while spinning
SPELL_BLADESTORM_DAMAGE = 377830, //periodic damage tick
SPELL_BLADESTORM_FIXATE = 377844, //fixate aura on victim
SPELL_BLADESTORM_HIT = 381818, //extra bladestorm hit
SPELL_BLADESTORM_KNOCK = 389853, //knockback
SPELL_SAVAGE_CHARGE = 381419, //charge impact damage
SPELL_SAVAGE_CHARGE_CAST = 381444, //telegraph before charging
SPELL_SAVAGE_CHARGE_DASH = 381416, //dash movement
SPELL_SAVAGE_CHARGE_HIT = 381461, //charge debuff/impact
SPELL_CLEAVE = 377807,
//Gashtooth
SPELL_GASH_FRENZY_CAST = 378029, //only cast visual
SPELL_GASH_FRENZY = 378020, //dmg 5s
SPELL_GASH_FRENZY_MYTH = 378020, //dmg on mythic 5s
SPELL_DECAYED_SENSES = 381694, // dmg 9s
SPELL_GASH_FRENZY_VISUAL = 378029, //frenzy cast visual
SPELL_GASH_FRENZY = 378024, //main frenzy cast
SPELL_GASH_FRENZY_DAMAGE = 454472, //frenzy tick damage
SPELL_GASH_FRENZY_DASH = 377996, //shadowstep/dash behind target
SPELL_DECAYED_SENSES = 381694, //3s cast
SPELL_DECAYED_SENSES_DAMAGE = 454471, //senses impact
//Tricktotem
SPELL_EARTHBOLT = 378155, //dmg 7s
SPELL_GREATER_HEALING = 377950, //heal him 12s
SPELL_GREATER_HEALING_2 = 377947,
SPELL_BLOODFRENZY = 377965, //casted on self 18s
SPELL_EARTH_BOLT = 378155,
SPELL_GREATER_HEALING_RAPIDS = 377950, //heal (self targeted)
SPELL_GREATER_HEALING_GO = 377947,
SPELL_BLOODFRENZY = 377965,
};
enum Says
@@ -47,35 +54,43 @@ enum Says
enum Events
{
//RIRA
EVENT_SAVAGE_CHARGE = 1,
EVENT_BLADESTORM = 2,
EVENT_CLEAVE = 3,
//Rira
EVENT_BLADESTORM = 1,
EVENT_BLADESTORM_TICK,
EVENT_SAVAGE_CHARGE,
EVENT_CLEAVE,
//Gashtooth
EVENT_GASH_FRENZY,
EVENT_GASH_FRENZY_TICK,
EVENT_DECAYED_SENSES,
//TrickTotem
EVENT_EARTHBOLT,
//Tricktotem
EVENT_EARTH_BOLT,
EVENT_GREATER_HEALING,
EVENT_BLOODFRENZY,
};
//186122
//186122 Rira Hackclaw + adds Gashtooth/Tricktotem (retail 12.1 rotation)
struct npc_rira_hackclaw : public BossAI
{
npc_rira_hackclaw(Creature* creature) : BossAI(creature, DATA_RIRA_HACKLAW) { }
void Reset() override
{
events.Reset();
_bladestormTicks = 0;
}
void JustEngagedWith(Unit* who) override
{
BossAI::JustEngagedWith(who);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
Talk(0);
events.ScheduleEvent(EVENT_SAVAGE_CHARGE, 8s);
events.ScheduleEvent(EVENT_BLADESTORM, 15s);
events.ScheduleEvent(EVENT_CLEAVE, 18s);
events.ScheduleEvent(EVENT_BLADESTORM, 20s);
events.ScheduleEvent(EVENT_SAVAGE_CHARGE, 24s);
events.ScheduleEvent(EVENT_CLEAVE, 15s);
}
void EnterEvadeMode(EvadeReason /*why*/) override
void EnterEvadeMode(EvadeReason why) override
{
summons.DespawnAll();
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
@@ -92,8 +107,6 @@ struct npc_rira_hackclaw : public BossAI
void UpdateAI(uint32 diff) override
{
scheduler.Update(diff);
if (!UpdateVictim())
return;
@@ -106,16 +119,26 @@ struct npc_rira_hackclaw : public BossAI
{
switch (eventId)
{
case EVENT_SAVAGE_CHARGE:
DoCastVictim(SPELL_SAVAGE_CHARGE_F);
DoCastVictim(SPELL_SAVAGE_CHARGE);
events.ScheduleEvent(EVENT_SAVAGE_CHARGE, 10s);
break;
case EVENT_BLADESTORM:
DoCastVictim(SPELL_BLADESTORM);
_bladestormTicks = 6;
DoCastVictim(SPELL_BLADESTORM_VISUAL);
DoCastVictim(SPELL_BLADESTORM_CAST);
DoCastVictim(SPELL_BLADESTORM_SWEEP);
DoCastVictim(SPELL_BLADESTORM_FIXATE);
events.ScheduleEvent(EVENT_BLADESTORM, 60s);
events.ScheduleEvent(EVENT_BLADESTORM_TICK, 1s);
break;
case EVENT_BLADESTORM_TICK:
DoCastVictim(SPELL_BLADESTORM_DAMAGE);
events.ScheduleEvent(EVENT_BLADESTORM, 8s);
if (--_bladestormTicks > 0)
events.ScheduleEvent(EVENT_BLADESTORM_TICK, 1s);
break;
case EVENT_SAVAGE_CHARGE:
DoCastVictim(SPELL_SAVAGE_CHARGE);
DoCastVictim(SPELL_SAVAGE_CHARGE_CAST);
DoCastVictim(SPELL_SAVAGE_CHARGE_DASH);
DoCastVictim(SPELL_SAVAGE_CHARGE_HIT);
events.ScheduleEvent(EVENT_SAVAGE_CHARGE, 26s);
break;
case EVENT_CLEAVE:
DoCastVictim(SPELL_CLEAVE);
@@ -125,20 +148,28 @@ struct npc_rira_hackclaw : public BossAI
break;
}
}
}
private:
uint8 _bladestormTicks;
};
//186124 gashtooth
//186124 Gashtooth (Rira add, hyena)
struct npc_gasthooth_186124 : public ScriptedAI
{
npc_gasthooth_186124(Creature* creature) : ScriptedAI(creature) { }
void Reset() override
{
_events.Reset();
_frenzyTicks = 0;
}
void JustEngagedWith(Unit* /*who*/) override
{
Talk(2);
_events.ScheduleEvent(EVENT_GASH_FRENZY, 5s);
_events.ScheduleEvent(EVENT_DECAYED_SENSES, 9s);
_events.ScheduleEvent(EVENT_GASH_FRENZY, 4s);
_events.ScheduleEvent(EVENT_DECAYED_SENSES, 42s);
}
void JustDied(Unit* /*killer*/) override
@@ -161,41 +192,50 @@ struct npc_gasthooth_186124 : public ScriptedAI
switch (eventId)
{
case EVENT_GASH_FRENZY:
DoCastVictim(SPELL_GASH_FRENZY_CAST);
_frenzyTicks = 5;
DoCastVictim(SPELL_GASH_FRENZY_VISUAL);
DoCastVictim(SPELL_GASH_FRENZY);
_events.ScheduleEvent(EVENT_GASH_FRENZY, 6s);
_events.ScheduleEvent(EVENT_GASH_FRENZY, 38s);
_events.ScheduleEvent(EVENT_GASH_FRENZY_TICK, 1s);
break;
case EVENT_GASH_FRENZY_TICK:
DoCastVictim(SPELL_GASH_FRENZY_DAMAGE);
DoCastVictim(SPELL_GASH_FRENZY_DASH);
if (--_frenzyTicks > 0)
_events.ScheduleEvent(EVENT_GASH_FRENZY_TICK, 1s);
break;
case EVENT_DECAYED_SENSES:
DoCastVictim(SPELL_DECAYED_SENSES);
_events.ScheduleEvent(EVENT_DECAYED_SENSES, 9s);
DoCastVictim(SPELL_DECAYED_SENSES_DAMAGE);
_events.ScheduleEvent(EVENT_DECAYED_SENSES, 42s);
break;
default:
break;
}
}
}
private:
EventMap _events;
uint8 _frenzyTicks;
};
//186125 Tricktotem
//186125 Tricktotem (Rira add, gnoll shaman)
struct npc_gasTricktotem_186125 : public ScriptedAI
{
npc_gasTricktotem_186125(Creature* creature) : ScriptedAI(creature) { }
void Reset() override
{
_events.Reset();
}
void JustEngagedWith(Unit* /*who*/) override
{
Talk(5);
_events.ScheduleEvent(EVENT_EARTHBOLT, 7s);
_events.ScheduleEvent(EVENT_GREATER_HEALING, 12s);
_events.ScheduleEvent(EVENT_BLOODFRENZY, 18s);
_events.ScheduleEvent(EVENT_EARTH_BOLT, 3s);
_events.ScheduleEvent(EVENT_GREATER_HEALING, 10s);
_events.ScheduleEvent(EVENT_BLOODFRENZY, 48s);
}
void JustDied(Unit* /*killer*/) override
@@ -217,25 +257,23 @@ struct npc_gasTricktotem_186125 : public ScriptedAI
{
switch (eventId)
{
case EVENT_EARTHBOLT:
DoCastVictim(SPELL_EARTHBOLT);
_events.ScheduleEvent(EVENT_EARTHBOLT, 6s);
case EVENT_EARTH_BOLT:
DoCastVictim(SPELL_EARTH_BOLT);
_events.ScheduleEvent(EVENT_EARTH_BOLT, 5s);
break;
case EVENT_GREATER_HEALING:
DoCastAOE(SPELL_GREATER_HEALING);
DoCastSelf(SPELL_GREATER_HEALING_2);
_events.ScheduleEvent(EVENT_GREATER_HEALING, 12s);
DoCastSelf(SPELL_GREATER_HEALING_GO);
DoCastSelf(SPELL_GREATER_HEALING_RAPIDS);
_events.ScheduleEvent(EVENT_GREATER_HEALING, 22s);
break;
case EVENT_BLOODFRENZY:
DoCastSelf(SPELL_BLOODFRENZY);
_events.ScheduleEvent(EVENT_BLOODFRENZY, 18s);
_events.ScheduleEvent(EVENT_BLOODFRENZY, 60s);
break;
default:
break;
}
}
}
private:
@@ -20,8 +20,8 @@ enum Spells
SPELL_VINE_WHIP = 377559,
SPELL_GRASPING_VINES = 376934,
SPELL_DECAY_SPRAY_SUMMON = 376797,//summon 1 slime need set to 4
SPELL_GUSHING_OOZE = 381770,//used by npc slime
SPELL_BURST = 378057, //used by npc slime
SPELL_GUSHING_OOZE = 381770,//used by npc slime (sniff 12.1)
SPELL_BURST = 375614, //used by npc slime (sniff 12.1)
};
enum Events
@@ -0,0 +1,371 @@
/*
* Copyright (C) WowCommunity Project
*
* This SourceCode is NOT free a software. Please hold everything Private
* and read our Terms
*/
#include "Zone_BrackenhideHollow.h"
#include "InstanceScript.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "SpellAuras.h"
#include "SpellHistory.h"
#include "Spell.h"
#include "Player.h"
#include "MotionMaster.h"
#include "TemporarySummon.h"
// Brackenhide Hollow trash (retail 12.1 sniff 69814)
enum TrashSpells
{
//Decay Speaker 186191
SPELL_DECAY_SURGE_WITHER = 382474,
SPELL_WITHERING_BURST = 367705,
//Fetid Rotsinger 186226
SPELL_SUMMON_ROT_TOTEM = 375065,
SPELL_BURST_OF_DECAY = 374544,
//Rotbow Stalker 186208
SPELL_BONE_BOLT = 367521,
SPELL_BONE_BOLT_VOLLEY = 384899,
SPELL_ROTTEN_MEAT = 384953,
//Bonebolt Hunter 185534
SPELL_TARGET_PRACTICE = 376456,
SPELL_TOXIC_TRAP = 368286,
//Trickclaw Mystic 185528
SPELL_FOCUS_EARTH = 376799,
SPELL_EARTH_BOLT_MYSTIC = 382249,
//Filth Caller 185656
SPELL_ROTTING_SURGE = 383390,
//Cruel Bonecrusher 186206
SPELL_CRUSHING_SMASH = 382592,
//Infected Lasher 189363
SPELL_POISON_CHARGE = 372113,
//Decayed Elder 189531
SPELL_SUMMON_LASHERS = 383062,
SPELL_DECAYING_ROOTS = 373897,
//Claw Fighter 185508
SPELL_VICIOUS_CLAWMANGLE = 367484,
//Bracken Warscourge 185529
SPELL_RAGESTORM = 382556,
SPELL_HIDEOUS_CACKLE = 367500,
//Stinkbreath 187033
SPELL_VIOLENT_WHIRLWIND = 385805,
SPELL_STINK_BREATH = 388060,
//Rotfang Hyena 194745
SPELL_BOUNDING_LEAP = 384529,
SPELL_MASTERS_CALL_HYENA = 387802,
//Gutchewer Bear 186284
SPELL_MAUL = 372151,
SPELL_SCENTED_MEAT = 384970,
//Wither Biter 187315
SPELL_DECAY_CLAWS = 382787,
SPELL_BLOODY_BITE = 367481,
//Brackenhide Gnoll 194373
SPELL_ROTTING_CORRUPTION = 383599,
//Brackenhide Slasher 194467
SPELL_SLASHER_CORRUPTION = 383766,
//Fledgling Slasher 194469
SPELL_FLEDGLING_CORRUPTION = 383768,
//Vile Rothexer 194487
SPELL_ROTHEXER_CORRUPTION = 383602,
//Monstrous Decay 186227
SPELL_SPAWN_SLIME = 376463,
SPELL_GUSHING_OOZE_DECAY = 373872,
//Decaying Slime 189299 / 194330
SPELL_SLIME_BURST = 375614,
};
enum TrashEvents
{
EVENT_DW_A = 1,
EVENT_DW_B,
};
// ---------- generic two-spell caster trash ----------
template<uint32 SpellA, uint32 CooldownA, uint32 SpellB, uint32 CooldownB>
struct npc_brh_two_caster : public ScriptedAI
{
npc_brh_two_caster(Creature* creature) : ScriptedAI(creature) { }
void JustEngagedWith(Unit* /*who*/) override
{
_events.ScheduleEvent(EVENT_DW_A, 2s);
_events.ScheduleEvent(EVENT_DW_B, 6s);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
_events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_DW_A:
DoCastVictim(SpellA);
_events.ScheduleEvent(EVENT_DW_A, Milliseconds(CooldownA));
break;
case EVENT_DW_B:
DoCastVictim(SpellB);
_events.ScheduleEvent(EVENT_DW_B, Milliseconds(CooldownB));
break;
default:
break;
}
}
}
private:
EventMap _events;
};
// ---------- generic single-spell trash ----------
template<uint32 SpellA, uint32 CooldownA>
struct npc_brh_one_spell : public ScriptedAI
{
npc_brh_one_spell(Creature* creature) : ScriptedAI(creature) { }
void JustEngagedWith(Unit* /*who*/) override
{
_events.ScheduleEvent(EVENT_DW_A, 2s);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
_events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
while (uint32 eventId = _events.ExecuteEvent())
{
if (eventId == EVENT_DW_A)
{
DoCastVictim(SpellA);
_events.ScheduleEvent(EVENT_DW_A, Milliseconds(CooldownA));
}
}
}
private:
EventMap _events;
};
// ---------- named trash AI ----------
//Decayed Elder 189531 - summons Infected Lashers
struct npc_brh_decayed_elder : public ScriptedAI
{
npc_brh_decayed_elder(Creature* creature) : ScriptedAI(creature) { }
void JustEngagedWith(Unit* /*who*/) override
{
_events.ScheduleEvent(EVENT_DW_A, 3s);
_events.ScheduleEvent(EVENT_DW_B, 12s);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
_events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_DW_A:
DoCastAOE(SPELL_SUMMON_LASHERS);
_events.ScheduleEvent(EVENT_DW_A, 15s);
break;
case EVENT_DW_B:
DoCastAOE(SPELL_DECAYING_ROOTS);
_events.ScheduleEvent(EVENT_DW_B, 20s);
break;
default:
break;
}
}
}
private:
EventMap _events;
};
//Rotfang Hyena 194745 - leap
struct npc_brh_rotfang_hyena : public ScriptedAI
{
npc_brh_rotfang_hyena(Creature* creature) : ScriptedAI(creature) { }
void JustEngagedWith(Unit* /*who*/) override
{
_events.ScheduleEvent(EVENT_DW_A, 4s);
_events.ScheduleEvent(EVENT_DW_B, 18s);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
_events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_DW_A:
DoCastVictim(SPELL_BOUNDING_LEAP);
_events.ScheduleEvent(EVENT_DW_A, 8s);
break;
case EVENT_DW_B:
DoCastVictim(SPELL_MASTERS_CALL_HYENA);
_events.ScheduleEvent(EVENT_DW_B, 20s);
break;
default:
break;
}
}
}
private:
EventMap _events;
};
//Monstrous Decay 186227 - spawns slimes
struct npc_brh_monstrous_decay : public ScriptedAI
{
npc_brh_monstrous_decay(Creature* creature) : ScriptedAI(creature) { }
void JustEngagedWith(Unit* /*who*/) override
{
_events.ScheduleEvent(EVENT_DW_A, 5s);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
_events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
while (uint32 eventId = _events.ExecuteEvent())
{
if (eventId == EVENT_DW_A)
{
DoCastAOE(SPELL_SPAWN_SLIME);
DoCastVictim(SPELL_GUSHING_OOZE_DECAY);
_events.ScheduleEvent(EVENT_DW_A, 8s);
}
}
}
private:
EventMap _events;
};
//Decaying Slime 189299/194330 - pulsing burst blob
struct npc_brh_decaying_slime : public ScriptedAI
{
npc_brh_decaying_slime(Creature* creature) : ScriptedAI(creature) { }
void JustEngagedWith(Unit* /*who*/) override
{
_events.ScheduleEvent(EVENT_DW_A, 1s);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
_events.Update(diff);
while (uint32 eventId = _events.ExecuteEvent())
{
if (eventId == EVENT_DW_A)
{
DoCastSelf(SPELL_SLIME_BURST);
_events.ScheduleEvent(EVENT_DW_A, 5s);
}
}
}
private:
EventMap _events;
};
// ---------- bindings (AI name = ScriptName) ----------
typedef npc_brh_one_spell<SPELL_CRUSHING_SMASH, 6000> npc_brh_cruel_bonecrusher;
typedef npc_brh_one_spell<SPELL_VICIOUS_CLAWMANGLE, 7000> npc_brh_claw_fighter;
typedef npc_brh_one_spell<SPELL_POISON_CHARGE, 8000> npc_brh_infected_lasher;
typedef npc_brh_one_spell<SPELL_BLOODY_BITE, 5000> npc_brh_wither_biter;
typedef npc_brh_one_spell<SPELL_ROTTING_CORRUPTION, 7000> npc_brh_brackenhide_gnoll;
typedef npc_brh_one_spell<SPELL_SLASHER_CORRUPTION, 6000> npc_brh_brackenhide_slasher;
typedef npc_brh_one_spell<SPELL_FLEDGLING_CORRUPTION, 6000> npc_brh_fledgling_slasher;
typedef npc_brh_two_caster<SPELL_DECAY_SURGE_WITHER, 6000, SPELL_WITHERING_BURST, 10000> npc_brh_decay_speaker;
typedef npc_brh_two_caster<SPELL_SUMMON_ROT_TOTEM, 9000, SPELL_BURST_OF_DECAY, 14000> npc_brh_fetid_rotsinger;
typedef npc_brh_two_caster<SPELL_BONE_BOLT, 4000, SPELL_BONE_BOLT_VOLLEY, 9000> npc_brh_rotbow_stalker;
typedef npc_brh_two_caster<SPELL_BONE_BOLT, 5000, SPELL_TOXIC_TRAP, 12000> npc_brh_bonebolt_hunter;
typedef npc_brh_two_caster<SPELL_FOCUS_EARTH, 8000, SPELL_EARTH_BOLT_MYSTIC, 6000> npc_brh_trickclaw_mystic;
typedef npc_brh_two_caster<SPELL_ROTTING_SURGE, 4000, SPELL_DECAY_SURGE_WITHER, 10000> npc_brh_filth_caller;
typedef npc_brh_two_caster<SPELL_WITHERING_BURST, 6000, SPELL_DECAY_SURGE_WITHER, 11000> npc_brh_vile_rothexer;
typedef npc_brh_two_caster<SPELL_RAGESTORM, 10000, SPELL_HIDEOUS_CACKLE, 16000> npc_brh_bracken_warscourge;
typedef npc_brh_two_caster<SPELL_VIOLENT_WHIRLWIND, 9000, SPELL_STINK_BREATH, 14000> npc_brh_stinkbreath;
typedef npc_brh_two_caster<SPELL_MAUL, 6000, SPELL_SCENTED_MEAT, 20000> npc_brh_gutchewer_bear;
typedef npc_brh_two_caster<SPELL_DECAY_SURGE_WITHER, 5000, SPELL_ROTHEXER_CORRUPTION, 9000> npc_brh_rothexer_fledgling;
void AddSC_BrackenhideHollow_trash()
{
RegisterCreatureAI(npc_brh_decayed_elder);
RegisterCreatureAI(npc_brh_rotfang_hyena);
RegisterCreatureAI(npc_brh_monstrous_decay);
RegisterCreatureAI(npc_brh_decaying_slime);
RegisterCreatureAI(npc_brh_cruel_bonecrusher);
RegisterCreatureAI(npc_brh_claw_fighter);
RegisterCreatureAI(npc_brh_infected_lasher);
RegisterCreatureAI(npc_brh_wither_biter);
RegisterCreatureAI(npc_brh_brackenhide_gnoll);
RegisterCreatureAI(npc_brh_brackenhide_slasher);
RegisterCreatureAI(npc_brh_fledgling_slasher);
RegisterCreatureAI(npc_brh_decay_speaker);
RegisterCreatureAI(npc_brh_fetid_rotsinger);
RegisterCreatureAI(npc_brh_rotbow_stalker);
RegisterCreatureAI(npc_brh_bonebolt_hunter);
RegisterCreatureAI(npc_brh_trickclaw_mystic);
RegisterCreatureAI(npc_brh_filth_caller);
RegisterCreatureAI(npc_brh_vile_rothexer);
RegisterCreatureAI(npc_brh_bracken_warscourge);
RegisterCreatureAI(npc_brh_stinkbreath);
RegisterCreatureAI(npc_brh_gutchewer_bear);
RegisterCreatureAI(npc_brh_rothexer_fledgling);
}
@@ -71,6 +71,7 @@ void AddSC_Boss_Decatriarch_Wratheye();
void AddSC_npc_rira_hackclaw();
void AddSC_boss_treemouth();
void AddSC_Boss_Gutshoot();
void AddSC_BrackenhideHollow_trash();
//AmirdrassilTheDreamsHope
// TODO
@@ -180,6 +181,7 @@ void AddDragonIslesScripts()
AddSC_npc_rira_hackclaw();
AddSC_boss_treemouth();
AddSC_Boss_Gutshoot();
AddSC_BrackenhideHollow_trash();
//AmirdrassilTheDreamsHope
// TODO
@@ -1,62 +1,66 @@
/*
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
* The Dread Pit - map 2684, difficulty 208, scenario 3210 (custom), LFGDungeons 2437, AreaTable 15003.
* Final boss: Under-Lord Vik'tis (NPC 220158) - Nerubian spiderlord.
*/
// Nerubian theme - The Ringing Deeps
#include "delves_common.h"
#include "Creature.h"
#include "ScriptMgr.h"
namespace
{
static char const* const ScriptName = "the_dread_pit";
static char const* const TheDreadPitScriptName = "instance_the_dread_pit";
enum DataTypes
enum TheDreadPitData
{
BOSS_1 = 0,
BOSS_UNDER_LORD_VIKTIS = 0,
MAX_ENCOUNTER
};
enum TheDreadPitIds : uint32
{
NPC_UNDER_LORD_VIKTIS = 220158
};
class instance_the_dread_pit : public InstanceMapScript
{
public:
instance_the_dread_pit() : InstanceMapScript(ScriptName, 2684) { }
instance_the_dread_pit() : InstanceMapScript(TheDreadPitScriptName, 2684) { }
struct instance_the_dread_pit_InstanceScript : public Delves::DelveInstanceScript
{
instance_the_dread_pit_InstanceScript(InstanceMap* map)
: DelveInstanceScript(map, 1)
: DelveInstanceScript(map, 1 /* tier resolved at OnPlayerEnter from m_delveSelectedTier */)
{
SetBossNumber(MAX_ENCOUNTER);
}
void OnDelveStart() override { }
void OnDelveComplete() override { }
void OnDelveFailed() override { }
void OnCreatureCreate(Creature* creature) override
{
Delves::DelveInstanceScript::OnCreatureCreate(creature);
switch (creature->GetEntry())
{
case NPC_UNDER_LORD_VIKTIS:
_viktisGuid = creature->GetGUID();
break;
default:
break;
}
}
void OnUnitDeath(Unit* unit) override
{
if (Creature const* creature = unit ? unit->ToCreature() : nullptr)
if (creature->GetEntry() == NPC_UNDER_LORD_VIKTIS && GetBossState(BOSS_UNDER_LORD_VIKTIS) != DONE)
SetBossState(BOSS_UNDER_LORD_VIKTIS, DONE);
Delves::DelveInstanceScript::OnUnitDeath(unit);
}
private:
ObjectGuid _viktisGuid;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
@@ -65,7 +69,7 @@ public:
}
};
} // anonymous namespace
} // namespace
void AddSC_instance_the_dread_pit()
{
@@ -0,0 +1,127 @@
/*
* Boss script for Under-Lord Vik'tis (NPC 220158) - The Dread Pit delve.
*
* Abilities:
* - Rupture (1260001): frontal cone physical damage + knockback.
* - Burrowing Tremors (1260002): channeled AoE around caster + snare.
* - Stinging Swarm (1260003): periodic nature damage to all players.
*
* Spell IDs are loaded from serverside_spell DB tables.
*/
#include "ScriptMgr.h"
#include "Creature.h"
#include "CreatureAI.h"
#include "SpellScript.h"
#include "SpellAuras.h"
#include "Player.h"
#include "InstanceScript.h"
#include "delves_common.h"
enum UnderLordViktisSpells
{
SPELL_RUPTURE = 1260001,
SPELL_BURROWING_TREMORS = 1260031,
SPELL_STINGING_SWARM = 1260003
};
enum UnderLordViktisEvents
{
EVENT_RUPTURE = 1,
EVENT_BURROWING_TREMORS,
EVENT_STINGING_SWARM,
EVENT_BURROWING_END
};
enum UnderLordViktisPhases
{
PHASE_NORMAL = 1,
PHASE_BURROWING
};
struct npc_under_lord_viktis : public ScriptedAI
{
npc_under_lord_viktis(Creature* creature) : ScriptedAI(creature)
{
_instance = creature->GetInstanceScript();
}
void Reset() override
{
_events.Reset();
_phase = PHASE_NORMAL;
}
void JustEngagedWith(Unit* /*who*/) override
{
_events.ScheduleEvent(EVENT_RUPTURE, 8s);
_events.ScheduleEvent(EVENT_BURROWING_TREMORS, 20s);
_events.ScheduleEvent(EVENT_STINGING_SWARM, 15s);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
_events.Update(diff);
while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_RUPTURE:
if (_phase == PHASE_NORMAL)
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
{
// Face target and cast frontal cone
me->SetFacingToObject(target);
DoCast(target, SPELL_RUPTURE);
}
}
_events.Repeat(8s, 12s);
break;
case EVENT_BURROWING_TREMORS:
if (_phase == PHASE_NORMAL)
{
_phase = PHASE_BURROWING;
DoCastSelf(SPELL_BURROWING_TREMORS);
// End burrowing after 6 seconds
_events.ScheduleEvent(EVENT_BURROWING_END, 6s);
}
_events.Repeat(25s);
break;
case EVENT_BURROWING_END:
_phase = PHASE_NORMAL;
me->RemoveAurasDueToSpell(SPELL_BURROWING_TREMORS);
break;
case EVENT_STINGING_SWARM:
if (_phase == PHASE_NORMAL)
{
DoCastSelf(SPELL_STINGING_SWARM);
}
_events.Repeat(20s, 25s);
break;
default:
break;
}
}
me->DoMeleeAttackIfReady();
}
private:
InstanceScript* _instance;
EventMap _events;
UnderLordViktisPhases _phase;
};
void AddSC_npc_under_lord_viktis()
{
RegisterCreatureAI(npc_under_lord_viktis);
}
@@ -71,6 +71,7 @@ void AddSC_gulf_of_memory_encounters();
void AddSC_instance_the_darkway_delve();
void AddSC_npc_delve_companion();
void AddSC_delve_objects();
void AddSC_npc_under_lord_viktis();
// The name of this function should match:
// void Add${NameOfDirectory}Scripts()
@@ -131,4 +132,5 @@ void AddKhazAlgarScripts()
AddSC_instance_the_darkway_delve();
AddSC_npc_delve_companion();
AddSC_delve_objects();
AddSC_npc_under_lord_viktis();
}
@@ -0,0 +1,46 @@
/*
* Spell scripts for The Dread Pit delve boss (Under-Lord Vik'tis, NPC 220158).
*
* Rupture (1260001): frontal cone physical damage + knockback.
* Burrowing Tremors (1260002): periodic physical damage around caster.
* Stinging Swarm (1260003): periodic nature damage to all players in instance.
*/
#include "ScriptMgr.h"
#include "SpellScript.h"
#include "Creature.h"
namespace DreadPit
{
// 1260001 - Rupture: knockback on hit
class spell_delve_rupture : public SpellScript
{
PrepareSpellScript(spell_delve_rupture);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return true;
}
void HandleHit()
{
Unit* caster = GetCaster();
Unit* target = GetHitUnit();
if (!caster || !target)
return;
// Push target away from caster
target->KnockbackFrom(caster->GetPosition(), 15.0f, 4.0f);
}
void Register() override
{
OnHit += SpellHitFn(spell_delve_rupture::HandleHit);
}
};
}
void AddSC_spell_delve_dread_pit()
{
RegisterSpellScript(DreadPit::spell_delve_rupture);
}
@@ -35,6 +35,7 @@ void AddSC_item_spell_scripts();
void AddSC_azerite_item_spell_scripts();
void AddSC_housing_spell_scripts();
void AddSC_dragonriding_spell_scripts();
void AddSC_spell_delve_dread_pit();
// The name of this function should match:
// void Add${NameOfDirectory}Scripts()
@@ -59,4 +60,5 @@ void AddSpellsScripts()
AddSC_azerite_item_spell_scripts();
AddSC_housing_spell_scripts();
AddSC_dragonriding_spell_scripts();
AddSC_spell_delve_dread_pit();
}