示例#1
0
        private void ObjAiBase_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!IsActive())
            {
                return;
            }

            var mode =
                InvisibleRevealerWard.GetMenuItem("SAssembliesWardsInvisibleRevealerMode")
                .GetValue <StringList>();

            if (sender.IsEnemy && sender.IsValid && !sender.IsDead)
            {
                if (args.SData.Name.ToLower().Contains("vayneinquisition"))
                {
                    _lastTimeVayne = Environment.TickCount + 6000 + 2000 * args.Level;
                }
                if (mode.SelectedIndex == 0 &&
                    InvisibleRevealerWard.GetMenuItem("SAssembliesWardsInvisibleRevealerKey").GetValue <KeyBind>().Active ||
                    mode.SelectedIndex == 1)
                {
                    if (_spellList.Exists(x => x.ToLower().Contains(args.SData.Name.ToLower())))
                    {
                        if (_lastTimeWarded == 0 || Environment.TickCount - _lastTimeWarded > 500)
                        {
                            SAssemblies.Ward.WardItem wardItem =
                                SAssemblies.Ward.WardItems.First(
                                    x =>
                                    Items.HasItem(x.Id) && Items.CanUseItem(x.Id) && (x.Type == SAssemblies.Ward.WardType.Vision || x.Type == SAssemblies.Ward.WardType.TempVision));
                            if (wardItem == null)
                            {
                                return;
                            }
                            if (sender.ServerPosition.Distance(ObjectManager.Player.ServerPosition) > wardItem.Range)
                            {
                                return;
                            }

                            InventorySlot invSlot =
                                ObjectManager.Player.InventoryItems.FirstOrDefault(
                                    slot => slot.Id == (ItemId)wardItem.Id);
                            if (invSlot == null)
                            {
                                return;
                            }

                            if (args.SData.Name.ToLower().Contains("vaynetumble") &&
                                Environment.TickCount >= _lastTimeVayne)
                            {
                                return;
                            }

                            ObjectManager.Player.Spellbook.CastSpell(invSlot.SpellSlot, args.End);
                            _lastTimeWarded = Environment.TickCount;
                        }
                    }
                }
            }
        }
示例#2
0
        private void Game_OnGameUpdate(object sender, EventArgs args)
        {
            if (!IsActive() || lastGameUpdateTime + new Random().Next(500, 1000) > Environment.TickCount)
            {
                return;
            }

            lastGameUpdateTime = Environment.TickCount;

            int time = Environment.TickCount;

            foreach (PlayerInfo playerInfo in _playerInfo.Where(x => x.Player.IsVisible))
            {
                playerInfo.LastSeen = time;
            }

            SAssemblies.Ward.WardItem ward = SAssemblies.Ward.GetWardItem();
            if (ward == null)
            {
                return;
            }

            if (BushRevealerWard.GetMenuItem("SAssembliesWardsBushRevealerKey").GetValue <KeyBind>().Active)
            {
                foreach (Obj_AI_Hero enemy in _playerInfo.Where(x =>
                                                                x.Player.IsValid &&
                                                                !x.Player.IsVisible &&
                                                                !x.Player.IsDead &&
                                                                x.Player.Distance(ObjectManager.Player.ServerPosition) < 1000 && //check real ward range later
                                                                time - x.LastSeen < 2500).Select(x => x.Player))
                {
                    Vector3 bestWardPos = GetWardPos(enemy.ServerPosition, 165, 2);

                    if (bestWardPos != enemy.ServerPosition && bestWardPos != Vector3.Zero &&
                        bestWardPos.Distance(ObjectManager.Player.ServerPosition) < ward.Range)
                    {
                        if (_lastTimeWarded == 0 || Environment.TickCount - _lastTimeWarded > 500)
                        {
                            InventorySlot wardSlot = SAssemblies.Ward.GetWardSlot();

                            if (wardSlot != null && wardSlot.Id != ItemId.Unknown)
                            {
                                ObjectManager.Player.Spellbook.CastSpell(wardSlot.SpellSlot, bestWardPos);
                                _lastTimeWarded = Environment.TickCount;
                            }
                        }
                    }
                }
            }
        }
示例#3
0
 public ExpandedWardItem(SAssemblies.Ward.WardItem ward, int stacks, int charges)
     : base(ward.Id, ward.Name, ward.SpellName, ward.Range, ward.Duration, ward.Type)
 {
     Stacks  = stacks;
     Charges = charges;
 }