示例#1
0
        public int GetAbilityWaitTime(ActiveAbility ability, Hero target)
        {
            if (ability.CanBeCasted && ability.CanHit(target) && ability.UseAbility(target))
            {
                int delay;

                // wait for projectile to hit, so that the amplifier is actually applied for the rest of the combo
                if (ability is IHasDamageAmplifier && ability.Speed != float.MaxValue)
                {
                    delay = ability.GetHitTime(target);
                }
                else
                {
                    delay = ability.GetCastDelay(target);
                }

                var diff = (int)(50 - Game.Ping);
                if (diff > 0)
                {
                    delay += diff;
                }

                return(delay);
            }

            return(0);
        }
示例#2
0
        // Token: 0x060005EA RID: 1514 RVA: 0x0001D66C File Offset: 0x0001B86C
        public void AutoReturn()
        {
            if (base.ComboSleeper.IsSleeping)
            {
                return;
            }
            if (this.xMark.Position.IsZero)
            {
                return;
            }
            ActiveAbility ability = this.xReturn.Ability;

            if (!ability.CanBeCasted(true))
            {
                return;
            }
            if (!this.torrent.ShouldReturn(this.xReturn.Ability, this.xMark.Position) && !this.ship.ShouldReturn(this.xReturn.Ability, this.xMark.Position))
            {
                return;
            }
            ability.UseAbility(false, false);
            base.ComboSleeper.Sleep(ability.GetCastDelay());
            base.OrbwalkSleeper.Sleep(ability.GetCastDelay());
        }
        // Token: 0x06000610 RID: 1552 RVA: 0x0001E02C File Offset: 0x0001C22C
        public bool ShouldReturn(ActiveAbility xReturn, Vector3 xMarkPosition)
        {
            if (this.Position.IsZero)
            {
                return(false);
            }
            if (xMarkPosition.Distance2D(this.Position, false) > base.Ability.Radius)
            {
                return(false);
            }
            float num  = this.HitTime - Game.RawGameTime;
            float num2 = xReturn.GetCastDelay() + 0.1f;

            return(num <= num2);
        }
示例#4
0
        // Token: 0x06000617 RID: 1559 RVA: 0x0001E0F4 File Offset: 0x0001C2F4
        public bool ShouldReturn(ActiveAbility xReturn, Vector3 xMarkPosition)
        {
            Modifier modifier = this.Modifier;

            if (modifier == null || !modifier.IsValid)
            {
                return(false);
            }
            if (xMarkPosition.Distance2D(this.Modifier.Owner.Position, false) > base.Ability.Radius)
            {
                return(false);
            }
            float num  = base.Ability.ActivationDelay - this.Modifier.ElapsedTime;
            float num2 = xReturn.GetCastDelay() + 0.1f;

            return(num <= num2);
        }
示例#5
0
        public bool ShouldReturn(ActiveAbility xReturn, Vector3 xMarkPosition)
        {
            if (this.Position.IsZero)
            {
                return(false);
            }

            if (xMarkPosition.Distance2D(this.Position) > this.Ability.Radius)
            {
                return(false);
            }

            var remainingTime = this.HitTime - Game.RawGameTime;
            var requiredTime  = xReturn.GetCastDelay() + 0.2f;

            if (remainingTime > requiredTime)
            {
                return(false);
            }

            return(true);
        }
示例#6
0
        public bool ShouldReturn(ActiveAbility xReturn, Vector3 xMarkPosition)
        {
            if (this.Modifier?.IsValid != true)
            {
                return(false);
            }

            if (xMarkPosition.Distance2D(this.Modifier.Owner.Position) > this.Ability.Radius)
            {
                return(false);
            }

            var remainingTime = this.Ability.ActivationDelay - this.Modifier.ElapsedTime;
            var requiredTime  = xReturn.GetCastDelay() + 0.2f;

            if (remainingTime > requiredTime)
            {
                return(false);
            }

            return(true);
        }