38 ASSERT(creature->IsTotem(),
"TotemAI: AI assigned to a non-totem creature (%s)!", creature->GetGUID().ToString().c_str());
#define EXTRA_CELL_SEARCH_RADIUS
@ SPELL_ATTR8_ALLOW_TARGETS_HIDDEN_BY_SPAWN_TRACKING
@ SPELL_ATTR6_IGNORE_PHASE_SHIFT
@ SPELL_ATTR0_CU_CAN_TARGET_ANY_PRIVATE_OBJECT
ObjectGuid const & GetGUID() const
Difficulty GetDifficultyID() const
float GetMaxRange(bool positive=false, WorldObject const *caster=nullptr, Spell *spell=nullptr) const
bool HasAttribute(SpellAttr0 attribute) const
void UpdateAI(uint32 diff) override
static int32 Permissible(Creature const *creature)
TotemAI(Creature *creature, uint32 scriptId={}) noexcept
void AttackStart(Unit *victim) override
== Triggered Actions Requested ==================
uint32 GetSpell(uint8 slot=0) const
TotemType GetTotemType() const
bool isTargetableForAttack(bool checkFakeDeath=true) const
bool IsNonMeleeSpellCast(bool withDelayed, bool skipChanneled=false, bool skipAutorepeat=false, bool isAutoshoot=false, bool skipInstant=true) const
Unit * GetCharmerOrOwnerOrSelf() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
bool CanSeeOrDetect(WorldObject const *obj, CanSeeOrDetectExtraArgs const &args={ }) const
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
bool IsFriendlyTo(WorldObject const *target) const
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)