Files
mod-playerbots/src/strategy/priest/PriestAiObjectContext.cpp
Yunfan Li feda619066 Engine optimization for better performance and mem usage (#1462)
* Optimize loot

* World channel talk

* General improvement

* Engine rebuild for performance and memory usage

* Fix crash with AutoDoQuest = 0
2025-07-25 12:11:03 +02:00

391 lines
27 KiB
C++

/*
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
* and/or modify it under version 2 of the License, or (at your option), any later version.
*/
#include "PriestAiObjectContext.h"
#include "GenericPriestStrategy.h"
#include "HolyPriestStrategy.h"
#include "NamedObjectContext.h"
#include "Playerbots.h"
#include "PriestActions.h"
#include "PriestNonCombatStrategy.h"
#include "PriestTriggers.h"
#include "PullStrategy.h"
#include "ShadowPriestStrategy.h"
class PriestStrategyFactoryInternal : public NamedObjectContext<Strategy>
{
public:
PriestStrategyFactoryInternal()
{
creators["nc"] = &PriestStrategyFactoryInternal::nc;
creators["pull"] = &PriestStrategyFactoryInternal::pull;
creators["aoe"] = &PriestStrategyFactoryInternal::shadow_aoe;
creators["shadow aoe"] = &PriestStrategyFactoryInternal::shadow_aoe;
creators["dps debuff"] = &PriestStrategyFactoryInternal::shadow_debuff;
creators["shadow debuff"] = &PriestStrategyFactoryInternal::shadow_debuff;
creators["cure"] = &PriestStrategyFactoryInternal::cure;
creators["buff"] = &PriestStrategyFactoryInternal::buff;
creators["boost"] = &PriestStrategyFactoryInternal::boost;
creators["rshadow"] = &PriestStrategyFactoryInternal::rshadow;
creators["cc"] = &PriestStrategyFactoryInternal::cc;
creators["healer dps"] = &PriestStrategyFactoryInternal::healer_dps;
}
private:
static Strategy* cc(PlayerbotAI* botAI) { return new PriestCcStrategy(botAI); }
static Strategy* rshadow(PlayerbotAI* botAI) { return new PriestShadowResistanceStrategy(botAI); }
static Strategy* boost(PlayerbotAI* botAI) { return new PriestBoostStrategy(botAI); }
static Strategy* buff(PlayerbotAI* botAI) { return new PriestBuffStrategy(botAI); }
static Strategy* nc(PlayerbotAI* botAI) { return new PriestNonCombatStrategy(botAI); }
static Strategy* shadow_aoe(PlayerbotAI* botAI) { return new ShadowPriestAoeStrategy(botAI); }
static Strategy* pull(PlayerbotAI* botAI) { return new PullStrategy(botAI, "shoot"); }
static Strategy* shadow_debuff(PlayerbotAI* botAI) { return new ShadowPriestDebuffStrategy(botAI); }
static Strategy* cure(PlayerbotAI* botAI) { return new PriestCureStrategy(botAI); }
static Strategy* healer_dps(PlayerbotAI* botAI) { return new PriestHealerDpsStrategy(botAI); }
};
class PriestCombatStrategyFactoryInternal : public NamedObjectContext<Strategy>
{
public:
PriestCombatStrategyFactoryInternal() : NamedObjectContext<Strategy>(false, true)
{
creators["heal"] = &PriestCombatStrategyFactoryInternal::heal;
creators["shadow"] = &PriestCombatStrategyFactoryInternal::dps;
creators["dps"] = &PriestCombatStrategyFactoryInternal::dps;
creators["holy dps"] = &PriestCombatStrategyFactoryInternal::holy_dps;
creators["holy heal"] = &PriestCombatStrategyFactoryInternal::holy_heal;
}
private:
static Strategy* heal(PlayerbotAI* botAI) { return new HealPriestStrategy(botAI); }
static Strategy* dps(PlayerbotAI* botAI) { return new ShadowPriestStrategy(botAI); }
static Strategy* holy_dps(PlayerbotAI* botAI) { return new HolyPriestStrategy(botAI); }
static Strategy* holy_heal(PlayerbotAI* botAI) { return new HolyHealPriestStrategy(botAI); }
};
class PriestTriggerFactoryInternal : public NamedObjectContext<Trigger>
{
public:
PriestTriggerFactoryInternal()
{
creators["devouring plague"] = &PriestTriggerFactoryInternal::devouring_plague;
creators["shadow word: pain"] = &PriestTriggerFactoryInternal::shadow_word_pain;
creators["shadow word: pain on attacker"] = &PriestTriggerFactoryInternal::shadow_word_pain_on_attacker;
creators["dispel magic"] = &PriestTriggerFactoryInternal::dispel_magic;
creators["dispel magic on party"] = &PriestTriggerFactoryInternal::dispel_magic_party_member;
creators["cure disease"] = &PriestTriggerFactoryInternal::cure_disease;
creators["party member cure disease"] = &PriestTriggerFactoryInternal::party_member_cure_disease;
creators["power word: fortitude"] = &PriestTriggerFactoryInternal::power_word_fortitude;
creators["power word: fortitude on party"] = &PriestTriggerFactoryInternal::power_word_fortitude_on_party;
creators["divine spirit"] = &PriestTriggerFactoryInternal::divine_spirit;
creators["divine spirit on party"] = &PriestTriggerFactoryInternal::divine_spirit_on_party;
creators["inner fire"] = &PriestTriggerFactoryInternal::inner_fire;
creators["vampiric touch"] = &PriestTriggerFactoryInternal::vampiric_touch;
creators["vampiric touch on attacker"] = &PriestTriggerFactoryInternal::vampiric_touch_on_attacker;
creators["shadowform"] = &PriestTriggerFactoryInternal::shadowform;
creators["vampiric embrace"] = &PriestTriggerFactoryInternal::vampiric_embrace;
creators["power infusion"] = &PriestTriggerFactoryInternal::power_infusion;
creators["inner focus"] = &PriestTriggerFactoryInternal::inner_focus;
creators["shadow protection"] = &PriestTriggerFactoryInternal::shadow_protection;
creators["shadow protection on party"] = &PriestTriggerFactoryInternal::shadow_protection_on_party;
creators["shackle undead"] = &PriestTriggerFactoryInternal::shackle_undead;
creators["prayer of fortitude on party"] = &PriestTriggerFactoryInternal::prayer_of_fortitude_on_party;
creators["prayer of spirit on party"] = &PriestTriggerFactoryInternal::prayer_of_spirit_on_party;
creators["holy fire"] = &PriestTriggerFactoryInternal::holy_fire;
creators["touch of weakness"] = &PriestTriggerFactoryInternal::touch_of_weakness;
creators["hex of weakness"] = &PriestTriggerFactoryInternal::hex_of_weakness;
creators["shadowguard"] = &PriestTriggerFactoryInternal::shadowguard;
creators["fear ward"] = &PriestTriggerFactoryInternal::fear_ward;
creators["feedback"] = &PriestTriggerFactoryInternal::feedback;
creators["binding heal"] = &PriestTriggerFactoryInternal::binding_heal;
creators["chastise"] = &PriestTriggerFactoryInternal::chastise;
creators["silence"] = &PriestTriggerFactoryInternal::silence;
creators["silence on enemy healer"] = &PriestTriggerFactoryInternal::silence_on_enemy_healer;
creators["shadowfiend"] = &PriestTriggerFactoryInternal::shadowfiend;
}
private:
static Trigger* vampiric_embrace(PlayerbotAI* botAI) { return new VampiricEmbraceTrigger(botAI); }
static Trigger* shadowform(PlayerbotAI* botAI) { return new ShadowformTrigger(botAI); }
static Trigger* vampiric_touch(PlayerbotAI* botAI) { return new VampiricTouchTrigger(botAI); }
static Trigger* vampiric_touch_on_attacker(PlayerbotAI* botAI) { return new VampiricTouchOnAttackerTrigger(botAI); }
static Trigger* devouring_plague(PlayerbotAI* botAI) { return new DevouringPlagueTrigger(botAI); }
static Trigger* shadow_word_pain(PlayerbotAI* botAI) { return new PowerWordPainTrigger(botAI); }
static Trigger* shadow_word_pain_on_attacker(PlayerbotAI* botAI)
{
return new PowerWordPainOnAttackerTrigger(botAI);
}
static Trigger* dispel_magic(PlayerbotAI* botAI) { return new DispelMagicTrigger(botAI); }
static Trigger* dispel_magic_party_member(PlayerbotAI* botAI) { return new DispelMagicPartyMemberTrigger(botAI); }
static Trigger* cure_disease(PlayerbotAI* botAI) { return new CureDiseaseTrigger(botAI); }
static Trigger* party_member_cure_disease(PlayerbotAI* botAI) { return new PartyMemberCureDiseaseTrigger(botAI); }
static Trigger* power_word_fortitude(PlayerbotAI* botAI) { return new PowerWordFortitudeTrigger(botAI); }
static Trigger* power_word_fortitude_on_party(PlayerbotAI* botAI)
{
return new PowerWordFortitudeOnPartyTrigger(botAI);
}
static Trigger* divine_spirit(PlayerbotAI* botAI) { return new DivineSpiritTrigger(botAI); }
static Trigger* divine_spirit_on_party(PlayerbotAI* botAI) { return new DivineSpiritOnPartyTrigger(botAI); }
static Trigger* inner_fire(PlayerbotAI* botAI) { return new InnerFireTrigger(botAI); }
static Trigger* power_infusion(PlayerbotAI* botAI) { return new PowerInfusionTrigger(botAI); }
static Trigger* inner_focus(PlayerbotAI* botAI) { return new InnerFocusTrigger(botAI); }
static Trigger* shadow_protection_on_party(PlayerbotAI* botAI) { return new ShadowProtectionOnPartyTrigger(botAI); }
static Trigger* shadow_protection(PlayerbotAI* botAI) { return new ShadowProtectionTrigger(botAI); }
static Trigger* shackle_undead(PlayerbotAI* botAI) { return new ShackleUndeadTrigger(botAI); }
static Trigger* prayer_of_fortitude_on_party(PlayerbotAI* botAI) { return new PrayerOfFortitudeTrigger(botAI); }
static Trigger* prayer_of_spirit_on_party(PlayerbotAI* botAI) { return new PrayerOfSpiritTrigger(botAI); }
static Trigger* feedback(PlayerbotAI* botAI) { return new FeedbackTrigger(botAI); }
static Trigger* fear_ward(PlayerbotAI* botAI) { return new FearWardTrigger(botAI); }
static Trigger* shadowguard(PlayerbotAI* botAI) { return new ShadowguardTrigger(botAI); }
static Trigger* hex_of_weakness(PlayerbotAI* botAI) { return new HexOfWeaknessTrigger(botAI); }
static Trigger* touch_of_weakness(PlayerbotAI* botAI) { return new TouchOfWeaknessTrigger(botAI); }
static Trigger* holy_fire(PlayerbotAI* botAI) { return new HolyFireTrigger(botAI); }
static Trigger* shadowfiend(PlayerbotAI* botAI) { return new ShadowfiendTrigger(botAI); }
static Trigger* silence_on_enemy_healer(PlayerbotAI* botAI) { return new SilenceEnemyHealerTrigger(botAI); }
static Trigger* silence(PlayerbotAI* botAI) { return new SilenceTrigger(botAI); }
static Trigger* chastise(PlayerbotAI* botAI) { return new ChastiseTrigger(botAI); }
static Trigger* binding_heal(PlayerbotAI* botAI) { return new BindingHealTrigger(botAI); }
};
class PriestAiObjectContextInternal : public NamedObjectContext<Action>
{
public:
PriestAiObjectContextInternal()
{
creators["power infusion"] = &PriestAiObjectContextInternal::power_infusion;
creators["inner focus"] = &PriestAiObjectContextInternal::inner_focus;
creators["shadow word: pain"] = &PriestAiObjectContextInternal::shadow_word_pain;
creators["shadow word: pain on attacker"] = &PriestAiObjectContextInternal::shadow_word_pain_on_attacker;
creators["devouring plague"] = &PriestAiObjectContextInternal::devouring_plague;
creators["mind flay"] = &PriestAiObjectContextInternal::mind_flay;
creators["holy fire"] = &PriestAiObjectContextInternal::holy_fire;
creators["smite"] = &PriestAiObjectContextInternal::smite;
creators["mind blast"] = &PriestAiObjectContextInternal::mind_blast;
creators["shadowform"] = &PriestAiObjectContextInternal::shadowform;
creators["remove shadowform"] = &PriestAiObjectContextInternal::remove_shadowform;
creators["holy nova"] = &PriestAiObjectContextInternal::holy_nova;
creators["power word: fortitude"] = &PriestAiObjectContextInternal::power_word_fortitude;
creators["power word: fortitude on party"] = &PriestAiObjectContextInternal::power_word_fortitude_on_party;
creators["divine spirit"] = &PriestAiObjectContextInternal::divine_spirit;
creators["divine spirit on party"] = &PriestAiObjectContextInternal::divine_spirit_on_party;
creators["power word: shield"] = &PriestAiObjectContextInternal::power_word_shield;
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;
creators["greater heal on party"] = &PriestAiObjectContextInternal::greater_heal_on_party;
creators["heal"] = &PriestAiObjectContextInternal::heal;
creators["heal on party"] = &PriestAiObjectContextInternal::heal_on_party;
creators["lesser heal"] = &PriestAiObjectContextInternal::lesser_heal;
creators["lesser heal on party"] = &PriestAiObjectContextInternal::lesser_heal_on_party;
creators["flash heal"] = &PriestAiObjectContextInternal::flash_heal;
creators["flash heal on party"] = &PriestAiObjectContextInternal::flash_heal_on_party;
creators["dispel magic"] = &PriestAiObjectContextInternal::dispel_magic;
creators["dispel magic on party"] = &PriestAiObjectContextInternal::dispel_magic_on_party;
creators["dispel magic on target"] = &PriestAiObjectContextInternal::dispel_magic_on_target;
creators["cure disease"] = &PriestAiObjectContextInternal::cure_disease;
creators["cure disease on party"] = &PriestAiObjectContextInternal::cure_disease_on_party;
creators["abolish disease"] = &PriestAiObjectContextInternal::abolish_disease;
creators["abolish disease on party"] = &PriestAiObjectContextInternal::abolish_disease_on_party;
creators["fade"] = &PriestAiObjectContextInternal::fade;
creators["inner fire"] = &PriestAiObjectContextInternal::inner_fire;
creators["resurrection"] = &PriestAiObjectContextInternal::resurrection;
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;
creators["vampiric embrace"] = &PriestAiObjectContextInternal::vampiric_embrace;
creators["dispersion"] = &PriestAiObjectContextInternal::dispersion;
creators["shadow protection"] = &PriestAiObjectContextInternal::shadow_protection;
creators["shadow protection on party"] = &PriestAiObjectContextInternal::shadow_protection_on_party;
creators["shackle undead"] = &PriestAiObjectContextInternal::shackle_undead;
creators["prayer of fortitude on party"] = &PriestAiObjectContextInternal::prayer_of_fortitude_on_party;
creators["prayer of spirit on party"] = &PriestAiObjectContextInternal::prayer_of_spirit_on_party;
creators["power infusion on party"] = &PriestAiObjectContextInternal::power_infusion_on_party;
creators["silence"] = &PriestAiObjectContextInternal::silence;
creators["silence on enemy healer"] = &PriestAiObjectContextInternal::silence_on_enemy_healer;
creators["mana burn"] = &PriestAiObjectContextInternal::mana_burn;
creators["levitate"] = &PriestAiObjectContextInternal::levitate;
creators["prayer of healing on party"] = &PriestAiObjectContextInternal::prayer_of_healing;
creators["lightwell"] = &PriestAiObjectContextInternal::lightwell;
creators["mind soothe"] = &PriestAiObjectContextInternal::mind_soothe;
creators["touch of weakness"] = &PriestAiObjectContextInternal::touch_of_weakness;
creators["hex of weakness"] = &PriestAiObjectContextInternal::hex_of_weakness;
creators["shadowguard"] = &PriestAiObjectContextInternal::shadowguard;
creators["desperate prayer"] = &PriestAiObjectContextInternal::desperate_prayer;
creators["fear ward"] = &PriestAiObjectContextInternal::fear_ward;
creators["fear ward on party"] = &PriestAiObjectContextInternal::fear_ward_on_party;
creators["starshards"] = &PriestAiObjectContextInternal::starshards;
creators["elune's grace"] = &PriestAiObjectContextInternal::elunes_grace;
creators["feedback"] = &PriestAiObjectContextInternal::feedback;
creators["symbol of hope"] = &PriestAiObjectContextInternal::symbol_of_hope;
creators["consume magic"] = &PriestAiObjectContextInternal::consume_magic;
creators["chastise"] = &PriestAiObjectContextInternal::chastise;
creators["shadow word: death"] = &PriestAiObjectContextInternal::shadow_word_death;
creators["shadowfiend"] = &PriestAiObjectContextInternal::shadowfiend;
creators["mass dispel"] = &PriestAiObjectContextInternal::mass_dispel;
creators["pain suppression"] = &PriestAiObjectContextInternal::pain_suppression;
creators["pain suppression on party"] = &PriestAiObjectContextInternal::pain_suppression_on_party;
creators["prayer of mending on party"] = &PriestAiObjectContextInternal::prayer_of_mending;
creators["binding heal"] = &PriestAiObjectContextInternal::binding_heal;
creators["penance on party"] = &PriestAiObjectContextInternal::penance_on_party;
creators["hymn of hope"] = &PriestAiObjectContextInternal::hymn_of_hope;
creators["divine hymn"] = &PriestAiObjectContextInternal::divine_hymn;
creators["mind sear"] = &PriestAiObjectContextInternal::mind_sear;
creators["guardian spirit on party"] = &PriestAiObjectContextInternal::guardian_spirit_on_party;
}
private:
static Action* shadow_protection_on_party(PlayerbotAI* botAI)
{
return new CastShadowProtectionOnPartyAction(botAI);
}
static Action* shadow_protection(PlayerbotAI* botAI) { return new CastShadowProtectionAction(botAI); }
static Action* power_infusion(PlayerbotAI* botAI) { return new CastPowerInfusionAction(botAI); }
static Action* inner_focus(PlayerbotAI* botAI) { return new CastInnerFocusAction(botAI); }
static Action* dispersion(PlayerbotAI* botAI) { return new CastDispersionAction(botAI); }
static Action* vampiric_embrace(PlayerbotAI* botAI) { return new CastVampiricEmbraceAction(botAI); }
static Action* vampiric_touch(PlayerbotAI* botAI) { return new CastVampiricTouchAction(botAI); }
static Action* vampiric_touch_on_attacker(PlayerbotAI* botAI)
{
return new CastVampiricTouchOnAttackerAction(botAI);
}
static Action* psychic_scream(PlayerbotAI* botAI) { return new CastPsychicScreamAction(botAI); }
static Action* circle_of_healing(PlayerbotAI* botAI) { return new CastCircleOfHealingAction(botAI); }
static Action* resurrection(PlayerbotAI* botAI) { return new CastResurrectionAction(botAI); }
static Action* shadow_word_pain(PlayerbotAI* botAI) { return new CastPowerWordPainAction(botAI); }
static Action* shadow_word_pain_on_attacker(PlayerbotAI* botAI)
{
return new CastPowerWordPainOnAttackerAction(botAI);
}
static Action* devouring_plague(PlayerbotAI* botAI) { return new CastDevouringPlagueAction(botAI); }
static Action* mind_flay(PlayerbotAI* botAI) { return new CastMindFlayAction(botAI); }
static Action* holy_fire(PlayerbotAI* botAI) { return new CastHolyFireAction(botAI); }
static Action* smite(PlayerbotAI* botAI) { return new CastSmiteAction(botAI); }
static Action* mind_blast(PlayerbotAI* botAI) { return new CastMindBlastAction(botAI); }
static Action* shadowform(PlayerbotAI* botAI) { return new CastShadowformAction(botAI); }
static Action* remove_shadowform(PlayerbotAI* botAI) { return new CastRemoveShadowformAction(botAI); }
static Action* holy_nova(PlayerbotAI* botAI) { return new CastHolyNovaAction(botAI); }
static Action* power_word_fortitude(PlayerbotAI* botAI) { return new CastPowerWordFortitudeAction(botAI); }
static Action* power_word_fortitude_on_party(PlayerbotAI* botAI)
{
return new CastPowerWordFortitudeOnPartyAction(botAI);
}
static Action* divine_spirit(PlayerbotAI* botAI) { return new CastDivineSpiritAction(botAI); }
static Action* divine_spirit_on_party(PlayerbotAI* botAI) { return new CastDivineSpiritOnPartyAction(botAI); }
static Action* power_word_shield(PlayerbotAI* botAI) { return new CastPowerWordShieldAction(botAI); }
static Action* power_word_shield_on_party(PlayerbotAI* botAI)
{
return new CastPowerWordShieldOnPartyAction(botAI);
}
static Action* power_word_shield_on_almost_full_health_below(PlayerbotAI* 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); }
static Action* greater_heal(PlayerbotAI* botAI) { return new CastGreaterHealAction(botAI); }
static Action* greater_heal_on_party(PlayerbotAI* botAI) { return new CastGreaterHealOnPartyAction(botAI); }
static Action* heal(PlayerbotAI* botAI) { return new CastHealAction(botAI); }
static Action* heal_on_party(PlayerbotAI* botAI) { return new CastHealOnPartyAction(botAI); }
static Action* lesser_heal(PlayerbotAI* botAI) { return new CastLesserHealAction(botAI); }
static Action* lesser_heal_on_party(PlayerbotAI* botAI) { return new CastLesserHealOnPartyAction(botAI); }
static Action* flash_heal(PlayerbotAI* botAI) { return new CastFlashHealAction(botAI); }
static Action* flash_heal_on_party(PlayerbotAI* botAI) { return new CastFlashHealOnPartyAction(botAI); }
static Action* dispel_magic(PlayerbotAI* botAI) { return new CastDispelMagicAction(botAI); }
static Action* dispel_magic_on_party(PlayerbotAI* botAI) { return new CastDispelMagicOnPartyAction(botAI); }
static Action* dispel_magic_on_target(PlayerbotAI* botAI) { return new CastDispelMagicOnTargetAction(botAI); }
static Action* cure_disease(PlayerbotAI* botAI) { return new CastCureDiseaseAction(botAI); }
static Action* cure_disease_on_party(PlayerbotAI* botAI) { return new CastCureDiseaseOnPartyAction(botAI); }
static Action* abolish_disease(PlayerbotAI* botAI) { return new CastAbolishDiseaseAction(botAI); }
static Action* abolish_disease_on_party(PlayerbotAI* botAI) { return new CastAbolishDiseaseOnPartyAction(botAI); }
static Action* fade(PlayerbotAI* botAI) { return new CastFadeAction(botAI); }
static Action* inner_fire(PlayerbotAI* botAI) { return new CastInnerFireAction(botAI); }
static Action* shackle_undead(PlayerbotAI* botAI) { return new CastShackleUndeadAction(botAI); }
static Action* prayer_of_spirit_on_party(PlayerbotAI* botAI) { return new CastPrayerOfSpiritOnPartyAction(botAI); }
static Action* prayer_of_fortitude_on_party(PlayerbotAI* botAI)
{
return new CastPrayerOfFortitudeOnPartyAction(botAI);
}
static Action* feedback(PlayerbotAI* botAI) { return new CastFeedbackAction(botAI); }
static Action* elunes_grace(PlayerbotAI* botAI) { return new CastElunesGraceAction(botAI); }
static Action* starshards(PlayerbotAI* botAI) { return new CastStarshardsAction(botAI); }
static Action* fear_ward_on_party(PlayerbotAI* botAI) { return new CastFearWardOnPartyAction(botAI); }
static Action* fear_ward(PlayerbotAI* botAI) { return new CastFearWardAction(botAI); }
static Action* desperate_prayer(PlayerbotAI* botAI) { return new CastDesperatePrayerAction(botAI); }
static Action* shadowguard(PlayerbotAI* botAI) { return new CastShadowguardAction(botAI); }
static Action* hex_of_weakness(PlayerbotAI* botAI) { return new CastHexOfWeaknessAction(botAI); }
static Action* touch_of_weakness(PlayerbotAI* botAI) { return new CastTouchOfWeaknessAction(botAI); }
static Action* mind_soothe(PlayerbotAI* botAI) { return new CastMindSootheAction(botAI); }
static Action* lightwell(PlayerbotAI* botAI) { return new CastLightwellAction(botAI); }
static Action* prayer_of_healing(PlayerbotAI* botAI) { return new CastPrayerOfHealingAction(botAI); }
static Action* levitate(PlayerbotAI* botAI) { return new CastLevitateAction(botAI); }
static Action* mana_burn(PlayerbotAI* botAI) { return new CastManaBurnAction(botAI); }
static Action* silence_on_enemy_healer(PlayerbotAI* botAI) { return new CastSilenceOnEnemyHealerAction(botAI); }
static Action* silence(PlayerbotAI* botAI) { return new CastSilenceAction(botAI); }
static Action* power_infusion_on_party(PlayerbotAI* botAI) { return new CastPowerInfusionOnPartyAction(botAI); }
static Action* binding_heal(PlayerbotAI* botAI) { return new CastBindingHealAction(botAI); }
static Action* prayer_of_mending(PlayerbotAI* botAI) { return new CastPrayerOfMendingAction(botAI); }
static Action* pain_suppression_on_party(PlayerbotAI* botAI) { return new CastPainSuppressionProtectAction(botAI); }
static Action* pain_suppression(PlayerbotAI* botAI) { return new CastPainSuppressionAction(botAI); }
static Action* mass_dispel(PlayerbotAI* botAI) { return new CastMassDispelAction(botAI); }
static Action* shadowfiend(PlayerbotAI* botAI) { return new CastShadowfiendAction(botAI); }
static Action* shadow_word_death(PlayerbotAI* botAI) { return new CastShadowWordDeathAction(botAI); }
static Action* chastise(PlayerbotAI* botAI) { return new CastChastiseAction(botAI); }
static Action* consume_magic(PlayerbotAI* botAI) { return new CastConsumeMagicAction(botAI); }
static Action* symbol_of_hope(PlayerbotAI* botAI) { return new CastSymbolOfHopeAction(botAI); }
static Action* penance_on_party(PlayerbotAI* ai) { return new CastPenanceOnPartyAction(ai); }
static Action* hymn_of_hope(PlayerbotAI* ai) { return new CastHymnOfHopeAction(ai); }
static Action* divine_hymn(PlayerbotAI* ai) { return new CastDivineHymnAction(ai); }
static Action* mind_sear(PlayerbotAI* ai) { return new CastMindSearAction(ai); }
static Action* guardian_spirit_on_party(PlayerbotAI* ai) { return new CastGuardianSpiritOnPartyAction(ai); }
};
SharedNamedObjectContextList<Strategy> PriestAiObjectContext::sharedStrategyContexts;
SharedNamedObjectContextList<Action> PriestAiObjectContext::sharedActionContexts;
SharedNamedObjectContextList<Trigger> PriestAiObjectContext::sharedTriggerContexts;
SharedNamedObjectContextList<UntypedValue> PriestAiObjectContext::sharedValueContexts;
PriestAiObjectContext::PriestAiObjectContext(PlayerbotAI* botAI)
: AiObjectContext(botAI, sharedStrategyContexts, sharedActionContexts, sharedTriggerContexts, sharedValueContexts)
{
}
void PriestAiObjectContext::BuildSharedContexts()
{
BuildSharedStrategyContexts(sharedStrategyContexts);
BuildSharedActionContexts(sharedActionContexts);
BuildSharedTriggerContexts(sharedTriggerContexts);
BuildSharedValueContexts(sharedValueContexts);
}
void PriestAiObjectContext::BuildSharedStrategyContexts(SharedNamedObjectContextList<Strategy>& strategyContexts)
{
AiObjectContext::BuildSharedStrategyContexts(strategyContexts);
strategyContexts.Add(new PriestStrategyFactoryInternal());
strategyContexts.Add(new PriestCombatStrategyFactoryInternal());
}
void PriestAiObjectContext::BuildSharedActionContexts(SharedNamedObjectContextList<Action>& actionContexts)
{
AiObjectContext::BuildSharedActionContexts(actionContexts);
actionContexts.Add(new PriestAiObjectContextInternal());
}
void PriestAiObjectContext::BuildSharedTriggerContexts(SharedNamedObjectContextList<Trigger>& triggerContexts)
{
AiObjectContext::BuildSharedTriggerContexts(triggerContexts);
triggerContexts.Add(new PriestTriggerFactoryInternal());
}
void PriestAiObjectContext::BuildSharedValueContexts(SharedNamedObjectContextList<UntypedValue>& valueContexts)
{
AiObjectContext::BuildSharedValueContexts(valueContexts);
}