#ifndef _PLAYERBOT_RAIDICCTRIGGERS_H #define _PLAYERBOT_RAIDICCTRIGGERS_H #include "PlayerbotAI.h" #include "Playerbots.h" #include "Trigger.h" enum CreatureIdsICC { // Lord Marrowgar NPC_SPIKE1 = 36619, NPC_SPIKE2 = 38711, NPC_SPIKE3 = 38712, // Lady Deathwhisper NPC_SHADE = 38222, // Gunship Battle NPC_KOR_KRON_BATTLE_MAGE = 37117, NPC_KOR_KRON_AXETHROWER = 36968, NPC_KOR_KRON_ROCKETEER = 36982, NPC_SKYBREAKER_SORCERER = 37116, NPC_SKYBREAKER_RIFLEMAN = 36969, NPC_SKYBREAKER_MORTAR_SOLDIER = 36978, NPC_IGB_HIGH_OVERLORD_SAURFANG = 36939, NPC_IGB_MURADIN_BRONZEBEARD = 36948, NPC_CANNONA = 36838, NPC_CANNONH = 36839, NPC_MURADIN_BRONZEBEARD = 36948, NPC_HIGH_OVERLORD_SAURFANG = 36939, // Deathbringer Saurfang NPC_BLOOD_BEAST1 = 38508, NPC_BLOOD_BEAST2 = 38596, NPC_BLOOD_BEAST3 = 38597, NPC_BLOOD_BEAST4 = 38598, // Rotface NPC_PUDDLE = 37013, NPC_BIG_OOZE = 36899, // Putricide NPC_MALLEABLE_OOZE_STALKER = 38556, NPC_GROWING_OOZE_PUDDLE = 37690, NPC_CHOKING_GAS_BOMB = 38159, // Blood Prince Council NPC_DARK_NUCLEUS = 38369, NPC_PRINCE_KELESETH = 37972, NPC_PRINCE_TALDARAM = 37973, NPC_PRINCE_VALANAR = 37970, NPC_KINETIC_BOMB1 = 38454, NPC_KINETIC_BOMB2 = 38775, NPC_KINETIC_BOMB3 = 38776, NPC_KINETIC_BOMB4 = 38777, NPC_BALL_OF_FLAME = 38332, NPC_BALL_OF_INFERNO_FLAME = 38451, // Blood Queen Lana'thel NPC_SWARMING_SHADOWS = 38163, // Sister Svalna NPC_SPEAR = 38248, ITEM_SPEAR = 50307, // Valithria Dreamwalker NPC_VALITHRIA_DREAMWALKER = 36789, NPC_DREAM_PORTAL = 37945, NPC_NIGHTMARE_PORTAL = 38430, NPC_DREAM_CLOUD = 37985, NPC_NIGHTMARE_CLOUD = 38421, NPC_RISEN_ARCHMAGE = 37868, NPC_BLAZING_SKELETON = 36791, NPC_SUPPRESSER = 37863, NPC_BLISTERING_ZOMBIE = 37934, NPC_GLUTTONOUS_ABOMINATION = 37886, NPC_ROT_WORM = 37907, NPC_COLUMN_OF_FROST = 37918, NPC_MANA_VOID = 38068, NPC_DREAM_PORTAL_PRE_EFFECT = 38186, NPC_NIGHTMARE_PORTAL_PRE_EFFECT = 38429, // Sindragosa NPC_SINDRAGOSA = 36853, NPC_TOMB1 = 36980, NPC_TOMB2 = 38320, NPC_TOMB3 = 38321, NPC_TOMB4 = 38322, // Lich King NPC_THE_LICH_KING = 36597, NPC_TERENAS_MENETHIL = 36823, NPC_TERENAS_MENETHIL_HC = 39217, NPC_SPIRIT_BOMB = 39189, NPC_WICKED_SPIRIT1 = 39190, NPC_WICKED_SPIRIT2 = 39287, NPC_WICKED_SPIRIT3 = 39288, NPC_WICKED_SPIRIT4 = 39289, NPC_SHADOW_TRAP = 39137, NPC_SHAMBLING_HORROR1 = 37698, NPC_SHAMBLING_HORROR2 = 39299, NPC_SHAMBLING_HORROR3 = 39300, NPC_SHAMBLING_HORROR4 = 39301, NPC_ICE_SPHERE1 = 36633, NPC_ICE_SPHERE2 = 39305, NPC_ICE_SPHERE3 = 39306, NPC_ICE_SPHERE4 = 39307, NPC_RAGING_SPIRIT1 = 36701, NPC_RAGING_SPIRIT2 = 39302, NPC_RAGING_SPIRIT3 = 39303, NPC_RAGING_SPIRIT4 = 39304, NPC_DRUDGE_GHOUL1 = 37695, NPC_DRUDGE_GHOUL2 = 39309, NPC_DRUDGE_GHOUL3 = 39310, NPC_DRUDGE_GHOUL4 = 39311, NPC_VALKYR_SHADOWGUARD1 = 36609, NPC_VALKYR_SHADOWGUARD2 = 39120, NPC_VALKYR_SHADOWGUARD3 = 39121, NPC_VALKYR_SHADOWGUARD4 = 39122, NPC_VILE_SPIRIT1 = 37799, NPC_VILE_SPIRIT2 = 39284, NPC_VILE_SPIRIT3 = 39285, NPC_VILE_SPIRIT4 = 39286, }; enum SpellIdsICC { // ICC cheat spells SPELL_EMPOWERED_BLOOD = 70227, //70304 -->50%, 70227 /*100% more dmg, 100% more att speed*/ SPELL_EXPERIENCED = 71188, //dmg 30% 20% att speed SPELL_NO_THREAT = 70115, //reduce threat SPELL_SPITEFULL_FURY = 36886, //500% more threat SPELL_NITRO_BOOSTS = 54861, //Speed SPELL_PAIN_SUPPRESION = 69910, //40% dmg reduction SPELL_AGEIS_OF_DALARAN = 71638, //268 all ress SPELL_CYCLONE = 33786, SPELL_HAMMER_OF_JUSTICE = 10308, //stun // Lady Deathwhisper SPELL_DARK_RECKONING = 69483, // Gunship Battle SPELL_DEATH_PLAGUE = 72865, SPELL_BELOW_ZERO = 69705, // Festergut SPELL_GAS_SPORE = 69279, // Rotface SPELL_SLIME_SPRAY = 69508, SPELL_OOZE_FLOOD = 71215, SPELL_UNSTABLE_OOZE_EXPLOSION = 69839, SPELL_OOZE_FLOOD_VISUAL = 69785, // Putricide SPELL_MALLEABLE_GOO = 70852, SPELL_GROW_AURA = 70347, // Blood Prince Council SPELL_EMPOWERED_SHOCK_VORTEX1 = 72039, SPELL_EMPOWERED_SHOCK_VORTEX2 = 73037, SPELL_EMPOWERED_SHOCK_VORTEX3 = 73038, SPELL_EMPOWERED_SHOCK_VORTEX4 = 73039, // Blood Queen Lana'thel SPELL_PACT_OF_THE_DARKFALLEN = 71340, // Sister Svalna SPELL_AETHER_SHIELD = 71463, // Valithria Dreamwalker SPELL_DREAM_STATE = 70766, SPELL_EMERALD_VIGOR = 70873, // Sindragosa SPELL_FROST_BEACON = 70126, SPELL_ICE_TOMB = 70157, SPELL_FROST_BOMB_VISUAL = 70022, SPELL_BLISTERING_COLD1 = 70123, SPELL_BLISTERING_COLD2 = 71047, SPELL_BLISTERING_COLD3 = 71048, SPELL_BLISTERING_COLD4 = 71049, // The Lich King SPELL_HARVEST_SOUL_VALKYR = 68985, SPELL_QUAKE = 72262, SPELL_REMORSELESS_WINTER1 = 72259, SPELL_REMORSELESS_WINTER2 = 74273, SPELL_REMORSELESS_WINTER3 = 74274, SPELL_REMORSELESS_WINTER4 = 74275, SPELL_REMORSELESS_WINTER5 = 68981, SPELL_REMORSELESS_WINTER6 = 74270, SPELL_REMORSELESS_WINTER7 = 74271, SPELL_REMORSELESS_WINTER8 = 74272, }; const uint32 DEFILE_AURAS[] = {72756, 74162, 74163, 74164}; const uint32 DEFILE_CAST_ID = 72762; const uint32 DEFILE_NPC_ID = 38757; const size_t DEFILE_AURA_COUNT = 4; // All fanatics and adherents entry ids Lady Deathwhisper static const std::array addEntriesLady = { 37949, 38394, 38625, 38626, 38010, 38397, 39000, 39001, 38136, 38396, 38632, 38633, 37890, 38393, 38628, 38629, 38135, 38395, 38634, 38009, 38398, 38630, 38631}; const std::vector spellEntriesFlood = { 69782, 69783, 69796, 69797, 69798, 69799, 69801, 69802, 69795}; const std::vector availableTargetsGS = { NPC_KOR_KRON_AXETHROWER, NPC_KOR_KRON_ROCKETEER, NPC_KOR_KRON_BATTLE_MAGE, NPC_IGB_HIGH_OVERLORD_SAURFANG, NPC_SKYBREAKER_RIFLEMAN, NPC_SKYBREAKER_MORTAR_SOLDIER, NPC_SKYBREAKER_SORCERER, NPC_IGB_MURADIN_BRONZEBEARD}; static std::vector sporeOrder; //Lord Marrowgar class IccLmTrigger : public Trigger { public: IccLmTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc lm") {} bool IsActive() override; }; //Lady Deathwhisper class IccDarkReckoningTrigger : public Trigger { public: IccDarkReckoningTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc dark reckoning") {} bool IsActive() override; }; class IccLadyDeathwhisperTrigger : public Trigger { public: IccLadyDeathwhisperTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc lady deathwhisper") {} bool IsActive() override; }; //Gunship Battle class IccRottingFrostGiantTankPositionTrigger : public Trigger { public: IccRottingFrostGiantTankPositionTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc rotting frost giant tank position") {} bool IsActive() override; }; class IccInCannonTrigger : public Trigger { public: IccInCannonTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc in cannon") {} bool IsActive() override; }; class IccGunshipCannonNearTrigger : public Trigger { public: IccGunshipCannonNearTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc in cannon") {} bool IsActive() override; }; class IccGunshipTeleportAllyTrigger : public Trigger { public: IccGunshipTeleportAllyTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc gunship teleport ally") {} bool IsActive() override; }; class IccGunshipTeleportHordeTrigger : public Trigger { public: IccGunshipTeleportHordeTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc gunship teleport horde") {} bool IsActive() override; }; //DBS class IccDbsTrigger : public Trigger { public: IccDbsTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc dbs") {} bool IsActive() override; }; class IccDbsMainTankRuneOfBloodTrigger : public Trigger { public: IccDbsMainTankRuneOfBloodTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc dbs main tank rune of blood") {} bool IsActive() override; }; //DOGS class IccStinkyPreciousMainTankMortalWoundTrigger : public Trigger { public: IccStinkyPreciousMainTankMortalWoundTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc stinky precious main tank mortal wound") {} bool IsActive() override; }; //FESTERGUT class IccFestergutGroupPositionTrigger : public Trigger { public: IccFestergutGroupPositionTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc festergut group position") {} bool IsActive() override; }; class IccFestergutMainTankGastricBloatTrigger : public Trigger { public: IccFestergutMainTankGastricBloatTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc festergut main tank gastric bloat") {} bool IsActive() override; }; class IccFestergutSporeTrigger : public Trigger { public: IccFestergutSporeTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc festergut spore") {} bool IsActive() override; }; //ROTFACE class IccRotfaceTankPositionTrigger : public Trigger { public: IccRotfaceTankPositionTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc rotface tank position") {} bool IsActive() override; }; class IccRotfaceGroupPositionTrigger : public Trigger { public: IccRotfaceGroupPositionTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc rotface group position") {} bool IsActive() override; }; class IccRotfaceMoveAwayFromExplosionTrigger : public Trigger { public: IccRotfaceMoveAwayFromExplosionTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc rotface move away from explosion") {} bool IsActive() override; }; //PP class IccPutricideVolatileOozeTrigger : public Trigger { public: IccPutricideVolatileOozeTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc putricide volatile ooze") {} bool IsActive() override; }; class IccPutricideGasCloudTrigger : public Trigger { public: IccPutricideGasCloudTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc putricide gas cloud") {} bool IsActive() override; }; class IccPutricideGrowingOozePuddleTrigger : public Trigger { public: IccPutricideGrowingOozePuddleTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc putricide growing ooze puddle") {} bool IsActive() override; }; class IccPutricideMainTankMutatedPlagueTrigger : public Trigger { public: IccPutricideMainTankMutatedPlagueTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc putricide main tank mutated plague") {} bool IsActive() override; }; class IccPutricideMalleableGooTrigger : public Trigger { public: IccPutricideMalleableGooTrigger(PlayerbotAI* ai) : Trigger(ai, "icc putricide malleable goo") {} bool IsActive() override; }; //BPC class IccBpcKelesethTankTrigger : public Trigger { public: IccBpcKelesethTankTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc bpc keleseth tank") {} bool IsActive() override; }; class IccBpcMainTankTrigger : public Trigger { public: IccBpcMainTankTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc bpc main tank") {} bool IsActive() override; }; class IccBpcEmpoweredVortexTrigger : public Trigger { public: IccBpcEmpoweredVortexTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc bpc empowered vortex") {} bool IsActive() override; }; class IccBpcKineticBombTrigger : public Trigger { public: IccBpcKineticBombTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc bpc kinetic bomb") {} bool IsActive() override; }; class IccBpcBallOfFlameTrigger : public Trigger { public: IccBpcBallOfFlameTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc bpc ball of flame") {} bool IsActive() override; }; //Bql class IccBqlGroupPositionTrigger : public Trigger { public: IccBqlGroupPositionTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc bql tank position") {} bool IsActive() override; }; class IccBqlPactOfDarkfallenTrigger : public Trigger { public: IccBqlPactOfDarkfallenTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc bql pact of darkfallen") {} bool IsActive() override; }; class IccBqlVampiricBiteTrigger : public Trigger { public: IccBqlVampiricBiteTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc bql vampiric bite") {} bool IsActive() override; }; // Sister Svalna class IccValkyreSpearTrigger : public Trigger { public: IccValkyreSpearTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc valkyre spear") {} bool IsActive() override; }; class IccSisterSvalnaTrigger : public Trigger { public: IccSisterSvalnaTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sister svalna") {} bool IsActive() override; }; // Valithria Dreamwalker class IccValithriaGroupTrigger : public Trigger { public: IccValithriaGroupTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc valithria group") {} bool IsActive() override; }; class IccValithriaPortalTrigger : public Trigger { public: IccValithriaPortalTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc valithria portal") {} bool IsActive() override; }; class IccValithriaHealTrigger : public Trigger { public: IccValithriaHealTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc valithria heal") {} bool IsActive() override; }; class IccValithriaDreamCloudTrigger : public Trigger { public: IccValithriaDreamCloudTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc valithria dream cloud") {} bool IsActive() override; }; //SINDRAGOSA class IccSindragosaGroupPositionTrigger : public Trigger { public: IccSindragosaGroupPositionTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sindragosa group position") {} bool IsActive() override; }; class IccSindragosaFrostBeaconTrigger : public Trigger { public: IccSindragosaFrostBeaconTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sindragosa frost beacon") {} bool IsActive() override; }; class IccSindragosaBlisteringColdTrigger : public Trigger { public: IccSindragosaBlisteringColdTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sindragosa blistering cold") {} bool IsActive() override; }; class IccSindragosaUnchainedMagicTrigger : public Trigger { public: IccSindragosaUnchainedMagicTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sindragosa unchained magic") {} bool IsActive() override; }; class IccSindragosaChilledToTheBoneTrigger : public Trigger { public: IccSindragosaChilledToTheBoneTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sindragosa chilled to the bone") {} bool IsActive() override; }; class IccSindragosaMysticBuffetTrigger : public Trigger { public: IccSindragosaMysticBuffetTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sindragosa mystic buffet") {} bool IsActive() override; }; class IccSindragosaMainTankMysticBuffetTrigger : public Trigger { public: IccSindragosaMainTankMysticBuffetTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sindragosa main tank mystic buffet") {} bool IsActive() override; }; class IccSindragosaTankSwapPositionTrigger : public Trigger { public: IccSindragosaTankSwapPositionTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sindragosa tank swap position") {} bool IsActive() override; }; class IccSindragosaFrostBombTrigger : public Trigger { public: IccSindragosaFrostBombTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sindragosa frost bomb") {} bool IsActive() override; }; //LICH KING class IccLichKingShadowTrapTrigger : public Trigger { public: IccLichKingShadowTrapTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc lich king shadow trap") {} bool IsActive() override; }; class IccLichKingNecroticPlagueTrigger : public Trigger { public: IccLichKingNecroticPlagueTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc lich king necrotic plague") {} bool IsActive() override; }; class IccLichKingWinterTrigger : public Trigger { public: IccLichKingWinterTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc lich king winter") {} bool IsActive() override; }; class IccLichKingAddsTrigger : public Trigger { public: IccLichKingAddsTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc lich king adds") {} bool IsActive() override; }; #endif