Files
mod-playerbots/src/strategy/warrior/WarriorActions.h
avirar 5c8283d40a Prot warriors cast vigilance when in a group (#825)
* Add Vigilance

* Vigilance

* Update WarriorTriggers.h

* Update TankWarriorStrategy.cpp

* Update WarriorAiObjectContext.cpp

* Update WarriorTriggers.cpp

* Update WarriorTriggers.h

* Update WarriorTriggers.cpp

Check for existence of Vigilance in raid already

* Update WarriorActions.cpp

Check for existence of Vigilance in raid already
Apply to tanks, then highest gearscore DPS.

* Update WarriorActions.cpp

* Update WarriorActions.cpp

* Update WarriorActions.cpp

* Update WarriorActions.cpp

* Added logout

Bots keep assigning it to me and not maintank? Added logging to clarify

* Update WarriorActions.cpp

* Update WarriorActions.cpp

* Update WarriorActions.cpp

* Update WarriorActions.cpp

* Update WarriorTriggers.cpp

* Update WarriorTriggers.cpp

* Update WarriorTriggers.cpp

* Update WarriorActions.cpp

* Update WarriorActions.cpp

* Update WarriorTriggers.cpp

* Update WarriorActions.cpp

* Update WarriorActions.cpp

* Removed Logs

* Removed logs

* Added check for spell in trigger

* Update WarriorTriggers.cpp

* !member->IsAlive()

* !member->IsAlive()
2024-12-29 21:47:22 +01:00

148 lines
5.4 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_WARRIORACTIONS_H
#define _PLAYERBOT_WARRIORACTIONS_H
#include "AiObject.h"
#include "GenericSpellActions.h"
#include "Player.h"
#include "PlayerbotAI.h"
#include "ReachTargetActions.h"
// stances
BUFF_ACTION(CastBattleStanceAction, "battle stance");
BUFF_ACTION(CastDefensiveStanceAction, "defensive stance");
BUFF_ACTION(CastBerserkerStanceAction, "berserker stance");
// shouts
BUFF_ACTION(CastBattleShoutAction, "battle shout");
MELEE_ACTION_U(CastBattleShoutTauntAction, "battle shout", CastSpellAction::isUseful()); // useful to rebuff
// DEBUFF_ACTION_R(CastDemoralizingShoutAction, "demoralizing shout", 8.0f); // low range debuff
class CastDemoralizingShoutAction : public CastMeleeDebuffSpellAction
{
public:
CastDemoralizingShoutAction(PlayerbotAI* botAI)
: CastMeleeDebuffSpellAction(botAI, "demoralizing shout") {}
};
class CastDemoralizingShoutWithoutLifeTimeCheckAction : public CastMeleeDebuffSpellAction
{
public:
CastDemoralizingShoutWithoutLifeTimeCheckAction(PlayerbotAI* botAI)
: CastMeleeDebuffSpellAction(botAI, "demoralizing shout", false, 0.0f)
{
}
};
MELEE_ACTION(CastChallengingShoutAction, "challenging shout");
DEBUFF_ACTION_R(CastIntimidatingShoutAction, "intimidating shout", 8.0f);
// shouts 2.4.3
BUFF_ACTION(CastCommandingShoutAction, "commanding shout");
// arms
MELEE_ACTION(CastHeroicStrikeAction, "heroic strike");
REACH_ACTION(CastChargeAction, "charge", 8.0f);
DEBUFF_CHECKISOWNER_ACTION(CastRendAction, "rend");
// DEBUFF_ENEMY_ACTION(CastRendOnAttackerAction, "rend");
class CastRendOnAttackerAction : public CastDebuffSpellOnMeleeAttackerAction
{
public:
CastRendOnAttackerAction(PlayerbotAI* botAI) : CastDebuffSpellOnMeleeAttackerAction(botAI, "rend") {}
};
MELEE_ACTION(CastThunderClapAction, "thunder clap");
SNARE_ACTION(CastThunderClapSnareAction, "thunder clap");
SNARE_ACTION(CastHamstringAction, "hamstring");
MELEE_ACTION(CastOverpowerAction, "overpower");
MELEE_ACTION(CastMockingBlowAction, "mocking blow");
BUFF_ACTION(CastRetaliationAction, "retaliation");
// arms 3.3.5
SPELL_ACTION(CastHeroicThrowAction, "heroic throw");
SNARE_ACTION(CastHeroicThrowSnareAction, "heroic throw");
DEBUFF_ACTION(CastShatteringThrowAction, "shattering throw");
// arms talents
MELEE_ACTION(CastMortalStrikeAction, "mortal strike");
BUFF_ACTION(CastSweepingStrikesAction, "sweeping strikes");
// arms talents 3.3.5
MELEE_ACTION(CastBladestormAction, "bladestorm");
// fury
MELEE_ACTION(CastCleaveAction, "cleave");
MELEE_ACTION(CastExecuteAction, "execute");
REACH_ACTION(CastInterceptAction, "intercept", 8.0f);
ENEMY_HEALER_ACTION(CastInterceptOnEnemyHealerAction, "intercept");
SNARE_ACTION(CastInterceptOnSnareTargetAction, "intercept");
MELEE_ACTION(CastSlamAction, "slam");
BUFF_ACTION(CastBerserkerRageAction, "berserker rage");
MELEE_ACTION(CastWhirlwindAction, "whirlwind");
MELEE_ACTION(CastPummelAction, "pummel");
ENEMY_HEALER_ACTION(CastPummelOnEnemyHealerAction, "pummel");
// fury 2.4.3
MELEE_ACTION(CastVictoryRushAction, "victory rush");
// fury 3.3.5
BUFF_ACTION(CastEnragedRegenerationAction, "enraged regeneration");
BUFF_ACTION(CastHeroicFuryAction, "heroic fury");
// fury talents
BUFF_ACTION(CastDeathWishAction, "death wish");
BUFF_ACTION(CastRecklessnessAction, "recklessness");
MELEE_ACTION(CastBloodthirstAction, "bloodthirst");
DEBUFF_ACTION_R(CastPiercingHowlAction, "piercing howl", 8.0f);
// fury talents 2.4.3
BUFF_ACTION(CastRampageAction, "rampage");
// protection
MELEE_ACTION_U(CastTauntAction, "taunt", GetTarget() && GetTarget()->GetTarget() != bot->GetGUID());
SNARE_ACTION(CastTauntOnSnareTargetAction, "taunt");
BUFF_ACTION(CastBloodrageAction, "bloodrage");
MELEE_ACTION(CastShieldBashAction, "shield bash");
ENEMY_HEALER_ACTION(CastShieldBashOnEnemyHealerAction, "shield bash");
MELEE_ACTION(CastRevengeAction, "revenge");
BUFF_ACTION(CastShieldBlockAction, "shield block");
DEBUFF_ACTION_U(CastDisarmAction, "disarm",
GetTarget() && GetTarget()->IsPlayer() ? !botAI->IsRanged((Player*)GetTarget())
: CastDebuffSpellAction::isUseful());
DEBUFF_ENEMY_ACTION(CastDisarmOnAttackerAction, "disarm");
BUFF_ACTION(CastShieldWallAction, "shield wall");
// protection 2.4.3
PROTECT_ACTION(CastInterveneAction, "intervene");
BUFF_ACTION(CastSpellReflectionAction, "spell reflection");
// protection talents
BUFF_ACTION(CastLastStandAction, "last stand");
MELEE_ACTION(CastShieldSlamAction, "shield slam");
MELEE_ACTION(CastConcussionBlowAction, "concussion blow");
// protection talents 2.4.3
MELEE_ACTION(CastDevastateAction, "devastate");
// protection talents 3.3.5
DEBUFF_ACTION_R(CastShockwaveAction, "shockwave", 8.0f);
SNARE_ACTION(CastShockwaveSnareAction, "shockwave");
class CastSunderArmorAction : public CastDebuffSpellAction
{
public:
CastSunderArmorAction(PlayerbotAI* botAI) : CastDebuffSpellAction(botAI, "sunder armor")
{
range = ATTACK_DISTANCE;
}
bool isUseful() override;
};
class CastVigilanceAction : public BuffOnPartyAction
{
public:
CastVigilanceAction(PlayerbotAI* botAI) : BuffOnPartyAction(botAI, "vigilance") {}
Value<Unit*>* GetTargetValue() override;
bool Execute(Event event) override;
};
#endif