[Spell] Fix alternative healing spell

This commit is contained in:
Yunfan Li
2024-10-04 14:38:09 +08:00
parent a0865cca14
commit 37c5c1dcdf
13 changed files with 42 additions and 38 deletions

View File

@@ -78,11 +78,11 @@ void HealDruidStrategy::InitTriggers(std::vector<TriggerNode*>& 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(

View File

@@ -29,15 +29,14 @@ void HealPriestStrategy::InitTriggers(std::vector<TriggerNode*>& 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<TriggerNode*>& 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<TriggerNode*>& 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)));

View File

@@ -63,8 +63,8 @@ void HolyHealPriestStrategy::InitTriggers(std::vector<TriggerNode*>& 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<TriggerNode*>& 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",

View File

@@ -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");

View File

@@ -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;

View File

@@ -55,7 +55,7 @@ void PriestNonCombatStrategy::InitTriggers(std::vector<TriggerNode*>& 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<TriggerNode*>& triggers)

View File

@@ -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,

View File

@@ -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<TriggerNode*>& 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)));

View File

@@ -49,8 +49,8 @@ void HealShamanStrategy::InitTriggers(std::vector<TriggerNode*>& 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",

View File

@@ -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)
{
}
};

View File

@@ -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;

View File

@@ -39,7 +39,7 @@ void ShamanNonCombatStrategy::InitTriggers(std::vector<TriggerNode*>& 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)));

View File

@@ -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)
{