diff --git a/src/strategy/warrior/ArmsWarriorStrategy.cpp b/src/strategy/warrior/ArmsWarriorStrategy.cpp index c77e25c2..b6c5eed7 100644 --- a/src/strategy/warrior/ArmsWarriorStrategy.cpp +++ b/src/strategy/warrior/ArmsWarriorStrategy.cpp @@ -44,40 +44,64 @@ void ArmsWarriorStrategy::InitTriggers(std::vector& triggers) GenericWarriorStrategy::InitTriggers(triggers); triggers.push_back(new TriggerNode("enemy out of melee", - NextAction::array(0, new NextAction("charge", ACTION_MOVE + 9), nullptr))); - triggers.push_back(new TriggerNode( - "battle stance", NextAction::array(0, new NextAction("battle stance", ACTION_HIGH + 9), nullptr))); + NextAction::array(0, new NextAction("charge", ACTION_MOVE + 10), nullptr))); + + triggers.push_back(new TriggerNode("battle stance", + NextAction::array(0, new NextAction("battle stance", ACTION_HIGH + 10), nullptr))); + triggers.push_back(new TriggerNode("battle shout", - NextAction::array(0, new NextAction("battle shout", ACTION_HIGH + 8), nullptr))); - triggers.push_back(new TriggerNode( - "mortal strike", NextAction::array(0, new NextAction("mortal strike", ACTION_HIGH + 1), nullptr))); + NextAction::array(0, new NextAction("battle shout", ACTION_HIGH + 9), nullptr))); + + triggers.push_back(new TriggerNode("rend", + NextAction::array(0, new NextAction("rend", ACTION_HIGH + 8), nullptr))); + + triggers.push_back(new TriggerNode("rend on attacker", + NextAction::array(0, new NextAction("rend on attacker", ACTION_HIGH + 8), nullptr))); + + triggers.push_back(new TriggerNode("mortal strike", + NextAction::array(0, new NextAction("mortal strike", ACTION_HIGH + 3), nullptr))); + triggers.push_back(new TriggerNode("target critical health", - NextAction::array(0, new NextAction("execute", ACTION_HIGH + 4), nullptr))); - triggers.push_back( - new TriggerNode("sudden death", NextAction::array(0, new NextAction("execute", ACTION_HIGH + 4), nullptr))); - triggers.push_back( - new TriggerNode("hamstring", NextAction::array(0, new NextAction("piercing howl", ACTION_HIGH), nullptr))); - triggers.push_back( - new TriggerNode("overpower", NextAction::array(0, new NextAction("overpower", ACTION_HIGH + 3), nullptr))); + NextAction::array(0, new NextAction("execute", ACTION_HIGH + 5), nullptr))); + + triggers.push_back(new TriggerNode("sudden death", + NextAction::array(0, new NextAction("execute", ACTION_HIGH + 5), nullptr))); + + triggers.push_back(new TriggerNode("hamstring", + NextAction::array(0, new NextAction("piercing howl", ACTION_HIGH), nullptr))); + + triggers.push_back(new TriggerNode("overpower", + NextAction::array(0, new NextAction("overpower", ACTION_HIGH + 4), nullptr))); + triggers.push_back(new TriggerNode("taste for blood", - NextAction::array(0, new NextAction("overpower", ACTION_HIGH + 3), nullptr))); - triggers.push_back(new TriggerNode( - "victory rush", NextAction::array(0, new NextAction("victory rush", ACTION_INTERRUPT), nullptr))); - triggers.push_back(new TriggerNode( - "high rage available", NextAction::array(0, new NextAction("heroic strike", ACTION_HIGH + 10), nullptr))); - triggers.push_back(new TriggerNode("medium rage available", - NextAction::array(0, new NextAction("slam", ACTION_HIGH + 1), - new NextAction("thunder clap", ACTION_HIGH), - nullptr))); + NextAction::array(0, new NextAction("overpower", ACTION_HIGH + 4), nullptr))); + + triggers.push_back(new TriggerNode("victory rush", + NextAction::array(0, new NextAction("victory rush", ACTION_INTERRUPT), nullptr))); + + triggers.push_back(new TriggerNode("high rage available", + NextAction::array(0, new NextAction("heroic strike", ACTION_HIGH), + new NextAction("slam", ACTION_HIGH + 1), + nullptr))); + // triggers.push_back(new TriggerNode("medium rage available", + // NextAction::array(0, new NextAction("slam", ACTION_HIGH + 1), + // new NextAction("thunder clap", ACTION_HIGH), + // nullptr))); triggers.push_back( new TriggerNode("bloodrage", NextAction::array(0, new NextAction("bloodrage", ACTION_HIGH + 2), nullptr))); + triggers.push_back( new TriggerNode("death wish", NextAction::array(0, new NextAction("death wish", ACTION_HIGH + 2), nullptr))); - triggers.push_back(new TriggerNode("rend", NextAction::array(0, new NextAction("rend", ACTION_HIGH + 5), nullptr))); - triggers.push_back(new TriggerNode( - "rend on attacker", NextAction::array(0, new NextAction("rend on attacker", ACTION_HIGH + 5), nullptr))); + triggers.push_back(new TriggerNode( "critical health", NextAction::array(0, new NextAction("intimidating shout", ACTION_EMERGENCY), nullptr))); - triggers.push_back(new TriggerNode("medium aoe", - NextAction::array(0, new NextAction("thunder clap", ACTION_HIGH + 2), nullptr))); + + // triggers.push_back(new TriggerNode("medium aoe", + // NextAction::array(0, new NextAction("thunder clap", ACTION_HIGH + 2), nullptr))); + /* + triggers.push_back(new TriggerNode("medium aoe", + NextAction::array(0, new NextAction("sweeping strikes", ACTION_HIGH + 7), + new NextAction("bladestorm", ACTION_HIGH + 6), + nullptr))); + */ } diff --git a/src/strategy/warrior/FuryWarriorStrategy.cpp b/src/strategy/warrior/FuryWarriorStrategy.cpp index 56e12b7b..49410f2c 100644 --- a/src/strategy/warrior/FuryWarriorStrategy.cpp +++ b/src/strategy/warrior/FuryWarriorStrategy.cpp @@ -68,12 +68,14 @@ void FuryWarriorStrategy::InitTriggers(std::vector& triggers) // snare target", ACTION_HIGH), nullptr))); triggers.push_back( new TriggerNode("bloodthirst", NextAction::array(0, new NextAction("bloodthirst", ACTION_HIGH + 7), nullptr))); + triggers.push_back( + new TriggerNode("whirlwind", NextAction::array(0, new NextAction("whirlwind", ACTION_HIGH + 6), nullptr))); triggers.push_back( new TriggerNode("instant slam", NextAction::array(0, new NextAction("slam", ACTION_HIGH + 5), nullptr))); triggers.push_back( new TriggerNode("bloodrage", NextAction::array(0, new NextAction("bloodrage", ACTION_HIGH + 2), nullptr))); triggers.push_back(new TriggerNode("medium rage available", - NextAction::array(0, new NextAction("heroic strike", ACTION_HIGH + 1), NULL))); + NextAction::array(0, new NextAction("heroic strike", ACTION_DEFAULT + 0.1f), NULL))); // triggers.push_back(new TriggerNode("berserker rage", NextAction::array(0, new NextAction("berserker rage", // ACTION_HIGH + 2), nullptr))); triggers.push_back(new TriggerNode("light aoe", NextAction::array(0, // new NextAction("whirlwind", ACTION_HIGH + 2), diff --git a/src/strategy/warrior/GenericWarriorStrategy.cpp b/src/strategy/warrior/GenericWarriorStrategy.cpp index 3b5588ea..c48a6493 100644 --- a/src/strategy/warrior/GenericWarriorStrategy.cpp +++ b/src/strategy/warrior/GenericWarriorStrategy.cpp @@ -47,11 +47,16 @@ void WarrirorAoeStrategy::InitTriggers(std::vector& triggers) // triggers.push_back(new TriggerNode("thunder clap on snare target", NextAction::array(0, new NextAction("thunder // clap on snare target", ACTION_HIGH + 3), nullptr))); triggers.push_back(new TriggerNode("thunder clap", // NextAction::array(0, new NextAction("thunder clap", ACTION_HIGH + 10), nullptr))); + /* triggers.push_back(new TriggerNode( + "medium aoe", NextAction::array(0, new NextAction("sweeping strikes", ACTION_HIGH + 7), + new NextAction("bladestorm", ACTION_HIGH + 6), + nullptr))); + */ triggers.push_back(new TriggerNode( - "light aoe", NextAction::array(0, new NextAction("thunder clap", ACTION_HIGH + 5), + "light aoe", NextAction::array(0, new NextAction("sweeping strikes", ACTION_HIGH + 7), + new NextAction("bladestorm", ACTION_HIGH + 6), + new NextAction("thunder clap", ACTION_HIGH + 5), new NextAction("shockwave", ACTION_HIGH + 4), - new NextAction("sweeping strikes", ACTION_HIGH + 3), - new NextAction("bladestorm", ACTION_HIGH + 3), // new NextAction("whirlwind", ACTION_HIGH + 2), new NextAction("demoralizing shout without life time check", ACTION_HIGH + 1), new NextAction("cleave", ACTION_HIGH), nullptr))); @@ -60,4 +65,5 @@ void WarrirorAoeStrategy::InitTriggers(std::vector& triggers) NextAction::array(0, new NextAction("shockwave on snare target", ACTION_HIGH + 5), nullptr))); // triggers.push_back(new TriggerNode("high rage available", NextAction::array(0, new NextAction("whirlwind", // ACTION_HIGH + 10), nullptr))); + } diff --git a/src/strategy/warrior/TankWarriorStrategy.cpp b/src/strategy/warrior/TankWarriorStrategy.cpp index 5f228b09..c1e8aa18 100644 --- a/src/strategy/warrior/TankWarriorStrategy.cpp +++ b/src/strategy/warrior/TankWarriorStrategy.cpp @@ -89,7 +89,9 @@ void TankWarriorStrategy::InitTriggers(std::vector& triggers) triggers.push_back( new TriggerNode("sunder armor", NextAction::array(0, new NextAction("devastate", ACTION_HIGH + 2), nullptr))); triggers.push_back(new TriggerNode("medium rage available", - NextAction::array(0, new NextAction("shield slam", ACTION_HIGH + 1), nullptr))); + NextAction::array(0, new NextAction("shield slam", ACTION_HIGH + 2), + new NextAction("devastate", ACTION_HIGH + 1), + nullptr))); triggers.push_back(new TriggerNode( "shield block", NextAction::array(0, new NextAction("shield block", ACTION_INTERRUPT + 1), nullptr))); triggers.push_back( @@ -129,7 +131,7 @@ void TankWarriorStrategy::InitTriggers(std::vector& triggers) triggers.push_back(new TriggerNode("protect party member", NextAction::array(0, new NextAction("intervene", ACTION_EMERGENCY), nullptr))); triggers.push_back(new TriggerNode( - "high rage available", NextAction::array(0, new NextAction("heroic strike", ACTION_HIGH + 1), nullptr))); + "high rage available", NextAction::array(0, new NextAction("heroic strike", ACTION_HIGH), nullptr))); triggers.push_back(new TriggerNode("medium rage available", NextAction::array(0, new NextAction("thunder clap", ACTION_HIGH + 1), nullptr))); } diff --git a/src/strategy/warrior/WarriorAiObjectContext.cpp b/src/strategy/warrior/WarriorAiObjectContext.cpp index 365fe756..cbeb3a7b 100644 --- a/src/strategy/warrior/WarriorAiObjectContext.cpp +++ b/src/strategy/warrior/WarriorAiObjectContext.cpp @@ -78,6 +78,7 @@ public: creators["thunder clap on snare target"] = &WarriorTriggerFactoryInternal::thunder_clap_on_snare_target; creators["thunder clap"] = &WarriorTriggerFactoryInternal::thunder_clap; creators["bloodthirst"] = &WarriorTriggerFactoryInternal::bloodthirst; + creators["whirlwind"] = &WarriorTriggerFactoryInternal::whirlwind; creators["berserker rage"] = &WarriorTriggerFactoryInternal::berserker_rage; creators["pummel on enemy healer"] = &WarriorTriggerFactoryInternal::pummel_on_enemy_healer; creators["pummel"] = &WarriorTriggerFactoryInternal::pummel; @@ -159,6 +160,7 @@ private: } static Trigger* berserker_rage(PlayerbotAI* botAI) { return new BerserkerRageBuffTrigger(botAI); } static Trigger* bloodthirst(PlayerbotAI* botAI) { return new BloodthirstBuffTrigger(botAI); } + static Trigger* whirlwind(PlayerbotAI* botAI) { return new WhirlwindTrigger(botAI); } static Trigger* thunder_clap_on_snare_target(PlayerbotAI* botAI) { return new ThunderClapSnareTrigger(botAI); } static Trigger* thunder_clap(PlayerbotAI* botAI) { return new ThunderClapTrigger(botAI); } static Trigger* mortal_strike(PlayerbotAI* botAI) { return new MortalStrikeDebuffTrigger(botAI); } diff --git a/src/strategy/warrior/WarriorTriggers.h b/src/strategy/warrior/WarriorTriggers.h index 3509ead7..29dd62ca 100644 --- a/src/strategy/warrior/WarriorTriggers.h +++ b/src/strategy/warrior/WarriorTriggers.h @@ -45,6 +45,7 @@ DEBUFF_TRIGGER(ShockwaveTrigger, "shockwave"); BOOST_TRIGGER(DeathWishTrigger, "death wish"); BOOST_TRIGGER(RecklessnessTrigger, "recklessness"); BUFF_TRIGGER(BloodthirstBuffTrigger, "bloodthirst"); +BUFF_TRIGGER(WhirlwindTrigger, "whirlwind"); BUFF_TRIGGER(BerserkerRageBuffTrigger, "berserker rage"); INTERRUPT_HEALER_TRIGGER(ShieldBashInterruptEnemyHealerSpellTrigger, "shield bash"); INTERRUPT_TRIGGER(ShieldBashInterruptSpellTrigger, "shield bash");