// 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); }
// 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); }
// 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); }
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); }
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); }
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); }
// 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); }