Files
mod-playerbots/src/strategy/warrior/GenericWarriorStrategy.h
avirar 739a0df44c Warrior strategy update (#838)
* Enraged regen at critial health

* Enraged regen action context

* Enraged regen on critical health trigger

* Enraged regen on critical health trigger

* Added logic for Arms to use Retaliation

* Added logic for Arms to use Retaliation

* Used correct class enums for !players

* Retaliation on medium health

* Removed temp line

* Added check for attacker->GetVictim() != bot

* Adjusted triggers for emergency actions

* Added Shattering Throw logic

* Added Shattering Throw logic

* Added Shattering Throw logic

* Added Shattering Throw logic

* Added Shattering Throw logic

* Added Shattering Throw logic

* Fixed ActionNode for Shattering Throw

* Added debug logging

* More debug logs

* Better debug logs

* Adjusted range on action

* Adjusted priorities

* More logging

* Update WarriorActions.cpp

* Update WarriorActions.h

* Changed trigger name for differentiation

* Updated to new shattering throw trigger name

* Update WarriorTriggers.h with new ST name

* Update ArmsWarriorStrategy.cpp

* Changed priority

* Shattering Throw and Retaliation stance reqs

Battlestance needed for Shattering Throw and Retaliation

* Created isUseful for Shattering Throw

* Created isUseful for Shattering Throw

* GetTarget instead of GetTargetValue

* Changed to GetTarget instead of GetTargetValue

* Commented out Execute function

* Commented out Execute function

* isPossible was failing, created basic isPossible

IsImmuneToSpell was returning true for Shattering Throw

2 DAYS! :(

* isPossible was failing, created basic isPossible

* Added some more isPossible checks

* Update WarriorActions.cpp

* Missing )

* Missing !

* Removed logging

* Removed logging

* Clean up

* Cleanup

* Corrected logic for Rogue's Expose Armor trigger

Logic was checking the Rogue, not the Rogue's target, for Sunder Armor before casting Expose Armor.
2025-01-03 16:06:47 +01:00

85 lines
2.9 KiB
C++

/*
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
* and/or modify it under version 2 of the License, or (at your option), any later version.
*/
#ifndef _PLAYERBOT_GENERICWARRIORSTRATEGY_H
#define _PLAYERBOT_GENERICWARRIORSTRATEGY_H
#include "CombatStrategy.h"
class PlayerbotAI;
// Stance requirements
class WarriorStanceRequirementActionNodeFactory : public NamedObjectFactory<ActionNode>
{
public:
WarriorStanceRequirementActionNodeFactory()
{
// battle only
creators["charge"] = &charge;
creators["mocking blow"] = &mocking_blow;
creators["overpower"] = &overpower;
creators["retaliation"] = &retaliation;
creators["shattering throw"] = &shattering_throw;
// temp
creators["mortal strike"] = &mortal_strike;
// berserker only
creators["berserker rage"] = &berserker_rage;
creators["recklessness"] = &recklessness;
creators["whirlwind"] = &whirlwind;
creators["pummel"] = &pummel;
creators["intercept"] = &intercept;
// defensive only
creators["taunt"] = &taunt;
creators["revenge"] = &revenge;
creators["shield block"] = &shield_block;
creators["disarm"] = &disarm;
creators["shield wall"] = &shield_wall;
creators["intervene"] = &intervene;
}
private:
ACTION_NODE_P(charge, "charge", "battle stance");
ACTION_NODE_P(mocking_blow, "mocking blow", "battle stance");
ACTION_NODE_P(overpower, "overpower", "battle stance");
ACTION_NODE_P(berserker_rage, "berserker rage", "berserker stance");
ACTION_NODE_P(recklessness, "recklessness", "berserker stance");
ACTION_NODE_P(whirlwind, "whirlwind", "berserker stance");
ACTION_NODE_P(pummel, "pummel", "berserker stance");
ACTION_NODE_P(intercept, "intercept", "berserker stance");
ACTION_NODE_P(taunt, "taunt", "defensive stance");
ACTION_NODE_P(revenge, "revenge", "defensive stance");
ACTION_NODE_P(shield_block, "shield block", "defensive stance");
ACTION_NODE_P(disarm, "disarm", "defensive stance");
ACTION_NODE_P(shield_wall, "shield wall", "defensive stance");
ACTION_NODE_P(intervene, "intervene", "defensive stance");
// temp
ACTION_NODE_P(mortal_strike, "mortal strike", "battle stance");
ACTION_NODE_P(retaliation, "retaliation", "battle stance");
ACTION_NODE_P(shattering_throw, "shattering throw", "battle stance");
};
class GenericWarriorStrategy : public CombatStrategy
{
public:
GenericWarriorStrategy(PlayerbotAI* botAI);
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "warrior"; }
};
class WarrirorAoeStrategy : public CombatStrategy
{
public:
WarrirorAoeStrategy(PlayerbotAI* botAI);
void InitTriggers(std::vector<TriggerNode*>& triggers) override;
std::string const getName() override { return "aoe"; }
};
#endif