protected virtual void TabTargetUpdateQueuedSkill() { if (PlayerCharacterEntity.IsDead()) { ClearQueueUsingSkill(); return; } if (queueUsingSkill.skill == null || queueUsingSkill.level <= 0) { return; } if (PlayerCharacterEntity.IsPlayingActionAnimation()) { return; } destination = null; BaseSkill skill = queueUsingSkill.skill; Vector3? aimPosition = queueUsingSkill.aimPosition; if (skill.HasCustomAimControls()) { // Target not required, use skill immediately TurnCharacterToPosition(aimPosition.Value); RequestUsePendingSkill(); isFollowingTarget = false; return; } if (skill.IsAttack() || skill.RequiredTarget()) { // Let's stick to tab targeting instead of finding a random entity if (CacheActionTarget != null && CacheActionTarget is BaseCharacterEntity) { UseSkillOn(CacheActionTarget); return; } ClearQueueUsingSkill(); return; } // Target not required, use skill immediately RequestUsePendingSkill(); }