mind sear for shadow priest

This commit is contained in:
Yunfan Li
2023-08-29 22:20:40 +08:00
parent 19191d64f3
commit 62e49a966d
4 changed files with 15 additions and 6 deletions

View File

@@ -2013,8 +2013,8 @@ bool PlayerbotAI::CanCastSpell(uint32 spellid, Unit* target, bool checkHasSpell,
} }
if (bot->GetCurrentSpell(CURRENT_CHANNELED_SPELL) != nullptr) { if (bot->GetCurrentSpell(CURRENT_CHANNELED_SPELL) != nullptr) {
LOG_DEBUG("playerbot", "CanCastSpell() target name: {}, spellid: {}, bot name: {}, failed because has current channeled spell", // LOG_DEBUG("playerbots", "CanCastSpell() target name: {}, spellid: {}, bot name: {}, failed because has current channeled spell",
target->GetName(), spellid, bot->GetName()); // target->GetName(), spellid, bot->GetName());
return false; return false;
} }

View File

@@ -156,4 +156,10 @@ public:
bool isUseful() override; bool isUseful() override;
Unit* GetTarget() override; Unit* GetTarget() override;
}; };
class CastMindSearAction : public CastSpellAction
{
public:
CastMindSearAction(PlayerbotAI* ai) : CastSpellAction(ai, "mind sear") {}
};
#endif #endif

View File

@@ -219,6 +219,7 @@ class PriestAiObjectContextInternal : public NamedObjectContext<Action>
creators["penance on party"] = &PriestAiObjectContextInternal::penance_on_party; creators["penance on party"] = &PriestAiObjectContextInternal::penance_on_party;
creators["hymn of hope"] = &PriestAiObjectContextInternal::hymn_of_hope; creators["hymn of hope"] = &PriestAiObjectContextInternal::hymn_of_hope;
creators["divine hymn"] = &PriestAiObjectContextInternal::divine_hymn; creators["divine hymn"] = &PriestAiObjectContextInternal::divine_hymn;
creators["mind sear"] = &PriestAiObjectContextInternal::mind_sear;
} }
private: private:
@@ -301,6 +302,7 @@ class PriestAiObjectContextInternal : public NamedObjectContext<Action>
static Action* penance_on_party(PlayerbotAI* ai) { return new CastPenanceOnPartyAction(ai); } static Action* penance_on_party(PlayerbotAI* ai) { return new CastPenanceOnPartyAction(ai); }
static Action* hymn_of_hope(PlayerbotAI* ai) { return new CastHymnOfHopeAction(ai); } static Action* hymn_of_hope(PlayerbotAI* ai) { return new CastHymnOfHopeAction(ai); }
static Action* divine_hymn(PlayerbotAI* ai) { return new CastDivineHymnAction(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) PriestAiObjectContext::PriestAiObjectContext(PlayerbotAI* botAI) : AiObjectContext(botAI)

View File

@@ -38,14 +38,15 @@ void ShadowPriestStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
void ShadowPriestAoeStrategy::InitTriggers(std::vector<TriggerNode*>& triggers) 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", 11.0f), nullptr))); triggers.push_back(new TriggerNode("shadow word: pain on attacker", NextAction::array(0, new NextAction("shadow word: pain on attacker", ACTION_HIGH + 1), 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) void ShadowPriestDebuffStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{ {
triggers.push_back(new TriggerNode("devouring plague", NextAction::array(0, new NextAction("devouring plague", 13.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("shadow word: pain", NextAction::array(0, new NextAction("shadow word: pain", 11.0f), nullptr))); triggers.push_back(new TriggerNode("vampiric touch", NextAction::array(0, new NextAction("vampiric touch", ACTION_HIGH + 2), nullptr)));
triggers.push_back(new TriggerNode("vampiric touch", NextAction::array(0, new NextAction("vampiric touch", 12.0f), 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("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("hex of weakness", NextAction::array(0, new NextAction("hex of weakness", 10.0f), nullptr)));
} }