mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
245 lines
6.2 KiB
C++
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
|