[Spell] Healer spell enhancement

This commit is contained in:
Yunfan Li
2024-10-04 20:48:29 +08:00
parent db9b1115cb
commit 21e17e163b
15 changed files with 137 additions and 59 deletions

View File

@@ -35,33 +35,39 @@ void HealPriestStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
triggers.push_back(new TriggerNode(
"group heal setting",
NextAction::array(0, new NextAction("power word: shield on almost full health below", ACTION_MEDIUM_HEAL + 7),
NextAction::array(0,
new NextAction("prayer of mending on party", ACTION_MEDIUM_HEAL + 8),
new NextAction("power word: shield on not full", ACTION_MEDIUM_HEAL + 7),
nullptr)));
triggers.push_back(new TriggerNode(
"medium group heal occasion",
NextAction::array(0, new NextAction("divine hymn", ACTION_CRITICAL_HEAL + 6),
new NextAction("prayer of healing on party", ACTION_CRITICAL_HEAL + 5), nullptr)));
"medium group heal setting",
NextAction::array(0, new NextAction("divine hymn", ACTION_CRITICAL_HEAL + 7),
new NextAction("prayer of mending on party", ACTION_CRITICAL_HEAL + 6),
new NextAction("power word: shield on not full", ACTION_CRITICAL_HEAL + 5),
new NextAction("prayer of healing on party", ACTION_CRITICAL_HEAL + 4),
nullptr)));
triggers.push_back(new TriggerNode(
"party member critical health",
NextAction::array(0, new NextAction("power word: shield on party", ACTION_CRITICAL_HEAL + 6),
NextAction::array(0, new NextAction("power word: shield on party", ACTION_CRITICAL_HEAL + 5),
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), nullptr)));
new NextAction("prayer of mending on party", ACTION_CRITICAL_HEAL + 3),
new NextAction("flash heal 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("prayer of mending on party", ACTION_MEDIUM_HEAL + 3),
new NextAction("penance on party", 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), 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("prayer of mending on party", ACTION_LIGHT_HEAL + 6),
new NextAction("prayer of mending on party", ACTION_LIGHT_HEAL + 7),
new NextAction("penance 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),
nullptr)));
@@ -70,7 +76,9 @@ void HealPriestStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
new TriggerNode("party member almost full health",
NextAction::array(0,
// new NextAction("penance on party", ACTION_LIGHT_HEAL + 3),
new NextAction("renew on party", ACTION_LIGHT_HEAL + 2), NULL)));
new NextAction("prayer of mending on party", ACTION_LIGHT_HEAL + 2),
new NextAction("renew on party", ACTION_LIGHT_HEAL + 1),
nullptr)));
// triggers.push_back(new TriggerNode("almost full health", NextAction::array(0, new NextAction("renew", 43.f),
// nullptr))); triggers.push_back(new TriggerNode("party member almost full health", NextAction::array(0, new

View File

@@ -64,40 +64,48 @@ void HolyHealPriestStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
triggers.push_back(
new TriggerNode("group heal setting",
NextAction::array(0, new NextAction("circle of healing on party", ACTION_MEDIUM_HEAL + 8), nullptr)));
NextAction::array(0,
new NextAction("prayer of mending on party", ACTION_MEDIUM_HEAL + 9),
new NextAction("circle of healing on party", ACTION_MEDIUM_HEAL + 8), nullptr)));
triggers.push_back(new TriggerNode(
"medium group heal occasion",
NextAction::array(0, new NextAction("divine hymn", ACTION_CRITICAL_HEAL + 6),
new NextAction("prayer of healing on party", ACTION_CRITICAL_HEAL + 5), nullptr)));
"medium group heal setting",
NextAction::array(0, new NextAction("divine hymn", ACTION_CRITICAL_HEAL + 7),
new NextAction("prayer of mending on party", ACTION_CRITICAL_HEAL + 6),
new NextAction("circle of healing on party", ACTION_CRITICAL_HEAL + 5),
new NextAction("prayer of healing on party", ACTION_CRITICAL_HEAL + 4), nullptr)));
triggers.push_back(new TriggerNode(
"party member critical health",
NextAction::array(0,
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), nullptr)));
new NextAction("prayer of mending on party", ACTION_CRITICAL_HEAL + 3),
new NextAction("greater heal on party", ACTION_MEDIUM_HEAL + 2),
new NextAction("flash heal on party", ACTION_CRITICAL_HEAL + 1),
nullptr)));
triggers.push_back(
new TriggerNode("party member low health",
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("prayer of mending on party", ACTION_MEDIUM_HEAL + 3),
new NextAction("greater heal on party", ACTION_MEDIUM_HEAL + 2),
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 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("greater heal on party", ACTION_MEDIUM_HEAL + 5),
new NextAction("flash heal on party", ACTION_LIGHT_HEAL + 4),
// new NextAction("renew on party", ACTION_LIGHT_HEAL + 8),
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),
NextAction::array(0,
new NextAction("renew on party", ACTION_LIGHT_HEAL + 2),
new NextAction("prayer of mending on party", ACTION_LIGHT_HEAL + 1),
nullptr)));
triggers.push_back(new TriggerNode(

View File

@@ -175,6 +175,8 @@ public:
creators["power word: shield on party"] = &PriestAiObjectContextInternal::power_word_shield_on_party;
creators["power word: shield on almost full health below"] =
&PriestAiObjectContextInternal::power_word_shield_on_almost_full_health_below;
creators["power word: shield on not full"] =
&PriestAiObjectContextInternal::power_word_shield_on_not_full;
creators["renew"] = &PriestAiObjectContextInternal::renew;
creators["renew on party"] = &PriestAiObjectContextInternal::renew_on_party;
creators["greater heal"] = &PriestAiObjectContextInternal::greater_heal;
@@ -285,7 +287,11 @@ private:
}
static Action* power_word_shield_on_almost_full_health_below(PlayerbotAI* ai)
{
return new CastPowerWordShieldOnAlmostFullHealthBelow(ai);
return new CastPowerWordShieldOnAlmostFullHealthBelowAction(ai);
}
static Action* power_word_shield_on_not_full(PlayerbotAI* ai)
{
return new CastPowerWordShieldOnNotFullAction(ai);
}
static Action* renew(PlayerbotAI* botAI) { return new CastRenewAction(botAI); }
static Action* renew_on_party(PlayerbotAI* botAI) { return new CastRenewOnPartyAction(botAI); }