Esempio n. 1
0
        /*
         * 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);
        }
Esempio n. 2
0
 public uint?AddObstacle(Vector3 position, float radius, uint?obstacle = null)
 {
     if (obstacle.HasValue)
     {
         RemoveObstacle(obstacle.Value);
     }
     return(Pathfinding.AddObstacle(position.SetZ(StaticZ), radius));
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        /*
         * 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);
        }
Esempio n. 7
0
        /*
         * 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);
        }
Esempio n. 8
0
        /*
         * 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);
        }
Esempio n. 9
0
        /*
         * 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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        /*
         * 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);
        }
Esempio n. 12
0
        /*
         * 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);
        }
Esempio n. 13
0
        /*
         * 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);
        }
Esempio n. 14
0
        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;
                }
            };
        }