Пример #1
0
        public bool Cast(Obj_AI_Base target)
        {
            if (target.IsDead)
            {
                return(false);
            }

            Process(false);
            return(E.Cast(Game.CursorPos));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
            }
        }