Files
mod-playerbots/src/strategy/raids/ulduar/RaidUlduarTriggers.h

245 lines
6.2 KiB
C++

#ifndef _PLAYERBOT_RAIDULDUARTRIGGERS_H
#define _PLAYERBOT_RAIDULDUARTRIGGERS_H
#include "EventMap.h"
#include "GenericTriggers.h"
#include "PlayerbotAIConfig.h"
#include "RaidUlduarBossHelper.h"
#include "Trigger.h"
enum UlduarIDs
{
// Iron Assembly
SPELL_LIGHTNING_TENDRILS_10_MAN = 61887,
SPELL_LIGHTNING_TENDRILS_25_MAN = 63486,
SPELL_OVERLOAD_10_MAN = 61869,
SPELL_OVERLOAD_25_MAN = 63481,
SPELL_OVERLOAD_10_MAN_2 = 63485,
SPELL_OVERLOAD_25_MAN_2 = 61886,
SPELL_RUNE_OF_POWER = 64320,
//Kologarn
NPC_RIGHT_ARM = 32934,
NPC_RUBBLE = 33768,
SPELL_CRUNCH_ARMOR = 64002,
SPELL_FOCUSED_EYEBEAM_10_2 = 63346,
SPELL_FOCUSED_EYEBEAM_10 = 63347,
SPELL_FOCUSED_EYEBEAM_25_2 = 63976,
SPELL_FOCUSED_EYEBEAM_25 = 63977,
// Hodir
NPC_SNOWPACKED_ICICLE = 33174,
NPC_TOASTY_FIRE = 33342,
SPELL_FLASH_FREEZE = 61968,
SPELL_BITING_COLD_PLAYER_AURA = 62039,
// Freya
NPC_SNAPLASHER = 32916,
NPC_STORM_LASHER = 32919,
NPC_DETONATING_LASHER = 32918,
NPC_ANCIENT_WATER_SPIRIT = 33202,
NPC_ANCIENT_CONSERVATOR = 33203,
NPC_HEALTHY_SPORE = 33215,
NPC_EONARS_GIFT = 33228,
GOBJECT_NATURE_BOMB = 194902,
// Buffs
SPELL_FROST_TRAP = 13809
};
const int8 skullIndex = 7; // Skull
const int8 crossIndex = 6; // Cross
const int8 moonIndex = 4; // Moon
const float ULDUAR_KOLOGARN_AXIS_Z_PATHING_ISSUE_DETECT = 420.0f;
const float ULDUAR_KOLOGARN_EYEBEAM_RADIUS = 3.0f;
//
// Flame Levi
//
class FlameLeviathanOnVehicleTrigger : public Trigger
{
public:
FlameLeviathanOnVehicleTrigger(PlayerbotAI* ai) : Trigger(ai, "flame leviathan on vehicle") {}
bool IsActive() override;
};
class FlameLeviathanVehicleNearTrigger : public Trigger
{
public:
FlameLeviathanVehicleNearTrigger(PlayerbotAI* ai) : Trigger(ai, "flame leviathan vehicle near") {}
bool IsActive() override;
};
//
// Razorscale
//
class RazorscaleFlyingAloneTrigger : public Trigger
{
public:
RazorscaleFlyingAloneTrigger(PlayerbotAI* ai) : Trigger(ai, "razorscale flying alone") {}
bool IsActive() override;
};
class RazorscaleDevouringFlamesTrigger : public Trigger
{
public:
RazorscaleDevouringFlamesTrigger(PlayerbotAI* ai) : Trigger(ai, "razorscale avoid devouring flames") {}
bool IsActive() override;
};
class RazorscaleAvoidSentinelTrigger : public Trigger
{
public:
RazorscaleAvoidSentinelTrigger(PlayerbotAI* ai) : Trigger(ai, "razorscale avoid sentinel") {}
bool IsActive() override;
};
class RazorscaleAvoidWhirlwindTrigger : public Trigger
{
public:
RazorscaleAvoidWhirlwindTrigger(PlayerbotAI* ai) : Trigger(ai, "razorscale avoid whirlwind") {}
bool IsActive() override;
};
class RazorscaleGroundedTrigger : public Trigger
{
public:
RazorscaleGroundedTrigger(PlayerbotAI* ai) : Trigger(ai, "razorscale grounded") {}
bool IsActive() override;
};
class RazorscaleHarpoonAvailableTrigger : public Trigger
{
public:
RazorscaleHarpoonAvailableTrigger(PlayerbotAI* ai) : Trigger(ai, "razorscale harpoon trigger") {}
bool IsActive() override;
};
class RazorscaleFuseArmorTrigger : public Trigger
{
public:
RazorscaleFuseArmorTrigger(PlayerbotAI* ai) : Trigger(ai, "razorscale fuse armor trigger") {}
bool IsActive() override;
};
//
// Iron Assembly
//
class IronAssemblyLightningTendrilsTrigger : public Trigger
{
public:
IronAssemblyLightningTendrilsTrigger(PlayerbotAI* ai) : Trigger(ai, "iron assembly lightning tendrils trigger") {}
bool IsActive() override;
};
class IronAssemblyOverloadTrigger : public Trigger
{
public:
IronAssemblyOverloadTrigger(PlayerbotAI* ai) : Trigger(ai, "iron assembly overload trigger") {}
bool IsActive() override;
};
class IronAssemblyRuneOfPowerTrigger : public Trigger
{
public:
IronAssemblyRuneOfPowerTrigger(PlayerbotAI* ai) : Trigger(ai, "iron assembly rune of power trigger") {}
bool IsActive() override;
};
//
// Kologarn
//
class KologarnMarkDpsTargetTrigger : public Trigger
{
public:
KologarnMarkDpsTargetTrigger(PlayerbotAI* ai) : Trigger(ai, "kologarn mark dps target trigger") {}
bool IsActive() override;
};
class KologarnFallFromFloorTrigger : public Trigger
{
public:
KologarnFallFromFloorTrigger(PlayerbotAI* ai) : Trigger(ai, "kologarn fall from floor trigger") {}
bool IsActive() override;
};
class KologarnRubbleSlowdownTrigger : public Trigger
{
public:
KologarnRubbleSlowdownTrigger(PlayerbotAI* ai) : Trigger(ai, "kologarn rubble slowdown trigger") {}
bool IsActive() override;
};
class KologarnEyebeamTrigger : public Trigger
{
public:
KologarnEyebeamTrigger(PlayerbotAI* ai) : Trigger(ai, "kologarn eyebeam trigger") {}
bool IsActive() override;
};
class KologarnAttackDpsTargetTrigger : public Trigger
{
public:
KologarnAttackDpsTargetTrigger(PlayerbotAI* ai) : Trigger(ai, "kologarn attack dps target trigger") {}
bool IsActive() override;
};
class KologarnRtiTargetTrigger : public Trigger
{
public:
KologarnRtiTargetTrigger(PlayerbotAI* ai) : Trigger(ai, "kologarn rti target trigger") {}
bool IsActive() override;
};
class KologarnCrunchArmorTrigger : public Trigger
{
public:
KologarnCrunchArmorTrigger(PlayerbotAI* ai) : Trigger(ai, "kologarn crunch armor trigger") {}
bool IsActive() override;
};
//
// Hodir
//
class HodirBitingColdTrigger : public Trigger
{
public:
HodirBitingColdTrigger(PlayerbotAI* ai) : Trigger(ai, "hodir biting cold") {}
bool IsActive() override;
};
class HodirNearSnowpackedIcicleTrigger : public Trigger
{
public:
HodirNearSnowpackedIcicleTrigger(PlayerbotAI* ai) : Trigger(ai, "hodir near snowpacked icicle") {}
bool IsActive() override;
};
//
// Freya
//
class FreyaNearNatureBombTrigger : public Trigger
{
public:
FreyaNearNatureBombTrigger(PlayerbotAI* ai) : Trigger(ai, "freya near nature bomb") {}
bool IsActive() override;
};
class FreyaMarkDpsTargetTrigger : public Trigger
{
public:
FreyaMarkDpsTargetTrigger(PlayerbotAI* ai) : Trigger(ai, "freya mark dps target trigger") {}
bool IsActive() override;
};
class FreyaMoveToHealingSporeTrigger : public Trigger
{
public:
FreyaMoveToHealingSporeTrigger(PlayerbotAI* ai) : Trigger(ai, "freya move to healing spore trigger") {}
bool IsActive() override;
};
#endif