Exemple #1
0
        private static void SpellMissile_ZedShadowDash(GameObject obj, EventArgs args)
        {
            if (obj.GetType() != typeof(MissileClient) || !((MissileClient)obj).IsValidMissile())
            {
                return;
            }

            MissileClient missile = (MissileClient)obj;

            if (missile.SpellCaster.IsEnemy && missile.SData.Name == "ZedWMissile")
            {
                if (!ObjectTracker.ObjTracker.ContainsKey(obj.NetworkId))
                {
                    ObjectTrackerInfo info = new ObjectTrackerInfo(obj);
                    info.Name           = "Shadow";
                    info.OwnerNetworkId = missile.SpellCaster.NetworkId;
                    info.UsePosition    = true;
                    info.Position       = missile.EndPosition;

                    ObjectTracker.ObjTracker.Add(obj.NetworkId, info);

                    DelayAction.Add(1000, () => ObjectTracker.ObjTracker.Remove(obj.NetworkId));
                }
            }
        }
Exemple #2
0
        private static void SpellMissile_ZedShadowDash(GameObject obj)
        {
            if (!obj.IsValid && obj.Type == GameObjectType.MissileClient)
            {
                return;
            }

            var missile = (MissileClient)obj;

            if (missile.SpellCaster.IsEnemy && missile.SpellData.Name == "ZedWMissile")
            {
                if (!ObjectTracker.objTracker.ContainsKey(obj.NetworkId))
                {
                    var info = new ObjectTrackerInfo(obj);
                    info.Name           = "Shadow";
                    info.OwnerNetworkID = missile.SpellCaster.NetworkId;
                    info.usePosition    = true;
                    info.position       = missile.EndPosition;

                    ObjectTracker.objTracker.Add(obj.NetworkId, info);

                    DelayAction.Add(1000, () => ObjectTracker.objTracker.Remove(obj.NetworkId));
                }
            }
        }
Exemple #3
0
        private static void OnCreateObj_jayceshockblast(GameObject obj, EventArgs args, Obj_AI_Hero hero, SpellData spellData)
        {
            if (obj.Type == GameObjectType.obj_GeneralParticleEmitter && obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_end") && obj.Name.Contains("RED"))
            {
                foreach (var tracker in ObjectTracker.ObjTracker)
                {
                    var gateObj = tracker.Value;

                    if (gateObj.Name == "AccelGate")
                    {
                        DelayAction.Add(0, () => ObjectTracker.ObjTracker.Remove(tracker.Key));
                    }
                }
            }

            if (obj.Type == GameObjectType.obj_GeneralParticleEmitter && obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_start") && obj.Name.Contains("RED"))
            {
                //var particle = obj as Obj_GeneralParticleEmitter;

                /*var dir = obj.Orientation.To2D();
                 * var pos1 = obj.Position.To2D() - dir * 470;
                 * var pos2 = obj.Position.To2D() + dir * 470;
                 *
                 * //Draw.RenderObjects.Add(new Draw.RenderLine(pos1, pos2, 3500));
                 * Draw.RenderObjects.Add(new Draw.RenderCircle(pos1, 3500));*/

                var gateTracker = new ObjectTrackerInfo(obj, "AccelGate");
                //gateTracker.Orientation = dir.To3D();

                ObjectTracker.ObjTracker.Add(obj.NetworkId, gateTracker);

                foreach (var entry in SpellDetector.Spells) //check currently moving skillshot
                {
                    var spell = entry.Value;

                    if (spell.Info.SpellName == "JayceShockBlast")
                    {
                        var tHero = spell.HeroId;

                        Vector2 int1, int2;
                        var     intersection = MathUtils.FindLineCircleIntersections(obj.Position.To2D(), 470, spell.StartPos, spell.EndPos, out int1, out int2);
                        var     projection   = obj.Position.To2D().ProjectOn(spell.StartPos, spell.EndPos);

                        //var intersection = spell.startPos.Intersection(spell.endPos, pos1, pos2);
                        //var projection = intersection.Point.ProjectOn(spell.startPos, spell.endPos);

                        //if (intersection.Intersects && projection.IsOnSegment)
                        if (intersection > 0 && projection.IsOnSegment)
                        {
                            SpellDetector.CreateSpellData(hero, projection.SegmentPoint.To3D(), spell.EndPos.To3D(), spellData, spell.SpellObject);

                            DelayAction.Add(1, () => SpellDetector.DeleteSpell(entry.Key));
                            break;
                        }
                    }
                }

                //SpellDetector.CreateSpellData(hero, pos1.To3D(), pos2.To3D(), spellData, null, 0);
            }
        }
Exemple #4
0
        public void LoadSpecialSpell(SpellData spellData)
        {
            if (spellData.SpellName == "AzirQWrapper")
            {
                var hero = GameObjects.Heroes.FirstOrDefault(h => h.ChampionName == "Azir");
                if (hero == null || !hero.CheckTeam())
                {
                    return;
                }

                var info = new ObjectTrackerInfo(hero)
                {
                    Name = "AzirQSoldier", OwnerNetworkId = hero.NetworkId
                };

                ObjectTracker.ObjTracker.Add(hero.NetworkId, info);
                GameObject.OnCreate  += OnCreateObj_AzirSoldier;
                GameObject.OnDestroy += OnDeleteObj_AzirSoldier;
                SpellDetector.OnProcessSpecialSpell += ProcessSpell_AzirSoldier;
            }
        }
Exemple #5
0
        public void LoadSpecialSpell(SpellData spellData)
        {
            if (spellData.SpellName == "OrianaIzunaCommand")
            {
                var hero = GameObjects.Heroes.FirstOrDefault(h => h.ChampionName == "Orianna");
                if (hero != null && hero.CheckTeam())
                {
                    var info = new ObjectTrackerInfo(hero)
                    {
                        Name = "TheDoomBall", OwnerNetworkId = hero.NetworkId
                    };

                    ObjectTracker.ObjTracker.Add(hero.NetworkId, info);

                    GameObject.OnCreate += obj => OnCreateObj_OrianaIzunaCommand(obj, hero);
                    //Obj_AI_Minion.OnDelete += (obj, args) => OnDeleteObj_OrianaIzunaCommand(obj, args, hero);
                    Obj_AI_Base.OnProcessSpellCast      += ProcessSpell_OrianaRedactCommand;
                    SpellDetector.OnProcessSpecialSpell += ProcessSpell_OrianaIzunaCommand;
                    BuffManager.OnAddBuff += Obj_AI_Base_OnBuffAdd;
                }
            }
        }
Exemple #6
0
        private static void OnCreateObj_jayceshockblast(GameObject obj, EventArgs args, AIHeroClient hero, SpellData spellData)
        {
            return;

            if (obj.IsEnemy && obj.Type == GameObjectType.obj_GeneralParticleEmitter
                && obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_start"))
            {
                var dir = ObjectTracker.GetLastHiuOrientation();
                var pos1 = obj.Position.To2D() - dir * 470;
                var pos2 = obj.Position.To2D() + dir * 470;

                var gateTracker = new ObjectTrackerInfo(obj, "AccelGate");
                gateTracker.direction = dir.To3D();

                ObjectTracker.objTracker.Add(obj.NetworkId, gateTracker);

                foreach (var entry in SpellDetector.spells)
                {
                    var spell = entry.Value;

                    if (spell.info.spellName == "jayceshockblast")
                    {
                        var tHero = spell.heroID;

                        var intersection = spell.startPos.Intersection(spell.endPos, pos1, pos2);
                        var projection = intersection.Point.ProjectOn(spell.startPos, spell.endPos);

                        if (intersection.Intersects && projection.IsOnSegment)
                        {
                            SpellDetector.CreateSpellData(hero, intersection.Point.To3D(), spell.endPos.To3D(), spellData, spell.spellObject);

                            DelayAction.Add(1, () => SpellDetector.DeleteSpell(entry.Key));
                        }
                    }
                }

                //SpellDetector.CreateSpellData(hero, pos1.To3D(), pos2.To3D(), spellData, null, 0);                               
            }
        }
Exemple #7
0
        public void LoadSpecialSpell(SpellData spellData)
        {
            if (spellData.spellName == "OrianaIzunaCommand")
            {
                Obj_AI_Hero hero = HeroManager.Enemies.FirstOrDefault(h => h.ChampionName == "Orianna");
                if (hero == null)
                {
                    return;
                }

                ObjectTrackerInfo info = new ObjectTrackerInfo(hero);
                info.Name = "TheDoomBall";
                info.OwnerNetworkID = hero.NetworkId;

                ObjectTracker.objTracker.Add(hero.NetworkId, info);

                Obj_AI_Minion.OnCreate += (obj, args) => OnCreateObj_OrianaIzunaCommand(obj, args, hero);
                //Obj_AI_Minion.OnDelete += (obj, args) => OnDeleteObj_OrianaIzunaCommand(obj, args, hero);
                Obj_AI_Hero.OnProcessSpellCast += ProcessSpell_OrianaRedactCommand;
                SpellDetector.OnProcessSpecialSpell += ProcessSpell_OrianaIzunaCommand;
            }
        }
Exemple #8
0
        public void LoadSpecialSpell(SpellData spellData)
        {
            if (spellData.SpellName == "OrianaIzunaCommand")
            {
                AIHeroClient hero = EntityManager.Heroes.Enemies.FirstOrDefault(h => h.ChampionName == "Orianna");
                if (hero == null)
                {
                    return;
                }

                ObjectTrackerInfo info = new ObjectTrackerInfo(hero);
                info.Name           = "TheDoomBall";
                info.OwnerNetworkId = hero.NetworkId;

                ObjectTracker.ObjTracker.Add(hero.NetworkId, info);

                GameObject.OnCreate += (obj, args) => OnCreateObj_OrianaIzunaCommand(obj, args, hero);
                //Obj_AI_Minion.OnDelete += (obj, args) => OnDeleteObj_OrianaIzunaCommand(obj, args, hero);
                Obj_AI_Base.OnProcessSpellCast      += ProcessSpell_OrianaRedactCommand;
                SpellDetector.OnProcessSpecialSpell += ProcessSpell_OrianaIzunaCommand;
            }
        }
Exemple #9
0
        private static void OnCreateObj_jayceshockblast(GameObject obj, EventArgs args, AIHeroClient hero, SpellData spellData)
        {
            return;

            if (obj.IsEnemy && obj.Type == GameObjectType.obj_GeneralParticleEmitter &&
                obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_start"))
            {
                var dir  = ObjectTracker.GetLastHiuOrientation();
                var pos1 = obj.Position.To2D() - dir * 470;
                var pos2 = obj.Position.To2D() + dir * 470;

                var gateTracker = new ObjectTrackerInfo(obj, "AccelGate");
                gateTracker.direction = dir.To3D();

                ObjectTracker.objTracker.Add(obj.NetworkId, gateTracker);

                foreach (var entry in SpellDetector.spells)
                {
                    var spell = entry.Value;

                    if (spell.info.spellName == "jayceshockblast")
                    {
                        var tHero = spell.heroID;

                        var intersection = spell.startPos.Intersection(spell.endPos, pos1, pos2);
                        var projection   = intersection.Point.ProjectOn(spell.startPos, spell.endPos);

                        if (intersection.Intersects && projection.IsOnSegment)
                        {
                            SpellDetector.CreateSpellData(hero, intersection.Point.To3D(), spell.endPos.To3D(), spellData, spell.spellObject);

                            DelayAction.Add(1, () => SpellDetector.DeleteSpell(entry.Key));
                        }
                    }
                }

                //SpellDetector.CreateSpellData(hero, pos1.To3D(), pos2.To3D(), spellData, null, 0);
            }
        }
Exemple #10
0
        public void LoadSpecialSpell(SpellData spellData)
        {
            if (spellData.spellName == "AzirQWrapper")
            {
                var hero = HeroManager.Enemies.FirstOrDefault(h => h.ChampionName == "Azir");
                if (hero == null)
                {
                    return;
                }

                var info = new ObjectTrackerInfo(hero)
                {
                    Name           = "AzirQSoldier",
                    OwnerNetworkID = hero.NetworkId
                };

                ObjectTracker.objTracker.Add(hero.NetworkId, info);
                GameObject.OnCreate += (obj, args) => OnCreateObj_AzirSoldier(obj, args, hero);
                GameObject.OnDelete += (obj, args) => OnDeleteObj_AzirSoldier(obj, args, hero);
                SpellDetector.OnProcessSpecialSpell += ProcessSpell_AzirSoldier;
            }
        }
Exemple #11
0
        private static void SpellMissile_ZedShadowDash(GameObject obj, EventArgs args)
        {
            if (obj.GetType() != typeof(MissileClient) || !((MissileClient) obj).IsValidMissile())
                return;

            MissileClient missile = (MissileClient)obj;

            if (missile.SpellCaster.IsEnemy && missile.SData.Name == "ZedWMissile")
            {
                if (!ObjectTracker.ObjTracker.ContainsKey(obj.NetworkId))
                {
                    ObjectTrackerInfo info = new ObjectTrackerInfo(obj);
                    info.Name = "Shadow";
                    info.OwnerNetworkId = missile.SpellCaster.NetworkId;
                    info.UsePosition = true;
                    info.Position = missile.EndPosition;

                    ObjectTracker.ObjTracker.Add(obj.NetworkId, info);

                    DelayAction.Add(1000, () => ObjectTracker.ObjTracker.Remove(obj.NetworkId));
                }
            }
        }
Exemple #12
0
        private static void OnCreateObj_jayceshockblast(GameObject obj, EventArgs args, Obj_AI_Hero hero, SpellData spellData)
        {
            if (obj.Type == GameObjectType.obj_GeneralParticleEmitter
                && obj.Name.Contains("Jayce")
                && obj.Name.Contains("accel_gate_end")
                && obj.Name.Contains("RED"))
            {
                foreach (var tracker in ObjectTracker.objTracker)
                {
                    var gateObj = tracker.Value;

                    if (gateObj.Name == "AccelGate")
                    {
                        DelayAction.Add(0, () => ObjectTracker.objTracker.Remove(tracker.Key));
                    }
                }
            }

            if (obj.Type == GameObjectType.obj_GeneralParticleEmitter
                && obj.Name.Contains("Jayce")
                && obj.Name.Contains("accel_gate_start")
                && obj.Name.Contains("RED"))
            {
                //var particle = obj as Obj_GeneralParticleEmitter;                

                /*var dir = obj.Orientation.To2D();
                var pos1 = obj.Position.To2D() - dir * 470;
                var pos2 = obj.Position.To2D() + dir * 470;

                //Draw.RenderObjects.Add(new Draw.RenderLine(pos1, pos2, 3500));
                Draw.RenderObjects.Add(new Draw.RenderCircle(pos1, 3500));*/

                var gateTracker = new ObjectTrackerInfo(obj, "AccelGate");
                //gateTracker.direction = dir.To3D();

                ObjectTracker.objTracker.Add(obj.NetworkId, gateTracker);

                foreach (var entry in SpellDetector.spells) //check currently moving skillshot
                {
                    var spell = entry.Value;

                    if (spell.info.spellName == "jayceshockblast")
                    {
                        var tHero = spell.heroID;

                        Vector2 int1, int2;
                        var intersection =
                            MathUtils.FindLineCircleIntersections(obj.Position.To2D(), 470, spell.startPos, spell.endPos,
                            out int1, out int2);
                        var projection = obj.Position.To2D().ProjectOn(spell.startPos, spell.endPos);

                        //var intersection = spell.startPos.Intersection(spell.endPos, pos1, pos2);
                        //var projection = intersection.Point.ProjectOn(spell.startPos, spell.endPos);

                        //if (intersection.Intersects && projection.IsOnSegment)
                        if (intersection > 0 && projection.IsOnSegment)
                        {
                            SpellDetector.CreateSpellData(hero, projection.SegmentPoint.To3D(), spell.endPos.To3D(), 
                                spellData, spell.spellObject);
                            
                            DelayAction.Add(1, () => SpellDetector.DeleteSpell(entry.Key));
                            break;
                        }
                    }
                }

                //SpellDetector.CreateSpellData(hero, pos1.To3D(), pos2.To3D(), spellData, null, 0);     
            }

        }