Exemplo n.º 1
0
        private void GameObject_OnDelete(GameObject sender, EventArgs args)
        {
            if (sender.GetType() == typeof(Obj_GeneralParticleEmitter))
            {
                var gameObject = (Obj_GeneralParticleEmitter)sender;

                DetectedSpells.RemoveAll(o => (o.Object != null && o.Object.IdEquals(gameObject)) || (o.Sender != null && o.Sender.IdEquals(gameObject)));
            }
        }
Exemplo n.º 2
0
        private void Game_OnTick(EventArgs args)
        {
            if (!menu.CheckBoxValue("enable"))
            {
                return;
            }

            if (Core.GameTickCount - lastupdate > Utility.Load.FPSProtection)
            {
                foreach (var aiHeroClient in EntityManager.Heroes.AllHeroes)
                {
                    foreach (var spellInfo in EnabledSpells.Where(x => x?.SpellType == SpellType.Buff))
                    {
                        if (aiHeroClient.HasBuff(spellInfo.ObjectName) && !DetectedSpells.Any(x => x.Sender?.NetworkId == aiHeroClient.NetworkId && x.ObjectName == spellInfo.ObjectName))
                        {
                            var buff = aiHeroClient.Buffs?.FirstOrDefault(x => x.Name == spellInfo.ObjectName && x.IsActive && x.IsValid && ((AIHeroClient)x.Caster).ChampionName.Equals(spellInfo.ChampionName));
                            if (buff != null && aiHeroClient != null)
                            {
                                DetectedSpells.Add(new DetectedSpellInfo(spellInfo.SpellName, spellInfo.ChampionName, (int)(buff.EndTime - Game.Time), SpellType.Buff, spellInfo.ObjectName, buff.EndTime, aiHeroClient.NetworkId, aiHeroClient.Position, aiHeroClient, null));
                            }
                        }
                    }
                }

                foreach (var minion in ObjectManager.Get <Obj_AI_Minion>())
                {
                    foreach (var spellInfo in EnabledSpells.Where(x => x?.ObjectName == minion?.BaseSkinName && x?.SpellType == SpellType.Minion))
                    {
                        if (!DetectedSpells.Any(x => x.Sender?.NetworkId == minion?.NetworkId && x?.ObjectName == spellInfo?.ObjectName))
                        {
                            var info = EnabledSpells.FirstOrDefault(x => x?.ObjectName == minion?.BaseSkinName);
                            if (info != null && minion != null)
                            {
                                DetectedSpells.Add(new DetectedSpellInfo(spellInfo.SpellName, spellInfo.ChampionName, info.SpellTime, SpellType.Minion, spellInfo.ObjectName, Game.Time + info.SpellTime, minion.NetworkId, minion.Position, minion, null));
                            }
                        }
                    }
                }

                DetectedSpells.RemoveAll(x => x.EndTime - Game.Time <= 0);
                DetectedSpells.RemoveAll(x => x.SpellType == SpellType.Buff && (!x.Sender.HasBuff(x.ObjectName) || x.EndTime - Game.Time <= 0 || x.Sender.IsDead));
                DetectedSpells.RemoveAll(x => (x.SpellType.Equals(SpellType.Minion) || x.SpellType.Equals(SpellType.GameObject)) &&
                                         ((x.Sender != null && (x.Sender.IsDead || !x.Sender.IsValid) || x.Sender == null) || (x.Object != null && (x.Object.IsDead || !x.Object.IsValid) || x.Object == null)));

                lastupdate = Core.GameTickCount;
            }
        }