From 37c5c1dcdf2e759db49c02182a105917632e2fec Mon Sep 17 00:00:00 2001 From: Yunfan Li Date: Fri, 4 Oct 2024 14:38:09 +0800 Subject: [PATCH] [Spell] Fix alternative healing spell --- src/strategy/druid/HealDruidStrategy.cpp | 4 ++-- src/strategy/priest/HealPriestStrategy.cpp | 19 ++++++++----------- src/strategy/priest/HolyPriestStrategy.cpp | 16 ++++++++-------- src/strategy/priest/PriestActions.h | 9 ++++++++- src/strategy/priest/PriestAiObjectContext.cpp | 2 +- .../priest/PriestNonCombatStrategy.cpp | 2 +- ...PriestNonCombatStrategyActionNodeFactory.h | 4 ++-- src/strategy/shaman/GenericShamanStrategy.cpp | 8 ++++---- src/strategy/shaman/HealShamanStrategy.cpp | 4 ++-- src/strategy/shaman/ShamanActions.h | 4 ++-- src/strategy/shaman/ShamanAiObjectContext.cpp | 2 +- .../shaman/ShamanNonCombatStrategy.cpp | 2 +- src/strategy/triggers/TriggerContext.h | 4 ++-- 13 files changed, 42 insertions(+), 38 deletions(-) diff --git a/src/strategy/druid/HealDruidStrategy.cpp b/src/strategy/druid/HealDruidStrategy.cpp index b1a28c6e..ec33dea3 100644 --- a/src/strategy/druid/HealDruidStrategy.cpp +++ b/src/strategy/druid/HealDruidStrategy.cpp @@ -78,11 +78,11 @@ void HealDruidStrategy::InitTriggers(std::vector& triggers) triggers.push_back( new TriggerNode("party member critical health", - NextAction::array(0, new NextAction("nature's swiftness", ACTION_CRITICAL_HEAL + 4), NULL))); + NextAction::array(0, new NextAction("nature's swiftness", ACTION_CRITICAL_HEAL + 4), nullptr))); triggers.push_back( new TriggerNode("medium group heal occasion", - NextAction::array(0, new NextAction("tranquility", ACTION_CRITICAL_HEAL + 5), NULL))); + NextAction::array(0, new NextAction("tranquility", ACTION_CRITICAL_HEAL + 5), nullptr))); // LOW triggers.push_back( diff --git a/src/strategy/priest/HealPriestStrategy.cpp b/src/strategy/priest/HealPriestStrategy.cpp index 25f8e8bd..52c12df6 100644 --- a/src/strategy/priest/HealPriestStrategy.cpp +++ b/src/strategy/priest/HealPriestStrategy.cpp @@ -29,15 +29,14 @@ void HealPriestStrategy::InitTriggers(std::vector& triggers) // triggers.push_back(new TriggerNode( // "medium aoe heal", // NextAction::array(0, - // new NextAction("circle of healing", ACTION_MEDIUM_HEAL + 8), + // new NextAction("circle of healing on party", ACTION_MEDIUM_HEAL + 8), // // new NextAction("power word: shield on almost full health below", ACTION_MEDIUM_HEAL + 7), // NULL))); triggers.push_back(new TriggerNode( - "group heal occasion", - NextAction::array(0, new NextAction("circle of healing", ACTION_MEDIUM_HEAL + 8), - new NextAction("power word: shield on almost full health below", ACTION_MEDIUM_HEAL + 7), - NULL))); + "group heal setting", + NextAction::array(0, new NextAction("power word: shield on almost full health below", ACTION_MEDIUM_HEAL + 7), + nullptr))); triggers.push_back(new TriggerNode( "medium group heal occasion", @@ -49,25 +48,23 @@ void HealPriestStrategy::InitTriggers(std::vector& triggers) NextAction::array(0, new NextAction("power word: shield on party", ACTION_CRITICAL_HEAL + 6), new NextAction("penance on party", ACTION_CRITICAL_HEAL + 4), new NextAction("flash heal on party", ACTION_CRITICAL_HEAL + 3), - new NextAction("prayer of mending on party", ACTION_CRITICAL_HEAL + 2), NULL))); + new NextAction("prayer of mending on party", ACTION_CRITICAL_HEAL + 2), nullptr))); triggers.push_back( new TriggerNode("party member low health", NextAction::array(0, new NextAction("power word: shield on party", ACTION_MEDIUM_HEAL + 4), new NextAction("penance on party", ACTION_MEDIUM_HEAL + 2), - new NextAction("circle of healing", ACTION_MEDIUM_HEAL + 2), new NextAction("prayer of mending on party", ACTION_MEDIUM_HEAL + 1), - new NextAction("flash heal on party", ACTION_MEDIUM_HEAL + 0), NULL))); + new NextAction("flash heal on party", ACTION_MEDIUM_HEAL + 0), nullptr))); triggers.push_back( new TriggerNode("party member medium health", NextAction::array(0, new NextAction("power word: shield on party", ACTION_LIGHT_HEAL + 9), new NextAction("penance on party", ACTION_LIGHT_HEAL + 7), - new NextAction("circle of healing", ACTION_LIGHT_HEAL + 7), new NextAction("prayer of mending on party", ACTION_LIGHT_HEAL + 6), new NextAction("flash heal on party", ACTION_LIGHT_HEAL + 5), // new NextAction("renew on party", ACTION_LIGHT_HEAL + 8), - NULL))); + nullptr))); triggers.push_back( new TriggerNode("party member almost full health", @@ -86,7 +83,7 @@ void HealPriestStrategy::InitTriggers(std::vector& triggers) NextAction::array(0, new NextAction("reach party member to heal", ACTION_CRITICAL_HEAL + 10), nullptr))); // triggers.push_back(new TriggerNode("medium aoe heal", NextAction::array(0, new NextAction("prayer of // mending", 49.0f), nullptr))); triggers.push_back(new TriggerNode("medium aoe heal", NextAction::array(0, new - // NextAction("circle of healing", 48.0f), nullptr))); triggers.push_back(new TriggerNode("binding heal", + // NextAction("circle of healing on party", 48.0f), nullptr))); triggers.push_back(new TriggerNode("binding heal", // NextAction::array(0, new NextAction("binding heal", 52.0f), nullptr))); triggers.push_back(new TriggerNode("low // mana", NextAction::array(0, new NextAction("shadowfiend", ACTION_HIGH), nullptr))); diff --git a/src/strategy/priest/HolyPriestStrategy.cpp b/src/strategy/priest/HolyPriestStrategy.cpp index 40f34a28..de29d7ea 100644 --- a/src/strategy/priest/HolyPriestStrategy.cpp +++ b/src/strategy/priest/HolyPriestStrategy.cpp @@ -63,8 +63,8 @@ void HolyHealPriestStrategy::InitTriggers(std::vector& triggers) GenericPriestStrategy::InitTriggers(triggers); triggers.push_back( - new TriggerNode("group heal occasion", - NextAction::array(0, new NextAction("circle of healing", ACTION_MEDIUM_HEAL + 8), NULL))); + new TriggerNode("group heal setting", + NextAction::array(0, new NextAction("circle of healing on party", ACTION_MEDIUM_HEAL + 8), nullptr))); triggers.push_back(new TriggerNode( "medium group heal occasion", @@ -77,28 +77,28 @@ void HolyHealPriestStrategy::InitTriggers(std::vector& triggers) new NextAction("guardian spirit on party", ACTION_CRITICAL_HEAL + 6), new NextAction("power word: shield on party", ACTION_CRITICAL_HEAL + 5), new NextAction("flash heal on party", ACTION_CRITICAL_HEAL + 3), - new NextAction("prayer of mending on party", ACTION_CRITICAL_HEAL + 2), NULL))); + new NextAction("prayer of mending on party", ACTION_CRITICAL_HEAL + 2), nullptr))); triggers.push_back( new TriggerNode("party member low health", - NextAction::array(0, new NextAction("circle of healing", ACTION_MEDIUM_HEAL + 4), + NextAction::array(0, new NextAction("circle of healing on party", ACTION_MEDIUM_HEAL + 4), new NextAction("greater heal on party", ACTION_MEDIUM_HEAL + 3), new NextAction("prayer of mending on party", ACTION_MEDIUM_HEAL + 2), - new NextAction("flash heal on party", ACTION_MEDIUM_HEAL + 1), NULL))); + new NextAction("flash heal on party", ACTION_MEDIUM_HEAL + 1), nullptr))); triggers.push_back( new TriggerNode("party member medium health", - NextAction::array(0, new NextAction("circle of healing", ACTION_LIGHT_HEAL + 7), + NextAction::array(0, new NextAction("circle of healing on party", ACTION_LIGHT_HEAL + 7), new NextAction("prayer of mending on party", ACTION_LIGHT_HEAL + 6), new NextAction("flash heal on party", ACTION_LIGHT_HEAL + 5), // new NextAction("renew on party", ACTION_LIGHT_HEAL + 8), - NULL))); + nullptr))); triggers.push_back( new TriggerNode("party member almost full health", NextAction::array(0, new NextAction("renew on party", ACTION_LIGHT_HEAL + 2), // new NextAction("flash heal on party", ACTION_LIGHT_HEAL + 1), - NULL))); + nullptr))); triggers.push_back(new TriggerNode( "party member to heal out of spell range", diff --git a/src/strategy/priest/PriestActions.h b/src/strategy/priest/PriestActions.h index d5af0509..bffea2bc 100644 --- a/src/strategy/priest/PriestActions.h +++ b/src/strategy/priest/PriestActions.h @@ -55,7 +55,14 @@ HEAL_PARTY_ACTION(CastRenewOnPartyAction, "renew", 15.0f, HealingManaEfficiency: HEAL_PARTY_ACTION(CastPrayerOfMendingAction, "prayer of mending", 15.0f, HealingManaEfficiency::MEDIUM); HEAL_PARTY_ACTION(CastBindingHealAction, "binding heal", 15.0f, HealingManaEfficiency::MEDIUM); HEAL_PARTY_ACTION(CastPrayerOfHealingAction, "prayer of healing", 15.0f, HealingManaEfficiency::MEDIUM); -AOE_HEAL_ACTION(CastCircleOfHealingAction, "circle of healing", 15.0f, HealingManaEfficiency::HIGH); +// AOE_HEAL_ACTION(CastCircleOfHealingAction, "circle of healing", 15.0f, HealingManaEfficiency::HIGH); +class CastCircleOfHealingAction : public HealPartyMemberAction +{ +public: + CastCircleOfHealingAction(PlayerbotAI* ai) : HealPartyMemberAction(ai, "circle of healing", 15.0f, HealingManaEfficiency::HIGH) + { + } +}; AOE_HEAL_ACTION(CastLightwellAction, "lightwell", 15.0f, HealingManaEfficiency::MEDIUM); SPELL_ACTION(CastSmiteAction, "smite"); diff --git a/src/strategy/priest/PriestAiObjectContext.cpp b/src/strategy/priest/PriestAiObjectContext.cpp index caf4eb79..d6c59233 100644 --- a/src/strategy/priest/PriestAiObjectContext.cpp +++ b/src/strategy/priest/PriestAiObjectContext.cpp @@ -195,7 +195,7 @@ public: creators["fade"] = &PriestAiObjectContextInternal::fade; creators["inner fire"] = &PriestAiObjectContextInternal::inner_fire; creators["resurrection"] = &PriestAiObjectContextInternal::resurrection; - creators["circle of healing"] = &PriestAiObjectContextInternal::circle_of_healing; + creators["circle of healing on party"] = &PriestAiObjectContextInternal::circle_of_healing; creators["psychic scream"] = &PriestAiObjectContextInternal::psychic_scream; creators["vampiric touch"] = &PriestAiObjectContextInternal::vampiric_touch; creators["vampiric touch on attacker"] = &PriestAiObjectContextInternal::vampiric_touch_on_attacker; diff --git a/src/strategy/priest/PriestNonCombatStrategy.cpp b/src/strategy/priest/PriestNonCombatStrategy.cpp index 5283fb75..be596054 100644 --- a/src/strategy/priest/PriestNonCombatStrategy.cpp +++ b/src/strategy/priest/PriestNonCombatStrategy.cpp @@ -55,7 +55,7 @@ void PriestNonCombatStrategy::InitTriggers(std::vector& triggers) NextAction::array(0, new NextAction("renew on party", ACTION_LIGHT_HEAL + 3), NULL))); triggers.push_back( - new TriggerNode("group heal occasion", NextAction::array(0, new NextAction("circle of healing", 27.0f), NULL))); + new TriggerNode("group heal setting", NextAction::array(0, new NextAction("circle of healing on party", 27.0f), NULL))); } void PriestBuffStrategy::InitTriggers(std::vector& triggers) diff --git a/src/strategy/priest/PriestNonCombatStrategyActionNodeFactory.h b/src/strategy/priest/PriestNonCombatStrategyActionNodeFactory.h index 84318fcb..c1084610 100644 --- a/src/strategy/priest/PriestNonCombatStrategyActionNodeFactory.h +++ b/src/strategy/priest/PriestNonCombatStrategyActionNodeFactory.h @@ -29,7 +29,7 @@ public: creators["lesser heal on party"] = &lesser_heal_on_party; creators["flash heal"] = &flash_heal; creators["flash heal on party"] = &flash_heal_on_party; - creators["circle of healing"] = &circle_of_healing; + creators["circle of healing on party"] = &circle_of_healing; creators["prayer of fortitude on party"] = &prayer_of_fortitude_on_party; creators["prayer of spirit on party"] = &prayer_of_spirit_on_party; } @@ -128,7 +128,7 @@ private: } static ActionNode* circle_of_healing(PlayerbotAI* ai) { - return new ActionNode("circle of healing", + return new ActionNode("circle of healing on party", /*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL), // /*A*/ NextAction::array(0, new NextAction("flash heal on party"), NULL), /*A*/ NULL, diff --git a/src/strategy/shaman/GenericShamanStrategy.cpp b/src/strategy/shaman/GenericShamanStrategy.cpp index d84b07a7..430a1bdc 100644 --- a/src/strategy/shaman/GenericShamanStrategy.cpp +++ b/src/strategy/shaman/GenericShamanStrategy.cpp @@ -18,7 +18,7 @@ public: creators["windfury weapon"] = &windfury_weapon; creators["lesser healing wave"] = &lesser_healing_wave; creators["lesser healing wave on party"] = &lesser_healing_wave_on_party; - creators["chain heal"] = &chain_heal; + creators["chain heal on party"] = &chain_heal; creators["riptide"] = &riptide; creators["riptide on party"] = &riptide_on_party; creators["earth shock"] = &earth_shock; @@ -75,9 +75,9 @@ private: static ActionNode* chain_heal([[maybe_unused]] PlayerbotAI* botAI) { - return new ActionNode("chain heal", + return new ActionNode("chain heal on party", /*P*/ nullptr, - /*A*/ NextAction::array(0, new NextAction("lesser healing wave"), nullptr), + /*A*/ NextAction::array(0, new NextAction("lesser healing wave on party"), nullptr), /*C*/ nullptr); } @@ -117,7 +117,7 @@ void GenericShamanStrategy::InitTriggers(std::vector& triggers) // triggers.push_back(new TriggerNode("party member medium health", NextAction::array(0, new NextAction("lesser // healing wave on party", 25.0f), nullptr))); triggers.push_back(new TriggerNode("party member low health", // NextAction::array(0, new NextAction("riptide on party", 25.0f), nullptr))); triggers.push_back(new - // TriggerNode("medium aoe heal", NextAction::array(0, new NextAction("chain heal", 27.0f), nullptr))); + // TriggerNode("medium aoe heal", NextAction::array(0, new NextAction("chain heal on party", 27.0f), nullptr))); // triggers.push_back(new TriggerNode("medium health", NextAction::array(0, new NextAction("lesser healing // wave", 26.0f), nullptr))); triggers.push_back(new TriggerNode("low health", NextAction::array(0, new // NextAction("riptide", 26.0f), nullptr))); diff --git a/src/strategy/shaman/HealShamanStrategy.cpp b/src/strategy/shaman/HealShamanStrategy.cpp index ff305559..17d4ff44 100644 --- a/src/strategy/shaman/HealShamanStrategy.cpp +++ b/src/strategy/shaman/HealShamanStrategy.cpp @@ -49,8 +49,8 @@ void HealShamanStrategy::InitTriggers(std::vector& triggers) triggers.push_back(new TriggerNode("main hand weapon no imbue", NextAction::array(0, new NextAction("earthliving weapon", 22.0f), nullptr))); triggers.push_back(new TriggerNode( - "group heal occasion", - NextAction::array(0, new NextAction("riptide on party", 23.0f), new NextAction("chain heal", 22.0f), NULL))); + "group heal setting", + NextAction::array(0, new NextAction("riptide on party", 23.0f), new NextAction("chain heal on party", 22.0f), NULL))); triggers.push_back(new TriggerNode( "party member critical health", diff --git a/src/strategy/shaman/ShamanActions.h b/src/strategy/shaman/ShamanActions.h index 9d3b8b69..2d110e51 100644 --- a/src/strategy/shaman/ShamanActions.h +++ b/src/strategy/shaman/ShamanActions.h @@ -42,11 +42,11 @@ public: } }; -class CastChainHealAction : public CastAoeHealSpellAction +class CastChainHealAction : public HealPartyMemberAction { public: CastChainHealAction(PlayerbotAI* botAI) - : CastAoeHealSpellAction(botAI, "chain heal", 15.0f, HealingManaEfficiency::HIGH) + : HealPartyMemberAction(botAI, "chain heal", 15.0f, HealingManaEfficiency::HIGH) { } }; diff --git a/src/strategy/shaman/ShamanAiObjectContext.cpp b/src/strategy/shaman/ShamanAiObjectContext.cpp index bf9e76e3..193d292a 100644 --- a/src/strategy/shaman/ShamanAiObjectContext.cpp +++ b/src/strategy/shaman/ShamanAiObjectContext.cpp @@ -210,7 +210,7 @@ public: creators["lesser healing wave on party"] = &ShamanAiObjectContextInternal::lesser_healing_wave_on_party; creators["earth shield"] = &ShamanAiObjectContextInternal::earth_shield; creators["earth shield on party"] = &ShamanAiObjectContextInternal::earth_shield_on_party; - creators["chain heal"] = &ShamanAiObjectContextInternal::chain_heal; + creators["chain heal on party"] = &ShamanAiObjectContextInternal::chain_heal; creators["riptide"] = &ShamanAiObjectContextInternal::riptide; creators["riptide on party"] = &ShamanAiObjectContextInternal::riptide_on_party; creators["stormstrike"] = &ShamanAiObjectContextInternal::stormstrike; diff --git a/src/strategy/shaman/ShamanNonCombatStrategy.cpp b/src/strategy/shaman/ShamanNonCombatStrategy.cpp index f3380cb5..ad4dcb82 100644 --- a/src/strategy/shaman/ShamanNonCombatStrategy.cpp +++ b/src/strategy/shaman/ShamanNonCombatStrategy.cpp @@ -39,7 +39,7 @@ void ShamanNonCombatStrategy::InitTriggers(std::vector& triggers) new NextAction("lesser healing wave on party", 24.0f), NULL))); triggers.push_back( - new TriggerNode("group heal occasion", NextAction::array(0, new NextAction("chain heal", 27.0f), NULL))); + new TriggerNode("group heal setting", NextAction::array(0, new NextAction("chain heal on party", 27.0f), NULL))); triggers.push_back( new TriggerNode("cure poison", NextAction::array(0, new NextAction("cure poison", 21.0f), nullptr))); diff --git a/src/strategy/triggers/TriggerContext.h b/src/strategy/triggers/TriggerContext.h index 4bfea1d4..7baebc8d 100644 --- a/src/strategy/triggers/TriggerContext.h +++ b/src/strategy/triggers/TriggerContext.h @@ -139,7 +139,7 @@ public: creators["medium aoe heal"] = &TriggerContext::medium_aoe_heal; creators["almost full aoe heal"] = &TriggerContext::almost_full_aoe_heal; - creators["group heal occasion"] = &TriggerContext::group_heal_occasion; + creators["group heal setting"] = &TriggerContext::group_heal_occasion; creators["medium group heal occasion"] = &TriggerContext::medium_group_heal_occasion; creators["invalid target"] = &TriggerContext::invalid_target; creators["lfg proposal active"] = &TriggerContext::lfg_proposal_active; @@ -246,7 +246,7 @@ private: } static Trigger* group_heal_occasion(PlayerbotAI* ai) { - return new AoeInGroupTrigger(ai, "group heal occasion", "almost full"); + return new AoeInGroupTrigger(ai, "group heal setting", "almost full"); } static Trigger* medium_group_heal_occasion(PlayerbotAI* ai) {