// Token: 0x06000162 RID: 354 RVA: 0x0000C888 File Offset: 0x0000AA88 public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { Unit9 target = targetManager.Target; UsableAbility usableAbility = usableAbilities.Find((UsableAbility x) => x.Ability.Id == AbilityId.windrunner_powershot); return(usableAbility == null || (float)usableAbility.Ability.GetDamage(target) <= target.Health); }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { var nova = usableAbilities.Find(x => x.Ability.Id == AbilityId.phoenix_supernova); if (nova != null && this.Owner.HasAghanimsScepter) { var mouse = GameManager.MousePosition; var ally = targetManager.AllyHeroes .Where(x => !x.Equals(this.Owner) && x.HealthPercentage < 35 && x.Distance(this.Owner) < this.Ability.CastRange) .OrderBy(x => x.Distance(mouse)) .FirstOrDefault(); if (ally != null) { this.CastPosition = ally.Position; return(true); } } this.CastPosition = Vector3.Zero; var ray = this.Owner.Abilities.FirstOrDefault(x => x.Id == AbilityId.phoenix_sun_ray) as BaseSunRay; if (ray?.IsSunRayActive == true) { return(false); } return(true); }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { var ability = usableAbilities.FirstOrDefault(); if (ability == null) { return(false); } var input = ability.Ability.GetPredictionInput(targetManager.Target, targetManager.EnemyHeroes); input.Range += this.Ability.CastRange; input.CastRange = this.Ability.CastRange; input.SkillShotType = SkillShotType.Circle; var output = ability.Ability.GetPredictionOutput(input); if (output.HitChance < HitChance.Low || output.TargetPosition.Distance2D(output.CastPosition) > ability.Ability.Radius * 0.9f) { return(false); } this.blinkPosition = output.CastPosition; if (this.Owner.Distance(this.blinkPosition) > this.Ability.CastRange) { return(false); } return(true); }
// Token: 0x06000445 RID: 1093 RVA: 0x00017400 File Offset: 0x00015600 public override bool CanHit(TargetManager targetManager, IComboModeMenu comboMenu) { Unit9 target = targetManager.Target; PredictionInput9 predictionInput = base.Ability.GetPredictionInput(target, null); if (base.Ability.GetPredictionOutput(predictionInput).HitChance <= 0) { return(false); } if (target.Distance(base.Owner) < 300f || target.GetImmobilityDuration() > 0f) { return(true); } if (!target.Equals(this.lastTarget)) { this.lastTarget = target; this.rotationTime = Game.RawGameTime; this.rotation = target.BaseUnit.NetworkRotationRad; return(false); } if ((double)Math.Abs(this.rotation - target.BaseUnit.NetworkRotationRad) > 0.1) { this.rotationTime = Game.RawGameTime; this.rotation = target.BaseUnit.NetworkRotationRad; return(false); } MeatHookMenu abilitySettingsMenu = comboMenu.GetAbilitySettingsMenu <MeatHookMenu>(this); return(this.rotationTime + abilitySettingsMenu.Delay / 1000f <= Game.RawGameTime); }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { if (!(usableAbilities.Find(x => x.Ability.Id == AbilityId.magnataur_reverse_polarity) is ReversePolarity polarity)) { return(false); } var input = polarity.Ability.GetPredictionInput(targetManager.Target, targetManager.EnemyHeroes); 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); } this.blinkPosition = output.CastPosition; if (this.Owner.Distance(this.blinkPosition) > this.Ability.CastRange) { return(false); } return(true); }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { if (!base.ShouldConditionCast(targetManager, menu, usableAbilities)) { return(false); } var ally = EntityManager9.Heroes .Where(x => !x.Equals(this.Owner) && x.IsAlly(this.Owner) && x.IsAlive && x.Distance(this.Owner) < 1500) .OrderBy(x => x.Distance(this.Owner)) .FirstOrDefault(); var allyPosition = ally == null ? EntityManager9.AllyFountain : ally.Position; if (this.Owner.Position.AngleBetween(targetManager.Target.Position, allyPosition) > 30) { if (this.Owner.Move(targetManager.Target.Position.Extend2D(allyPosition, -100))) { this.OrbwalkSleeper.Sleep(0.1f); this.Sleeper.Sleep(0.1f); return(false); } return(false); } return(true); }
// Token: 0x060002A5 RID: 677 RVA: 0x00010E94 File Offset: 0x0000F094 public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { Unit9 target = targetManager.Target; if (base.Owner.Distance(target) < 600f) { return(false); } if (usableAbilities.FirstOrDefault((UsableAbility x) => x.Ability.Id == AbilityId.shredder_timber_chain) == null) { return(true); } this.blinkPosition = target.Position; UsableAbility usableAbility = usableAbilities.FirstOrDefault((UsableAbility x) => x.Ability.Id == AbilityId.shredder_whirling_death); if (usableAbility != null) { PredictionInput9 predictionInput = usableAbility.Ability.GetPredictionInput(target, targetManager.EnemyHeroes); predictionInput.Range += base.Ability.CastRange; predictionInput.CastRange = base.Ability.CastRange; predictionInput.SkillShotType = 4; PredictionOutput9 predictionOutput = usableAbility.Ability.GetPredictionOutput(predictionInput); if (predictionOutput.HitChance < 1) { return(false); } this.blinkPosition = predictionOutput.CastPosition; } return(base.Owner.Distance(this.blinkPosition) < base.Ability.CastRange); }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { if (this.Owner.Distance(targetManager.Target) < 500) { return(true); } var skewer = usableAbilities.Find(x => x.Ability.Id == AbilityId.magnataur_skewer); if (skewer != null) { var polarity = usableAbilities.Find(x => x.Ability.Id == AbilityId.magnataur_reverse_polarity); if (polarity != null) { return(false); } } var blink = usableAbilities.Find(x => x.Ability.Id == AbilityId.item_blink || x.Ability.Id == AbilityId.item_force_staff); if (blink == null || this.Ability.GetDamage(targetManager.Target) > targetManager.Target.Health) { return(true); } if (this.Owner.Distance(targetManager.Target) > 800) { return(false); } return(true); }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { var field = (FreezingField)usableAbilities.Find(x => x.Ability.Id == AbilityId.crystal_maiden_freezing_field); if (field == null) { return(false); } var input = field.Ability.GetPredictionInput(targetManager.Target, targetManager.EnemyHeroes); input.Range += this.Ability.CastRange; input.CastRange = this.Ability.CastRange; input.SkillShotType = SkillShotType.Circle; input.Radius *= 0.7f; var output = field.Ability.GetPredictionOutput(input); if (output.HitChance < HitChance.Low || output.AoeTargetsHit.Count < field.TargetsToHit(menu)) { return(false); } this.blinkPosition = output.CastPosition; if (this.Owner.Distance(this.blinkPosition) > this.Ability.CastRange) { return(false); } return(true); }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { var blackHole = (BlackHole)usableAbilities.Find(x => x.Ability.Id == AbilityId.enigma_black_hole); if (blackHole == null) { return(false); } var input = blackHole.Ability.GetPredictionInput(targetManager.Target, EntityManager9.EnemyHeroes); input.CastRange += this.Ability.CastRange; input.Range += this.Ability.CastRange; var output = blackHole.Ability.GetPredictionOutput(input); if (output.HitChance < HitChance.Low || output.AoeTargetsHit.Count < blackHole.TargetsToHit(menu)) { return(false); } var range = Math.Min(this.Ability.CastRange, this.Owner.Distance(output.CastPosition) - 200); this.blinkPosition = this.Owner.Position.Extend2D(output.CastPosition, range); if (this.Owner.Distance(this.blinkPosition) > this.Ability.CastRange) { return(false); } return(true); }
// Token: 0x060007B5 RID: 1973 RVA: 0x00023558 File Offset: 0x00021758 public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { Chronosphere chronosphere = (Chronosphere)usableAbilities.Find((UsableAbility x) => x.Ability.Id == AbilityId.faceless_void_chronosphere); if (chronosphere == null) { if (base.Owner.Distance(targetManager.Target) < 300f) { return(false); } this.blinkPosition = Vector3.Zero; return(true); } else { PredictionInput9 predictionInput = chronosphere.Ability.GetPredictionInput(targetManager.Target, EntityManager9.EnemyHeroes); predictionInput.CastRange += base.Ability.CastRange; predictionInput.Range += base.Ability.CastRange; PredictionOutput9 predictionOutput = chronosphere.Ability.GetPredictionOutput(predictionInput); if (predictionOutput.HitChance < 1 || predictionOutput.AoeTargetsHit.Count < chronosphere.TargetsToHit(menu)) { return(false); } float num = Math.Min(base.Ability.CastRange, base.Owner.Distance(predictionOutput.CastPosition) - 200f); this.blinkPosition = Vector3Extensions.Extend2D(base.Owner.Position, predictionOutput.CastPosition, num); return(base.Owner.Distance(this.blinkPosition) <= base.Ability.CastRange); } }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { var totem = usableAbilities.Find(x => x.Ability.Id == AbilityId.earthshaker_enchant_totem); if (totem != null) { var inputTotem = totem.Ability.GetPredictionInput(targetManager.Target, targetManager.EnemyHeroes); inputTotem.Range += this.Ability.CastRange; inputTotem.CastRange = this.Ability.CastRange; inputTotem.SkillShotType = SkillShotType.Circle; if (this.Owner.HasModifier("modifier_earthshaker_enchant_totem")) { inputTotem.AreaOfEffect = false; inputTotem.Delay -= 0.1f; } var outputTotem = totem.Ability.GetPredictionOutput(inputTotem); if (outputTotem.HitChance < HitChance.Low) { return(false); } this.blinkPosition = outputTotem.CastPosition; if (this.Owner.Distance(this.blinkPosition) > this.Ability.CastRange || this.Owner.Distance(this.blinkPosition) < totem.Ability.Radius - 50) { return(false); } return(true); } if (!(usableAbilities.Find(x => x.Ability.Id == AbilityId.earthshaker_echo_slam) is EchoSlam echo)) { return(false); } var input = echo.Ability.GetPredictionInput(targetManager.Target, targetManager.EnemyHeroes); input.Range += this.Ability.CastRange; input.CastRange = this.Ability.CastRange; input.SkillShotType = SkillShotType.Circle; var output = echo.Ability.GetPredictionOutput(input); if (output.HitChance < HitChance.Low || output.AoeTargetsHit.Count < echo.TargetsToHit(menu)) { return(false); } this.blinkPosition = output.CastPosition; if (this.Owner.Distance(this.blinkPosition) > this.Ability.CastRange || output.AoeTargetsHit.Count == 1 && this.Owner.Distance(this.blinkPosition) < 350) { return(false); } return(true); }
// Token: 0x060003B1 RID: 945 RVA: 0x00014E08 File Offset: 0x00013008 public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { UsableAbility usableAbility = usableAbilities.Find((UsableAbility x) => x.Ability.Id == AbilityId.item_blink); UsableAbility usableAbility2 = usableAbilities.Find((UsableAbility x) => x.Ability.Id == AbilityId.sandking_burrowstrike); float num = ((usableAbility2 != null) ? usableAbility2.Ability.CastRange : 0f) + ((usableAbility != null) ? usableAbility.Ability.CastRange : 0f) + base.Ability.Radius; return(base.Owner.Distance(targetManager.Target) < num); }
public AbilityHelper(TargetManager targetManager, IComboModeMenu comboModeMenu, ControllableUnit controllableUnit) { this.unit = controllableUnit.Owner; this.TargetManager = targetManager; this.comboSleeper = controllableUnit.ComboSleeper; this.orbwalkSleeper = controllableUnit.OrbwalkSleeper; this.menu = comboModeMenu; }
public override bool CanHit(TargetManager targetManager, IComboModeMenu comboMenu) { if (this.Owner.HasModifier("modifier_earth_spirit_rolling_boulder_caster")) { return(false); } return(true); }
public override bool CanHit(TargetManager targetManager, IComboModeMenu comboMenu) { if (this.Owner.Distance(targetManager.Target) > 900) { return(false); } return(true); }
// Token: 0x06000A03 RID: 2563 RVA: 0x0002BB30 File Offset: 0x00029D30 public bool CanBeCasted(UsableAbility ability, bool canHit = true, bool shouldCast = true, bool channelingCheck = true, bool canBeCastedCheck = true) { if (ability == null || !ability.Ability.IsValid) { return(false); } IComboModeMenu comboModeMenu = this.menu; return((comboModeMenu == null || comboModeMenu.IsAbilityEnabled(ability.Ability)) && (!canBeCastedCheck || ability.CanBeCasted(this.TargetManager, channelingCheck, this.menu)) && (!canHit || ability.CanHit(this.TargetManager, this.menu)) && (!shouldCast || ability.ShouldCast(this.TargetManager))); }
// Token: 0x060004AA RID: 1194 RVA: 0x00018A90 File Offset: 0x00016C90 public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { UsableAbility usableAbility = usableAbilities.Find((UsableAbility x) => x.Ability.Id == AbilityId.item_blink); if (usableAbility == null) { return(base.Owner.Distance(targetManager.Target) < 600f); } return(base.Owner.Distance(targetManager.Target) < usableAbility.Ability.CastRange + 200f); }
public override bool CanHit(TargetManager targetManager, IComboModeMenu comboMenu) { var remnants = EntityManager9.Units.Any( x => x.IsAlly(this.Owner) && x.Name == "npc_dota_ember_spirit_remnant" && x.Distance( targetManager.Target.GetPredictedPosition(this.Owner.Distance(x) / this.Ability.Speed)) < this.Ability.Radius); return(remnants); }
// Token: 0x060006C2 RID: 1730 RVA: 0x000209F0 File Offset: 0x0001EBF0 public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { if (usableAbilities.Find((UsableAbility x) => x.Ability.Id == AbilityId.dark_willow_cursed_crown) != null) { return(true); } Modifier modifier = targetManager.Target.GetModifier("modifier_dark_willow_cursed_crown"); return(!(modifier == null) && modifier.RemainingTime >= base.Ability.Duration + 0.1f); }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { if (!(usableAbilities.FirstOrDefault(x => x.Ability.Id == AbilityId.windrunner_shackleshot) is Shackleshot shackle)) { return(false); } this.blinkPosition = shackle.GetBlinkPosition(targetManager, this.Ability.CastRange); return(!this.blinkPosition.IsZero); }
// Token: 0x06000301 RID: 769 RVA: 0x00012430 File Offset: 0x00010630 public override bool CanHit(TargetManager targetManager, IComboModeMenu comboMenu) { BallLightningMenu abilitySettingsMenu = comboMenu.GetAbilitySettingsMenu <BallLightningMenu>(this); if (abilitySettingsMenu != null) { this.menuMaxCastRange = abilitySettingsMenu.MaxCastRange; this.maxDamage = abilitySettingsMenu.MaxDamageCombo; } return(true); }
public override bool CanHit(TargetManager targetManager, IComboModeMenu comboMenu) { var target = targetManager.Target; if (targetManager.Target.HasModifier("modifier_pudge_meat_hook") && target.Distance(this.Owner) < 500) { return(true); } return(base.CanHit(targetManager, comboMenu)); }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { var dismember = usableAbilities.Find(x => x.Ability.Id == AbilityId.pudge_dismember); if (dismember == null) { return(false); } return(true); }
// Token: 0x0600015B RID: 347 RVA: 0x0000C7BC File Offset: 0x0000A9BC public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { Shackleshot shackleshot; if ((shackleshot = (usableAbilities.FirstOrDefault((UsableAbility x) => x.Ability.Id == AbilityId.windrunner_shackleshot) as Shackleshot)) == null) { return(false); } this.blinkPosition = shackleshot.GetBlinkPosition(targetManager, base.Ability.CastRange); return(!this.blinkPosition.IsZero); }
public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { var blink = usableAbilities.Find(x => x.Ability.Id == AbilityId.item_blink); if (blink == null) { return(this.Owner.Distance(targetManager.Target) < 600); } return(this.Owner.Distance(targetManager.Target) < blink.Ability.CastRange + 200); }
public override bool CanHit(TargetManager targetManager, IComboModeMenu comboMenu) { var menu = comboMenu.GetAbilitySettingsMenu <XMarkOnlyMenu>(this); if (menu.XMarkOnly) { return(false); } return(base.CanHit(targetManager, comboMenu)); }
public override bool CanHit(TargetManager targetManager, IComboModeMenu comboMenu) { var menu = comboMenu.GetAbilitySettingsMenu <IceBlastMenu>(this); if (menu.StunOnly && targetManager.Target.GetImmobilityDuration() < 1.5f) { return(false); } return(base.CanHit(targetManager, comboMenu)); }
// Token: 0x06000343 RID: 835 RVA: 0x0001317C File Offset: 0x0001137C public override bool CanHit(TargetManager targetManager, IComboModeMenu comboMenu) { Unit9 target = targetManager.Target; if (target.IsMagicImmune) { return(false); } PredictionInput9 predictionInput = base.Ability.GetPredictionInput(target, null); return(base.Ability.GetPredictionOutput(predictionInput).HitChance > 0); }
// Token: 0x0600099B RID: 2459 RVA: 0x00029E40 File Offset: 0x00028040 public override bool ShouldConditionCast(TargetManager targetManager, IComboModeMenu menu, List <UsableAbility> usableAbilities) { if (targetManager.Target.IsRuptured) { return(true); } if (usableAbilities.Find((UsableAbility x) => x.Ability.Id == AbilityId.bloodseeker_rupture) != null && targetManager.Target.GetImmobilityDuration() <= 0f) { return(false); } return(usableAbilities.Find((UsableAbility x) => x.Ability.Id == AbilityId.item_cyclone) == null); }