// Token: 0x060002DF RID: 735 RVA: 0x00011C48 File Offset: 0x0000FE48 public override bool ShouldCast(TargetManager targetManager) { Unit9 target = targetManager.Target; Modifier modifier = target.GetModifier(base.Debuff.DebuffModifierName); return((modifier == null || modifier.RemainingTime <= 2.5f) && !target.IsDarkPactProtected && !target.IsInvulnerable && !target.IsRooted && !target.IsStunned && !target.IsHexed && !targetManager.TargetSleeper.IsSleeping && (this.trap.IsFullyCharged || (base.Owner.Distance(target) > base.Ability.Radius * 0.6f && target.GetAngle(base.Owner.Position, false) > 2f))); }
// Token: 0x06000831 RID: 2097 RVA: 0x000258F4 File Offset: 0x00023AF4 public override bool UseAbility(TargetManager targetManager, Sleeper comboSleeper, bool aoe) { Unit9 target = targetManager.Target; Modifier modifier = target.GetModifier("modifier_earth_spirit_magnetize"); if (modifier == null || modifier.RemainingTime > 0.75f) { return(false); } List <Unit9> list = (from x in targetManager.EnemyHeroes where x.HasModifier("modifier_earth_spirit_magnetize") select x).ToList <Unit9>(); PredictionInput9 predictionInput = base.Ability.GetPredictionInput(target, list); predictionInput.Radius = 400f; predictionInput.AreaOfEffect = true; predictionInput.SkillShotType = 4; PredictionOutput9 predictionOutput = base.Ability.GetPredictionOutput(predictionInput); if (predictionOutput.HitChance < 1) { return(false); } if (!base.Ability.UseAbility(predictionOutput.CastPosition, false, false)) { return(false); } float castDelay = base.Ability.GetCastDelay(targetManager.Target); comboSleeper.Sleep(castDelay + 0.1f); base.Sleeper.Sleep(1f); base.OrbwalkSleeper.Sleep(castDelay); return(true); }
// Token: 0x0600071F RID: 1823 RVA: 0x00021D64 File Offset: 0x0001FF64 protected virtual bool UseOrbAbility(Unit9 target, ComboModeMenu comboMenu) { if (!this.Owner.CanUseAbilities) { return(false); } OrbAbility orbAbility = this.Owner.Abilities.OfType <OrbAbility>().FirstOrDefault(delegate(OrbAbility x) { ComboModeMenu comboMenu2 = comboMenu; return(comboMenu2 != null && comboMenu2.IsAbilityEnabled(x) && !x.Enabled && x.CanBeCasted(true) && x.CanHit(target)); }); if (orbAbility != null) { if (string.IsNullOrEmpty(orbAbility.OrbModifier)) { return(orbAbility.UseAbility(target, false, false)); } if ((double)Game.RawGameTime < (double)this.orbHitTime - 0.1) { return(false); } Modifier modifier = target.GetModifier(orbAbility.OrbModifier); if (((modifier != null) ? modifier.RemainingTime : 0f) <= (this.Owner.GetAttackPoint(target) + this.Owner.Distance(target) / (float)this.Owner.ProjectileSpeed) * 2f + this.Owner.GetAttackBackswing(target)) { this.orbHitTime = Game.RawGameTime + orbAbility.GetHitTime(target); return(orbAbility.UseAbility(target, false, false)); } } return(false); }
// Token: 0x06000A33 RID: 2611 RVA: 0x0002C550 File Offset: 0x0002A750 public override bool ShouldCast(TargetManager targetManager) { Unit9 target = targetManager.Target; bool isVisible = target.IsVisible; if (base.Ability.UnitTargetCast && !isVisible) { return(false); } if (isVisible) { if (this.visibleSleeper.IsSleeping(target.Handle)) { return(false); } Modifier modifier = target.GetModifier(this.Debuff.DebuffModifierName); if (modifier != null) { float num = modifier.RemainingTime - base.Ability.GetHitTime(target); if (num > 0f) { this.debuffSleeper.Sleep(target.Handle, num); return(false); } } } else { this.visibleSleeper.Sleep(target.Handle, 0.1f); if (this.debuffSleeper.IsSleeping(target.Handle)) { return(false); } } if (base.Ability.BreaksLinkens && target.IsBlockingAbilities) { return(false); } if (target.IsDarkPactProtected) { return(false); } if (target.IsInvulnerable) { if (this.Debuff.UnitTargetCast) { return(false); } if (!this.ChainStun(target, true)) { return(false); } } return(!target.IsRooted || base.Ability.UnitTargetCast || target.GetImmobilityDuration() > 0f); }
// 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); }