mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
Optimize fury warrior
This commit is contained in:
@@ -12,9 +12,9 @@ class FuryWarriorStrategyActionNodeFactory : public NamedObjectFactory<ActionNod
|
||||
{
|
||||
creators["charge"] = &charge;
|
||||
creators["intercept"] = &intercept;
|
||||
creators["death wish"] = &death_wish;
|
||||
// creators["death wish"] = &death_wish;
|
||||
creators["piercing howl"] = &piercing_howl;
|
||||
creators["bloodthirst"] = &bloodthirst;
|
||||
// creators["bloodthirst"] = &bloodthirst;
|
||||
creators["pummel"] = &pummel;
|
||||
}
|
||||
|
||||
@@ -22,8 +22,8 @@ class FuryWarriorStrategyActionNodeFactory : public NamedObjectFactory<ActionNod
|
||||
ACTION_NODE_A(charge, "charge", "intercept");
|
||||
ACTION_NODE_A(intercept, "intercept", "reach melee");
|
||||
ACTION_NODE_A(piercing_howl, "piercing howl", "hamstring");
|
||||
ACTION_NODE_A(death_wish, "death wish", "berserker rage");
|
||||
ACTION_NODE_A(bloodthirst, "bloodthirst", "melee");
|
||||
// ACTION_NODE_A(death_wish, "death wish", "berserker rage");
|
||||
// ACTION_NODE_A(bloodthirst, "bloodthirst", "melee");
|
||||
ACTION_NODE_A(pummel, "pummel", "intercept");
|
||||
};
|
||||
|
||||
@@ -39,7 +39,7 @@ NextAction** FuryWarriorStrategy::getDefaultActions()
|
||||
new NextAction("whirlwind", ACTION_DEFAULT + 0.4f),
|
||||
new NextAction("sunder armor", ACTION_DEFAULT + 0.3f),
|
||||
new NextAction("execute", ACTION_DEFAULT + 0.2f),
|
||||
new NextAction("overpower", ACTION_DEFAULT + 0.1f),
|
||||
// new NextAction("overpower", ACTION_DEFAULT + 0.1f),
|
||||
new NextAction("melee", ACTION_DEFAULT),
|
||||
NULL);
|
||||
}
|
||||
@@ -53,19 +53,20 @@ void FuryWarriorStrategy::InitTriggers(std::vector<TriggerNode*> &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)));
|
||||
}
|
||||
|
||||
@@ -51,5 +51,5 @@ void WarrirorAoeStrategy::InitTriggers(std::vector<TriggerNode*>& 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)));
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -53,6 +53,7 @@ class WarriorTriggerFactoryInternal : public NamedObjectContext<Trigger>
|
||||
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<Trigger>
|
||||
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<Action>
|
||||
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<Action>
|
||||
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<Action>
|
||||
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); }
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user