AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
SimpleCharmedAI Class Reference

#include "UnitAI.h"

Inheritance diagram for SimpleCharmedAI:
PlayerAI UnitAI

Public Member Functions

void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith() More...
 
 SimpleCharmedAI (Player *player)
 
- Public Member Functions inherited from PlayerAI
 PlayerAI (Player *player)
 
void OnCharmed (bool apply) override
 Called when unit is charmed. More...
 
- Public Member Functions inherited from UnitAI
 UnitAI (Unit *unit)
 
virtual ~UnitAI ()
 
virtual bool CanAIAttack (Unit const *) const
 
virtual void AttackStart (Unit *)
 
virtual void UpdateAI (uint32)=0
 Use to start attacking a target. Called just before JustEngagedWith() More...
 
virtual void InitializeAI ()
 
virtual void Reset ()
 
virtual void OnCharmed (bool apply)=0
 Called when unit is charmed. More...
 
virtual void DoAction (int32)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void SetGUID (ObjectGuid, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
UnitSelectTarget (SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
UnitSelectTarget (SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 Select the best (up to) <num> targets (in <targetType> order) from the threat list that fulfill the following: More...
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
virtual void JustEnteredCombat (Unit *)
 Called when the unit enters combat. More...
 
virtual void JustExitedCombat ()
 Called when the unit leaves combat. More...
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType)
 Called at any Damage to any victim (before damage apply) More...
 
virtual void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellSchoolMask)
 Called at any Damage from any attacker (before damage apply) More...
 
virtual void HealReceived (Unit *, uint32 &)
 Called when the creature receives heal. More...
 
virtual void OnPowerUpdate (Powers, int32, int32, uint32)
 Called when the creature power updates. More...
 
virtual void HealDone (Unit *, uint32 &)
 Called when the unit heals. More...
 
virtual void OnCalculateMeleeDamageReceived (uint32 &, Unit *)
 Called during damage calculations. More...
 
virtual void OnCalculateSpellDamageReceived (int32 &, Unit *)
 
virtual void OnCalculatePeriodicTickReceived (uint32 &, Unit *)
 Called during calculation when receiving periodic healing or damage (DoT or HoT) More...
 
void AttackStartCaster (Unit *victim, float dist)
 
SpellCastResult DoAddAuraToAllHostilePlayers (uint32 spellid)
 
SpellCastResult DoCast (uint32 spellId)
 
SpellCastResult DoCast (Unit *victim, uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastSelf (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastToAllHostilePlayers (uint32 spellid, bool triggered=false)
 To specify the caster as target if the spell is self-cast. More...
 
SpellCastResult DoCastVictim (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastAOE (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastRandomTarget (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false, bool withTank=true)
 Cast the spell on a random unit from the threat list. More...
 
SpellCastResult DoCastMaxThreat (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false)
 Cast spell on the top threat target, which may not be the current victim. More...
 
float DoGetSpellMaxRange (uint32 spellId, bool positive=false)
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spell)
 
void DoSpellAttackToRandomTargetIfReady (uint32 spell, uint32 threatTablePosition=0, float dist=0.f, bool playerOnly=true)
 
virtual void SummonMovementInform (Creature *, uint32, uint32)
 Called when a summon reaches a waypoint or point movement finished. More...
 
virtual void sGossipHello (Player *)
 
virtual void sGossipSelect (Player *, uint32, uint32)
 
virtual void sGossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual void sQuestAccept (Player *, Quest const *)
 
virtual void sQuestSelect (Player *, Quest const *)
 
virtual void sQuestComplete (Player *, Quest const *)
 
virtual void sQuestReward (Player *, Quest const *, uint32)
 
virtual void sOnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

Additional Inherited Members

- Static Public Member Functions inherited from UnitAI
static void FillAISpellInfo ()
 
- Static Public Attributes inherited from UnitAI
static AISpellInfoTypeAISpellInfo
 
- Protected Attributes inherited from PlayerAI
Player *const me
 
- Protected Attributes inherited from UnitAI
Unit *const me
 

Detailed Description

Constructor & Destructor Documentation

◆ SimpleCharmedAI()

SimpleCharmedAI::SimpleCharmedAI ( Player player)
inline
443: PlayerAI(player) {}
Definition: UnitAI.h:430

Member Function Documentation

◆ UpdateAI()

void SimpleCharmedAI::UpdateAI ( uint32  )
overridevirtual

Use to start attacking a target. Called just before JustEngagedWith()

Implements UnitAI.

360{
361 Creature* charmer = me->GetCharmer()->ToCreature();
362
363 //kill self if charm aura has infinite duration
364 if (charmer->IsInEvadeMode())
365 {
367 for (Unit::AuraEffectList::const_iterator iter = auras.begin(); iter != auras.end(); ++iter)
368 if ((*iter)->GetCasterGUID() == charmer->GetGUID() && (*iter)->GetBase()->IsPermanent())
369 {
370 Unit::Kill(charmer, me);
371 return;
372 }
373 }
374
375 if (!charmer->IsInCombat())
377
378 Unit* target = me->GetVictim();
379 if (!target || !charmer->IsValidAttackTarget(target))
381}
@ SPELL_AURA_MOD_CHARM
Definition: SpellAuraDefines.h:69
#define ATTACK_DISTANCE
Definition: ObjectDefines.h:25
#define PET_FOLLOW_DIST
Definition: PetDefines.h:198
virtual void AttackStart(Unit *)
Definition: UnitAI.cpp:27
Player *const me
Definition: UnitAI.h:432
Definition: Creature.h:43
Unit * SelectNearestTargetInAttackDistance(float dist) const
Select nearest hostile unit within the given attack distance (i.e. distance is ignored if > than ATTA...
Definition: Creature.cpp:2406
bool IsInEvadeMode() const
Definition: Creature.h:134
Creature * ToCreature()
Definition: Object.h:205
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:112
Definition: Unit.h:630
AuraEffectList const & GetAuraEffectsByType(AuraType type) const
Definition: Unit.h:1349
Unit * GetCharmer() const
Definition: Unit.cpp:10608
static void Kill(Unit *killer, Unit *victim, bool durabilityLoss=true, WeaponAttackType attackType=BASE_ATTACK, SpellInfo const *spellProto=nullptr, Spell const *spell=nullptr)
Definition: Unit.cpp:17702
MotionMaster * GetMotionMaster()
Definition: Unit.h:1620
virtual float GetFollowAngle() const
Definition: Unit.h:1756
Unit * GetVictim() const
Definition: Unit.h:853
std::list< AuraEffect * > AuraEffectList
Definition: Unit.h:646
bool IsValidAttackTarget(Unit const *target, SpellInfo const *bySpell=nullptr) const
Definition: Unit.cpp:13871
bool IsInCombat() const
Definition: Unit.h:884
void MoveFollow(Unit *target, float dist, float angle, MovementSlot slot=MOTION_SLOT_ACTIVE, bool inheritWalkState=true)
The unit will follow this target. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition: MotionMaster.cpp:409

References ATTACK_DISTANCE, UnitAI::AttackStart(), Unit::GetAuraEffectsByType(), Unit::GetCharmer(), Unit::GetFollowAngle(), Object::GetGUID(), Unit::GetMotionMaster(), Unit::GetVictim(), Unit::IsInCombat(), Creature::IsInEvadeMode(), Unit::IsValidAttackTarget(), Unit::Kill(), PlayerAI::me, MotionMaster::MoveFollow(), PET_FOLLOW_DIST, Creature::SelectNearestTargetInAttackDistance(), SPELL_AURA_MOD_CHARM, and Object::ToCreature().