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; } } } } }
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; } } } } } }
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; }