/* * 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_CHOOSETARGETACTIONS_H #define _PLAYERBOT_CHOOSETARGETACTIONS_H #include "AttackAction.h" class PlayerbotAI; class DpsAoeAction : public AttackAction { public: DpsAoeAction(PlayerbotAI* botAI) : AttackAction(botAI, "dps aoe") { } std::string const GetTargetName() override { return "dps aoe target"; } }; class DpsAssistAction : public AttackAction { public: DpsAssistAction(PlayerbotAI* botAI) : AttackAction(botAI, "dps assist") { } std::string const GetTargetName() override { return "dps target"; } bool isUseful() override; }; class TankAssistAction : public AttackAction { public: TankAssistAction(PlayerbotAI* botAI) : AttackAction(botAI, "tank assist") { } std::string const GetTargetName() override { return "tank target"; } }; class AttackAnythingAction : public AttackAction { public: AttackAnythingAction(PlayerbotAI* botAI) : AttackAction(botAI, "attack anything") { } std::string const GetTargetName() override { return "grind target"; } bool Execute(Event event) override; bool isUseful() override; bool isPossible() override; }; class AttackLeastHpTargetAction : public AttackAction { public: AttackLeastHpTargetAction(PlayerbotAI* botAI) : AttackAction(botAI, "attack least hp target") { } std::string const GetTargetName() override { return "least hp target"; } }; class AttackEnemyPlayerAction : public AttackAction { public: AttackEnemyPlayerAction(PlayerbotAI* botAI) : AttackAction(botAI, "attack enemy player") { } std::string const GetTargetName() override { return "enemy player target"; } bool isUseful() override; }; class AttackRtiTargetAction : public AttackAction { public: AttackRtiTargetAction(PlayerbotAI* botAI) : AttackAction(botAI, "attack rti target") { } std::string const GetTargetName() override { return "rti target"; } }; class AttackEnemyFlagCarrierAction : public AttackAction { public: AttackEnemyFlagCarrierAction(PlayerbotAI* botAI) : AttackAction(botAI, "attack enemy flag carrier") { } std::string const GetTargetName() override { return "enemy flag carrier"; } bool isUseful() override; }; class DropTargetAction : public Action { public: DropTargetAction(PlayerbotAI* botAI) : Action(botAI, "drop target") { } bool Execute(Event event) override; }; #endif