From 036a890aa1cad59e7657f94569e2babf1d146ad0 Mon Sep 17 00:00:00 2001 From: Yunfan Li Date: Sun, 11 Feb 2024 00:17:04 +0800 Subject: [PATCH] Optimize fury warrior --- src/strategy/warrior/FuryWarriorStrategy.cpp | 23 ++++++++++--------- .../warrior/GenericWarriorStrategy.cpp | 2 +- src/strategy/warrior/WarriorActions.cpp | 2 +- src/strategy/warrior/WarriorActions.h | 2 +- .../warrior/WarriorAiObjectContext.cpp | 5 +++- src/strategy/warrior/WarriorTriggers.h | 1 + 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/strategy/warrior/FuryWarriorStrategy.cpp b/src/strategy/warrior/FuryWarriorStrategy.cpp index 146379e8..60cece7b 100644 --- a/src/strategy/warrior/FuryWarriorStrategy.cpp +++ b/src/strategy/warrior/FuryWarriorStrategy.cpp @@ -12,9 +12,9 @@ class FuryWarriorStrategyActionNodeFactory : public NamedObjectFactory &triggers) triggers.push_back(new TriggerNode("battle shout", NextAction::array(0, new NextAction("battle shout", ACTION_HIGH + 8), 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 + 1), nullptr))); + // triggers.push_back(new TriggerNode("hamstring", NextAction::array(0, new NextAction("piercing howl", ACTION_HIGH + 1), nullptr))); triggers.push_back(new TriggerNode("pummel on enemy healer", NextAction::array(0, new NextAction("pummel on enemy healer", ACTION_INTERRUPT), nullptr))); triggers.push_back(new TriggerNode("pummel", NextAction::array(0, new NextAction("pummel", ACTION_INTERRUPT), nullptr))); triggers.push_back(new TriggerNode("victory rush", NextAction::array(0, new NextAction("victory rush", ACTION_INTERRUPT), nullptr))); // triggers.push_back(new TriggerNode("intercept on snare target", NextAction::array(0, new NextAction("intercept on snare target", ACTION_HIGH), nullptr))); - triggers.push_back(new TriggerNode("bloodthirst", NextAction::array(0, new NextAction("bloodthirst", ACTION_HIGH + 2), nullptr))); - triggers.push_back(new TriggerNode("instant slam", NextAction::array(0, new NextAction("slam", ACTION_HIGH + 1), nullptr))); - triggers.push_back(new TriggerNode("berserker rage", NextAction::array(0, new NextAction("berserker rage", ACTION_HIGH + 2), nullptr))); + triggers.push_back(new TriggerNode("bloodthirst", NextAction::array(0, new NextAction("bloodthirst", ACTION_HIGH + 7), 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("death wish", NextAction::array(0, new NextAction("death wish", ACTION_HIGH + 2), nullptr))); - // triggers.push_back(new TriggerNode("rampage", NextAction::array(0, new NextAction("rampage", ACTION_INTERRUPT + 1), nullptr))); triggers.push_back(new TriggerNode("high rage available", NextAction::array(0, new NextAction("heroic strike", ACTION_HIGH + 1), 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), // nullptr))); + + triggers.push_back(new TriggerNode("death wish", NextAction::array(0, new NextAction("death wish", ACTION_HIGH), nullptr))); + triggers.push_back(new TriggerNode("recklessness", NextAction::array(0, new NextAction("recklessness", ACTION_HIGH), nullptr))); } diff --git a/src/strategy/warrior/GenericWarriorStrategy.cpp b/src/strategy/warrior/GenericWarriorStrategy.cpp index 62220389..bb0399e8 100644 --- a/src/strategy/warrior/GenericWarriorStrategy.cpp +++ b/src/strategy/warrior/GenericWarriorStrategy.cpp @@ -51,5 +51,5 @@ void WarrirorAoeStrategy::InitTriggers(std::vector& triggers) new NextAction("cleave", ACTION_HIGH), nullptr))); triggers.push_back(new TriggerNode("shockwave on snare target", 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))); + // triggers.push_back(new TriggerNode("high rage available", NextAction::array(0, new NextAction("whirlwind", ACTION_HIGH + 10), nullptr))); } diff --git a/src/strategy/warrior/WarriorActions.cpp b/src/strategy/warrior/WarriorActions.cpp index 47e89db9..de38b8ff 100644 --- a/src/strategy/warrior/WarriorActions.cpp +++ b/src/strategy/warrior/WarriorActions.cpp @@ -8,5 +8,5 @@ bool CastSunderArmorAction::isUseful() { Aura *aura = botAI->GetAura("sunder armor", GetTarget(), false, true); - return !aura || aura->GetStackAmount() < 5 || aura->GetDuration() <= 3000; + return !aura || aura->GetStackAmount() < 5 || aura->GetDuration() <= 6000; } diff --git a/src/strategy/warrior/WarriorActions.h b/src/strategy/warrior/WarriorActions.h index f963100d..a9bad59b 100644 --- a/src/strategy/warrior/WarriorActions.h +++ b/src/strategy/warrior/WarriorActions.h @@ -74,7 +74,6 @@ BUFF_ACTION(CastBerserkerRageAction, "berserker rage"); MELEE_ACTION(CastWhirlwindAction, "whirlwind"); MELEE_ACTION(CastPummelAction, "pummel"); ENEMY_HEALER_ACTION(CastPummelOnEnemyHealerAction, "pummel"); -BUFF_ACTION(CastRecklessnessAction, "recklessness"); // fury 2.4.3 MELEE_ACTION(CastVictoryRushAction, "victory rush"); // fury 3.3.5 @@ -83,6 +82,7 @@ BUFF_ACTION(CastHeroicFuryAction, "heroic fury"); // fury talents BUFF_ACTION(CastDeathWishAction, "death wish"); +BUFF_ACTION(CastRecklessnessAction, "recklessness"); MELEE_ACTION(CastBloodthirstAction, "bloodthirst"); DEBUFF_ACTION_R(CastPiercingHowlAction, "piercing howl", 8.0f); // fury talents 2.4.3 diff --git a/src/strategy/warrior/WarriorAiObjectContext.cpp b/src/strategy/warrior/WarriorAiObjectContext.cpp index 6803d270..90917300 100644 --- a/src/strategy/warrior/WarriorAiObjectContext.cpp +++ b/src/strategy/warrior/WarriorAiObjectContext.cpp @@ -53,6 +53,7 @@ class WarriorTriggerFactoryInternal : public NamedObjectContext creators["hamstring"] = &WarriorTriggerFactoryInternal::hamstring; creators["victory rush"] = &WarriorTriggerFactoryInternal::victory_rush; creators["death wish"] = &WarriorTriggerFactoryInternal::death_wish; + creators["recklessness"] = &WarriorTriggerFactoryInternal::recklessness; creators["battle shout"] = &WarriorTriggerFactoryInternal::battle_shout; creators["rend"] = &WarriorTriggerFactoryInternal::rend; creators["rend on attacker"] = &WarriorTriggerFactoryInternal::rend_on_attacker; @@ -105,6 +106,7 @@ class WarriorTriggerFactoryInternal : public NamedObjectContext static Trigger* hamstring(PlayerbotAI* botAI) { return new HamstringTrigger(botAI); } static Trigger* victory_rush(PlayerbotAI* botAI) { return new VictoryRushTrigger(botAI); } static Trigger* death_wish(PlayerbotAI* botAI) { return new DeathWishTrigger(botAI); } + static Trigger* recklessness(PlayerbotAI* botAI) { return new RecklessnessTrigger(botAI); } static Trigger* battle_shout(PlayerbotAI* botAI) { return new BattleShoutTrigger(botAI); } static Trigger* rend(PlayerbotAI* botAI) { return new RendDebuffTrigger(botAI); } static Trigger* rend_on_attacker(PlayerbotAI* botAI) { return new RendDebuffOnAttackerTrigger(botAI); } @@ -160,6 +162,7 @@ class WarriorAiObjectContextInternal : public NamedObjectContext creators["rend on attacker"] = &WarriorAiObjectContextInternal::rend_on_attacker; creators["mocking blow"] = &WarriorAiObjectContextInternal::mocking_blow; creators["death wish"] = &WarriorAiObjectContextInternal::death_wish; + creators["recklessness"] = &WarriorAiObjectContextInternal::recklessness; creators["berserker rage"] = &WarriorAiObjectContextInternal::berserker_rage; creators["victory rush"] = &WarriorAiObjectContextInternal::victory_rush; creators["execute"] = &WarriorAiObjectContextInternal::execute; @@ -234,6 +237,7 @@ class WarriorAiObjectContextInternal : public NamedObjectContext static Action* rend_on_attacker(PlayerbotAI* botAI) { return new CastRendOnAttackerAction(botAI); } static Action* mocking_blow(PlayerbotAI* botAI) { return new CastMockingBlowAction(botAI); } static Action* death_wish(PlayerbotAI* botAI) { return new CastDeathWishAction(botAI); } + static Action* recklessness(PlayerbotAI* botAI) { return new CastRecklessnessAction(botAI); } static Action* berserker_rage(PlayerbotAI* botAI) { return new CastBerserkerRageAction(botAI); } static Action* victory_rush(PlayerbotAI* botAI) { return new CastVictoryRushAction(botAI); } static Action* execute(PlayerbotAI* botAI) { return new CastExecuteAction(botAI); } @@ -266,7 +270,6 @@ class WarriorAiObjectContextInternal : public NamedObjectContext static Action* whirlwind(PlayerbotAI* botAI) { return new CastWhirlwindAction(botAI); } static Action* pummel(PlayerbotAI* botAI) { return new CastPummelAction (botAI); } static Action* pummel_on_enemy_healer(PlayerbotAI* botAI) { return new CastPummelOnEnemyHealerAction(botAI); } - static Action* recklessness(PlayerbotAI* botAI) { return new CastRecklessnessAction(botAI); } static Action* piercing_howl(PlayerbotAI* botAI) { return new CastPiercingHowlAction(botAI); } static Action* rampage(PlayerbotAI* botAI) { return new CastRampageAction(botAI); } static Action* intervene(PlayerbotAI* botAI) { return new CastInterveneAction(botAI); } diff --git a/src/strategy/warrior/WarriorTriggers.h b/src/strategy/warrior/WarriorTriggers.h index a6d72fe3..44885a36 100644 --- a/src/strategy/warrior/WarriorTriggers.h +++ b/src/strategy/warrior/WarriorTriggers.h @@ -42,6 +42,7 @@ CD_TRIGGER(InterceptCanCastTrigger, "intercept"); SNARE_TRIGGER(ShockwaveSnareTrigger, "shockwave"); DEBUFF_TRIGGER(ShockwaveTrigger, "shockwave"); BOOST_TRIGGER(DeathWishTrigger, "death wish"); +BOOST_TRIGGER(RecklessnessTrigger, "recklessness"); BUFF_TRIGGER(BloodthirstBuffTrigger, "bloodthirst"); BUFF_TRIGGER(BerserkerRageBuffTrigger, "berserker rage"); INTERRUPT_HEALER_TRIGGER(ShieldBashInterruptEnemyHealerSpellTrigger, "shield bash");