Merge pull request #830 from avirar/arms_warrior_tweak

DPS Warrior action priorities
This commit is contained in:
Yunfan Li
2024-12-30 20:21:27 +08:00
committed by GitHub
6 changed files with 70 additions and 33 deletions

View File

@@ -44,40 +44,64 @@ void ArmsWarriorStrategy::InitTriggers(std::vector<TriggerNode*>& 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),
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)));
NextAction::array(0, new NextAction("sweeping strikes", ACTION_HIGH + 7),
new NextAction("bladestorm", ACTION_HIGH + 6),
nullptr)));
*/
}

View File

@@ -68,12 +68,14 @@ void FuryWarriorStrategy::InitTriggers(std::vector<TriggerNode*>& 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),

View File

@@ -47,11 +47,16 @@ void WarrirorAoeStrategy::InitTriggers(std::vector<TriggerNode*>& 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<TriggerNode*>& 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)));
}

View File

@@ -89,7 +89,9 @@ void TankWarriorStrategy::InitTriggers(std::vector<TriggerNode*>& 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<TriggerNode*>& 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)));
}

View File

@@ -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); }

View File

@@ -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");