mirror of
https://github.com/liyunfan1223/mod-playerbots.git
synced 2026-02-20 18:10:02 +01:00
* - Added triggers and action for kologarn fight * - code refactoring * - Added nature resistance aura for kologarn
181 lines
5.2 KiB
C++
181 lines
5.2 KiB
C++
#ifndef _PLAYERBOT_RAIDULDUARACTIONS_H
|
|
#define _PLAYERBOT_RAIDULDUARACTIONS_H
|
|
|
|
#include "Action.h"
|
|
#include "AttackAction.h"
|
|
#include "GenericActions.h"
|
|
#include "GenericSpellActions.h"
|
|
#include "MovementActions.h"
|
|
#include "PlayerbotAI.h"
|
|
#include "Playerbots.h"
|
|
#include "RaidUlduarBossHelper.h"
|
|
#include "Vehicle.h"
|
|
|
|
//
|
|
// Flame Leviathan
|
|
//
|
|
|
|
class FlameLeviathanVehicleAction : public MovementAction
|
|
{
|
|
public:
|
|
FlameLeviathanVehicleAction(PlayerbotAI* botAI) : MovementAction(botAI, "flame leviathan vehicle") {}
|
|
bool Execute(Event event) override;
|
|
|
|
protected:
|
|
bool MoveAvoidChasing(Unit* target);
|
|
bool DemolisherAction(Unit* target);
|
|
bool DemolisherTurretAction(Unit* target);
|
|
bool SiegeEngineAction(Unit* target);
|
|
bool SiegeEngineTurretAction(Unit* target);
|
|
bool ChopperAction(Unit* target);
|
|
Unit* GetAttacker();
|
|
Unit* vehicleBase_;
|
|
Vehicle* vehicle_;
|
|
int avoidChaseIdx = -1;
|
|
};
|
|
|
|
class FlameLeviathanEnterVehicleAction : public MovementAction
|
|
{
|
|
public:
|
|
FlameLeviathanEnterVehicleAction(PlayerbotAI* botAI) : MovementAction(botAI, "flame leviathan enter vehicle") {}
|
|
bool Execute(Event event);
|
|
|
|
protected:
|
|
bool EnterVehicle(Unit* vehicleBase, bool moveIfFar);
|
|
bool ShouldEnter(Unit* vehicleBase);
|
|
bool AllMainVehiclesOnUse();
|
|
};
|
|
|
|
//
|
|
// Razorscale
|
|
//
|
|
|
|
class RazorscaleAvoidDevouringFlameAction : public MovementAction
|
|
{
|
|
public:
|
|
RazorscaleAvoidDevouringFlameAction(PlayerbotAI* botAI) : MovementAction(botAI, "razorscale avoid devouring flames") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class RazorscaleAvoidSentinelAction : public MovementAction
|
|
{
|
|
public:
|
|
RazorscaleAvoidSentinelAction(PlayerbotAI* botAI) : MovementAction(botAI, "razorscale avoid sentinel") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class RazorscaleIgnoreBossAction : public AttackAction
|
|
{
|
|
public:
|
|
RazorscaleIgnoreBossAction(PlayerbotAI* botAI) : AttackAction(botAI, "razorscale ignore flying alone") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class RazorscaleAvoidWhirlwindAction : public MovementAction
|
|
{
|
|
public:
|
|
RazorscaleAvoidWhirlwindAction(PlayerbotAI* botAI) : MovementAction(botAI, "razorscale avoid whirlwind") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class RazorscaleGroundedAction : public AttackAction
|
|
{
|
|
public:
|
|
RazorscaleGroundedAction(PlayerbotAI* botAI) : AttackAction(botAI, "razorscale grounded") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class RazorscaleHarpoonAction : public MovementAction
|
|
{
|
|
public:
|
|
RazorscaleHarpoonAction(PlayerbotAI* botAI) : MovementAction(botAI, "razorscale harpoon action") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class RazorscaleFuseArmorAction : public MovementAction
|
|
{
|
|
public:
|
|
RazorscaleFuseArmorAction(PlayerbotAI* botAI) : MovementAction(botAI, "razorscale fuse armor action") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class HodirMoveSnowpackedIcicleAction : public MovementAction
|
|
{
|
|
public:
|
|
HodirMoveSnowpackedIcicleAction(PlayerbotAI* botAI) : MovementAction(botAI, "hodir move snowpacked icicle") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class IronAssemblyLightningTendrilsAction : public MovementAction
|
|
{
|
|
public:
|
|
IronAssemblyLightningTendrilsAction(PlayerbotAI* botAI) : MovementAction(botAI, "iron assembly lightning tendrils action") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class IronAssemblyOverloadAction : public MovementAction
|
|
{
|
|
public:
|
|
IronAssemblyOverloadAction(PlayerbotAI* botAI) : MovementAction(botAI, "iron assembly overload action") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class KologarnMarkDpsTargetAction : public Action
|
|
{
|
|
public:
|
|
KologarnMarkDpsTargetAction(PlayerbotAI* botAI) : Action(botAI, "kologarn mark dps target action") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class KologarnFallFromFloorAction : public Action
|
|
{
|
|
public:
|
|
KologarnFallFromFloorAction(PlayerbotAI* botAI) : Action(botAI, "kologarn fall from floor action") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class KologarnNatureResistanceAction : public Action
|
|
{
|
|
public:
|
|
KologarnNatureResistanceAction(PlayerbotAI* botAI) : Action(botAI, "kologarn nature resistance action") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class HodirBitingColdJumpAction : public MovementAction
|
|
{
|
|
public:
|
|
HodirBitingColdJumpAction(PlayerbotAI* ai) : MovementAction(ai, "hodir biting cold jump") {}
|
|
bool Execute(Event event) override;
|
|
};
|
|
|
|
class FreyaMoveAwayNatureBombAction : public MovementAction
|
|
{
|
|
public:
|
|
FreyaMoveAwayNatureBombAction(PlayerbotAI* botAI) : MovementAction(botAI, "freya move away nature bomb") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
class FreyaMarkEonarsGiftAction : public MovementAction
|
|
{
|
|
public:
|
|
FreyaMarkEonarsGiftAction(PlayerbotAI* botAI) : MovementAction(botAI, "freya mark eonars gift") {}
|
|
bool Execute(Event event) override;
|
|
bool isUseful() override;
|
|
};
|
|
|
|
#endif
|