Пример #1
0
        // Token: 0x060003C8 RID: 968 RVA: 0x00015488 File Offset: 0x00013688
        protected override bool ChainStun(Unit9 target, bool invulnerability)
        {
            float invulnerabilityDuration = target.GetInvulnerabilityDuration();

            if (invulnerabilityDuration > 0f)
            {
                float num = base.Ability.GetHitTime(target);
                if (target.IsInvulnerable)
                {
                    num -= 0.1f;
                }
                return(num > invulnerabilityDuration);
            }
            return(true);
        }
Пример #2
0
        // Token: 0x060009DB RID: 2523 RVA: 0x0002ADA4 File Offset: 0x00028FA4
        protected override bool ChainStun(Unit9 target, bool invulnerability)
        {
            float num = invulnerability ? target.GetInvulnerabilityDuration() : target.GetImmobilityDuration();

            if (num <= 0f)
            {
                return(false);
            }
            float num2 = base.Ability.GetHitTime(target) + this.iceBlast.GetReleaseFlyTime(target.Position);

            if (target.IsInvulnerable)
            {
                num2 -= 0.1f;
            }
            return(num2 > num);
        }
Пример #3
0
        // Token: 0x06000A60 RID: 2656 RVA: 0x0002CB78 File Offset: 0x0002AD78
        protected virtual bool ChainStun(Unit9 target, bool invulnerability)
        {
            float num = invulnerability ? target.GetInvulnerabilityDuration() : target.GetImmobilityDuration();

            if (num <= 0f)
            {
                return(false);
            }
            float num2 = this.Ability.GetHitTime(target);

            if (target.IsInvulnerable)
            {
                num2 -= 0.1f;
            }
            return(num2 > num);
        }
Пример #4
0
        protected override bool ChainStun(Unit9 target, bool invulnerability)
        {
            var immobile = target.GetInvulnerabilityDuration();

            if (immobile > 0)
            {
                var hitTime = this.Ability.GetHitTime(target);
                if (target.IsInvulnerable)
                {
                    hitTime -= 0.1f;
                }

                return(hitTime > immobile);
            }

            return(true);
        }
Пример #5
0
        protected override bool ChainStun(Unit9 target, bool invulnerability)
        {
            var immobile = invulnerability ? target.GetInvulnerabilityDuration() : target.GetImmobilityDuration();

            if (immobile <= 0)
            {
                return(false);
            }

            var hitTime = this.Ability.GetHitTime(target) + 0.5f;

            if (target.IsInvulnerable)
            {
                hitTime -= 0.1f;
            }

            return(hitTime > immobile);
        }
Пример #6
0
        protected override bool ChainStun(Unit9 target, bool invulnerability)
        {
            if (!invulnerability)
            {
                return(this.Owner.HasModifier("modifier_ember_spirit_sleight_of_fist_caster"));
            }

            var immobile = target.GetInvulnerabilityDuration();

            if (immobile <= 0)
            {
                return(false);
            }

            var hitTime = this.Ability.GetHitTime(target);

            if (target.IsInvulnerable)
            {
                hitTime -= 0.1f;
            }

            return(hitTime > immobile);
        }
Пример #7
0
        // Token: 0x0600038E RID: 910 RVA: 0x00014510 File Offset: 0x00012710
        private bool UltCombo(TargetManager targetManager, AbilityHelper abilityHelper)
        {
            if (!abilityHelper.CanBeCasted(this.requiem, false, false, true, true))
            {
                return(false);
            }
            Unit9   target = targetManager.Target;
            Vector3 vector = target.Position;
            float   num    = base.Owner.Distance(vector);
            float   num2   = this.requiem.Ability.CastPoint + Game.Ping / 2000f;

            if (target.IsInvulnerable)
            {
                float invulnerabilityDuration = target.GetInvulnerabilityDuration();
                if (invulnerabilityDuration <= 0f)
                {
                    return(true);
                }
                Modifier modifier = target.GetModifier("modifier_eul_cyclone");
                if (modifier != null)
                {
                    ParticleEffect particleEffect = modifier.ParticleEffects.FirstOrDefault <ParticleEffect>();
                    if (particleEffect != null)
                    {
                        vector = particleEffect.GetControlPoint(0u);
                        num    = base.Owner.Distance(vector);
                    }
                }
                float num3 = invulnerabilityDuration - num2;
                if (num3 <= -0.3f)
                {
                    return(false);
                }
                if (num < 70f)
                {
                    if (abilityHelper.UseAbility(this.bkb, true))
                    {
                        return(true);
                    }
                    if (num3 <= 0f && abilityHelper.ForceUseAbility(this.requiem, false, true))
                    {
                        return(true);
                    }
                    if (!base.OrbwalkSleeper.IsSleeping)
                    {
                        base.OrbwalkSleeper.Sleep(0.1f);
                        base.Owner.BaseUnit.Move(vector);
                    }
                    return(true);
                }
                else if (num / base.Owner.Speed < num3 + 0.3f)
                {
                    if (abilityHelper.UseAbility(this.bkb, true))
                    {
                        return(true);
                    }
                    base.OrbwalkSleeper.Sleep(0.1f);
                    base.ComboSleeper.Sleep(0.1f);
                    return(base.Owner.BaseUnit.Move(vector));
                }
                else if (abilityHelper.CanBeCasted(this.blink, true, true, true, true) && this.blink.Ability.CastRange + base.Owner.Speed * num3 > num && abilityHelper.UseAbility(this.blink, vector))
                {
                    base.OrbwalkSleeper.Sleep(0.1f);
                    return(true);
                }
            }
            if (!abilityHelper.CanBeCasted(this.euls, false, false, true, true) || !this.euls.ShouldForceCast(targetManager) || target.IsMagicImmune)
            {
                return(false);
            }
            float num4 = this.euls.Ability.Duration - num2;

            if (abilityHelper.CanBeCasted(this.blink, true, true, true, true) && this.blink.Ability.CastRange + base.Owner.Speed * num4 > num && abilityHelper.UseAbility(this.blink, vector))
            {
                base.OrbwalkSleeper.Sleep(0.1f);
                base.ComboSleeper.ExtendSleep(0.1f);
                return(true);
            }
            if (num / base.Owner.Speed < num4)
            {
                if (abilityHelper.CanBeCasted(this.hex, true, true, true, true))
                {
                    bool flag = false;
                    foreach (ActiveAbility activeAbility in target.Abilities.OfType <ActiveAbility>())
                    {
                        if (activeAbility.IsValid && activeAbility.CastPoint <= 0f && activeAbility.CanBeCasted(false))
                        {
                            if (!base.Owner.IsMagicImmune || !abilityHelper.CanBeCasted(this.bkb, true, true, true, true))
                            {
                                if (activeAbility.Id == AbilityId.item_blade_mail)
                                {
                                    flag = true;
                                    break;
                                }
                                IDisable disable;
                                if ((disable = (activeAbility as IDisable)) != null && (disable.AppliesUnitState & (UnitState.Silenced | UnitState.Stunned | UnitState.Hexed)) != (UnitState)0UL)
                                {
                                    flag = true;
                                    break;
                                }
                            }
                            IShield shield;
                            if ((shield = (activeAbility as IShield)) != null && (shield.AppliesUnitState & (UnitState.Invulnerable | UnitState.MagicImmune)) != (UnitState)0UL)
                            {
                                flag = true;
                                break;
                            }
                            IBlink blink;
                            if ((blink = (activeAbility as IBlink)) != null && blink.Id != AbilityId.item_blink)
                            {
                                flag = true;
                                break;
                            }
                        }
                    }
                    if (flag && abilityHelper.ForceUseAbility(this.hex, false, true))
                    {
                        base.ComboSleeper.ExtendSleep(0.1f);
                        base.OrbwalkSleeper.ExtendSleep(0.1f);
                        return(true);
                    }
                }
                if (abilityHelper.UseAbility(this.veil, true))
                {
                    return(true);
                }
                if (abilityHelper.UseAbility(this.ethereal, true))
                {
                    base.OrbwalkSleeper.Sleep(0.5f);
                    return(true);
                }
                if (abilityHelper.ForceUseAbility(this.euls, false, true))
                {
                    return(true);
                }
            }
            return(false);
        }