mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
Merge pull request #830 from avirar/arms_warrior_tweak
DPS Warrior action priorities
This commit is contained in:
@@ -44,40 +44,64 @@ void ArmsWarriorStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|||||||
GenericWarriorStrategy::InitTriggers(triggers);
|
GenericWarriorStrategy::InitTriggers(triggers);
|
||||||
|
|
||||||
triggers.push_back(new TriggerNode("enemy out of melee",
|
triggers.push_back(new TriggerNode("enemy out of melee",
|
||||||
NextAction::array(0, new NextAction("charge", ACTION_MOVE + 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 + 9), 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",
|
triggers.push_back(new TriggerNode("battle shout",
|
||||||
NextAction::array(0, new NextAction("battle shout", ACTION_HIGH + 8), nullptr)));
|
NextAction::array(0, new NextAction("battle shout", ACTION_HIGH + 9), nullptr)));
|
||||||
triggers.push_back(new TriggerNode(
|
|
||||||
"mortal strike", NextAction::array(0, new NextAction("mortal strike", ACTION_HIGH + 1), 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",
|
triggers.push_back(new TriggerNode("target critical health",
|
||||||
NextAction::array(0, new NextAction("execute", ACTION_HIGH + 4), 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 + 4), nullptr)));
|
triggers.push_back(new TriggerNode("sudden death",
|
||||||
triggers.push_back(
|
NextAction::array(0, new NextAction("execute", ACTION_HIGH + 5), nullptr)));
|
||||||
new TriggerNode("hamstring", NextAction::array(0, new NextAction("piercing howl", ACTION_HIGH), nullptr)));
|
|
||||||
triggers.push_back(
|
triggers.push_back(new TriggerNode("hamstring",
|
||||||
new TriggerNode("overpower", NextAction::array(0, new NextAction("overpower", ACTION_HIGH + 3), nullptr)));
|
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",
|
triggers.push_back(new TriggerNode("taste for blood",
|
||||||
NextAction::array(0, new NextAction("overpower", ACTION_HIGH + 3), 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("victory rush",
|
||||||
triggers.push_back(new TriggerNode(
|
NextAction::array(0, new NextAction("victory rush", ACTION_INTERRUPT), nullptr)));
|
||||||
"high rage available", NextAction::array(0, new NextAction("heroic strike", ACTION_HIGH + 10), nullptr)));
|
|
||||||
triggers.push_back(new TriggerNode("medium rage available",
|
triggers.push_back(new TriggerNode("high rage available",
|
||||||
NextAction::array(0, new NextAction("slam", ACTION_HIGH + 1),
|
NextAction::array(0, new NextAction("heroic strike", ACTION_HIGH),
|
||||||
new NextAction("thunder clap", ACTION_HIGH),
|
new NextAction("slam", ACTION_HIGH + 1),
|
||||||
nullptr)));
|
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(
|
triggers.push_back(
|
||||||
new TriggerNode("bloodrage", NextAction::array(0, new NextAction("bloodrage", ACTION_HIGH + 2), nullptr)));
|
new TriggerNode("bloodrage", NextAction::array(0, new NextAction("bloodrage", ACTION_HIGH + 2), nullptr)));
|
||||||
|
|
||||||
triggers.push_back(
|
triggers.push_back(
|
||||||
new TriggerNode("death wish", NextAction::array(0, new NextAction("death wish", ACTION_HIGH + 2), nullptr)));
|
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(
|
triggers.push_back(new TriggerNode(
|
||||||
"critical health", NextAction::array(0, new NextAction("intimidating shout", ACTION_EMERGENCY), nullptr)));
|
"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",
|
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)));
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,12 +68,14 @@ void FuryWarriorStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|||||||
// snare target", ACTION_HIGH), nullptr)));
|
// snare target", ACTION_HIGH), nullptr)));
|
||||||
triggers.push_back(
|
triggers.push_back(
|
||||||
new TriggerNode("bloodthirst", NextAction::array(0, new NextAction("bloodthirst", ACTION_HIGH + 7), nullptr)));
|
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(
|
triggers.push_back(
|
||||||
new TriggerNode("instant slam", NextAction::array(0, new NextAction("slam", ACTION_HIGH + 5), nullptr)));
|
new TriggerNode("instant slam", NextAction::array(0, new NextAction("slam", ACTION_HIGH + 5), nullptr)));
|
||||||
triggers.push_back(
|
triggers.push_back(
|
||||||
new TriggerNode("bloodrage", NextAction::array(0, new NextAction("bloodrage", ACTION_HIGH + 2), nullptr)));
|
new TriggerNode("bloodrage", NextAction::array(0, new NextAction("bloodrage", ACTION_HIGH + 2), nullptr)));
|
||||||
triggers.push_back(new TriggerNode("medium rage available",
|
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",
|
// 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,
|
// ACTION_HIGH + 2), nullptr))); triggers.push_back(new TriggerNode("light aoe", NextAction::array(0,
|
||||||
// new NextAction("whirlwind", ACTION_HIGH + 2),
|
// new NextAction("whirlwind", ACTION_HIGH + 2),
|
||||||
|
|||||||
@@ -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
|
// 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",
|
// 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)));
|
// 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(
|
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("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("whirlwind", ACTION_HIGH + 2),
|
||||||
new NextAction("demoralizing shout without life time check", ACTION_HIGH + 1),
|
new NextAction("demoralizing shout without life time check", ACTION_HIGH + 1),
|
||||||
new NextAction("cleave", ACTION_HIGH), nullptr)));
|
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)));
|
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",
|
// triggers.push_back(new TriggerNode("high rage available", NextAction::array(0, new NextAction("whirlwind",
|
||||||
// ACTION_HIGH + 10), nullptr)));
|
// ACTION_HIGH + 10), nullptr)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,7 +89,9 @@ void TankWarriorStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|||||||
triggers.push_back(
|
triggers.push_back(
|
||||||
new TriggerNode("sunder armor", NextAction::array(0, new NextAction("devastate", ACTION_HIGH + 2), nullptr)));
|
new TriggerNode("sunder armor", NextAction::array(0, new NextAction("devastate", ACTION_HIGH + 2), nullptr)));
|
||||||
triggers.push_back(new TriggerNode("medium rage available",
|
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(
|
triggers.push_back(new TriggerNode(
|
||||||
"shield block", NextAction::array(0, new NextAction("shield block", ACTION_INTERRUPT + 1), nullptr)));
|
"shield block", NextAction::array(0, new NextAction("shield block", ACTION_INTERRUPT + 1), nullptr)));
|
||||||
triggers.push_back(
|
triggers.push_back(
|
||||||
@@ -129,7 +131,7 @@ void TankWarriorStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|||||||
triggers.push_back(new TriggerNode("protect party member",
|
triggers.push_back(new TriggerNode("protect party member",
|
||||||
NextAction::array(0, new NextAction("intervene", ACTION_EMERGENCY), nullptr)));
|
NextAction::array(0, new NextAction("intervene", ACTION_EMERGENCY), nullptr)));
|
||||||
triggers.push_back(new TriggerNode(
|
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",
|
triggers.push_back(new TriggerNode("medium rage available",
|
||||||
NextAction::array(0, new NextAction("thunder clap", ACTION_HIGH + 1), nullptr)));
|
NextAction::array(0, new NextAction("thunder clap", ACTION_HIGH + 1), nullptr)));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ public:
|
|||||||
creators["thunder clap on snare target"] = &WarriorTriggerFactoryInternal::thunder_clap_on_snare_target;
|
creators["thunder clap on snare target"] = &WarriorTriggerFactoryInternal::thunder_clap_on_snare_target;
|
||||||
creators["thunder clap"] = &WarriorTriggerFactoryInternal::thunder_clap;
|
creators["thunder clap"] = &WarriorTriggerFactoryInternal::thunder_clap;
|
||||||
creators["bloodthirst"] = &WarriorTriggerFactoryInternal::bloodthirst;
|
creators["bloodthirst"] = &WarriorTriggerFactoryInternal::bloodthirst;
|
||||||
|
creators["whirlwind"] = &WarriorTriggerFactoryInternal::whirlwind;
|
||||||
creators["berserker rage"] = &WarriorTriggerFactoryInternal::berserker_rage;
|
creators["berserker rage"] = &WarriorTriggerFactoryInternal::berserker_rage;
|
||||||
creators["pummel on enemy healer"] = &WarriorTriggerFactoryInternal::pummel_on_enemy_healer;
|
creators["pummel on enemy healer"] = &WarriorTriggerFactoryInternal::pummel_on_enemy_healer;
|
||||||
creators["pummel"] = &WarriorTriggerFactoryInternal::pummel;
|
creators["pummel"] = &WarriorTriggerFactoryInternal::pummel;
|
||||||
@@ -159,6 +160,7 @@ private:
|
|||||||
}
|
}
|
||||||
static Trigger* berserker_rage(PlayerbotAI* botAI) { return new BerserkerRageBuffTrigger(botAI); }
|
static Trigger* berserker_rage(PlayerbotAI* botAI) { return new BerserkerRageBuffTrigger(botAI); }
|
||||||
static Trigger* bloodthirst(PlayerbotAI* botAI) { return new BloodthirstBuffTrigger(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_on_snare_target(PlayerbotAI* botAI) { return new ThunderClapSnareTrigger(botAI); }
|
||||||
static Trigger* thunder_clap(PlayerbotAI* botAI) { return new ThunderClapTrigger(botAI); }
|
static Trigger* thunder_clap(PlayerbotAI* botAI) { return new ThunderClapTrigger(botAI); }
|
||||||
static Trigger* mortal_strike(PlayerbotAI* botAI) { return new MortalStrikeDebuffTrigger(botAI); }
|
static Trigger* mortal_strike(PlayerbotAI* botAI) { return new MortalStrikeDebuffTrigger(botAI); }
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ DEBUFF_TRIGGER(ShockwaveTrigger, "shockwave");
|
|||||||
BOOST_TRIGGER(DeathWishTrigger, "death wish");
|
BOOST_TRIGGER(DeathWishTrigger, "death wish");
|
||||||
BOOST_TRIGGER(RecklessnessTrigger, "recklessness");
|
BOOST_TRIGGER(RecklessnessTrigger, "recklessness");
|
||||||
BUFF_TRIGGER(BloodthirstBuffTrigger, "bloodthirst");
|
BUFF_TRIGGER(BloodthirstBuffTrigger, "bloodthirst");
|
||||||
|
BUFF_TRIGGER(WhirlwindTrigger, "whirlwind");
|
||||||
BUFF_TRIGGER(BerserkerRageBuffTrigger, "berserker rage");
|
BUFF_TRIGGER(BerserkerRageBuffTrigger, "berserker rage");
|
||||||
INTERRUPT_HEALER_TRIGGER(ShieldBashInterruptEnemyHealerSpellTrigger, "shield bash");
|
INTERRUPT_HEALER_TRIGGER(ShieldBashInterruptEnemyHealerSpellTrigger, "shield bash");
|
||||||
INTERRUPT_TRIGGER(ShieldBashInterruptSpellTrigger, "shield bash");
|
INTERRUPT_TRIGGER(ShieldBashInterruptSpellTrigger, "shield bash");
|
||||||
|
|||||||
Reference in New Issue
Block a user