예제 #1
0
        internal bool UseAbilityIfCondition(
            TargetManager targetManager,
            Sleeper comboSleeper,
            ComboModeMenu menu,
            ReversePolarity polarity,
            bool blink,
            bool force)
        {
            if (blink || force || polarity == null)
            {
                return(false);
            }

            var input = polarity.Ability.GetPredictionInput(targetManager.Target, targetManager.EnemyHeroes);

            input.Delay        += this.Ability.CastPoint + 0.5f;
            input.Range        += this.Ability.CastRange;
            input.CastRange     = this.Ability.CastRange;
            input.SkillShotType = SkillShotType.Circle;
            var output = polarity.Ability.GetPredictionOutput(input);

            if (output.HitChance < HitChance.Low || output.AoeTargetsHit.Count < polarity.TargetsToHit(menu))
            {
                return(false);
            }

            var blinkPosition = output.CastPosition;

            if (this.Owner.Distance(blinkPosition) > this.Ability.CastRange)
            {
                return(false);
            }

            var delay = this.Ability.GetCastDelay(targetManager.Target);

            comboSleeper.Sleep(this.Ability.GetHitTime(targetManager.Target));
            this.Sleeper.Sleep(delay + 0.5f);
            this.OrbwalkSleeper.Sleep(delay);
            return(this.Ability.UseAbility(blinkPosition));
        }
예제 #2
0
        // Token: 0x0600057F RID: 1407 RVA: 0x0001BEC4 File Offset: 0x0001A0C4
        internal bool UseAbilityIfCondition(TargetManager targetManager, Sleeper comboSleeper, ComboModeMenu menu, ReversePolarity polarity, bool blink, bool force)
        {
            if (blink || force || polarity == null)
            {
                return(false);
            }
            PredictionInput9 predictionInput = polarity.Ability.GetPredictionInput(targetManager.Target, targetManager.EnemyHeroes);

            predictionInput.Delay        += base.Ability.CastPoint + 0.5f;
            predictionInput.Range        += base.Ability.CastRange;
            predictionInput.CastRange     = base.Ability.CastRange;
            predictionInput.SkillShotType = 4;
            PredictionOutput9 predictionOutput = polarity.Ability.GetPredictionOutput(predictionInput);

            if (predictionOutput.HitChance < 1 || predictionOutput.AoeTargetsHit.Count < polarity.TargetsToHit(menu))
            {
                return(false);
            }
            Vector3 castPosition = predictionOutput.CastPosition;

            if (base.Owner.Distance(castPosition) > base.Ability.CastRange)
            {
                return(false);
            }
            float castDelay = base.Ability.GetCastDelay(targetManager.Target);

            comboSleeper.Sleep(base.Ability.GetHitTime(targetManager.Target));
            base.Sleeper.Sleep(castDelay + 0.5f);
            base.OrbwalkSleeper.Sleep(castDelay);
            return(base.Ability.UseAbility(castPosition, false, false));
        }