/* * Control Points * 0 == StartPosition * 3 == CurrentPosition */ public ObstacleParticleCarrionSwarm(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_DeathProphet_CarrionSwarm); Radius = ability?.GetRadius(ability.Name) ?? 300; var special = ability?.AbilitySpecialData.FirstOrDefault(x => x.Name == "start_radius"); if (special != null) { _startRadius = special.Value; } var special1 = ability?.AbilitySpecialData.FirstOrDefault(x => x.Name == "range"); var special2 = ability?.AbilitySpecialData.FirstOrDefault(x => x.Name == "speed"); if (special1 != null && special2 != null) { _range = special1.Value + Radius + _startRadius; _speed = special2.Value; _delay = _range / _speed; } ID = pathfinding.AddObstacle(Position, EndPosition, Radius); Debugging.WriteLine("Adding CarionSwarm particle: {0} - {1}", Radius, _delay); }
public uint?AddObstacle(Vector3 position, float radius, uint?obstacle = null) { if (obstacle.HasValue) { RemoveObstacle(obstacle.Value); } return(Pathfinding.AddObstacle(position.SetZ(StaticZ), radius)); }
public ObstacleParticlePowershot(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_Windrunner_Powershot); Radius = ability?.GetRadius(ability.Name) ?? 125; ID = pathfinding.AddObstacle(Position, EndPosition, Radius); Debugging.WriteLine("Adding Powershot particle: {0}", Radius); }
public ObstacleParticleIceBlast(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_AncientApparition_IceBlast); Radius = ability?.GetRadius(ability.Name) ?? 600; ID = pathfinding.AddObstacle(Position, Radius); Debugging.WriteLine("Adding IceBlast particle: {0}", Radius); }
public ObstacleParticleFireSpirit(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_Phoenix_LaunchFireSpirit); Radius = ability?.GetRadius(ability.Name) ?? 175; ID = pathfinding.AddObstacle(Position, Radius); Debugging.WriteLine("Adding FireSpirit particle: {0}", Radius); }
/* * 0 == position * 1 == radius * 3 == some other position nearby */ public ObstacleParticleChakram(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_Shredder_Chakram); Radius = ability?.GetRadius(ability.Name) ?? 675; ID = pathfinding.AddObstacle(Position, Radius); Debugging.WriteLine("Adding Chakram particle: {0}", Radius); }
/* * 0 == position */ public ObstacleParticleEchoStomp(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.Name == "elder_titan_echo_stomp"); Radius = ability?.GetRadius(ability.Name) ?? 500; _delay = 1.6f; _delay = ability?.AbilitySpecialData.FirstOrDefault(x => x.Name == "cast_time")?.Value ?? 1.6f; ID = pathfinding.AddObstacle(Position, Radius); Debugging.WriteLine("Adding EchoStomp particle: {0}", Radius); }
/* * 0 == position */ public ObstacleParticleBloodRitual(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_Bloodseeker_Bloodbath); Radius = ability?.GetRadius(ability.Name) ?? 600; _delay = 2.6f; _delay = ability?.AbilitySpecialData.FirstOrDefault(x => x.Name == "delay")?.Value ?? 2.6f; ID = pathfinding.AddObstacle(Position, Radius); Debugging.WriteLine("Adding BloodRitual particle: {0}", Radius); }
/* * Control Points * 0 == StartPosition * 1 == EndPosition * 2 == Speed in X */ public ObstacleParticleTimberChain(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_Shredder_TimberChain); Radius = ability?.GetRadius(ability.Name) + 8 ?? 98; if (ability != null && ability.Level > 0) { _range = ability.GetRange(ability.Level - 1) + Radius; } ID = pathfinding.AddObstacle(Position, EndPosition, Radius); Debugging.WriteLine("Adding TimberChain particle: {0} - {1}", Radius, _range); }
public ObstacleParticleEMP(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_Invoker_EMP); Radius = ability?.GetRadius(ability.Name) ?? 675; _delay = 2.9f; _delay = ability?.AbilitySpecialData.FirstOrDefault(x => x.Name == "delay")?.Value ?? 2.9f; ID = pathfinding.AddObstacle(Position, Radius); Debugging.WriteLine("Adding EMP particle: {0} {1}", Radius, _delay); }
/* * 0 == StartPosition * 1 == EndPosition * 3 == CurrenPosition */ public ObstacleParticleCallDown(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect, bool first) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_Gyrocopter_Call_Down); Radius = ability?.GetRadius(ability.Name) ?? 600; if (first) { _delay = 2.0f; _delay = ability?.AbilitySpecialData.FirstOrDefault(x => x.Name == "slow_duration_first")?.Value ?? 2.0f; } else { _delay = 4.0f; _delay = ability?.AbilitySpecialData.FirstOrDefault(x => x.Name == "slow_duration_second")?.Value ?? 4.0f; } ID = pathfinding.AddObstacle(Position, Radius); Debugging.WriteLine("Adding CallDown particle: {0}", Radius); }
/* * Control Points * 0 == StartPosition * 1 == EndPosition */ public ObstacleParticleHook(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_Pudge_MeatHook); Radius = ability?.GetRadius(ability.Name) + 8 ?? 108; if (ability != null && ability.Level > 0) { _range = ability.GetRange(ability.Level - 1) + Radius; } var special = ability?.AbilitySpecialData.FirstOrDefault(x => x.Name == "hook_speed"); if (special != null) { _speed = special.Value; } ID = pathfinding.AddObstacle(Position, EndPosition, Radius); Debugging.WriteLine("Adding Hook particle: {0} - {1}", Radius, _range); }
/* * Control Points * 0 == StartPosition * 1 == EndPosition */ public ObstacleParticleEarthSplitter(NavMeshPathfinding pathfinding, Entity owner, ParticleEffect particleEffect) : base(0, owner, particleEffect) { var ability = ObjectManager.GetEntities <Ability>() .FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Ability_Elder_Titan_EarthSplitter); Radius = ability?.GetRadius(ability.Name) ?? 300; if (ability != null && ability.Level > 0) { _range = ability.GetRange(ability.Level - 1) + Radius; } var special = ability?.AbilitySpecialData.FirstOrDefault(x => x.Name == "speed"); if (special != null) { _speed = special.Value; } _delay = _range / _speed; ID = pathfinding.AddObstacle(Position, EndPosition, Radius); Debugging.WriteLine("Adding EarthSplitter particle: {0} - {1}", Radius, _range); }
public Evade() { foreach (var unit in ObjectManager.GetEntities <Unit>().Where(x => x.IsAlive && !Equals(x, myHero) && x.NetworkPosition != Vector3.Zero)) { var id = pathfinding.AddObstacle(unit.NetworkPosition, unit.HullRadius); obstacleUnits.Add(unit, new ObstacleUnit(id, unit)); } orbwalker = new Orbwalker(myHero); Game.OnIngameUpdate += OnEvadePathUpdate; Game.OnIngameUpdate += OnParticleObstaclesUpdate; Unit.OnModifierAdded += OnObstacleModifierAdded; Unit.OnModifierRemoved += OnObstacleModifierRemoved; Entity.OnFloatPropertyChange += Entity_OnFloatPropertyChange; //Entity.OnBoolPropertyChange += Entity_OnBoolPropertyChange; Entity.OnInt32PropertyChange += Entity_OnInt32PropertyChange; //Entity.OnInt64PropertyChange += Entity_OnInt64PropertyChange; Entity.OnParticleEffectAdded += OnObstacleParticleAdded; Player.OnExecuteOrder += Player_OnExecuteOrder; ObjectManager.OnAddEntity += OnObstacleUnitAdded; ObjectManager.OnRemoveEntity += OnObstacleUnitRemoved; autoEvade = Program.Menu.IsAutoEvadeEnabled; Program.Menu.AutoEvadeChanged += (sender, args) => { autoEvade = args.Value; }; Program.Menu.EvadePressed += (sender, args) => { evadePressed = args.Value; }; Program.Menu.OrbwalkerPressed += (sender, args) => { orbwalkerPressed = args.Value; }; Program.Menu.EvadeMovePressed += (sender, args) => { evadeMovePressed = args.Value; }; // Debug if (Program.Menu.IsDebugDrawEnabled) { Drawing.OnDraw += Drawing_OnDebugDraw; } Program.Menu.DebugDrawChanged += (sender, args) => { if (args.Value) { Drawing.OnDraw += Drawing_OnDebugDraw; } else { Drawing.OnDraw -= Drawing_OnDebugDraw; } }; if (Program.Menu.IsDebugDrawMapEnabled) { Drawing.OnDraw += OnDebugDrawOnMap; } Program.Menu.DebugDrawMapChanged += (sender, args) => { if (args.Value) { Drawing.OnDraw += OnDebugDrawOnMap; } else { Drawing.OnDraw -= OnDebugDrawOnMap; } }; if (Program.Menu.IsBotAutoAttackEnabled) { Game.OnIngameUpdate += Game_OnBotAttackTick; } Program.Menu.BotAutoAttackChanged += (sender, args) => { if (args.Value) { Game.OnIngameUpdate += Game_OnBotAttackTick; } else { Game.OnIngameUpdate -= Game_OnBotAttackTick; } }; }