"Auto Face Target" is a QoL module for AzerothCore that automatically turns a player to face their current target when they attempt to cast a spell or use an ability that requires facing it, instead of the cast failing with "You are not facing your target."
The facing requirement (SPELL_FAILED_UNIT_NOT_INFRONT) is checked server-side
in Spell::CheckRange(), before the client ever finds out the cast failed. This
module hooks ScriptMgr's ValidateSpellAtCastSpellResult, which fires just
before that check, for every player-initiated cast. If the spell requires
facing (SPELL_FACING_FLAG_INFRONT) and the player isn't currently facing
their target, it snaps their facing towards it via Unit::SetFacingTo() -
the same server-authoritative movement mechanism used for charges and
knockbacks, so the stock client rotates the character with no client-side
changes needed.
Ground/location-targeted spells (Blizzard, Flare, and the like) are always left alone: they don't carry a resolved unit target at all, so the in-front check never applies to them in the first place, and forcing a turn toward the player's current target while they're aiming an AoE elsewhere would be wrong.
See conf/mod_auto_face_target.conf.dist (rename to mod_auto_face_target.conf
to use):
AutoFaceTarget.Enable = 1
Unit::GetTarget()), not the exact unit target of the specific spell being
cast - the hook fires before the spell's own targets are resolved. This
matches the common case (casting an ability at your current target) but
could diverge for spells that explicitly target something other than your
current selection.Unit::SetOrientation() (so the
in-front check that immediately follows this hook sees it right away).
Without the direct set, the spline's effect isn't visible to that check
until a later world tick, so the first cast attempt fails and needs a
second press - found during in-game testing.