Run clang-format

This commit is contained in:
Yunfan Li
2024-08-04 10:23:36 +08:00
parent 44da167492
commit 53611c9040
835 changed files with 35085 additions and 31861 deletions

View File

@@ -1,8 +1,10 @@
/*
* 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.
* 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 "GenericPriestStrategy.h"
#include "GenericPriestStrategyActionNodeFactory.h"
#include "HealPriestStrategy.h"
#include "Playerbots.h"
@@ -16,35 +18,37 @@ void GenericPriestStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
CombatStrategy::InitTriggers(triggers);
// triggers.push_back(new TriggerNode("medium health", NextAction::array(0, new NextAction("greater heal", 25.0f), nullptr)));
// triggers.push_back(new TriggerNode("low health", NextAction::array(0, new NextAction("power word: shield", 61.0f), new NextAction("greater heal", 60.0f), nullptr)));
// triggers.push_back(new TriggerNode("critical health", NextAction::array(0, new NextAction("remove shadowform", 72.0f), new NextAction("power word: shield", 71.0f), new NextAction("flash heal", 70.0f), nullptr)));
// triggers.push_back(new TriggerNode("party member critical health", NextAction::array(0, new NextAction("remove shadowform", 62.0f), new NextAction("power word: shield on party", 61.0f), new NextAction("flash heal on party", 60.0f), nullptr)));
// triggers.push_back(new TriggerNode("medium health", NextAction::array(0, new NextAction("greater heal", 25.0f),
// nullptr))); triggers.push_back(new TriggerNode("low health", NextAction::array(0, new NextAction("power word:
// shield", 61.0f), new NextAction("greater heal", 60.0f), nullptr))); triggers.push_back(new TriggerNode("critical
// health", NextAction::array(0, new NextAction("remove shadowform", 72.0f), new NextAction("power word:
// shield", 71.0f), new NextAction("flash heal", 70.0f), nullptr))); triggers.push_back(new TriggerNode("party
// member critical health", NextAction::array(0, new NextAction("remove shadowform", 62.0f), new NextAction("power
// word: shield on party", 61.0f), new NextAction("flash heal on party", 60.0f), nullptr)));
triggers.push_back(new TriggerNode("medium threat", NextAction::array(0, new NextAction("fade", 55.0f), nullptr)));
// triggers.push_back(new TriggerNode("enemy is close", NextAction::array(0, new NextAction("psychic scream", 50.0f), nullptr)));
// triggers.push_back(new TriggerNode("low mana", NextAction::array(0, new NextAction("inner focus", 42.0f), nullptr)));
// triggers.push_back(new TriggerNode("medium mana", NextAction::array(0, new NextAction("symbol of hope", ACTION_EMERGENCY), nullptr)));
// triggers.push_back(new TriggerNode("low mana", NextAction::array(0, new NextAction("consume magic", 10.0f), nullptr)));
// triggers.push_back(new TriggerNode("critical health", NextAction::array(0, new NextAction("desperate prayer", ACTION_EMERGENCY), nullptr)));
// triggers.push_back(new TriggerNode("enemy is close", NextAction::array(0, new NextAction("elune's grace", ACTION_EMERGENCY), nullptr)));
// triggers.push_back(new TriggerNode("chastise", NextAction::array(0, new NextAction("chastise", ACTION_INTERRUPT), nullptr)));
// triggers.push_back(new TriggerNode("enemy is close", NextAction::array(0, new NextAction("psychic
// scream", 50.0f), nullptr))); triggers.push_back(new TriggerNode("low mana", NextAction::array(0, new
// NextAction("inner focus", 42.0f), nullptr))); triggers.push_back(new TriggerNode("medium mana",
// NextAction::array(0, new NextAction("symbol of hope", ACTION_EMERGENCY), nullptr))); triggers.push_back(new
// TriggerNode("low mana", NextAction::array(0, new NextAction("consume magic", 10.0f), nullptr)));
// triggers.push_back(new TriggerNode("critical health", NextAction::array(0, new NextAction("desperate prayer",
// ACTION_EMERGENCY), nullptr))); triggers.push_back(new TriggerNode("enemy is close", NextAction::array(0, new
// NextAction("elune's grace", ACTION_EMERGENCY), nullptr))); triggers.push_back(new TriggerNode("chastise",
// NextAction::array(0, new NextAction("chastise", ACTION_INTERRUPT), nullptr)));
triggers.push_back(new TriggerNode(
"critical health",
NextAction::array(0, new NextAction("power word: shield", ACTION_NORMAL), NULL)));
"critical health", NextAction::array(0, new NextAction("power word: shield", ACTION_NORMAL), NULL)));
triggers.push_back(new TriggerNode(
"low health",
NextAction::array(0, new NextAction("power word: shield", ACTION_HIGH), NULL)));
triggers.push_back(
new TriggerNode("low health", NextAction::array(0, new NextAction("power word: shield", ACTION_HIGH), NULL)));
triggers.push_back(new TriggerNode(
"medium mana",
NextAction::array(0, new NextAction("shadowfiend", ACTION_HIGH + 1), NULL)));
triggers.push_back(
new TriggerNode("medium mana", NextAction::array(0, new NextAction("shadowfiend", ACTION_HIGH + 1), NULL)));
triggers.push_back(new TriggerNode(
"low mana",
NextAction::array(0, new NextAction("hymn of hope", ACTION_HIGH), NULL)));
triggers.push_back(new TriggerNode("enemy too close for spell", NextAction::array(0, new NextAction("flee", ACTION_MOVE + 9), nullptr)));
triggers.push_back(
new TriggerNode("low mana", NextAction::array(0, new NextAction("hymn of hope", ACTION_HIGH), NULL)));
triggers.push_back(new TriggerNode("enemy too close for spell",
NextAction::array(0, new NextAction("flee", ACTION_MOVE + 9), nullptr)));
triggers.push_back(new TriggerNode("often", NextAction::array(0, new NextAction("apply oil", 1.0f), nullptr)));
}
@@ -55,20 +59,27 @@ PriestCureStrategy::PriestCureStrategy(PlayerbotAI* botAI) : Strategy(botAI)
void PriestCureStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
triggers.push_back(new TriggerNode("dispel magic", NextAction::array(0, new NextAction("dispel magic", 41.0f), nullptr)));
triggers.push_back(new TriggerNode("dispel magic on party", NextAction::array(0, new NextAction("dispel magic on party", 40.0f), nullptr)));
triggers.push_back(new TriggerNode("cure disease", NextAction::array(0, new NextAction("abolish disease", 31.0f), nullptr)));
triggers.push_back(new TriggerNode("party member cure disease", NextAction::array(0, new NextAction("abolish disease on party", 30.0f), nullptr)));
triggers.push_back(
new TriggerNode("dispel magic", NextAction::array(0, new NextAction("dispel magic", 41.0f), nullptr)));
triggers.push_back(new TriggerNode("dispel magic on party",
NextAction::array(0, new NextAction("dispel magic on party", 40.0f), nullptr)));
triggers.push_back(
new TriggerNode("cure disease", NextAction::array(0, new NextAction("abolish disease", 31.0f), nullptr)));
triggers.push_back(new TriggerNode(
"party member cure disease", NextAction::array(0, new NextAction("abolish disease on party", 30.0f), nullptr)));
}
void PriestBoostStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
triggers.push_back(new TriggerNode("inner focus", NextAction::array(0, new NextAction("inner focus", 42.0f), nullptr)));
triggers.push_back(new TriggerNode("power infusion", NextAction::array(0, new NextAction("power infusion", 41.0f), nullptr)));
triggers.push_back(
new TriggerNode("inner focus", NextAction::array(0, new NextAction("inner focus", 42.0f), nullptr)));
triggers.push_back(
new TriggerNode("power infusion", NextAction::array(0, new NextAction("power infusion", 41.0f), nullptr)));
triggers.push_back(new TriggerNode("boost", NextAction::array(0, new NextAction("shadowfiend", 20.0f), nullptr)));
}
void PriestCcStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
triggers.push_back(new TriggerNode("shackle undead", NextAction::array(0, new NextAction("shackle undead", 31.0f), nullptr)));
triggers.push_back(
new TriggerNode("shackle undead", NextAction::array(0, new NextAction("shackle undead", 31.0f), nullptr)));
}

View File

@@ -1,5 +1,6 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_GENERICPRIESTSTRATEGY_H
@@ -12,37 +13,37 @@ class PlayerbotAI;
class GenericPriestStrategy : public RangedCombatStrategy
{
public:
GenericPriestStrategy(PlayerbotAI* botAI);
public:
GenericPriestStrategy(PlayerbotAI* botAI);
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
};
class PriestCureStrategy : public Strategy
{
public:
PriestCureStrategy(PlayerbotAI* botAI);
public:
PriestCureStrategy(PlayerbotAI* botAI);
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "cure"; }
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "cure"; }
};
class PriestBoostStrategy : public Strategy
{
public:
PriestBoostStrategy(PlayerbotAI* botAI) : Strategy(botAI) { }
public:
PriestBoostStrategy(PlayerbotAI* botAI) : Strategy(botAI) {}
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "boost"; }
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "boost"; }
};
class PriestCcStrategy : public Strategy
{
public:
PriestCcStrategy(PlayerbotAI* botAI) : Strategy(botAI) { }
public:
PriestCcStrategy(PlayerbotAI* botAI) : Strategy(botAI) {}
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "cc"; }
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "cc"; }
};
#endif

View File

@@ -1,5 +1,6 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_GENERICPRIESTSTRATEGYACTIONNODEFACTORY_H
@@ -10,197 +11,197 @@
class GenericPriestStrategyActionNodeFactory : public NamedObjectFactory<ActionNode>
{
public:
GenericPriestStrategyActionNodeFactory()
{
creators["inner fire"] = &inner_fire;
creators["holy nova"] = &holy_nova;
creators["power word: fortitude"] = &power_word_fortitude;
creators["power word: fortitude on party"] = &power_word_fortitude_on_party;
creators["divine spirit"] = &divine_spirit;
creators["divine spirit on party"] = &divine_spirit_on_party;
creators["power word: shield"] = &power_word_shield;
// creators["power word: shield on party"] = &power_word_shield_on_party;
creators["renew"] = &renew;
creators["renew on party"] = &renew_on_party;
creators["greater heal"] = &greater_heal;
creators["greater heal on party"] = &greater_heal_on_party;
creators["heal"] = &heal;
creators["heal on party"] = &heal_on_party;
creators["lesser heal"] = &lesser_heal;
creators["lesser heal on party"] = &lesser_heal_on_party;
creators["flash heal"] = &flash_heal;
creators["flash heal on party"] = &flash_heal_on_party;
creators["psychic scream"] = &psychic_scream;
// creators["fade"] = &fade;
creators["shadowfiend"] = &shadowfiend;
}
public:
GenericPriestStrategyActionNodeFactory()
{
creators["inner fire"] = &inner_fire;
creators["holy nova"] = &holy_nova;
creators["power word: fortitude"] = &power_word_fortitude;
creators["power word: fortitude on party"] = &power_word_fortitude_on_party;
creators["divine spirit"] = &divine_spirit;
creators["divine spirit on party"] = &divine_spirit_on_party;
creators["power word: shield"] = &power_word_shield;
// creators["power word: shield on party"] = &power_word_shield_on_party;
creators["renew"] = &renew;
creators["renew on party"] = &renew_on_party;
creators["greater heal"] = &greater_heal;
creators["greater heal on party"] = &greater_heal_on_party;
creators["heal"] = &heal;
creators["heal on party"] = &heal_on_party;
creators["lesser heal"] = &lesser_heal;
creators["lesser heal on party"] = &lesser_heal_on_party;
creators["flash heal"] = &flash_heal;
creators["flash heal on party"] = &flash_heal_on_party;
creators["psychic scream"] = &psychic_scream;
// creators["fade"] = &fade;
creators["shadowfiend"] = &shadowfiend;
}
private:
static ActionNode* inner_fire(PlayerbotAI* ai)
{
return new ActionNode ("inner fire",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* holy_nova(PlayerbotAI* ai)
{
return new ActionNode ("holy nova",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* power_word_fortitude(PlayerbotAI* ai)
{
return new ActionNode ("power word: fortitude",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* power_word_fortitude_on_party(PlayerbotAI* ai)
{
return new ActionNode ("power word: fortitude on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* divine_spirit(PlayerbotAI* ai)
{
return new ActionNode ("divine spirit",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* divine_spirit_on_party(PlayerbotAI* ai)
{
return new ActionNode ("divine spirit on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* power_word_shield(PlayerbotAI* ai)
{
return new ActionNode ("power word: shield",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
// /*A*/ NextAction::array(0, new NextAction("renew", 50.0f), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* power_word_shield_on_party(PlayerbotAI* ai)
{
return new ActionNode ("power word: shield on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
// /*A*/ NextAction::array(0, new NextAction("renew on party", 50.0f), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* renew(PlayerbotAI* ai)
{
return new ActionNode ("renew",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* renew_on_party(PlayerbotAI* ai)
{
return new ActionNode ("renew on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* greater_heal(PlayerbotAI* ai)
{
return new ActionNode ("greater heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("heal"), NULL),
/*C*/ NULL);
}
static ActionNode* greater_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode ("greater heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("heal on party"), NULL),
/*C*/ NULL);
}
static ActionNode* heal(PlayerbotAI* ai)
{
return new ActionNode ("heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("lesser heal"), NULL),
/*C*/ NULL);
}
static ActionNode* heal_on_party(PlayerbotAI* ai)
{
return new ActionNode ("heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("lesser heal on party"), NULL),
/*C*/ NULL);
}
static ActionNode* lesser_heal(PlayerbotAI* ai)
{
return new ActionNode ("lesser heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* lesser_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode ("lesser heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* flash_heal(PlayerbotAI* ai)
{
return new ActionNode ("flash heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("greater heal"), NULL),
/*C*/ NULL);
}
static ActionNode* flash_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode ("flash heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("greater heal on party"), NULL),
/*C*/ NULL);
}
static ActionNode* psychic_scream(PlayerbotAI* ai)
{
return new ActionNode ("psychic scream",
/*P*/ NULL,
/*A*/ NextAction::array(0, new NextAction("fade"), NULL),
/*C*/ NULL);
}
// static ActionNode* fade(PlayerbotAI* ai)
// {
// return new ActionNode ("fade",
// /*P*/ NULL,
// /*A*/ NextAction::array(0, new NextAction("flee"), NULL),
// /*C*/ NULL);
// }
static ActionNode* shadowfiend(PlayerbotAI* ai)
{
return new ActionNode ("shadowfiend",
/*P*/ NULL,
// /*A*/ NextAction::array(0, new NextAction("hymn of hope"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
private:
static ActionNode* inner_fire(PlayerbotAI* ai)
{
return new ActionNode("inner fire",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* holy_nova(PlayerbotAI* ai)
{
return new ActionNode("holy nova",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* power_word_fortitude(PlayerbotAI* ai)
{
return new ActionNode("power word: fortitude",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* power_word_fortitude_on_party(PlayerbotAI* ai)
{
return new ActionNode("power word: fortitude on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* divine_spirit(PlayerbotAI* ai)
{
return new ActionNode("divine spirit",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* divine_spirit_on_party(PlayerbotAI* ai)
{
return new ActionNode("divine spirit on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* power_word_shield(PlayerbotAI* ai)
{
return new ActionNode("power word: shield",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
// /*A*/ NextAction::array(0, new NextAction("renew", 50.0f), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* power_word_shield_on_party(PlayerbotAI* ai)
{
return new ActionNode("power word: shield on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
// /*A*/ NextAction::array(0, new NextAction("renew on party", 50.0f), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* renew(PlayerbotAI* ai)
{
return new ActionNode("renew",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* renew_on_party(PlayerbotAI* ai)
{
return new ActionNode("renew on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* greater_heal(PlayerbotAI* ai)
{
return new ActionNode("greater heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("heal"), NULL),
/*C*/ NULL);
}
static ActionNode* greater_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode("greater heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("heal on party"), NULL),
/*C*/ NULL);
}
static ActionNode* heal(PlayerbotAI* ai)
{
return new ActionNode("heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("lesser heal"), NULL),
/*C*/ NULL);
}
static ActionNode* heal_on_party(PlayerbotAI* ai)
{
return new ActionNode("heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("lesser heal on party"), NULL),
/*C*/ NULL);
}
static ActionNode* lesser_heal(PlayerbotAI* ai)
{
return new ActionNode("lesser heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* lesser_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode("lesser heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* flash_heal(PlayerbotAI* ai)
{
return new ActionNode("flash heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("greater heal"), NULL),
/*C*/ NULL);
}
static ActionNode* flash_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode("flash heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("greater heal on party"), NULL),
/*C*/ NULL);
}
static ActionNode* psychic_scream(PlayerbotAI* ai)
{
return new ActionNode("psychic scream",
/*P*/ NULL,
/*A*/ NextAction::array(0, new NextAction("fade"), NULL),
/*C*/ NULL);
}
// static ActionNode* fade(PlayerbotAI* ai)
// {
// return new ActionNode ("fade",
// /*P*/ NULL,
// /*A*/ NextAction::array(0, new NextAction("flee"), NULL),
// /*C*/ NULL);
// }
static ActionNode* shadowfiend(PlayerbotAI* ai)
{
return new ActionNode("shadowfiend",
/*P*/ NULL,
// /*A*/ NextAction::array(0, new NextAction("hymn of hope"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
};
class CurePriestStrategyActionNodeFactory : public NamedObjectFactory<ActionNode>
{
public:
CurePriestStrategyActionNodeFactory()
{
creators["abolish disease"] = &abolish_disease;
creators["abolish disease on party"] = &abolish_disease_on_party;
}
public:
CurePriestStrategyActionNodeFactory()
{
creators["abolish disease"] = &abolish_disease;
creators["abolish disease on party"] = &abolish_disease_on_party;
}
private:
ACTION_NODE_A(abolish_disease, "abolish disease", "cure disease");
ACTION_NODE_A(abolish_disease_on_party, "abolish disease on party", "cure disease on party");
private:
ACTION_NODE_A(abolish_disease, "abolish disease", "cure disease");
ACTION_NODE_A(abolish_disease_on_party, "abolish disease on party", "cure disease on party");
};
#endif

View File

@@ -1,8 +1,10 @@
/*
* 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.
* 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 "HealPriestStrategy.h"
#include "GenericPriestStrategyActionNodeFactory.h"
#include "Playerbots.h"
@@ -24,75 +26,73 @@ void HealPriestStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
// "enemy out of spell",
// NextAction::array(0, new NextAction("reach spell", ACTION_NORMAL + 9), NULL)));
// triggers.push_back(new TriggerNode(
// "medium aoe heal",
// NextAction::array(0,
// new NextAction("circle of healing", ACTION_MEDIUM_HEAL + 8),
// triggers.push_back(new TriggerNode(
// "medium aoe heal",
// 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)));
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 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)));
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)));
NextAction::array(0, new NextAction("divine hymn", ACTION_CRITICAL_HEAL + 6),
new NextAction("prayer of healing on party", ACTION_CRITICAL_HEAL + 5), nullptr)));
triggers.push_back(new TriggerNode(
"party member critical health",
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)));
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)));
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)));
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)));
triggers.push_back(
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)));
// 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
// NextAction("heal on party", 41.0f), new NextAction("renew on party", 40.0f), nullptr))); triggers.push_back(new
// TriggerNode("party member medium health", NextAction::array(0, new NextAction("greater heal on party", 47.0f),
// nullptr))); triggers.push_back(new TriggerNode("party member low health", NextAction::array(0, new
// NextAction("power word: shield on party", 51.0f), new NextAction("greater heal on party", 50.0f), nullptr)));
triggers.push_back(new TriggerNode(
"party member to heal out of spell range",
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::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)));
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)));
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)));
triggers.push_back(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)));
// 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 NextAction("heal on party", 41.0f), new NextAction("renew on party", 40.0f), nullptr)));
// triggers.push_back(new TriggerNode("party member medium health", NextAction::array(0, new NextAction("greater heal on party", 47.0f), nullptr)));
// triggers.push_back(new TriggerNode("party member low health", NextAction::array(0, new NextAction("power word: shield on party", 51.0f), new NextAction("greater heal on party", 50.0f), nullptr)));
triggers.push_back(new TriggerNode("party member to heal out of spell range", 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::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)));
triggers.push_back(new TriggerNode("critical health", NextAction::array(0, new NextAction("pain suppression", ACTION_EMERGENCY + 1), nullptr)));
triggers.push_back(new TriggerNode("protect party member", NextAction::array(0, new NextAction("pain suppression on party", ACTION_EMERGENCY), nullptr)));
"critical health", NextAction::array(0, new NextAction("pain suppression", ACTION_EMERGENCY + 1), nullptr)));
triggers.push_back(
new TriggerNode("protect party member",
NextAction::array(0, new NextAction("pain suppression on party", ACTION_EMERGENCY), nullptr)));
}

View File

@@ -1,5 +1,6 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_HEALPRIESTSTRATEGY_H
@@ -11,13 +12,13 @@ class PlayerbotAI;
class HealPriestStrategy : public GenericPriestStrategy
{
public:
HealPriestStrategy(PlayerbotAI* botAI);
public:
HealPriestStrategy(PlayerbotAI* botAI);
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
NextAction** getDefaultActions() override;
std::string const getName() override { return "heal"; }
uint32 GetType() const override { return STRATEGY_TYPE_HEAL | STRATEGY_TYPE_RANGED; }
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
NextAction** getDefaultActions() override;
std::string const getName() override { return "heal"; }
uint32 GetType() const override { return STRATEGY_TYPE_HEAL | STRATEGY_TYPE_RANGED; }
};
#endif

View File

@@ -1,26 +1,25 @@
/*
* 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.
* 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 "HolyPriestStrategy.h"
#include "Playerbots.h"
class HolyPriestStrategyActionNodeFactory : public NamedObjectFactory<ActionNode>
{
public:
HolyPriestStrategyActionNodeFactory()
{
creators["smite"] = &smite;
}
public:
HolyPriestStrategyActionNodeFactory() { creators["smite"] = &smite; }
private:
static ActionNode* smite([[maybe_unused]] PlayerbotAI* botAI)
{
return new ActionNode ("smite",
/*P*/ nullptr,
/*A*/ NextAction::array(0, new NextAction("shoot"), nullptr),
/*C*/ nullptr);
}
private:
static ActionNode* smite([[maybe_unused]] PlayerbotAI* botAI)
{
return new ActionNode("smite",
/*P*/ nullptr,
/*A*/ NextAction::array(0, new NextAction("shoot"), nullptr),
/*C*/ nullptr);
}
};
HolyPriestStrategy::HolyPriestStrategy(PlayerbotAI* botAI) : HealPriestStrategy(botAI)
@@ -30,17 +29,23 @@ HolyPriestStrategy::HolyPriestStrategy(PlayerbotAI* botAI) : HealPriestStrategy(
NextAction** HolyPriestStrategy::getDefaultActions()
{
return NextAction::array(0, new NextAction("smite", ACTION_DEFAULT + 0.2f), new NextAction("mana burn", ACTION_DEFAULT + 0.1f), new NextAction("starshards", ACTION_DEFAULT), nullptr);
return NextAction::array(0, new NextAction("smite", ACTION_DEFAULT + 0.2f),
new NextAction("mana burn", ACTION_DEFAULT + 0.1f),
new NextAction("starshards", ACTION_DEFAULT), nullptr);
}
void HolyPriestStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
HealPriestStrategy::InitTriggers(triggers);
triggers.push_back(new TriggerNode("holy fire", NextAction::array(0, new NextAction("holy fire", ACTION_NORMAL + 9), nullptr)));
triggers.push_back(new TriggerNode("shadowfiend", NextAction::array(0, new NextAction("shadowfiend", ACTION_HIGH), nullptr)));
triggers.push_back(new TriggerNode("medium mana", NextAction::array(0, new NextAction("shadowfiend", ACTION_HIGH), nullptr)));
triggers.push_back(new TriggerNode("low mana", NextAction::array(0, new NextAction("mana burn", ACTION_HIGH), nullptr)));
triggers.push_back(
new TriggerNode("holy fire", NextAction::array(0, new NextAction("holy fire", ACTION_NORMAL + 9), nullptr)));
triggers.push_back(
new TriggerNode("shadowfiend", NextAction::array(0, new NextAction("shadowfiend", ACTION_HIGH), nullptr)));
triggers.push_back(
new TriggerNode("medium mana", NextAction::array(0, new NextAction("shadowfiend", ACTION_HIGH), nullptr)));
triggers.push_back(
new TriggerNode("low mana", NextAction::array(0, new NextAction("mana burn", ACTION_HIGH), nullptr)));
}
HolyHealPriestStrategy::HolyHealPriestStrategy(PlayerbotAI* botAI) : GenericPriestStrategy(botAI)
@@ -57,51 +62,43 @@ 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)));
triggers.push_back(
new TriggerNode("group heal occasion",
NextAction::array(0, new NextAction("circle of healing", ACTION_MEDIUM_HEAL + 8), NULL)));
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)));
NextAction::array(0, new NextAction("divine hymn", ACTION_CRITICAL_HEAL + 6),
new NextAction("prayer of healing on party", ACTION_CRITICAL_HEAL + 5), nullptr)));
triggers.push_back(new TriggerNode(
"party member critical health",
NextAction::array(0,
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)));
NextAction::array(0, 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)));
triggers.push_back(
new TriggerNode("party member low health",
NextAction::array(0, new NextAction("circle of healing", 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)));
triggers.push_back(
new TriggerNode("party member medium health",
NextAction::array(0, 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)));
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)));
triggers.push_back(new TriggerNode(
"party member low health",
NextAction::array(0,
new NextAction("circle of healing", 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)));
triggers.push_back(new TriggerNode(
"party member medium health",
NextAction::array(0,
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)));
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)));
triggers.push_back(new TriggerNode("party member to heal out of spell range", NextAction::array(0, new NextAction("reach party member to heal", ACTION_CRITICAL_HEAL + 10), nullptr)));
"party member to heal out of spell range",
NextAction::array(0, new NextAction("reach party member to heal", ACTION_CRITICAL_HEAL + 10), nullptr)));
}

View File

@@ -1,36 +1,36 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_HOLYPRIESTSTRATEGY_H
#define _PLAYERBOT_HOLYPRIESTSTRATEGY_H
#include "HealPriestStrategy.h"
#include "GenericPriestStrategyActionNodeFactory.h"
#include "HealPriestStrategy.h"
class PlayerbotAI;
class HolyPriestStrategy : public HealPriestStrategy
{
public:
HolyPriestStrategy(PlayerbotAI* botAI);
public:
HolyPriestStrategy(PlayerbotAI* botAI);
NextAction** getDefaultActions() override;
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "holy dps"; }
uint32 GetType() const override { return STRATEGY_TYPE_DPS | STRATEGY_TYPE_RANGED; }
NextAction** getDefaultActions() override;
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "holy dps"; }
uint32 GetType() const override { return STRATEGY_TYPE_DPS | STRATEGY_TYPE_RANGED; }
};
class HolyHealPriestStrategy : public GenericPriestStrategy
{
public:
HolyHealPriestStrategy(PlayerbotAI* botAI);
public:
HolyHealPriestStrategy(PlayerbotAI* botAI);
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
NextAction** getDefaultActions() override;
std::string const getName() override { return "holy heal"; }
uint32 GetType() const override { return STRATEGY_TYPE_HEAL | STRATEGY_TYPE_RANGED; }
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
NextAction** getDefaultActions() override;
std::string const getName() override { return "holy heal"; }
uint32 GetType() const override { return STRATEGY_TYPE_HEAL | STRATEGY_TYPE_RANGED; }
};
#endif

View File

@@ -1,20 +1,16 @@
/*
* 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.
* 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 "PriestActions.h"
#include "Event.h"
#include "Playerbots.h"
bool CastRemoveShadowformAction::isUseful()
{
return botAI->HasAura("shadowform", AI_VALUE(Unit*, "self target"));
}
bool CastRemoveShadowformAction::isUseful() { return botAI->HasAura("shadowform", AI_VALUE(Unit*, "self target")); }
bool CastRemoveShadowformAction::isPossible()
{
return true;
}
bool CastRemoveShadowformAction::isPossible() { return true; }
bool CastRemoveShadowformAction::Execute(Event event)
{
@@ -24,22 +20,26 @@ bool CastRemoveShadowformAction::Execute(Event event)
Unit* CastPowerWordShieldOnAlmostFullHealthBelow::GetTarget()
{
Group *group = bot->GetGroup();
for (GroupReference *gref = group->GetFirstMember(); gref; gref = gref->next())
Group* group = bot->GetGroup();
for (GroupReference* gref = group->GetFirstMember(); gref; gref = gref->next())
{
Player* player = gref->GetSource();
if (!player)
continue;
if (player->isDead()) {
if (player->isDead())
{
continue;
}
if (player->GetHealthPct() > sPlayerbotAIConfig->almostFullHealth) {
if (player->GetHealthPct() > sPlayerbotAIConfig->almostFullHealth)
{
continue;
}
if (player->GetDistance2d(bot) > sPlayerbotAIConfig->spellDistance) {
if (player->GetDistance2d(bot) > sPlayerbotAIConfig->spellDistance)
{
continue;
}
if (botAI->HasAnyAuraOf(player, "weakened soul", "power word: shield", nullptr)) {
if (botAI->HasAnyAuraOf(player, "weakened soul", "power word: shield", nullptr))
{
continue;
}
return player;
@@ -49,22 +49,26 @@ Unit* CastPowerWordShieldOnAlmostFullHealthBelow::GetTarget()
bool CastPowerWordShieldOnAlmostFullHealthBelow::isUseful()
{
Group *group = bot->GetGroup();
for (GroupReference *gref = group->GetFirstMember(); gref; gref = gref->next())
Group* group = bot->GetGroup();
for (GroupReference* gref = group->GetFirstMember(); gref; gref = gref->next())
{
Player* player = gref->GetSource();
if (!player)
continue;
if (player->isDead()) {
if (player->isDead())
{
continue;
}
if (player->GetHealthPct() > sPlayerbotAIConfig->almostFullHealth) {
if (player->GetHealthPct() > sPlayerbotAIConfig->almostFullHealth)
{
continue;
}
if (player->GetDistance2d(bot) > sPlayerbotAIConfig->spellDistance) {
if (player->GetDistance2d(bot) > sPlayerbotAIConfig->spellDistance)
{
continue;
}
if (botAI->HasAnyAuraOf(player, "weakened soul", "power word: shield", nullptr)) {
if (botAI->HasAnyAuraOf(player, "weakened soul", "power word: shield", nullptr))
{
continue;
}
return true;

View File

@@ -1,5 +1,6 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_PRIESTACTIONS_H
@@ -22,7 +23,8 @@ CURE_ACTION(CastDispelMagicAction, "dispel magic");
CURE_PARTY_ACTION(CastDispelMagicOnPartyAction, "dispel magic", DISPEL_MAGIC);
SPELL_ACTION(CastDispelMagicOnTargetAction, "dispel magic");
CC_ACTION(CastShackleUndeadAction, "shackle undead");
SPELL_ACTION_U(CastManaBurnAction, "mana burn", AI_VALUE2(uint8, "mana", "self target") < 50 && AI_VALUE2(uint8, "mana", "current target") >= 20);
SPELL_ACTION_U(CastManaBurnAction, "mana burn",
AI_VALUE2(uint8, "mana", "self target") < 50 && AI_VALUE2(uint8, "mana", "current target") >= 20);
BUFF_ACTION(CastLevitateAction, "levitate");
BUFF_ACTION(CastDivineSpiritAction, "divine spirit");
BUFF_PARTY_ACTION(CastDivineSpiritOnPartyAction, "divine spirit");
@@ -99,7 +101,9 @@ BUFF_ACTION(CastShadowguardAction, "shadowguard");
HEAL_ACTION(CastDesperatePrayerAction, "desperate prayer");
BUFF_ACTION(CastFearWardAction, "fear ward");
BUFF_PARTY_ACTION(CastFearWardOnPartyAction, "fear ward");
SPELL_ACTION_U(CastStarshardsAction, "starshards", (AI_VALUE2(uint8, "mana", "self target") > 50 && AI_VALUE(Unit*, "current target") && AI_VALUE2(float, "distance", "current target") > 15.0f));
SPELL_ACTION_U(CastStarshardsAction, "starshards",
(AI_VALUE2(uint8, "mana", "self target") > 50 && AI_VALUE(Unit*, "current target") &&
AI_VALUE2(float, "distance", "current target") > 15.0f));
BUFF_ACTION(CastElunesGraceAction, "elune's grace");
BUFF_ACTION(CastFeedbackAction, "feedback");
BUFF_ACTION(CastSymbolOfHopeAction, "symbol of hope");
@@ -108,12 +112,12 @@ SNARE_ACTION(CastChastiseAction, "chastise");
class CastRemoveShadowformAction : public Action
{
public:
CastRemoveShadowformAction(PlayerbotAI* botAI) : Action(botAI, "remove shadowform") { }
public:
CastRemoveShadowformAction(PlayerbotAI* botAI) : Action(botAI, "remove shadowform") {}
bool isUseful() override;
bool isPossible() override;
bool Execute(Event event) override;
bool isUseful() override;
bool isPossible() override;
bool Execute(Event event) override;
};
class CastDispersionAction : public CastSpellAction
@@ -126,7 +130,9 @@ public:
class CastPenanceOnPartyAction : public HealPartyMemberAction
{
public:
CastPenanceOnPartyAction(PlayerbotAI* ai) : HealPartyMemberAction(ai, "penance", 25.0f, HealingManaEfficiency::HIGH) {}
CastPenanceOnPartyAction(PlayerbotAI* ai) : HealPartyMemberAction(ai, "penance", 25.0f, HealingManaEfficiency::HIGH)
{
}
};
class CastHymnOfHopeAction : public CastSpellAction
@@ -150,17 +156,21 @@ public:
virtual std::string const GetTargetName() { return "current target"; }
};
class CastPowerWordShieldOnAlmostFullHealthBelow : public HealPartyMemberAction {
class CastPowerWordShieldOnAlmostFullHealthBelow : public HealPartyMemberAction
{
public:
CastPowerWordShieldOnAlmostFullHealthBelow(PlayerbotAI* ai) : HealPartyMemberAction(ai, "power word: shield", 15.0f, HealingManaEfficiency::HIGH) {}
CastPowerWordShieldOnAlmostFullHealthBelow(PlayerbotAI* ai)
: HealPartyMemberAction(ai, "power word: shield", 15.0f, HealingManaEfficiency::HIGH)
{
}
bool isUseful() override;
Unit* GetTarget() override;
};
class CastMindSearAction : public CastSpellAction
{
public:
CastMindSearAction(PlayerbotAI* ai) : CastSpellAction(ai, "mind sear") {}
ActionThreatType getThreatType() override { return ActionThreatType::Aoe; }
public:
CastMindSearAction(PlayerbotAI* ai) : CastSpellAction(ai, "mind sear") {}
ActionThreatType getThreatType() override { return ActionThreatType::Aoe; }
};
#endif

View File

@@ -1,314 +1,344 @@
/*
* 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.
* 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 "HolyPriestStrategy.h"
#include "NamedObjectContext.h"
#include "Playerbots.h"
#include "PriestActions.h"
#include "PriestNonCombatStrategy.h"
#include "PriestTriggers.h"
#include "ShadowPriestStrategy.h"
#include "NamedObjectContext.h"
#include "PullStrategy.h"
#include "Playerbots.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;
}
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;
}
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); }
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); }
};
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;
}
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); }
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;
}
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); }
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["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"] = &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;
}
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["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"] = &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;
}
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 CastPowerWordShieldOnAlmostFullHealthBelow(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); }
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 CastPowerWordShieldOnAlmostFullHealthBelow(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); }
};
PriestAiObjectContext::PriestAiObjectContext(PlayerbotAI* botAI) : AiObjectContext(botAI)

View File

@@ -1,5 +1,6 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_PRIESTAIOBJECTCONTEXT_H
@@ -11,8 +12,8 @@ class PlayerbotAI;
class PriestAiObjectContext : public AiObjectContext
{
public:
PriestAiObjectContext(PlayerbotAI* botAI);
public:
PriestAiObjectContext(PlayerbotAI* botAI);
};
#endif

View File

@@ -1,10 +1,12 @@
/*
* 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.
* 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 "PriestNonCombatStrategy.h"
#include "PriestNonCombatStrategyActionNodeFactory.h"
#include "Playerbots.h"
#include "PriestNonCombatStrategyActionNodeFactory.h"
PriestNonCombatStrategy::PriestNonCombatStrategy(PlayerbotAI* botAI) : NonCombatStrategy(botAI)
{
@@ -15,69 +17,77 @@ void PriestNonCombatStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
NonCombatStrategy::InitTriggers(triggers);
// triggers.push_back(new TriggerNode("power word: fortitude", NextAction::array(0, new NextAction("power word: fortitude", 12.0f), nullptr)));
// triggers.push_back(new TriggerNode("divine spirit", NextAction::array(0, new NextAction("divine spirit", 14.0f), nullptr)));
triggers.push_back(new TriggerNode("inner fire", NextAction::array(0, new NextAction("inner fire", 10.0f), nullptr)));
// triggers.push_back(new TriggerNode("critical health", NextAction::array(0, new NextAction("greater heal", 70.0f), nullptr)));
// triggers.push_back(new TriggerNode("party member critical health", NextAction::array(0, new NextAction("greater heal on party", 60.0f), nullptr)));
// triggers.push_back(new TriggerNode("medium health", NextAction::array(0, new NextAction("renew", 41.0f), nullptr)));
// triggers.push_back(new TriggerNode("party member medium health", NextAction::array(0, new NextAction("renew on party", 40.0f), nullptr)));
// triggers.push_back(new TriggerNode("medium aoe heal", NextAction::array(0, new NextAction("lightwell", 42.f), nullptr)));
triggers.push_back(new TriggerNode("party member dead", NextAction::array(0, new NextAction("remove shadowform", ACTION_CRITICAL_HEAL + 11), new NextAction("resurrection", ACTION_CRITICAL_HEAL + 10), nullptr)));
//triggers.push_back(new TriggerNode("swimming", NextAction::array(0, new NextAction("levitate", 1.0f), nullptr)));
// triggers.push_back(new TriggerNode("power word: fortitude", NextAction::array(0, new NextAction("power word:
// fortitude", 12.0f), nullptr))); triggers.push_back(new TriggerNode("divine spirit", NextAction::array(0, new
// NextAction("divine spirit", 14.0f), nullptr)));
triggers.push_back(
new TriggerNode("inner fire", NextAction::array(0, new NextAction("inner fire", 10.0f), nullptr)));
// triggers.push_back(new TriggerNode("critical health", NextAction::array(0, new NextAction("greater heal", 70.0f),
// nullptr))); triggers.push_back(new TriggerNode("party member critical health", NextAction::array(0, new
// NextAction("greater heal on party", 60.0f), nullptr))); triggers.push_back(new TriggerNode("medium health",
// NextAction::array(0, new NextAction("renew", 41.0f), nullptr))); triggers.push_back(new TriggerNode("party member
// medium health", NextAction::array(0, new NextAction("renew on party", 40.0f), nullptr))); triggers.push_back(new
// TriggerNode("medium aoe heal", NextAction::array(0, new NextAction("lightwell", 42.f), nullptr)));
triggers.push_back(new TriggerNode(
"party member dead", NextAction::array(0, new NextAction("remove shadowform", ACTION_CRITICAL_HEAL + 11),
new NextAction("resurrection", ACTION_CRITICAL_HEAL + 10), nullptr)));
// triggers.push_back(new TriggerNode("swimming", NextAction::array(0, new NextAction("levitate", 1.0f), nullptr)));
triggers.push_back(new TriggerNode("often", NextAction::array(0, new NextAction("apply oil", 1.0f), nullptr)));
triggers.push_back(new TriggerNode(
"party member critical health",
NextAction::array(0,
new NextAction("renew on party", ACTION_CRITICAL_HEAL + 3),
new NextAction("penance on party", ACTION_CRITICAL_HEAL + 2),
new NextAction("greater heal on party", ACTION_CRITICAL_HEAL + 1),
NULL)));
triggers.push_back(
new TriggerNode("party member critical health",
NextAction::array(0, new NextAction("renew on party", ACTION_CRITICAL_HEAL + 3),
new NextAction("penance on party", ACTION_CRITICAL_HEAL + 2),
new NextAction("greater heal on party", ACTION_CRITICAL_HEAL + 1), NULL)));
triggers.push_back(new TriggerNode(
"party member low health",
NextAction::array(0,
new NextAction("renew on party", ACTION_MEDIUM_HEAL + 3),
new NextAction("penance on party", ACTION_MEDIUM_HEAL + 2),
new NextAction("greater heal on party", ACTION_MEDIUM_HEAL + 1),
NULL)));
triggers.push_back(
new TriggerNode("party member low health",
NextAction::array(0, new NextAction("renew on party", ACTION_MEDIUM_HEAL + 3),
new NextAction("penance on party", ACTION_MEDIUM_HEAL + 2),
new NextAction("greater heal on party", ACTION_MEDIUM_HEAL + 1), NULL)));
triggers.push_back(new TriggerNode(
"party member medium health",
NextAction::array(0,
new NextAction("renew on party", ACTION_LIGHT_HEAL + 9),
new NextAction("penance on party", ACTION_LIGHT_HEAL + 8),
NULL)));
triggers.push_back(new TriggerNode(
"party member almost full health",
NextAction::array(0,
new NextAction("renew on party", ACTION_LIGHT_HEAL + 3),
NULL)));
triggers.push_back(
new TriggerNode("party member medium health",
NextAction::array(0, new NextAction("renew on party", ACTION_LIGHT_HEAL + 9),
new NextAction("penance on party", ACTION_LIGHT_HEAL + 8), NULL)));
triggers.push_back(new TriggerNode(
"medium aoe heal",
NextAction::array(0, new NextAction("circle of healing", 27.0f), NULL)));
triggers.push_back(
new TriggerNode("party member almost full health",
NextAction::array(0, new NextAction("renew on party", ACTION_LIGHT_HEAL + 3), NULL)));
triggers.push_back(
new TriggerNode("medium aoe heal", NextAction::array(0, new NextAction("circle of healing", 27.0f), NULL)));
}
void PriestBuffStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
NonCombatStrategy::InitTriggers(triggers);
triggers.push_back(new TriggerNode("prayer of fortitude on party", NextAction::array(0, new NextAction("prayer of fortitude on party", 12.0f), nullptr)));
triggers.push_back(new TriggerNode("prayer of spirit on party", NextAction::array(0, new NextAction("prayer of spirit on party", 14.0f), nullptr)));
triggers.push_back(new TriggerNode("power word: fortitude on party", NextAction::array(0, new NextAction("power word: fortitude on party", 11.0f), nullptr)));
triggers.push_back(new TriggerNode("divine spirit on party", NextAction::array(0, new NextAction("divine spirit on party", 13.0f), nullptr)));
// triggers.push_back(new TriggerNode("fear ward", NextAction::array(0, new NextAction("fear ward", 10.0f), nullptr)));
// triggers.push_back(new TriggerNode("touch of weakness", NextAction::array(0, new NextAction("touch of weakness", 10.0f), nullptr)));
// triggers.push_back(new TriggerNode("shadowguard", NextAction::array(0, new NextAction("shadowguard", 10.0f), nullptr)));
triggers.push_back(
new TriggerNode("prayer of fortitude on party",
NextAction::array(0, new NextAction("prayer of fortitude on party", 12.0f), nullptr)));
triggers.push_back(
new TriggerNode("prayer of spirit on party",
NextAction::array(0, new NextAction("prayer of spirit on party", 14.0f), nullptr)));
triggers.push_back(
new TriggerNode("power word: fortitude on party",
NextAction::array(0, new NextAction("power word: fortitude on party", 11.0f), nullptr)));
triggers.push_back(new TriggerNode("divine spirit on party",
NextAction::array(0, new NextAction("divine spirit on party", 13.0f), nullptr)));
// triggers.push_back(new TriggerNode("fear ward", NextAction::array(0, new NextAction("fear ward", 10.0f),
// nullptr))); triggers.push_back(new TriggerNode("touch of weakness", NextAction::array(0, new NextAction("touch of
// weakness", 10.0f), nullptr))); triggers.push_back(new TriggerNode("shadowguard", NextAction::array(0, new
// NextAction("shadowguard", 10.0f), nullptr)));
}
void PriestShadowResistanceStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
NonCombatStrategy::InitTriggers(triggers);
triggers.push_back(new TriggerNode("shadow protection", NextAction::array(0, new NextAction("shadow protection", 12.0f), nullptr)));
triggers.push_back(new TriggerNode("shadow protection on party", NextAction::array(0, new NextAction("shadow protection on party", 11.0f), nullptr)));
// triggers.push_back(new TriggerNode("shadow protection on party", NextAction::array(0, new NextAction("shadow protection on party", 10.0f), nullptr)));
triggers.push_back(new TriggerNode("shadow protection",
NextAction::array(0, new NextAction("shadow protection", 12.0f), nullptr)));
triggers.push_back(
new TriggerNode("shadow protection on party",
NextAction::array(0, new NextAction("shadow protection on party", 11.0f), nullptr)));
// triggers.push_back(new TriggerNode("shadow protection on party", NextAction::array(0, new NextAction("shadow
// protection on party", 10.0f), nullptr)));
}

View File

@@ -1,5 +1,6 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_PRIESTNONCOMBATSTRATEGY_H
@@ -11,29 +12,29 @@ class PlayerbotAI;
class PriestNonCombatStrategy : public NonCombatStrategy
{
public:
PriestNonCombatStrategy(PlayerbotAI* botAI);
public:
PriestNonCombatStrategy(PlayerbotAI* botAI);
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "nc"; }
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "nc"; }
};
class PriestBuffStrategy : public NonCombatStrategy
{
public:
PriestBuffStrategy(PlayerbotAI* botAI) : NonCombatStrategy(botAI) { }
public:
PriestBuffStrategy(PlayerbotAI* botAI) : NonCombatStrategy(botAI) {}
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "buff"; }
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "buff"; }
};
class PriestShadowResistanceStrategy : public NonCombatStrategy
{
public:
PriestShadowResistanceStrategy(PlayerbotAI* botAI) : NonCombatStrategy(botAI) { }
public:
PriestShadowResistanceStrategy(PlayerbotAI* botAI) : NonCombatStrategy(botAI) {}
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "rshadow"; }
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "rshadow"; }
};
#endif

View File

@@ -1,5 +1,6 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_PRIESTNONCOMBATSTRATEGYACTIONNODEFACTORY_H
@@ -12,141 +13,141 @@ class PlayerbotAI;
class PriestNonCombatStrategyActionNodeFactory : public NamedObjectFactory<ActionNode>
{
public:
PriestNonCombatStrategyActionNodeFactory()
{
creators["holy nova"] = &holy_nova;
creators["power word: shield"] = &power_word_shield;
creators["power word: shield on party"] = &power_word_shield_on_party;
creators["renew"] = &renew;
creators["renew on party"] = &renew_on_party;
creators["greater heal"] = &greater_heal;
creators["greater heal on party"] = &greater_heal_on_party;
creators["heal"] = &heal;
creators["heal on party"] = &heal_on_party;
creators["lesser heal"] = &lesser_heal;
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["prayer of fortitude on party"] = &prayer_of_fortitude_on_party;
creators["prayer of spirit on party"] = &prayer_of_spirit_on_party;
}
public:
PriestNonCombatStrategyActionNodeFactory()
{
creators["holy nova"] = &holy_nova;
creators["power word: shield"] = &power_word_shield;
creators["power word: shield on party"] = &power_word_shield_on_party;
creators["renew"] = &renew;
creators["renew on party"] = &renew_on_party;
creators["greater heal"] = &greater_heal;
creators["greater heal on party"] = &greater_heal_on_party;
creators["heal"] = &heal;
creators["heal on party"] = &heal_on_party;
creators["lesser heal"] = &lesser_heal;
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["prayer of fortitude on party"] = &prayer_of_fortitude_on_party;
creators["prayer of spirit on party"] = &prayer_of_spirit_on_party;
}
private:
static ActionNode* holy_nova(PlayerbotAI* ai)
{
return new ActionNode ("holy nova",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* power_word_shield(PlayerbotAI* ai)
{
return new ActionNode ("power word: shield",
/*P*/ NULL,
/*A*/ NextAction::array(0, new NextAction("renew", 50.0f), NULL),
/*C*/ NULL);
}
static ActionNode* power_word_shield_on_party(PlayerbotAI* ai)
{
return new ActionNode ("power word: shield on party",
/*P*/ NULL,
/*A*/ NextAction::array(0, new NextAction("renew on party", 50.0f), NULL),
/*C*/ NULL);
}
static ActionNode* renew(PlayerbotAI* ai)
{
return new ActionNode ("renew",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* renew_on_party(PlayerbotAI* ai)
{
return new ActionNode ("renew on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* greater_heal(PlayerbotAI* ai)
{
return new ActionNode ("greater heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("heal"), NULL),
/*C*/ NULL);
}
static ActionNode* greater_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode ("greater heal on party",
/*P*/ NULL,
/*A*/ NextAction::array(0, new NextAction("heal on party"), NULL),
/*C*/ NULL);
}
static ActionNode* heal(PlayerbotAI* ai)
{
return new ActionNode ("heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("lesser heal"), NULL),
/*C*/ NULL);
}
static ActionNode* heal_on_party(PlayerbotAI* ai)
{
return new ActionNode ("heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("lesser heal on party"), NULL),
/*C*/ NULL);
}
static ActionNode* lesser_heal(PlayerbotAI* ai)
{
return new ActionNode ("lesser heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* lesser_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode ("lesser heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* flash_heal(PlayerbotAI* ai)
{
return new ActionNode ("flash heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* flash_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode ("flash heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* circle_of_healing(PlayerbotAI* ai)
{
return new ActionNode ("circle of healing",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
// /*A*/ NextAction::array(0, new NextAction("flash heal on party"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* prayer_of_fortitude_on_party(PlayerbotAI* ai)
{
return new ActionNode ("prayer of fortitude on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("power word: fortitude on party"), NULL),
/*C*/ NULL);
}
static ActionNode* prayer_of_spirit_on_party(PlayerbotAI* ai)
{
return new ActionNode ("prayer of spirit on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("divine spirit on party"), NULL),
/*C*/ NULL);
}
private:
static ActionNode* holy_nova(PlayerbotAI* ai)
{
return new ActionNode("holy nova",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* power_word_shield(PlayerbotAI* ai)
{
return new ActionNode("power word: shield",
/*P*/ NULL,
/*A*/ NextAction::array(0, new NextAction("renew", 50.0f), NULL),
/*C*/ NULL);
}
static ActionNode* power_word_shield_on_party(PlayerbotAI* ai)
{
return new ActionNode("power word: shield on party",
/*P*/ NULL,
/*A*/ NextAction::array(0, new NextAction("renew on party", 50.0f), NULL),
/*C*/ NULL);
}
static ActionNode* renew(PlayerbotAI* ai)
{
return new ActionNode("renew",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* renew_on_party(PlayerbotAI* ai)
{
return new ActionNode("renew on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* greater_heal(PlayerbotAI* ai)
{
return new ActionNode("greater heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("heal"), NULL),
/*C*/ NULL);
}
static ActionNode* greater_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode("greater heal on party",
/*P*/ NULL,
/*A*/ NextAction::array(0, new NextAction("heal on party"), NULL),
/*C*/ NULL);
}
static ActionNode* heal(PlayerbotAI* ai)
{
return new ActionNode("heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("lesser heal"), NULL),
/*C*/ NULL);
}
static ActionNode* heal_on_party(PlayerbotAI* ai)
{
return new ActionNode("heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("lesser heal on party"), NULL),
/*C*/ NULL);
}
static ActionNode* lesser_heal(PlayerbotAI* ai)
{
return new ActionNode("lesser heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* lesser_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode("lesser heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* flash_heal(PlayerbotAI* ai)
{
return new ActionNode("flash heal",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* flash_heal_on_party(PlayerbotAI* ai)
{
return new ActionNode("flash heal on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* circle_of_healing(PlayerbotAI* ai)
{
return new ActionNode("circle of healing",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
// /*A*/ NextAction::array(0, new NextAction("flash heal on party"), NULL),
/*A*/ NULL,
/*C*/ NULL);
}
static ActionNode* prayer_of_fortitude_on_party(PlayerbotAI* ai)
{
return new ActionNode("prayer of fortitude on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("power word: fortitude on party"), NULL),
/*C*/ NULL);
}
static ActionNode* prayer_of_spirit_on_party(PlayerbotAI* ai)
{
return new ActionNode("prayer of spirit on party",
/*P*/ NextAction::array(0, new NextAction("remove shadowform"), NULL),
/*A*/ NextAction::array(0, new NextAction("divine spirit on party"), NULL),
/*C*/ NULL);
}
};
#endif

View File

@@ -1,45 +1,51 @@
/*
* 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.
* 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 "PriestTriggers.h"
#include "Playerbots.h"
bool PowerWordFortitudeOnPartyTrigger::IsActive()
{
return BuffOnPartyTrigger::IsActive() && !botAI->HasAura("power word : fortitude", GetTarget()) && !botAI->HasAura("prayer of fortitude", GetTarget());
return BuffOnPartyTrigger::IsActive() && !botAI->HasAura("power word : fortitude", GetTarget()) &&
!botAI->HasAura("prayer of fortitude", GetTarget());
}
bool PowerWordFortitudeTrigger::IsActive()
{
return BuffTrigger::IsActive() && !botAI->HasAura("power word: fortitude", GetTarget()) && !botAI->HasAura("prayer of fortitude", GetTarget());
return BuffTrigger::IsActive() && !botAI->HasAura("power word: fortitude", GetTarget()) &&
!botAI->HasAura("prayer of fortitude", GetTarget());
}
bool DivineSpiritOnPartyTrigger::IsActive()
{
return BuffOnPartyTrigger::IsActive() && !botAI->HasAura("divine spirit", GetTarget()) && !botAI->HasAura("prayer of spirit", GetTarget());
return BuffOnPartyTrigger::IsActive() && !botAI->HasAura("divine spirit", GetTarget()) &&
!botAI->HasAura("prayer of spirit", GetTarget());
}
bool DivineSpiritTrigger::IsActive()
{
return BuffTrigger::IsActive() && !botAI->HasAura("divine spirit", GetTarget()) && !botAI->HasAura("prayer of spirit", GetTarget());
return BuffTrigger::IsActive() && !botAI->HasAura("divine spirit", GetTarget()) &&
!botAI->HasAura("prayer of spirit", GetTarget());
}
bool PrayerOfFortitudeTrigger::IsActive()
{
return BuffOnPartyTrigger::IsActive() &&
!botAI->HasAura("prayer of fortitude", GetTarget()) &&
botAI->GetBot()->IsInSameGroupWith((Player*)GetTarget()) &&
botAI->GetBuffedCount((Player*)GetTarget(), "prayer of fortitude") < 4 && !botAI->GetBuffedCount((Player*)GetTarget(), "power word: fortitude");
return BuffOnPartyTrigger::IsActive() && !botAI->HasAura("prayer of fortitude", GetTarget()) &&
botAI->GetBot()->IsInSameGroupWith((Player*)GetTarget()) &&
botAI->GetBuffedCount((Player*)GetTarget(), "prayer of fortitude") < 4 &&
!botAI->GetBuffedCount((Player*)GetTarget(), "power word: fortitude");
}
bool PrayerOfSpiritTrigger::IsActive()
{
return BuffOnPartyTrigger::IsActive() &&
!botAI->HasAura("prayer of spirit", GetTarget()) &&
botAI->GetBot()->IsInSameGroupWith((Player*)GetTarget()) &&
//botAI->GetManaPercent() > 50 &&
botAI->GetBuffedCount((Player*) GetTarget(), "prayer of spirit") < 4 && !botAI->GetBuffedCount((Player*) GetTarget(), "divine spirit");
return BuffOnPartyTrigger::IsActive() && !botAI->HasAura("prayer of spirit", GetTarget()) &&
botAI->GetBot()->IsInSameGroupWith((Player*)GetTarget()) &&
// botAI->GetManaPercent() > 50 &&
botAI->GetBuffedCount((Player*)GetTarget(), "prayer of spirit") < 4 &&
!botAI->GetBuffedCount((Player*)GetTarget(), "divine spirit");
}
bool InnerFireTrigger::IsActive()
@@ -48,21 +54,17 @@ bool InnerFireTrigger::IsActive()
return SpellTrigger::IsActive() && !botAI->HasAura(spell, target);
}
bool ShadowformTrigger::IsActive()
{
return !botAI->HasAura("shadowform", bot);
}
bool ShadowformTrigger::IsActive() { return !botAI->HasAura("shadowform", bot); }
bool ShadowfiendTrigger::IsActive()
{
return BoostTrigger::IsActive() && !bot->HasSpellCooldown(34433);
}
bool ShadowfiendTrigger::IsActive() { return BoostTrigger::IsActive() && !bot->HasSpellCooldown(34433); }
BindingHealTrigger::BindingHealTrigger(PlayerbotAI* botAI) : PartyMemberLowHealthTrigger(botAI, "binding heal", sPlayerbotAIConfig->lowHealth, 0)
BindingHealTrigger::BindingHealTrigger(PlayerbotAI* botAI)
: PartyMemberLowHealthTrigger(botAI, "binding heal", sPlayerbotAIConfig->lowHealth, 0)
{
}
bool BindingHealTrigger::IsActive()
{
return PartyMemberLowHealthTrigger::IsActive() && AI_VALUE2(uint8, "health", "self target") < sPlayerbotAIConfig->mediumHealth;
return PartyMemberLowHealthTrigger::IsActive() &&
AI_VALUE2(uint8, "health", "self target") < sPlayerbotAIConfig->mediumHealth;
}

View File

@@ -1,5 +1,6 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_PRIESTTRIGGERS_H
@@ -43,58 +44,60 @@ BOOST_TRIGGER_A(ShadowfiendTrigger, "shadowfiend");
class PowerWordFortitudeOnPartyTrigger : public BuffOnPartyTrigger
{
public:
PowerWordFortitudeOnPartyTrigger(PlayerbotAI* botAI) : BuffOnPartyTrigger(botAI, "power word: fortitude", 4 * 2000) { }
public:
PowerWordFortitudeOnPartyTrigger(PlayerbotAI* botAI) : BuffOnPartyTrigger(botAI, "power word: fortitude", 4 * 2000)
{
}
bool IsActive() override;
bool IsActive() override;
};
class PowerWordFortitudeTrigger : public BuffTrigger
{
public:
PowerWordFortitudeTrigger(PlayerbotAI* botAI) : BuffTrigger(botAI, "power word: fortitude", 4 * 2000) { }
public:
PowerWordFortitudeTrigger(PlayerbotAI* botAI) : BuffTrigger(botAI, "power word: fortitude", 4 * 2000) {}
bool IsActive() override;
bool IsActive() override;
};
class DivineSpiritOnPartyTrigger : public BuffOnPartyTrigger
{
public:
DivineSpiritOnPartyTrigger(PlayerbotAI* botAI) : BuffOnPartyTrigger(botAI, "divine spirit", 4 * 2000) { }
public:
DivineSpiritOnPartyTrigger(PlayerbotAI* botAI) : BuffOnPartyTrigger(botAI, "divine spirit", 4 * 2000) {}
bool IsActive() override;
bool IsActive() override;
};
class DivineSpiritTrigger : public BuffTrigger
{
public:
DivineSpiritTrigger(PlayerbotAI* botAI) : BuffTrigger(botAI, "divine spirit", 4 * 2000) { }
public:
DivineSpiritTrigger(PlayerbotAI* botAI) : BuffTrigger(botAI, "divine spirit", 4 * 2000) {}
bool IsActive() override;
bool IsActive() override;
};
class PrayerOfFortitudeTrigger : public BuffOnPartyTrigger
{
public:
PrayerOfFortitudeTrigger(PlayerbotAI* botAI) : BuffOnPartyTrigger(botAI, "prayer of fortitude", 3 * 2000) { }
public:
PrayerOfFortitudeTrigger(PlayerbotAI* botAI) : BuffOnPartyTrigger(botAI, "prayer of fortitude", 3 * 2000) {}
bool IsActive() override;
bool IsActive() override;
};
class PrayerOfSpiritTrigger : public BuffOnPartyTrigger
{
public:
PrayerOfSpiritTrigger(PlayerbotAI* botAI) : BuffOnPartyTrigger(botAI, "prayer of spirit", 2 * 2000) { }
public:
PrayerOfSpiritTrigger(PlayerbotAI* botAI) : BuffOnPartyTrigger(botAI, "prayer of spirit", 2 * 2000) {}
bool IsActive() override;
bool IsActive() override;
};
class BindingHealTrigger : public PartyMemberLowHealthTrigger
{
public:
BindingHealTrigger(PlayerbotAI* botAI);
public:
BindingHealTrigger(PlayerbotAI* botAI);
bool IsActive() override;
bool IsActive() override;
};
#endif

View File

@@ -1,10 +1,12 @@
/*
* 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.
* 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 "ShadowPriestStrategy.h"
#include "ShadowPriestStrategyActionNodeFactory.h"
#include "Playerbots.h"
#include "ShadowPriestStrategyActionNodeFactory.h"
ShadowPriestStrategy::ShadowPriestStrategy(PlayerbotAI* botAI) : GenericPriestStrategy(botAI)
{
@@ -13,41 +15,56 @@ ShadowPriestStrategy::ShadowPriestStrategy(PlayerbotAI* botAI) : GenericPriestSt
NextAction** ShadowPriestStrategy::getDefaultActions()
{
return NextAction::array(0,
new NextAction("mind blast", ACTION_DEFAULT + 0.2f),
// new NextAction("shadow word: death", 12.0f),
new NextAction("mind flay", ACTION_DEFAULT + 0.1f),
new NextAction("shoot", ACTION_DEFAULT),
NULL);
return NextAction::array(0, new NextAction("mind blast", ACTION_DEFAULT + 0.2f),
// new NextAction("shadow word: death", 12.0f),
new NextAction("mind flay", ACTION_DEFAULT + 0.1f),
new NextAction("shoot", ACTION_DEFAULT), NULL);
}
void ShadowPriestStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
GenericPriestStrategy::InitTriggers(triggers);
// triggers.push_back(new TriggerNode("enemy out of spell", NextAction::array(0, new NextAction("reach spell", ACTION_MOVE + 9), nullptr)));
triggers.push_back(new TriggerNode("shadowform", NextAction::array(0, new NextAction("shadowform", ACTION_HIGH), nullptr)));
//triggers.push_back(new TriggerNode("low mana", NextAction::array(0, new NextAction("dispersion", ACTION_EMERGENCY + 5), nullptr)));
triggers.push_back(new TriggerNode("vampiric embrace", NextAction::array(0, new NextAction("vampiric embrace", 16.0f), nullptr)));
triggers.push_back(new TriggerNode("silence", NextAction::array(0, new NextAction("silence", ACTION_INTERRUPT + 1), nullptr)));
triggers.push_back(new TriggerNode("silence on enemy healer", NextAction::array(0, new NextAction("silence on enemy healer", ACTION_INTERRUPT), nullptr)));
// triggers.push_back(new TriggerNode("shadowfiend", NextAction::array(0, new NextAction("shadowfiend", ACTION_HIGH), nullptr)));
// triggers.push_back(new TriggerNode("medium mana", NextAction::array(0, new NextAction("shadowfiend", ACTION_HIGH), nullptr)));
// triggers.push_back(new TriggerNode("low mana", NextAction::array(0, new NextAction("mana burn", ACTION_HIGH), nullptr)));
// triggers.push_back(new TriggerNode("enemy out of spell", NextAction::array(0, new NextAction("reach spell",
// ACTION_MOVE + 9), nullptr)));
triggers.push_back(
new TriggerNode("shadowform", NextAction::array(0, new NextAction("shadowform", ACTION_HIGH), nullptr)));
// triggers.push_back(new TriggerNode("low mana", NextAction::array(0, new NextAction("dispersion", ACTION_EMERGENCY
// + 5), nullptr)));
triggers.push_back(
new TriggerNode("vampiric embrace", NextAction::array(0, new NextAction("vampiric embrace", 16.0f), nullptr)));
triggers.push_back(
new TriggerNode("silence", NextAction::array(0, new NextAction("silence", ACTION_INTERRUPT + 1), nullptr)));
triggers.push_back(
new TriggerNode("silence on enemy healer",
NextAction::array(0, new NextAction("silence on enemy healer", ACTION_INTERRUPT), nullptr)));
// triggers.push_back(new TriggerNode("shadowfiend", NextAction::array(0, new NextAction("shadowfiend",
// ACTION_HIGH), nullptr))); triggers.push_back(new TriggerNode("medium mana", NextAction::array(0, new
// NextAction("shadowfiend", ACTION_HIGH), nullptr))); triggers.push_back(new TriggerNode("low mana",
// NextAction::array(0, new NextAction("mana burn", ACTION_HIGH), nullptr)));
}
void ShadowPriestAoeStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
triggers.push_back(new TriggerNode("shadow word: pain on attacker", NextAction::array(0, new NextAction("shadow word: pain on attacker", ACTION_NORMAL + 5), nullptr)));
triggers.push_back(new TriggerNode("vampiric touch on attacker", NextAction::array(0, new NextAction("vampiric touch on attacker", ACTION_NORMAL + 4), nullptr)));
triggers.push_back(new TriggerNode("medium aoe", NextAction::array(0, new NextAction("mind sear", ACTION_HIGH + 4), nullptr)));
triggers.push_back(new TriggerNode(
"shadow word: pain on attacker",
NextAction::array(0, new NextAction("shadow word: pain on attacker", ACTION_NORMAL + 5), nullptr)));
triggers.push_back(new TriggerNode(
"vampiric touch on attacker",
NextAction::array(0, new NextAction("vampiric touch on attacker", ACTION_NORMAL + 4), nullptr)));
triggers.push_back(
new TriggerNode("medium aoe", NextAction::array(0, new NextAction("mind sear", ACTION_HIGH + 4), nullptr)));
}
void ShadowPriestDebuffStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{
triggers.push_back(new TriggerNode("devouring plague", NextAction::array(0, new NextAction("devouring plague", ACTION_HIGH + 3), nullptr)));
triggers.push_back(new TriggerNode("vampiric touch", NextAction::array(0, new NextAction("vampiric touch", ACTION_HIGH + 2), nullptr)));
triggers.push_back(new TriggerNode("shadow word: pain", NextAction::array(0, new NextAction("shadow word: pain", ACTION_HIGH + 1), nullptr)));
// triggers.push_back(new TriggerNode("feedback", NextAction::array(0, new NextAction("feedback", 80.0f), nullptr)));
// triggers.push_back(new TriggerNode("hex of weakness", NextAction::array(0, new NextAction("hex of weakness", 10.0f), nullptr)));
triggers.push_back(new TriggerNode(
"devouring plague", NextAction::array(0, new NextAction("devouring plague", ACTION_HIGH + 3), nullptr)));
triggers.push_back(new TriggerNode(
"vampiric touch", NextAction::array(0, new NextAction("vampiric touch", ACTION_HIGH + 2), nullptr)));
triggers.push_back(new TriggerNode(
"shadow word: pain", NextAction::array(0, new NextAction("shadow word: pain", ACTION_HIGH + 1), nullptr)));
// triggers.push_back(new TriggerNode("feedback", NextAction::array(0, new NextAction("feedback", 80.0f),
// nullptr))); triggers.push_back(new TriggerNode("hex of weakness", NextAction::array(0, new NextAction("hex of
// weakness", 10.0f), nullptr)));
}

View File

@@ -1,5 +1,6 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_SHADOWPRIESTSTRATEGY_H
@@ -11,31 +12,31 @@ class PlayerbotAI;
class ShadowPriestStrategy : public GenericPriestStrategy
{
public:
ShadowPriestStrategy(PlayerbotAI* botAI);
public:
ShadowPriestStrategy(PlayerbotAI* botAI);
NextAction** getDefaultActions() override;
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "shadow"; }
uint32 GetType() const override { return STRATEGY_TYPE_DPS | STRATEGY_TYPE_RANGED; }
NextAction** getDefaultActions() override;
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "shadow"; }
uint32 GetType() const override { return STRATEGY_TYPE_DPS | STRATEGY_TYPE_RANGED; }
};
class ShadowPriestAoeStrategy : public CombatStrategy
{
public:
ShadowPriestAoeStrategy(PlayerbotAI* botAI) : CombatStrategy(botAI) { }
public:
ShadowPriestAoeStrategy(PlayerbotAI* botAI) : CombatStrategy(botAI) {}
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "shadow aoe"; }
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "shadow aoe"; }
};
class ShadowPriestDebuffStrategy : public CombatStrategy
{
public:
ShadowPriestDebuffStrategy(PlayerbotAI* botAI) : CombatStrategy(botAI) { }
public:
ShadowPriestDebuffStrategy(PlayerbotAI* botAI) : CombatStrategy(botAI) {}
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "shadow debuff"; }
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "shadow debuff"; }
};
#endif

View File

@@ -1,5 +1,6 @@
/*
* 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.
* 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.
*/
#ifndef _PLAYERBOT_SHADOWPRIESTSTRATEGYACTIONNODEFACTORY_H
@@ -12,47 +13,47 @@ class PlayerbotAI;
class ShadowPriestStrategyActionNodeFactory : public NamedObjectFactory<ActionNode>
{
public:
ShadowPriestStrategyActionNodeFactory()
{
creators["mind blast"] = &mind_blast;
creators["dispersion"] = &dispersion;
creators["mind flay"] = &mind_flay;
creators["smite"] = &smite;
}
public:
ShadowPriestStrategyActionNodeFactory()
{
creators["mind blast"] = &mind_blast;
creators["dispersion"] = &dispersion;
creators["mind flay"] = &mind_flay;
creators["smite"] = &smite;
}
private:
static ActionNode* mind_blast(PlayerbotAI* botAI)
{
return new ActionNode ("mind blast",
/*P*/ nullptr,
/*A*/ NextAction::array(0, new NextAction("mind flay"), nullptr),
/*C*/ nullptr);
}
private:
static ActionNode* mind_blast(PlayerbotAI* botAI)
{
return new ActionNode("mind blast",
/*P*/ nullptr,
/*A*/ NextAction::array(0, new NextAction("mind flay"), nullptr),
/*C*/ nullptr);
}
static ActionNode* mind_flay(PlayerbotAI* botAI)
{
return new ActionNode ("mind flay",
/*P*/ nullptr,
/*A*/ NextAction::array(0, new NextAction("smite"), nullptr),
/*C*/ nullptr);
}
static ActionNode* mind_flay(PlayerbotAI* botAI)
{
return new ActionNode("mind flay",
/*P*/ nullptr,
/*A*/ NextAction::array(0, new NextAction("smite"), nullptr),
/*C*/ nullptr);
}
static ActionNode* smite(PlayerbotAI* botAI)
{
return new ActionNode ("smite",
/*P*/ nullptr,
/*A*/ NextAction::array(0, new NextAction("shoot"), nullptr),
/*C*/ nullptr);
}
static ActionNode* smite(PlayerbotAI* botAI)
{
return new ActionNode("smite",
/*P*/ nullptr,
/*A*/ NextAction::array(0, new NextAction("shoot"), nullptr),
/*C*/ nullptr);
}
static ActionNode* dispersion(PlayerbotAI* botAI)
{
return new ActionNode ("dispersion",
/*P*/ nullptr,
/*A*/ NextAction::array(0, new NextAction("mana potion"), nullptr),
/*C*/ nullptr);
}
static ActionNode* dispersion(PlayerbotAI* botAI)
{
return new ActionNode("dispersion",
/*P*/ nullptr,
/*A*/ NextAction::array(0, new NextAction("mana potion"), nullptr),
/*C*/ nullptr);
}
};
#endif