public DarkRift(Ability ability, AbilityType type, AbilityCastTarget target = AbilityCastTarget.Self) : base(ability, type, target) { fountain = ObjectManager.GetEntities<Unit>() .First(x => x.ClassID == ClassID.CDOTA_Unit_Fountain && x.Team == HeroTeam); }
public override bool CanBeCasted(EvadableAbility ability, Unit unit) { // todo: fix ally check return !Sleeper.Sleeping && Ability.CanBeCasted() && Hero.Distance2D(unit) <= aftershockRadius && CheckEnemy(unit); }
public override float GetRequiredTime(EvadableAbility ability, Unit unit, float remainingTime) { if (blinkUnit == null) { return float.MaxValue; } return CastPoint + (float)Hero.GetTurnTime(blinkUnit); }
public override void Use(EvadableAbility ability, Unit target) { Ability.UseAbility(ability.AbilityOwner); if (!target.Equals(Hero)) { Hero.Attack(target); } Sleep(); }
public override void Use(EvadableAbility ability, Unit target) { if (blinkUnit == null) { return; } Ability.UseAbility(blinkUnit); Sleep(); }
public override void Use(EvadableAbility ability, Unit target) { if (Hero.AghanimState()) { Ability.UseAbility(Hero); } else { Ability.UseAbility(); } Sleep(); }
public override void Use(EvadableAbility ability, Unit target) { if (Ability.IsAbilityBehavior(AbilityBehavior.UnitTarget)) { Ability.UseAbility(target); } else { Ability.UseAbility(target.Position); } Sleep(); }
public override void Use(EvadableAbility ability, Unit target) { if (Hero.GetTurnTime(target) > 0) { Hero.Move(Hero.Position.Extend(target.Position, 40)); Ability.UseAbility(Hero, true); } else { Ability.UseAbility(Hero); } Sleep(); }
public override bool CanBeCasted(EvadableAbility ability, Unit unit) { if (Hero.IsRuptured()) { return false; } blinkUnit = ObjectManager.GetEntitiesFast<Unit>() .FirstOrDefault( x => x.IsValid && x.IsAlive && (x is Creep || x is Hero) && !x.Equals(Hero) && x.Team == HeroTeam && x.Distance2D(Hero) < GetCastRange() && x.Distance2D(Hero) > 200); return !Sleeper.Sleeping && blinkUnit != null && Ability.CanBeCasted(); }
public override bool CanBeCasted(EvadableAbility ability, Unit unit) { // todo: fix ally check if ( ObjectManager.GetEntitiesParallel<Unit>() .Count( x => x.IsValid && x.IsAlive && x.IsSpawned && x.Team != HeroTeam && !x.IsMagicImmune() && x.Distance2D(Hero) <= GetCastRange()) >= 3) { // < 66% return false; } return !Sleeper.Sleeping && Ability.CanBeCasted() && Hero.Distance2D(unit) <= GetCastRange() && CheckEnemy(unit); }
public override bool CanBeCasted(EvadableAbility ability, Unit unit) { return !Sleeper.Sleeping && Hero.HasModifier("modifier_morphling_replicate_timer") && Ability.CanBeCasted(); }
public override float GetRequiredTime(EvadableAbility ability, Unit unit, float remainingTime) { return CastPoint + (float)Hero.GetTurnTime(unit) * 1.35f + 0.15f; }
public override float GetRequiredTime(EvadableAbility ability, Unit unit, float remainingTime) { return CastPoint + (unit.Equals(Hero) ? 0 : (float)Hero.GetTurnTime(unit) * 1.35f); }
public override float GetRequiredTime(EvadableAbility ability, Unit unit, float remainingTime) { return CastPoint; }
public override bool CanBeCasted(EvadableAbility ability, Unit unit) { return !Sleeper.Sleeping && Hero.HasModifier("modifier_ember_spirit_fire_remnant_timer") && Ability.CanBeCasted(); }
public void OnLoad() { Variables.Hero = ObjectManager.LocalHero; Variables.HeroTeam = Hero.Team; Variables.EnemyTeam = Hero.GetEnemyTeam(); Variables.Menu = new MenuManager(); Variables.Pathfinder = new Pathfinder(); sleeper = new MultiSleeper(); statusDrawer = new StatusDrawer(); abilityUpdater = new AbilityUpdater(); randomiser = new Random(); abilityModifiers = new AbilityModifiers(); fountain = ObjectManager.GetEntities<Unit>() .First(x => x.ClassID == ClassID.CDOTA_Unit_Fountain && x.Team == HeroTeam); }
public void OnModifierAdded(Unit sender, Modifier modifier) { if (!Menu.Hotkeys.EnabledEvader) { return; } DelayAction.Add( 1, () => { Debugger.WriteLine("====", Debugger.Type.Modifiers); Debugger.WriteLine("modifier name: " + modifier.Name, Debugger.Type.Modifiers); Debugger.WriteLine("modifier texture name: " + modifier.TextureName, Debugger.Type.Modifiers); Debugger.WriteLine("sender: " + sender.Name, Debugger.Type.Modifiers); Debugger.WriteLine("elapsed time: " + modifier.ElapsedTime, Debugger.Type.Modifiers); Debugger.WriteLine("remaining time: " + modifier.RemainingTime, Debugger.Type.Modifiers); string name; if (AdditionalAbilityData.Modifiers.TryGetValue(modifier.Name, out name)) { foreach (var ability in abilityUpdater.EvadableAbilities.Where(x => x.Name == name && x.Enabled) .OfType<IModifierObstacle>()) { ability.AddModifierObstacle(modifier, sender); } return; } var hero = sender as Hero; if (hero == null) { return; } var abilityName = abilityModifiers.GetAbilityName(modifier); if (string.IsNullOrEmpty(abilityName)) { return; } var modifierAbility = abilityUpdater.EvadableAbilities.FirstOrDefault( x => x.ModifierCounterEnabled && x.Name == abilityName && (x.TimeSinceCast() - x.AdditionalDelay < modifier.ElapsedTime + 1.5f || !x.AbilityOwner.IsVisible || x.DisableTimeSinceCastCheck)) as IModifier; modifierAbility?.Modifier.Add(modifier, hero); }); }
public override void Use(EvadableAbility ability, Unit target) { Ability.UseAbility(Hero.InFront(250)); Sleep(); }
public override bool CanBeCasted(EvadableAbility ability, Unit unit) { return !Sleeper.Sleeping && Ability.CanBeCasted() && Hero.Distance2D(unit) <= grabRadius && CheckEnemy(unit); }
public override void Use(EvadableAbility ability, Unit target) { Ability.UseAbility(); Sleep(); }
public override void Use(EvadableAbility ability, Unit target) { Ability.UseAbility(target.NetworkPosition); Sleep(); }
public override void Use(EvadableAbility ability, Unit target) { Ability.UseAbility(target); DelayAction.Add(250 + Game.Ping, () => { Hero.Stop(); }); Sleep(); }