public bool Cast(Obj_AI_Base target) { if (target.IsDead) { return(false); } Process(false); return(E.Cast(Game.CursorPos)); }
public bool Cast(Obj_AI_Base target) { if (target.IsDead) { return(false); } bool result = false; if (target.Distance(Game.CursorPos) <= lucian.Player.Distance(target) || target.Distance(Game.CursorPos) <= Orbwalking.GetRealAutoAttackRange(lucian.Player) || target.Distance(lucian.Player) + E.Range <= Orbwalking.GetRealAutoAttackRange(lucian.Player)) { Process(false); result = E.Cast(Game.CursorPos); } else { Process(false); result = E.Cast(Vector3.SmoothStep(lucian.Player.Position, Game.CursorPos, 0.001f)); } return(result); }
private void EnqueueSpell(CommonSpell spell, AIHeroClient target) { if (!spell.UseOnCombo) { return; } AIHeroClient selectedTarget = target ?? TargetSelector.GetTarget(spell.Range, spell.DamageType); if (selectedTarget == null) { return; } if (spell.IsInRange(selectedTarget)) { EnqueueAction( () => spell.IsReadyToCastOn(selectedTarget), () => spell.Cast(selectedTarget), () => !spell.IsReadyToCastOn(selectedTarget) || selectedTarget.IsDead); } }