/* * 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_MAGEACTIONS_H #define _PLAYERBOT_MAGEACTIONS_H #include "GenericSpellActions.h" #include "SharedDefines.h" class PlayerbotAI; BUFF_ACTION(CastFireWardAction, "fire ward"); BUFF_ACTION(CastFrostWardAction, "frost ward"); class CastFireballAction : public CastSpellAction { public: CastFireballAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "fireball") { } }; class CastScorchAction : public CastSpellAction { public: CastScorchAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "scorch") { } }; class CastFireBlastAction : public CastSpellAction { public: CastFireBlastAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "fire blast") { } }; class CastArcaneBlastAction : public CastBuffSpellAction { public: CastArcaneBlastAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "arcane blast") { } std::string const GetTargetName() override { return "current target"; } }; class CastArcaneBarrageAction : public CastSpellAction { public: CastArcaneBarrageAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "arcane barrage") { } }; class CastArcaneMissilesAction : public CastSpellAction { public: CastArcaneMissilesAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "arcane missiles") { } }; class CastPyroblastAction : public CastSpellAction { public: CastPyroblastAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "pyroblast") { } }; class CastFlamestrikeAction : public CastSpellAction { public: CastFlamestrikeAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "flamestrike") { } ActionThreatType getThreatType() override { return ActionThreatType::Aoe; } }; class CastFrostNovaAction : public CastSpellAction { public: CastFrostNovaAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "frost nova") { } bool isUseful() override; }; class CastFrostboltAction : public CastSpellAction { public: CastFrostboltAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "frostbolt") { } }; class CastFrostfireBoltAction : public CastSpellAction { public: CastFrostfireBoltAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "frostfire bolt") { } }; class CastIceLanceAction : public CastSpellAction { public: CastIceLanceAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "ice lance") { } }; class CastDeepFreezeAction : public CastSpellAction { public: CastDeepFreezeAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "deep freeze") { } }; class CastBlizzardAction : public CastSpellAction { public: CastBlizzardAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "blizzard") { } ActionThreatType getThreatType() override { return ActionThreatType::Aoe; } }; class CastConeOfColdAction : public CastSpellAction { public: CastConeOfColdAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "cone of cold") { } ActionThreatType getThreatType() override { return ActionThreatType::Aoe; } // bool isUseful() override; }; class CastArcaneIntellectAction : public CastBuffSpellAction { public: CastArcaneIntellectAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "arcane intellect") { } }; class CastArcaneIntellectOnPartyAction : public BuffOnPartyAction { public: CastArcaneIntellectOnPartyAction(PlayerbotAI* botAI) : BuffOnPartyAction(botAI, "arcane intellect") { } }; class CastRemoveCurseAction : public CastCureSpellAction { public: CastRemoveCurseAction(PlayerbotAI* botAI) : CastCureSpellAction(botAI, "remove curse") { } }; class CastRemoveLesserCurseAction : public CastCureSpellAction { public: CastRemoveLesserCurseAction(PlayerbotAI* botAI) : CastCureSpellAction(botAI, "remove lesser curse") { } }; class CastIcyVeinsAction : public CastBuffSpellAction { public: CastIcyVeinsAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "icy veins") { } }; class CastColdSnapAction : public CastBuffSpellAction { public: CastColdSnapAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "cold snap") { } }; class CastIceBarrierAction : public CastBuffSpellAction { public: CastIceBarrierAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "ice barrier") { } }; class CastSummonWaterElementalAction : public CastBuffSpellAction { public: CastSummonWaterElementalAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "summon water elemental") { } }; class CastCombustionAction : public CastBuffSpellAction { public: CastCombustionAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "combustion") { } }; BEGIN_SPELL_ACTION(CastCounterspellAction, "counterspell") END_SPELL_ACTION() class CastRemoveCurseOnPartyAction : public CurePartyMemberAction { public: CastRemoveCurseOnPartyAction(PlayerbotAI* botAI) : CurePartyMemberAction(botAI, "remove curse", DISPEL_CURSE) { } }; class CastRemoveLesserCurseOnPartyAction : public CurePartyMemberAction { public: CastRemoveLesserCurseOnPartyAction(PlayerbotAI* botAI) : CurePartyMemberAction(botAI, "remove lesser curse", DISPEL_CURSE) { } }; class CastConjureFoodAction : public CastBuffSpellAction { public: CastConjureFoodAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "conjure food") { } }; class CastConjureWaterAction : public CastBuffSpellAction { public: CastConjureWaterAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "conjure water") { } }; class CastIceBlockAction : public CastBuffSpellAction { public: CastIceBlockAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "ice block") { } }; class CastMoltenArmorAction : public CastBuffSpellAction { public: CastMoltenArmorAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "molten armor") { } }; class CastMageArmorAction : public CastBuffSpellAction { public: CastMageArmorAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "mage armor") { } }; class CastIceArmorAction : public CastBuffSpellAction { public: CastIceArmorAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "ice armor") { } }; class CastFrostArmorAction : public CastBuffSpellAction { public: CastFrostArmorAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "frost armor") { } }; class CastPolymorphAction : public CastBuffSpellAction { public: CastPolymorphAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "polymorph") { } Value* GetTargetValue() override; }; class CastSpellstealAction : public CastSpellAction { public: CastSpellstealAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "spellsteal") { } }; class CastLivingBombAction : public CastDebuffSpellAction { public: CastLivingBombAction(PlayerbotAI* botAI) : CastDebuffSpellAction(botAI, "living bomb", true) { } }; class CastDragonsBreathAction : public CastSpellAction { public: CastDragonsBreathAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "dragon's breath") { } ActionThreatType getThreatType() override { return ActionThreatType::Aoe; } }; class CastBlastWaveAction : public CastSpellAction { public: CastBlastWaveAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "blast wave") { } ActionThreatType getThreatType() override { return ActionThreatType::Aoe; } }; class CastInvisibilityAction : public CastBuffSpellAction { public: CastInvisibilityAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "invisibility") { } }; class CastEvocationAction : public CastSpellAction { public: CastEvocationAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "evocation") { } std::string const GetTargetName() override { return "self target"; } }; class CastCounterspellOnEnemyHealerAction : public CastSpellOnEnemyHealerAction { public: CastCounterspellOnEnemyHealerAction(PlayerbotAI* botAI) : CastSpellOnEnemyHealerAction(botAI, "counterspell") { } }; class CastArcanePowerAction : public CastBuffSpellAction { public: CastArcanePowerAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "arcane power") { } }; class CastPresenceOfMindAction : public CastBuffSpellAction { public: CastPresenceOfMindAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "presence of mind") { } }; class CastMirrorImageAction : public CastBuffSpellAction { public: CastMirrorImageAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "mirror image") {} }; #endif