private void OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args) { // Only check for enemy Heroes and recall teleports if (sender.Type == GameObjectType.AIHeroClient && sender.IsEnemy && args.Type == TeleportType.Recall) { switch (args.Status) { case TeleportStatus.Start: RecallingHeroes[sender.NetworkId] = new Tuple <int, int>(Core.GameTickCount, args.Duration); break; case TeleportStatus.Abort: RecallingHeroes.Remove(sender.NetworkId); break; case TeleportStatus.Finish: LastSeen[sender.NetworkId] = Core.GameTickCount; LastSeenPosition[sender.NetworkId] = EnemySpawnPoint; LastSeenRange[sender.NetworkId] = 0; RecallingHeroes.Remove(sender.NetworkId); break; } } }
public void OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args) { var enemy = RandomUltUnits.Find(x => x.Unit.NetworkId == sender.NetworkId); if (enemy == null || args.Type != TeleportType.Recall) { return; } var recall = enemy.RecallData; switch (args.Status) { case TeleportStatus.Start: { recall.Status = RecallStatus.Active; recall.Started = Game.Time; recall.Duration = args.Duration; recall.Ended = recall.Started + recall.Duration; break; } case TeleportStatus.Abort: { recall.Status = RecallStatus.Abort; recall.Ended = Game.Time; break; } case TeleportStatus.Finish: { recall.Status = RecallStatus.Finished; recall.Ended = Game.Time; break; } } }
public TrackedTeleport(AIHeroClient caster, Teleport.TeleportEventArgs args) { this.Caster = caster; this.Args = args; this.StartTick = args.Start; }
protected override void OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args) { return; }
private static void Teleport_OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args) { if (sender?.Type != GameObjectType.AIHeroClient) { return; } var hero = sender as AIHeroClient; if (hero == null || (!hero.IsEnemy && !BaseMenu.VChecked("Tracker.Enabled.Ally"))) { return; } switch (args.Status) { case TeleportStatus.Start: { if (BaseMenu.VChecked("Tracker.Enabled")) { var text = args.Type.Equals(TeleportType.Recall) ? "recalling." : "teleporting."; UBNotification.ShowNotif("Recall tracker notification", hero.Hero + " is " + text, "recall", 2500); } if (Teleporting.ContainsKey(sender.NetworkId)) { Teleporting[sender.NetworkId] = new Teleport_Infomation(sender, args.Type.Equals(TeleportType.Recall)) { Duration = args.Duration, Started = args.Start, End = args.Duration + args.Start }; } else { Teleporting.Add(sender.NetworkId, new Teleport_Infomation(sender, args.Type.Equals(TeleportType.Recall)) { Duration = args.Duration, Started = args.Start, End = args.Duration + args.Start }); } } break; case TeleportStatus.Abort: { if (BaseMenu.VChecked("Tracker.Enabled")) { var text = args.Type.Equals(TeleportType.Recall) ? "recall." : "teleport."; UBNotification.ShowNotif("Recall tracker notification", hero.Hero + " canceled " + text, "recall", 2500); } Teleporting.Remove(hero.NetworkId); } break; case TeleportStatus.Finish: { if (BaseMenu.VChecked("Tracker.Enabled")) { var text = args.Type.Equals(TeleportType.Recall) ? "recall." : "teleport."; UBNotification.ShowNotif("Recall tracker notification", hero.Hero + " finished " + text, "recall", 2500); } Teleporting.Remove(hero.NetworkId); } break; case TeleportStatus.Unknown: { Teleporting.Remove(hero.NetworkId); } break; default: throw new ArgumentOutOfRangeException(nameof(args.Status)); } }
/// <summary> /// On teleport event. /// </summary> /// <param name="sender"> /// The sender. /// </param> /// <param name="args"> /// The args. /// </param> private static void OnTeleportEvent(Obj_AI_Base sender, Teleport.TeleportEventArgs args) { EventTeleport(sender, args); }
protected virtual void Volatile_OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args) { //for extensions }
private void Teleport_OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args) { Volatile_OnTeleport(sender, args); }
private void SnipePredictionOnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args) { if (sender != target) { return; } float timeElapsed_ms = Core.GameTickCount - invisibleStartTime; if (DoesCollide().Any()) { SnipeChance = HitChance.Collision; } if (args.Status == TeleportStatus.Start) { float maxWalkDist = target.Position.Distance(lastRealPath.Last()); float moveSpeed = target.MoveSpeed; float normalTime_ms = maxWalkDist / moveSpeed * 1000; /*target hasn't reached end point*/ if (timeElapsed_ms <= normalTime_ms) { SnipeChance = HitChance.High; } else if (timeElapsed_ms > normalTime_ms) /*target reached endPoint and is nearby*/ { float extraTimeElapsed = timeElapsed_ms - normalTime_ms; float targetSafeZoneTime = ultBoundingRadius / moveSpeed * 1000; if (extraTimeElapsed < targetSafeZoneTime) { /*target has reached end point but is still in danger zone*/ SnipeChance = HitChance.Medium; } else { /*target too far away*/ SnipeChance = HitChance.Low; } } float realDist = moveSpeed * (timeElapsed_ms / 1000); CastPosition = GetCastPosition(realDist); lastEstimatedPosition = CastPosition; } if (args.Status == TeleportStatus.Abort) { SnipeChance = HitChance.Impossible; CancelProcess(); } int minHitChance = Listing.snipeMenu.Get <Slider>("minSnipeHitChance").CurrentValue; int currentHitChanceInt = 0; if ((int)SnipeChance <= 2) { currentHitChanceInt = 0; } else if (SnipeChance == HitChance.Low) { currentHitChanceInt = 1; } else if (SnipeChance == HitChance.Medium) { currentHitChanceInt = 2; } else if (SnipeChance == HitChance.High) { currentHitChanceInt = 3; } if (currentHitChanceInt >= minHitChance) { if (Listing.snipeMenu.Get <CheckBox>("snipeDraw").CurrentValue) { Drawing.OnDraw += OnDraw; } CheckUltCast(args.Start + args.Duration); } else { CancelProcess(); } }
private static void Teleport_OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args) { }
/// <summary> /// Is Target /// </summary> /// <param name="args"> /// The event data /// </param> /// <returns> /// returns where the teleport is target. /// </returns> public bool IsTarget(Teleport.TeleportEventArgs args) { return(!string.Equals(args.Type.ToString(), "ShenStandUnited", StringComparison.InvariantCultureIgnoreCase)); }
/// <summary> /// Get duration /// </summary> /// <param name="args"> /// The event data /// </param> /// <returns> /// Duration of the teleport. /// </returns> public int GetDuration(Teleport.TeleportEventArgs args) { return(3000); }
/// <summary> /// Is Target /// </summary> /// <param name="args"> /// The event data /// </param> /// <returns> /// returns where the teleport is target. /// </returns> public bool IsTarget(Teleport.TeleportEventArgs args) { return(false); }
private void Teleport_OnTeleport(Obj_AI_Base sender, Teleport.TeleportEventArgs args) { if (sender?.Type != GameObjectType.AIHeroClient) { return; } var hero = sender as AIHeroClient; if (hero == null || hero.IsMe || !hero.IsEnemy || args.Type == TeleportType.Shen) { return; } switch (args.Status) { case TeleportStatus.Start: if (args.Type == TeleportType.Recall) { if (IsRecallTrackerEnabled) { Notifications.Show(new SimpleNotification("Recall tracker", $"{hero.Hero} ({hero.Name}) just started recalling."), 2500); } ActiveRecalls[hero.NetworkId] = args; } ActiveTeleports[hero.NetworkId] = args; break; case TeleportStatus.Abort: if (args.Type == TeleportType.Recall) { ActiveRecalls.Remove(hero.NetworkId); } ActiveTeleports.Remove(hero.NetworkId); break; case TeleportStatus.Finish: if (args.Type == TeleportType.Recall) { if (IsRecallTrackerEnabled) { Notifications.Show(new SimpleNotification("Recall tracker", $"{hero.Hero} ({hero.Name}) just finished recalling."), 2500); } ActiveRecalls.Remove(hero.NetworkId); } ActiveTeleports.Remove(hero.NetworkId); break; case TeleportStatus.Unknown: ActiveTeleports.Remove(hero.NetworkId); ActiveRecalls.Remove(hero.NetworkId); return; default: throw new ArgumentOutOfRangeException(nameof(args.Status)); } }