/* * Copyright (C) 2016+ AzerothCore , released under GNU GPL v2 license, you may redistribute it * and/or modify it under version 2 of the License, or (at your option), any later version. */ #ifndef _PLAYERBOT_HUNTERTRIGGERS_H #define _PLAYERBOT_HUNTERTRIGGERS_H #include "CureTriggers.h" #include "GenericTriggers.h" #include "Trigger.h" class PlayerbotAI; class HunterNoStingsActiveTrigger : public DebuffTrigger { public: HunterNoStingsActiveTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "no stings") {} bool IsActive() override; }; class AutoShotTrigger : public Trigger { public: AutoShotTrigger(PlayerbotAI* botAI) : Trigger(botAI, "auto shot") {} bool IsActive() override; }; class HunterAspectOfTheMonkeyTrigger : public BuffTrigger { public: HunterAspectOfTheMonkeyTrigger(PlayerbotAI* botAI) : BuffTrigger(botAI, "aspect of the monkey") {} }; class HunterAspectOfTheHawkTrigger : public BuffTrigger { public: HunterAspectOfTheHawkTrigger(PlayerbotAI* botAI) : BuffTrigger(botAI, "aspect of the hawk") {} bool IsActive() override; }; class HunterAspectOfTheWildTrigger : public BuffTrigger { public: HunterAspectOfTheWildTrigger(PlayerbotAI* botAI) : BuffTrigger(botAI, "aspect of the wild") {} }; class HunterAspectOfTheViperTrigger : public BuffTrigger { public: HunterAspectOfTheViperTrigger(PlayerbotAI* botAI) : BuffTrigger(botAI, "aspect of the viper") {} bool IsActive() override; }; class HunterAspectOfThePackTrigger : public BuffTrigger { public: HunterAspectOfThePackTrigger(PlayerbotAI* botAI) : BuffTrigger(botAI, "aspect of the pack") {} bool IsActive() override; }; BEGIN_TRIGGER(HuntersPetDeadTrigger, Trigger) END_TRIGGER() BEGIN_TRIGGER(HuntersPetLowHealthTrigger, Trigger) END_TRIGGER() BEGIN_TRIGGER(HuntersPetMediumHealthTrigger, Trigger) END_TRIGGER() class BlackArrowTrigger : public DebuffTrigger { public: BlackArrowTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "black arrow", 1, true) {} }; class HuntersMarkTrigger : public DebuffTrigger { public: HuntersMarkTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "hunter's mark", 1, false, 25.0f) {} }; class FreezingTrapTrigger : public HasCcTargetTrigger { public: FreezingTrapTrigger(PlayerbotAI* botAI) : HasCcTargetTrigger(botAI, "freezing trap") {} }; class RapidFireTrigger : public BoostTrigger { public: RapidFireTrigger(PlayerbotAI* botAI) : BoostTrigger(botAI, "rapid fire") {} }; class TrueshotAuraTrigger : public BuffTrigger { public: TrueshotAuraTrigger(PlayerbotAI* botAI) : BuffTrigger(botAI, "trueshot aura") {} }; class SerpentStingOnAttackerTrigger : public DebuffOnAttackerTrigger { public: SerpentStingOnAttackerTrigger(PlayerbotAI* botAI) : DebuffOnAttackerTrigger(botAI, "serpent sting", true) {} }; BEGIN_TRIGGER(HunterPetNotHappy, Trigger) END_TRIGGER() class ConsussiveShotSnareTrigger : public SnareTargetTrigger { public: ConsussiveShotSnareTrigger(PlayerbotAI* botAI) : SnareTargetTrigger(botAI, "concussive shot") {} }; class ScareBeastTrigger : public HasCcTargetTrigger { public: ScareBeastTrigger(PlayerbotAI* botAI) : HasCcTargetTrigger(botAI, "scare beast") {} }; class HunterLowAmmoTrigger : public AmmoCountTrigger { public: HunterLowAmmoTrigger(PlayerbotAI* botAI) : AmmoCountTrigger(botAI, "ammo", 1, 30) {} bool IsActive() override; }; class HunterNoAmmoTrigger : public AmmoCountTrigger { public: HunterNoAmmoTrigger(PlayerbotAI* botAI) : AmmoCountTrigger(botAI, "ammo", 1, 10) {} }; class HunterHasAmmoTrigger : public AmmoCountTrigger { public: HunterHasAmmoTrigger(PlayerbotAI* botAI) : AmmoCountTrigger(botAI, "ammo", 1, 10) {} bool IsActive() override; }; class SwitchToRangedTrigger : public Trigger { public: SwitchToRangedTrigger(PlayerbotAI* botAI) : Trigger(botAI, "switch to ranged") {} bool IsActive() override; }; class SwitchToMeleeTrigger : public Trigger { public: SwitchToMeleeTrigger(PlayerbotAI* botAI) : Trigger(botAI, "switch to melee") {} bool IsActive() override; }; class MisdirectionOnMainTankTrigger : public BuffOnMainTankTrigger { public: MisdirectionOnMainTankTrigger(PlayerbotAI* ai) : BuffOnMainTankTrigger(ai, "misdirection", true) {} }; class TargetRemoveEnrageTrigger : public TargetAuraDispelTrigger { public: TargetRemoveEnrageTrigger(PlayerbotAI* ai) : TargetAuraDispelTrigger(ai, "tranquilizing shot", DISPEL_ENRAGE) {} }; class TargetRemoveMagicTrigger : public TargetAuraDispelTrigger { public: TargetRemoveMagicTrigger(PlayerbotAI* ai) : TargetAuraDispelTrigger(ai, "tranquilizing shot", DISPEL_MAGIC) {} }; #endif