mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
Rogue AI: use slice and dice as finisher
This commit is contained in:
@@ -15,6 +15,7 @@ class DpsRogueStrategyActionNodeFactory : public NamedObjectFactory<ActionNode>
|
|||||||
creators["sinister strike"] = &sinister_strike;
|
creators["sinister strike"] = &sinister_strike;
|
||||||
creators["kick"] = &kick;
|
creators["kick"] = &kick;
|
||||||
creators["kidney shot"] = &kidney_shot;
|
creators["kidney shot"] = &kidney_shot;
|
||||||
|
creators["slice and dice"] = &slice_and_dice;
|
||||||
creators["rupture"] = &rupture;
|
creators["rupture"] = &rupture;
|
||||||
creators["backstab"] = &backstab;
|
creators["backstab"] = &backstab;
|
||||||
}
|
}
|
||||||
@@ -68,6 +69,7 @@ class DpsRogueStrategyActionNodeFactory : public NamedObjectFactory<ActionNode>
|
|||||||
/*C*/ nullptr);
|
/*C*/ nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ACTION_NODE_A(slice_and_dice, "slice and dice", "rupture");
|
||||||
static ActionNode* backstab([[maybe_unused]] PlayerbotAI* botAI)
|
static ActionNode* backstab([[maybe_unused]] PlayerbotAI* botAI)
|
||||||
{
|
{
|
||||||
return new ActionNode ("backstab",
|
return new ActionNode ("backstab",
|
||||||
@@ -91,7 +93,7 @@ void DpsRogueStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|||||||
{
|
{
|
||||||
CombatStrategy::InitTriggers(triggers);
|
CombatStrategy::InitTriggers(triggers);
|
||||||
|
|
||||||
triggers.push_back(new TriggerNode("combo points available", NextAction::array(0, new NextAction("rupture", ACTION_HIGH + 2), nullptr)));
|
triggers.push_back(new TriggerNode("combo points available", NextAction::array(0, new NextAction("slice and dice", ACTION_HIGH + 2), nullptr)));
|
||||||
triggers.push_back(new TriggerNode("medium threat", NextAction::array(0, new NextAction("feint", ACTION_HIGH), nullptr)));
|
triggers.push_back(new TriggerNode("medium threat", NextAction::array(0, new NextAction("feint", ACTION_HIGH), nullptr)));
|
||||||
triggers.push_back(new TriggerNode("low health", NextAction::array(0, new NextAction("evasion", ACTION_EMERGENCY), new NextAction("feint", ACTION_EMERGENCY), nullptr)));
|
triggers.push_back(new TriggerNode("low health", NextAction::array(0, new NextAction("evasion", ACTION_EMERGENCY), new NextAction("feint", ACTION_EMERGENCY), nullptr)));
|
||||||
triggers.push_back(new TriggerNode("critical health", NextAction::array(0, new NextAction("blind", ACTION_EMERGENCY), new NextAction("vanish", ACTION_EMERGENCY), nullptr)));
|
triggers.push_back(new TriggerNode("critical health", NextAction::array(0, new NextAction("blind", ACTION_EMERGENCY), new NextAction("vanish", ACTION_EMERGENCY), nullptr)));
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ class RogueAiObjectContextInternal : public NamedObjectContext<Action>
|
|||||||
creators["riposte"] = &RogueAiObjectContextInternal::riposte;
|
creators["riposte"] = &RogueAiObjectContextInternal::riposte;
|
||||||
creators["mutilate"] = &RogueAiObjectContextInternal::mutilate;
|
creators["mutilate"] = &RogueAiObjectContextInternal::mutilate;
|
||||||
creators["sinister strike"] = &RogueAiObjectContextInternal::sinister_strike;
|
creators["sinister strike"] = &RogueAiObjectContextInternal::sinister_strike;
|
||||||
|
creators["gouge"] = &RogueAiObjectContextInternal::gouge;
|
||||||
creators["kidney shot"] = &RogueAiObjectContextInternal::kidney_shot;
|
creators["kidney shot"] = &RogueAiObjectContextInternal::kidney_shot;
|
||||||
creators["rupture"] = &RogueAiObjectContextInternal::rupture;
|
creators["rupture"] = &RogueAiObjectContextInternal::rupture;
|
||||||
creators["slice and dice"] = &RogueAiObjectContextInternal::slice_and_dice;
|
creators["slice and dice"] = &RogueAiObjectContextInternal::slice_and_dice;
|
||||||
@@ -111,6 +112,7 @@ class RogueAiObjectContextInternal : public NamedObjectContext<Action>
|
|||||||
static Action* riposte(PlayerbotAI* botAI) { return new CastRiposteAction(botAI); }
|
static Action* riposte(PlayerbotAI* botAI) { return new CastRiposteAction(botAI); }
|
||||||
static Action* mutilate(PlayerbotAI* botAI) { return new CastMutilateAction(botAI); }
|
static Action* mutilate(PlayerbotAI* botAI) { return new CastMutilateAction(botAI); }
|
||||||
static Action* sinister_strike(PlayerbotAI* botAI) { return new CastSinisterStrikeAction(botAI); }
|
static Action* sinister_strike(PlayerbotAI* botAI) { return new CastSinisterStrikeAction(botAI); }
|
||||||
|
static Action* gouge(PlayerbotAI* botAI) { return new CastGougeAction(botAI); }
|
||||||
static Action* kidney_shot(PlayerbotAI* botAI) { return new CastKidneyShotAction(botAI); }
|
static Action* kidney_shot(PlayerbotAI* botAI) { return new CastKidneyShotAction(botAI); }
|
||||||
static Action* rupture(PlayerbotAI* botAI) { return new CastRuptureAction(botAI); }
|
static Action* rupture(PlayerbotAI* botAI) { return new CastRuptureAction(botAI); }
|
||||||
static Action* slice_and_dice(PlayerbotAI* botAI) { return new CastSliceAndDiceAction(botAI); }
|
static Action* slice_and_dice(PlayerbotAI* botAI) { return new CastSliceAndDiceAction(botAI); }
|
||||||
|
|||||||
@@ -7,5 +7,5 @@
|
|||||||
|
|
||||||
bool CastComboAction::isUseful()
|
bool CastComboAction::isUseful()
|
||||||
{
|
{
|
||||||
return CastMeleeSpellAction::isUseful() && AI_VALUE2(uint8, "combo", "self target") < 5;
|
return CastMeleeSpellAction::isUseful() && AI_VALUE2(uint8, "combo", "current target") < 5;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user