public PickUpRune(IAbilityUnit unit, IAbilityRune rune) : base(OrderType.TakeRune, unit, "PickUp rune") { this.unit = unit; this.rune = rune; rune.RuneDisposed.Subscribe(() => { this.runeDisposed = true; }); this.ExecuteOnce = false; this.PrintInLog = true; this.ShouldExecuteFast = true; }
public override float ExecuteFast() { if (this.LastDistanceToRune < 400) { if (this.RunePosition.HasRune && !this.RunePosition.CurrentRune.Disposed) { this.hadRune = true; this.rune = this.RunePosition.CurrentRune; this.Unit.SourceUnit.PickUpRune(this.RunePosition.CurrentRune.SourceRune); this.Unit.SourceUnit.PickUpRune(this.RunePosition.CurrentRune.SourceRune); this.Unit.SourceUnit.PickUpRune(this.RunePosition.CurrentRune.SourceRune); return(100); } } return(0); }
public override float Execute() { if (this.LastDistanceToRune < 400) { if (this.RunePosition.HasRune) { this.hadRune = true; this.rune = this.RunePosition.CurrentRune; this.Unit.SourceUnit.PickUpRune(this.RunePosition.CurrentRune.SourceRune); this.Unit.SourceUnit.PickUpRune(this.RunePosition.CurrentRune.SourceRune); this.Unit.SourceUnit.PickUpRune(this.RunePosition.CurrentRune.SourceRune); return(100); } return(0); } if (this.sleeper.Sleeping) { return(0); } this.sleeper.Sleep(300); this.LastDistanceToRune = this.Unit.Position.PredictedByLatency.Distance2D(this.RunePosition.Position); if (!this.RunePosition.HasRune && this.LastDistanceToRune < 1000 && (this.LastDistanceToRune / this.Unit.SourceUnit.MovementSpeed) + 0.5 < this.RunePosition.NextSpawnTime - Game.GameTime) { //Console.WriteLine("stopping"); this.Unit.SourceUnit.Stop(); return(0); } //Console.WriteLine("moving"); this.Unit.SourceUnit.Move(this.RunePosition.Position); return(0); }