diff --git a/src/modules/Bots/playerbot/strategy/warrior/DpsWarriorStrategy.cpp b/src/modules/Bots/playerbot/strategy/warrior/DpsWarriorStrategy.cpp index 25e453901..05f8258d2 100644 --- a/src/modules/Bots/playerbot/strategy/warrior/DpsWarriorStrategy.cpp +++ b/src/modules/Bots/playerbot/strategy/warrior/DpsWarriorStrategy.cpp @@ -10,6 +10,8 @@ class DpsWarriorStrategyActionNodeFactory : public NamedObjectFactory &triggers) { GenericWarriorStrategy::InitTriggers(triggers); + triggers.push_back(new TriggerNode( + "rend", + NextAction::array(0, new NextAction("rend", ACTION_NORMAL + 1), NULL))); + triggers.push_back(new TriggerNode( "enemy out of melee", NextAction::array(0, new NextAction("charge", ACTION_NORMAL + 9), NULL))); @@ -126,5 +146,5 @@ void DpsWarrirorAoeStrategy::InitTriggers(std::list &triggers) triggers.push_back(new TriggerNode( "medium aoe", - NextAction::array(0, new NextAction("cleave", ACTION_HIGH + 3), NULL))); + NextAction::array(0, new NextAction("whirlwind", ACTION_HIGH + 4), new NextAction("cleave", ACTION_HIGH + 3), NULL))); } diff --git a/src/modules/Bots/playerbot/strategy/warrior/GenericWarriorStrategy.cpp b/src/modules/Bots/playerbot/strategy/warrior/GenericWarriorStrategy.cpp index c8898ec78..c1178a57d 100644 --- a/src/modules/Bots/playerbot/strategy/warrior/GenericWarriorStrategy.cpp +++ b/src/modules/Bots/playerbot/strategy/warrior/GenericWarriorStrategy.cpp @@ -51,10 +51,6 @@ void GenericWarriorStrategy::InitTriggers(std::list &triggers) "battle shout", NextAction::array(0, new NextAction("battle shout", ACTION_HIGH + 1), NULL))); - triggers.push_back(new TriggerNode( - "rend", - NextAction::array(0, new NextAction("rend", ACTION_NORMAL + 1), NULL))); - triggers.push_back(new TriggerNode( "bloodrage", NextAction::array(0, new NextAction("bloodrage", ACTION_HIGH + 1), NULL))); diff --git a/src/modules/Bots/playerbot/strategy/warrior/TankWarriorStrategy.cpp b/src/modules/Bots/playerbot/strategy/warrior/TankWarriorStrategy.cpp index ba6159986..4b0ca1437 100644 --- a/src/modules/Bots/playerbot/strategy/warrior/TankWarriorStrategy.cpp +++ b/src/modules/Bots/playerbot/strategy/warrior/TankWarriorStrategy.cpp @@ -12,7 +12,6 @@ class TankWarriorStrategyActionNodeFactory : public NamedObjectFactory &triggers) triggers.push_back(new TriggerNode( "light aoe", - NextAction::array(0, new NextAction("thunder clap", ACTION_HIGH + 2), new NextAction("demoralizing shout", ACTION_HIGH + 2), new NextAction("cleave", ACTION_HIGH + 1), NULL))); + NextAction::array(0, new NextAction("demoralizing shout", ACTION_HIGH + 2), new NextAction("cleave", ACTION_HIGH + 1), NULL))); triggers.push_back(new TriggerNode( "high aoe", diff --git a/src/modules/Bots/playerbot/strategy/warrior/WarriorActions.h b/src/modules/Bots/playerbot/strategy/warrior/WarriorActions.h index 9cc7d342a..01ba079b3 100644 --- a/src/modules/Bots/playerbot/strategy/warrior/WarriorActions.h +++ b/src/modules/Bots/playerbot/strategy/warrior/WarriorActions.h @@ -176,6 +176,29 @@ namespace ai CastBerserkerRageAction(PlayerbotAI* ai) : CastBuffSpellAction(ai, "berserker rage") {} }; + class CastBerserkerStanceAction : public CastBuffSpellAction { + public: + CastBerserkerStanceAction(PlayerbotAI* ai) : CastBuffSpellAction(ai, "berserker stance") {} + }; + + class CastVictoryRushAction : public CastMeleeSpellAction { + public: + CastVictoryRushAction(PlayerbotAI* ai) : CastMeleeSpellAction(ai, "victory rush") {} + }; + + class CastMortalStrikeAction : public CastBattleMeleeSpellAction { + public: + CastMortalStrikeAction(PlayerbotAI* ai) : CastBattleMeleeSpellAction(ai, "mortal strike") {} + }; + + class CastWhirlwindAction : public CastMeleeSpellAction { + public: + CastWhirlwindAction(PlayerbotAI* ai) : CastMeleeSpellAction(ai, "whirlwind") {} + virtual NextAction** getPrerequisites() { + return NextAction::merge(NextAction::array(0, new NextAction("berserker stance"), NULL), CastMeleeSpellAction::getPrerequisites()); + } + }; + class CastLastStandAction : public CastBuffSpellAction { public: CastLastStandAction(PlayerbotAI* ai) : CastBuffSpellAction(ai, "last stand") {} diff --git a/src/modules/Bots/playerbot/strategy/warrior/WarriorAiObjectContext.cpp b/src/modules/Bots/playerbot/strategy/warrior/WarriorAiObjectContext.cpp index 0cd612c1f..a4d228cd1 100644 --- a/src/modules/Bots/playerbot/strategy/warrior/WarriorAiObjectContext.cpp +++ b/src/modules/Bots/playerbot/strategy/warrior/WarriorAiObjectContext.cpp @@ -105,6 +105,10 @@ namespace ai public: AiObjectContextInternal() { + creators["berserker stance"] = &AiObjectContextInternal::berserker_stance; + creators["victory rush"] = &AiObjectContextInternal::victory_rush; + creators["mortal strike"] = &AiObjectContextInternal::mortal_strike; + creators["whirlwind"] = &AiObjectContextInternal::whirlwind; creators["overpower"] = &AiObjectContextInternal::overpower; creators["charge"] = &AiObjectContextInternal::charge; creators["bloodthirst"] = &AiObjectContextInternal::bloodthirst; @@ -140,6 +144,10 @@ namespace ai } private: + static Action* berserker_stance(PlayerbotAI* ai) { return new CastBerserkerStanceAction(ai); } + static Action* victory_rush(PlayerbotAI* ai) { return new CastVictoryRushAction(ai); } + static Action* mortal_strike(PlayerbotAI* ai) { return new CastMortalStrikeAction(ai); } + static Action* whirlwind(PlayerbotAI* ai) { return new CastWhirlwindAction(ai); } static Action* last_stand(PlayerbotAI* ai) { return new CastLastStandAction(ai); } static Action* cleave(PlayerbotAI* ai) { return new CastCleaveAction(ai); } static Action* concussion_blow(PlayerbotAI* ai) { return new CastConcussionBlowAction(ai); }