18#ifndef TRINITY_PLAYERAI_H
19#define TRINITY_PLAYERAI_H
39 bool IsHealer(
Player const* who =
nullptr)
const;
40 bool IsRangedAttacker(
Player const* who =
nullptr)
const;
47 explicit operator bool() {
return !!first; }
64 TargetedSpell VerifySpellCast(
uint32 spellId,
Unit* target);
67 TargetedSpell VerifySpellCast(
uint32 spellId, SpellTarget target);
73 spells.push_back({ spell,weight });
78 TargetedSpell SelectSpellCast(PossibleSpellVector& spells);
80 void DoCastAtTarget(TargetedSpell spell);
82 virtual Unit* SelectAttackTarget()
const;
83 void DoRangedAttackIfReady();
84 void DoAutoAttackIfReady();
87 void CancelAllShapeshifts();
104 Unit* SelectAttackTarget()
const override;
107 TargetedSpell SelectAppropriateCastForSpec();
void VerifyAndPushSpellCast(PossibleSpellVector &spells, uint32 spellId, T target, uint32 weight)
std::pair< TargetedSpell, uint32 > PossibleSpell
void SetIsRangedAttacker(bool state)
bool _isSelfRangedAttacker
std::vector< PossibleSpell > PossibleSpellVector
SimpleCharmedPlayerAI(Player *player)
virtual bool CanAIAttack(Unit const *) const
virtual void OnCharmed(bool isNew)
virtual void UpdateAI(uint32 diff)=0
TargetedSpell(Spell *first, Unit *second)