diff --git a/src/Ai/Class/Druid/DruidAiObjectContext.cpp b/src/Ai/Class/Druid/DruidAiObjectContext.cpp index cc12f009f..3a638eedc 100644 --- a/src/Ai/Class/Druid/DruidAiObjectContext.cpp +++ b/src/Ai/Class/Druid/DruidAiObjectContext.cpp @@ -112,6 +112,7 @@ public: creators["mangle (cat)"] = &DruidTriggerFactoryInternal::mangle_cat; creators["ferocious bite time"] = &DruidTriggerFactoryInternal::ferocious_bite_time; creators["hurricane channel check"] = &DruidTriggerFactoryInternal::hurricane_channel_check; + creators["no healer dps strategy"] = &DruidTriggerFactoryInternal::no_healer_dps_strategy; } private: @@ -149,6 +150,7 @@ private: static Trigger* mangle_cat(PlayerbotAI* ai) { return new MangleCatTrigger(ai); } static Trigger* ferocious_bite_time(PlayerbotAI* ai) { return new FerociousBiteTimeTrigger(ai); } static Trigger* hurricane_channel_check(PlayerbotAI* ai) { return new HurricaneChannelCheckTrigger(ai); } + static Trigger* no_healer_dps_strategy(PlayerbotAI* ai) { return new NoHealerDpsStrategyTrigger(ai); } }; class DruidAiObjectContextInternal : public NamedObjectContext diff --git a/src/Ai/Class/Druid/Strategy/GenericDruidStrategy.cpp b/src/Ai/Class/Druid/Strategy/GenericDruidStrategy.cpp index d5ac8fcea..36b90a146 100644 --- a/src/Ai/Class/Druid/Strategy/GenericDruidStrategy.cpp +++ b/src/Ai/Class/Druid/Strategy/GenericDruidStrategy.cpp @@ -149,10 +149,10 @@ void DruidHealerDpsStrategy::InitTriggers(std::vector& triggers) triggers.push_back( new TriggerNode("healer should attack", { - NextAction("cancel tree form", ACTION_DEFAULT + 0.3f), - NextAction("moonfire", ACTION_DEFAULT + 0.2f), - NextAction("wrath", ACTION_DEFAULT + 0.1f), - NextAction("starfire", ACTION_DEFAULT), + NextAction("cancel tree form", ACTION_DEFAULT + 0.4f), + NextAction("moonfire", ACTION_DEFAULT + 0.3f), + NextAction("wrath", ACTION_DEFAULT + 0.2f), + NextAction("starfire", ACTION_DEFAULT + 0.1f), })); } diff --git a/src/Ai/Class/Druid/Strategy/HealDruidStrategy.cpp b/src/Ai/Class/Druid/Strategy/HealDruidStrategy.cpp index 5d2c4ce34..7529cbb8e 100644 --- a/src/Ai/Class/Druid/Strategy/HealDruidStrategy.cpp +++ b/src/Ai/Class/Druid/Strategy/HealDruidStrategy.cpp @@ -33,6 +33,10 @@ void HealDruidStrategy::InitTriggers(std::vector& triggers) { GenericDruidStrategy::InitTriggers(triggers); + // no healer dps strategy + triggers.push_back(new TriggerNode("no healer dps strategy", + { NextAction("tree form", ACTION_DEFAULT) })); + triggers.push_back(new TriggerNode( "party member to heal out of spell range", { NextAction("reach party member to heal", ACTION_CRITICAL_HEAL + 9) })); diff --git a/src/Ai/Class/Druid/Trigger/DruidTriggers.h b/src/Ai/Class/Druid/Trigger/DruidTriggers.h index 5541cc10e..adad0d2a3 100644 --- a/src/Ai/Class/Druid/Trigger/DruidTriggers.h +++ b/src/Ai/Class/Druid/Trigger/DruidTriggers.h @@ -280,4 +280,15 @@ protected: static const std::set HURRICANE_SPELL_IDS; }; +class NoHealerDpsStrategyTrigger : public Trigger +{ +public: + NoHealerDpsStrategyTrigger(PlayerbotAI* botAI) : Trigger(botAI, "no healer dps strategy") {} + + bool IsActive() override + { + return !botAI->HasStrategy("healer dps", BOT_STATE_COMBAT); + } +}; + #endif