diff --git a/src/Ai/Base/TriggerContext.h b/src/Ai/Base/TriggerContext.h index ceb7c001c..d4f8ac3b7 100644 --- a/src/Ai/Base/TriggerContext.h +++ b/src/Ai/Base/TriggerContext.h @@ -103,7 +103,8 @@ public: creators["enemy within melee"] = &TriggerContext::enemy_within_melee; creators["party member to heal out of spell range"] = &TriggerContext::party_member_to_heal_out_of_spell_range; - creators["combo points available"] = &TriggerContext::ComboPointsAvailable; + creators["combo points 5 available"] = &TriggerContext::ComboPoints5Available; + creators["combo points 4 available"] = &TriggerContext::ComboPoints4Available; creators["combo points 3 available"] = &TriggerContext::ComboPoints3Available; creators["target with combo points almost dead"] = &TriggerContext::target_with_combo_points_almost_dead; creators["combo points not full"] = &TriggerContext::ComboPointsNotFull; @@ -338,7 +339,8 @@ private: { return new PartyMemberToHealOutOfSpellRangeTrigger(botAI); } - static Trigger* ComboPointsAvailable(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI); } + static Trigger* ComboPoints5Available(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI, 5); } + static Trigger* ComboPoints4Available(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI, 4); } static Trigger* ComboPoints3Available(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI, 3); } static Trigger* target_with_combo_points_almost_dead(PlayerbotAI* ai) { diff --git a/src/Ai/Class/Druid/Strategy/CatDpsDruidStrategy.cpp b/src/Ai/Class/Druid/Strategy/CatDpsDruidStrategy.cpp index fda1b5f94..b1a4685b1 100644 --- a/src/Ai/Class/Druid/Strategy/CatDpsDruidStrategy.cpp +++ b/src/Ai/Class/Druid/Strategy/CatDpsDruidStrategy.cpp @@ -228,7 +228,7 @@ void CatDpsDruidStrategy::InitTriggers(std::vector& triggers) ); triggers.push_back( new TriggerNode( - "combo points available", + "combo points 5 available", { NextAction("rip", ACTION_HIGH + 6) } diff --git a/src/Ai/Class/Druid/Strategy/OffhealDruidCatStrategy.cpp b/src/Ai/Class/Druid/Strategy/OffhealDruidCatStrategy.cpp index c472ce8d8..fb7893651 100644 --- a/src/Ai/Class/Druid/Strategy/OffhealDruidCatStrategy.cpp +++ b/src/Ai/Class/Druid/Strategy/OffhealDruidCatStrategy.cpp @@ -176,7 +176,7 @@ void OffhealDruidCatStrategy::InitTriggers(std::vector& triggers) ); triggers.push_back( new TriggerNode( - "combo points available", + "combo points 5 available", { NextAction("rip", ACTION_HIGH + 6) } @@ -257,7 +257,7 @@ void OffhealDruidCatStrategy::InitTriggers(std::vector& triggers) ); triggers.push_back( new TriggerNode( - "low energy", + "tiger's fury", { NextAction("tiger's fury", ACTION_NORMAL + 1) } diff --git a/src/Ai/Class/Rogue/Action/RogueActions.cpp b/src/Ai/Class/Rogue/Action/RogueActions.cpp index b554a8253..46beaf86c 100644 --- a/src/Ai/Class/Rogue/Action/RogueActions.cpp +++ b/src/Ai/Class/Rogue/Action/RogueActions.cpp @@ -61,7 +61,7 @@ bool CastEnvenomAction::isUseful() bool CastEnvenomAction::isPossible() { // alternate to eviscerate if talents unlearned - return botAI->HasAura(58410, bot) /* Master Poisoner */; + return botAI->HasAura(58410, bot) /* Master Poisoner Rank 3 */; } bool CastTricksOfTheTradeOnMainTankAction::isUseful() diff --git a/src/Ai/Class/Rogue/Action/RogueActions.h b/src/Ai/Class/Rogue/Action/RogueActions.h index dd0ad4735..3ae1f8142 100644 --- a/src/Ai/Class/Rogue/Action/RogueActions.h +++ b/src/Ai/Class/Rogue/Action/RogueActions.h @@ -78,6 +78,12 @@ public: CastFeintAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "feint") {} }; +class CastColdBloodAction : public CastBuffSpellAction +{ +public: + CastColdBloodAction(PlayerbotAI* botAI) : CastBuffSpellAction(botAI, "cold blood") {} +}; + class CastDismantleAction : public CastSpellAction { public: diff --git a/src/Ai/Class/Rogue/RogueAiObjectContext.cpp b/src/Ai/Class/Rogue/RogueAiObjectContext.cpp index 8586d93d1..4b4ebab1e 100644 --- a/src/Ai/Class/Rogue/RogueAiObjectContext.cpp +++ b/src/Ai/Class/Rogue/RogueAiObjectContext.cpp @@ -143,6 +143,7 @@ public: creators["use instant poison on off hand"] = &RogueAiObjectContextInternal::use_instant_poison_off_hand; creators["fan of knives"] = &RogueAiObjectContextInternal::fan_of_knives; creators["killing spree"] = &RogueAiObjectContextInternal::killing_spree; + creators["cold blood"] = &RogueAiObjectContextInternal::cold_blood; } private: @@ -184,6 +185,7 @@ private: static Action* use_instant_poison_off_hand(PlayerbotAI* ai) { return new UseInstantPoisonOffHandAction(ai); } static Action* fan_of_knives(PlayerbotAI* ai) { return new FanOfKnivesAction(ai); } static Action* killing_spree(PlayerbotAI* ai) { return new CastKillingSpreeAction(ai); } + static Action* cold_blood(PlayerbotAI* ai) { return new CastColdBloodAction(ai); } }; SharedNamedObjectContextList RogueAiObjectContext::sharedStrategyContexts; diff --git a/src/Ai/Class/Rogue/Strategy/AssassinationRogueStrategy.cpp b/src/Ai/Class/Rogue/Strategy/AssassinationRogueStrategy.cpp index b8563893c..a104fae07 100644 --- a/src/Ai/Class/Rogue/Strategy/AssassinationRogueStrategy.cpp +++ b/src/Ai/Class/Rogue/Strategy/AssassinationRogueStrategy.cpp @@ -29,7 +29,7 @@ private: return new ActionNode( "envenom", /*P*/ {}, - /*A*/ { NextAction("rupture") }, + /*A*/ { NextAction("eviscerate") }, /*C*/ {} ); } @@ -108,10 +108,10 @@ void AssassinationRogueStrategy::InitTriggers(std::vector& trigger triggers.push_back( new TriggerNode( - "combo points 3 available", + "combo points 4 available", { - NextAction("envenom", ACTION_HIGH + 5), - NextAction("eviscerate", ACTION_HIGH + 3) + NextAction("cold blood", ACTION_HIGH + 6), + NextAction("envenom", ACTION_HIGH + 5) } ) ); @@ -120,8 +120,7 @@ void AssassinationRogueStrategy::InitTriggers(std::vector& trigger new TriggerNode( "target with combo points almost dead", { - NextAction("envenom", ACTION_HIGH + 4), - NextAction("eviscerate", ACTION_HIGH + 2) + NextAction("envenom", ACTION_HIGH + 4) } ) ); diff --git a/src/Ai/Class/Rogue/Strategy/DpsRogueStrategy.cpp b/src/Ai/Class/Rogue/Strategy/DpsRogueStrategy.cpp index 22c6a6f83..06aeda57c 100644 --- a/src/Ai/Class/Rogue/Strategy/DpsRogueStrategy.cpp +++ b/src/Ai/Class/Rogue/Strategy/DpsRogueStrategy.cpp @@ -12,36 +12,14 @@ class DpsRogueStrategyActionNodeFactory : public NamedObjectFactory public: DpsRogueStrategyActionNodeFactory() { - creators["mutilate"] = &mutilate; creators["sinister strike"] = &sinister_strike; creators["kick"] = &kick; creators["kidney shot"] = &kidney_shot; creators["backstab"] = &backstab; - creators["melee"] = &melee; creators["rupture"] = &rupture; } private: - static ActionNode* melee([[maybe_unused]] PlayerbotAI* botAI) - { - return new ActionNode( - "melee", - /*P*/ {}, - /*A*/ { - NextAction("mutilate") }, - /*C*/ {} - ); - } - static ActionNode* mutilate([[maybe_unused]] PlayerbotAI* botAI) - { - return new ActionNode( - "mutilate", - /*P*/ {}, - /*A*/ { - NextAction("sinister strike") }, - /*C*/ {} - ); - } static ActionNode* sinister_strike([[maybe_unused]] PlayerbotAI* botAI) { return new ActionNode( @@ -77,7 +55,7 @@ private: "backstab", /*P*/ {}, /*A*/ { - NextAction("mutilate") }, + NextAction("sinister strike") }, /*C*/ {} ); } @@ -140,7 +118,7 @@ void DpsRogueStrategy::InitTriggers(std::vector& triggers) triggers.push_back( new TriggerNode( - "combo points available", + "combo points 5 available", { NextAction("rupture", ACTION_HIGH + 1), NextAction("eviscerate", ACTION_HIGH) @@ -335,7 +313,7 @@ void StealthedRogueStrategy::InitTriggers(std::vector& triggers) { triggers.push_back( new TriggerNode( - "combo points available", + "combo points 5 available", { NextAction("eviscerate", ACTION_HIGH) }