public override void Check() { if (StartCast <= 0 && IsInPhase && AbilityOwner.IsVisible) { StartCast = Game.RawGameTime; EndCast = StartCast + CastPoint + GetCastRange() / GetProjectileSpeed(); } else if (StartCast > 0 && Obstacle == null && CanBeStopped() && !AbilityOwner.IsTurning()) { var tree = ChainTreePosition(AbilityOwner.InFront(GetCastRange())); if (tree == null) { return; } StartPosition = AbilityOwner.NetworkPosition; EndPosition = tree.Position; AdditionalDelay = EndPosition.Distance2D(StartPosition) / GetProjectileSpeed(); EndCast = StartCast + CastPoint + AdditionalDelay * 2; Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), GetEndRadius(), Obstacle); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } else if (Obstacle != null && !CanBeStopped()) { Pathfinder.UpdateObstacle(Obstacle.Value, GetProjectilePosition(), GetRadius(), GetEndRadius()); } }
public override void Check() { if (fowCast && Obstacle == null) { if (!IsAbilityUnitValid() || !abilityUnit.IsVisible) { return; } var position = StartPosition.Extend(abilityUnit.Position.SetZ(350), GetShipRange()); if (position.Distance2D(StartPosition) < 50) { return; } StartPosition = position.SetZ(350); Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); } else if (StartCast <= 0 && IsInPhase && AbilityOwner.IsVisible) { StartCast = Game.RawGameTime; EndCast = StartCast + CastPoint + GetDelay(); } else if (StartCast > 0 && Obstacle == null && CanBeStopped() && !AbilityOwner.IsTurning()) { StartPosition = AbilityOwner.InFront(castRange); Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } }
public override void Check() { if (StartCast <= 0 && IsInPhase && AbilityOwner.IsVisible) { StartCast = Game.RawGameTime; EndCast = StartCast + CastPoint + GetCastRange() / GetProjectileSpeed(); } else if (StartCast > 0 && Obstacle == null && CanBeStopped() && !AbilityOwner.IsTurning()) { StartPosition = AbilityOwner.NetworkPosition; EndPosition = AbilityOwner.InFront(GetCastRange() + GetRadius() / 2); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); } else if (Obstacle == null && particleEffect != null && !particleAdded) { particleAdded = true; StartPosition = particleEffect.GetControlPoint(0); EndPosition = StartPosition.Extend(particleEffect.GetControlPoint(1), GetCastRange() + GetRadius() / 2); StartCast = Game.RawGameTime; EndCast = StartCast + GetCastRange() / GetProjectileSpeed(); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } else if (Obstacle != null && !CanBeStopped()) { Pathfinder.UpdateObstacle(Obstacle.Value, GetProjectilePosition(), GetRadius(), GetEndRadius()); } }
public override void Check() { if (particleAdded && !AbilityOwner.IsTurning()) { StartPosition = AbilityOwner.NetworkPosition; EndPosition = AbilityOwner.InFront(GetCastRange()); EndCast = StartCast + channelTime + GetCastRange() / GetProjectileSpeed(); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); particleAdded = false; } else if (Obstacle != null && !Ability.IsChanneling && !channelFix) { var time = Game.RawGameTime; channelFix = true; channelingTime = time - StartCast; EndCast = time + GetCastRange() / GetProjectileSpeed(); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } else if (Obstacle != null && !Ability.IsChanneling) { Pathfinder.UpdateObstacle(Obstacle.Value, GetProjectilePosition(), EndPosition); } }
public override void Check() { if (StartCast > 0 && Obstacle != null && Game.RawGameTime > EndCast) { End(); } else if (Obstacle == null && IsAbilityUnitValid() && abilityUnit.IsVisible) { var unitPosition = abilityUnit.Position; if (unitPosition == StartPosition) { return; } EndPosition = StartPosition.Extend(abilityUnit.Position, GetCastRange()); if (Math.Abs(EndPosition.Distance2D(StartPosition) - GetCastRange()) > 50) { return; } Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); } else if (Obstacle != null) { Pathfinder.UpdateObstacle(Obstacle.Value, GetProjectilePosition(), GetRadius()); } }
public void AddParticle(ParticleEffectAddedEventArgs particleArgs) { var caster = particleArgs.Name.Contains("caster"); tempTime = Game.RawGameTime; DelayAction.Add( 1, () => { if (caster) { StartPosition = particleArgs.ParticleEffect.GetControlPoint(0); } else { StartCast = tempTime; EndPosition = StartPosition.Extend( particleArgs.ParticleEffect.GetControlPoint(1), GetCastRange()); EndCast = StartCast + GetCastRange() / GetProjectileSpeed(); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); } }); }
public override void Check() { if (StartCast <= 0 && IsInPhase && AbilityOwner.IsVisible) { StartCast = Game.RawGameTime; EndCast = StartCast + CastPoint + GetCastRange() / GetProjectileSpeed(); StartPosition = AbilityOwner.NetworkPosition; EndPosition = AbilityOwner.InFront(GetCastRange()); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); } else if (ProjectileTarget != null && Obstacle == null && !FowCast) { FowCast = true; StartCast = Game.RawGameTime; EndCast = StartCast + GetCastRange() / GetProjectileSpeed(); StartPosition = AbilityOwner.NetworkPosition; EndPosition = StartPosition.Extend(ProjectileTarget.Position, GetCastRange()); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } else if (Obstacle != null) { if (!ProjectileLaunched()) { EndPosition = AbilityOwner.InFront(GetCastRange()); Pathfinder.UpdateObstacle(Obstacle.Value, StartPosition, EndPosition); AbilityDrawer.UpdateRectanglePosition(StartPosition, EndPosition, GetRadius()); } else if (ProjectileTarget != null) { var projectilePosition = GetProjectilePosition(FowCast); if (projectilePosition == lastProjectilePosition) { End(); return; } lastProjectilePosition = projectilePosition; AbilityDrawer.Dispose(AbilityDrawer.Type.Rectangle); EndCast = Game.RawGameTime + (ProjectileTarget.Distance2D(projectilePosition) - 20) / GetProjectileSpeed(); if (!obstacleToAOE) { Obstacle = Pathfinder.AddObstacle(ProjectileTarget.Position, jumpRadius, Obstacle); obstacleToAOE = true; } else { Pathfinder.UpdateObstacle(Obstacle.Value, ProjectileTarget.Position, jumpRadius); } } } }
public void AddModifierObstacle(Modifier modifier, Unit unit) { DelayAction.Add( 5, () => { StartPosition = unit.Position; EndCast = StartCast + (channelTime - modifier.ElapsedTime) + StartPosition.Distance2D(initialPosition) / speed; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); }); }
public void FindPath_Obstacle() { // arrange Pathfinder pathfinder = new Pathfinder(3, 3); pathfinder.AddObstacle(new Int2(1, 1)); // act List <Int2> path = pathfinder.FindPath(new Int2(0, 0), new Int2(2, 2)); // assert Assert.Equal(3, path.Count); }
public void AddModifierObstacle(Modifier mod, Unit unit) { StartCast = Game.RawGameTime; DelayAction.Add( 1, () => { StartPosition = unit.Position; EndCast = StartCast + AdditionalDelay; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); }); }
public void AddParticle(ParticleEffectAddedEventArgs particleArgs) { StartCast = Game.RawGameTime; DelayAction.Add( 1, () => { StartPosition = particleArgs.ParticleEffect.GetControlPoint(0).SetZ(AbilityOwner.Position.Z); EndCast = StartCast + duration; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); }); }
public void AddModifierObstacle(Modifier modifier, Unit unit) { if (!AbilityOwner.IsVisible) { return; } StartCast = Game.RawGameTime; EndCast = StartCast + AdditionalDelay; StartPosition = unit.Position; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); }
public void AddUnit(Unit unit) { if (!AbilityOwner.IsVisible || unit.Name != "npc_dota_plasma_field") { return; } StartCast = Game.RawGameTime; EndCast = StartCast + GetRadius() / projectileSpeed; StartPosition = unit.Position; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); }
public void AddParticle(ParticleEffectAddedEventArgs particleArgs) { if (Obstacle != null || !AbilityOwner.IsVisible) { return; } StartCast = Game.RawGameTime; StartPosition = AbilityOwner.NetworkPosition; EndCast = StartCast + tavelTime; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); }
public void AddParticle(ParticleEffectAddedEventArgs particleArgs) { StartCast = Game.RawGameTime; DelayAction.Add( 1, () => { StartPosition = particleArgs.ParticleEffect.GetControlPoint(1); EndCast = StartCast + AdditionalDelay; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); }); }
public void AddParticle(ParticleEffectAddedEventArgs particleArgs) { if (Obstacle != null || !AbilityOwner.IsVisible) { return; } StartCast = Game.RawGameTime; StartPosition = AbilityOwner.NetworkPosition; EndPosition = AbilityOwner.InFront(GetCastRange()); EndCast = StartCast + GetCastRange() / GetProjectileSpeed(); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); }
public override void Check() { if (IsAbilityUnitValid()) { StartPosition = abilityUnit.Position; } else if (flies && Obstacle == null) { StartPosition = StartPosition.Extend(initialPosition, -115); Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); EndCast = Game.RawGameTime; } }
public void AddParticle(ParticleEffectAddedEventArgs particleArgs) { StartCast = Game.RawGameTime; DelayAction.Add( 1, () => { startPosition = particleArgs.ParticleEffect.GetControlPoint(0); endPosition = particleArgs.ParticleEffect.GetControlPoint(1); heroPosition = startPosition; Obstacle = Pathfinder.AddObstacle(startPosition, 200, Obstacle, 256); EndCast = StartCast + GetRemainingTime(); }); }
public override void Check() { if (StartCast <= 0 && TimeSinceCast() < 0.1 && AbilityOwner.IsVisible) { StartCast = Game.RawGameTime; StartPosition = AbilityOwner.NetworkPosition; EndCast = StartCast + CastPoint + AdditionalDelay; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } }
public override void Check() { if (StartCast <= 0 && IsInPhase && AbilityOwner.IsVisible) { StartCast = Game.RawGameTime; StartPosition = AbilityOwner.NetworkPosition; EndCast = StartCast + CastPoint; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); } else if (StartCast > 0 && Game.RawGameTime > EndCast && !Ability.IsChanneling) { End(); } }
public override void Check() { if (StartCast <= 0 && IsInPhase && AbilityOwner.IsVisible) { StartCast = Game.RawGameTime; StartPosition = AbilityOwner.InFront(Ability.GetCastRange()); EndCast = StartCast + CastPoint; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } }
public void AddParticle(ParticleEffectAddedEventArgs particleArgs) { if (Obstacle != null || !AbilityOwner.IsVisible) { return; } StartCast = Game.RawGameTime; StartPosition = AbilityOwner.NetworkPosition; EndPosition = StartPosition + (Vector3)(VectorExtensions.FromPolarAngle(AbilityOwner.RotationRad) * GetCastRange()); EndCast = StartCast + GetCastRange() / GetProjectileSpeed(); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); }
public void AddParticle(ParticleEffectAddedEventArgs particleArgs) { StartCast = Game.RawGameTime; DelayAction.Add( 1, () => { var start = particleArgs.ParticleEffect.GetControlPoint(0); var end = particleArgs.ParticleEffect.GetControlPoint(1); var distance = start.Distance2D(end); StartPosition = start; EndPosition = start.Extend(end, distance); EndCast = StartCast + distance / GetProjectileSpeed(); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); }); }
public override void Check() { if (StartCast <= 0 && TimeSinceCast() < 0.1 && AbilityOwner.IsVisible) { StartCast = Game.RawGameTime; StartPosition = AbilityOwner.InFront(-GetRadius() * 0.9f); EndPosition = AbilityOwner.InFront(GetCastRange()); EndCast = StartCast + AdditionalDelay; Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } }
public void AddParticle(ParticleEffectAddedEventArgs particleArgs) { StartCast = Game.RawGameTime + AdditionalDelay; DelayAction.Add( 1, () => { var cp0 = particleArgs.ParticleEffect.GetControlPoint(0).SetZ(350); var cp1 = particleArgs.ParticleEffect.GetControlPoint(1).SetZ(350); StartPosition = cp1.Extend(cp0, GetRadius() / 2); EndPosition = cp0.Extend(StartPosition, GetCastRange() + cp0.Distance2D(cp1)); EndCast = StartCast + AdditionalDelay + GetCastRange() / GetProjectileSpeed() - 0.5f; Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); }); }
public void AddParticle(ParticleEffectAddedEventArgs particleArgs) { StartCast = Game.RawGameTime; DelayAction.Add( 1, () => { StartPosition = particleArgs.ParticleEffect.GetControlPoint(0); EndPosition = StartPosition.Extend( StartPosition + particleArgs.ParticleEffect.GetControlPoint(1), GetCastRange()); EndCast = StartCast + StartPosition.Distance2D(EndPosition) / GetProjectileSpeed(); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); }); }
public void AddModifierObstacle(Modifier modifier, Unit unit) { StartPosition = unit.Position; if (!ObjectManager.GetEntities <Creep>() .Any( x => x.IsValid && x.Distance2D(StartPosition) < GetRadius() - 25 && x.Team == HeroTeam && x.IsAlive && x.IsSpawned)) { return; } StartCast = Game.RawGameTime; EndCast = StartCast + AdditionalDelay; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); }
public override void Check() { if (StartCast <= 0 && !attackSleeper.Sleeping && kunkka.IsAttacking() && Ability.CanBeCasted() && AbilityOwner.IsVisible) { StartCast = Game.RawGameTime; StartPosition = AbilityOwner.InFront(GetRadius()); EndCast = StartCast + (float)UnitDatabase.GetAttackPoint(kunkka); Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); attackSleeper.Sleep(kunkka.AttacksPerSecond * 1000); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } }
public override void Check() { var time = Game.RawGameTime; if (IsInPhase && StartCast + CastPoint <= time) { StartCast = time; StartPosition = AbilityOwner.NetworkPosition; EndCast = StartCast + CastPoint + tavelTime; Obstacle = Pathfinder.AddObstacle(StartPosition, GetRadius(), Obstacle); } else if (StartCast > 0 && time > EndCast) { End(); } }
public override void Check() { if (ProjectileTarget != null && Obstacle == null && !FowCast) { FowCast = true; StartCast = Game.RawGameTime; EndCast = StartCast + GetCastRange() / GetProjectileSpeed(); StartPosition = AbilityOwner.NetworkPosition; EndPosition = StartPosition.Extend(ProjectileTarget.Position, GetCastRange()); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } else if (Obstacle != null) { if (!ProjectileLaunched()) { EndPosition = AbilityOwner.InFront(GetCastRange()); Pathfinder.UpdateObstacle(Obstacle.Value, StartPosition, EndPosition); AbilityDrawer.UpdateRectaglePosition(StartPosition, EndPosition, GetRadius()); } else if (ProjectileTarget != null) { var projectilePosition = GetProjectilePosition(FowCast); if (projectilePosition == LastProjectilePosition) { End(); return; } LastProjectilePosition = projectilePosition; AbilityDrawer.Dispose(AbilityDrawer.Type.Rectangle); // EndCast = Game.RawGameTime + GetProjectilePosition(fowCast).Distance2D(projectileTarget) / GetProjectileSpeed(); EndPosition = StartPosition.Extend( ProjectileTarget.Position, ProjectileTarget.Distance2D(StartPosition) + GetRadius()); Pathfinder.UpdateObstacle( Obstacle.Value, ProjectileTarget.NetworkPosition.Extend(StartPosition, GetRadius()), ProjectileTarget.NetworkPosition.Extend(EndPosition, GetRadius())); } } }