/// <summary> /// On process spell cast event. /// </summary> /// <param name="sender"> /// The sender /// </param> private static void EventTurret(Obj_AI_Base sender) { var turret = sender as Obj_AI_Turret; if (turret == null) { return; } var turNetworkId = turret.NetworkId; if (!Turrets.ContainsKey(turNetworkId)) { Turrets.Add(turNetworkId, new TurretArgs { Turret = turret }); } Turrets[turNetworkId].AttackStart = Variables.TickCount; if (Turrets[turNetworkId].Target != null && Turrets[turNetworkId].Target.IsValid) { Turrets[turNetworkId].AttackDelay = (turret.AttackCastDelay * 1000) + (turret.Distance(Turrets[turNetworkId].Target) / turret.BasicAttack.MissileSpeed * 1000); Turrets[turNetworkId].AttackEnd = (int)(Variables.TickCount + Turrets[turNetworkId].AttackDelay); } OnTurretAttack?.Invoke(MethodBase.GetCurrentMethod().DeclaringType, Turrets[turNetworkId]); }
/// <summary> /// On process spell cast event. /// </summary> /// <param name="sender"> /// The sender /// </param> /// <param name="args"> /// The event data /// </param> private static void OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { Obj_AI_Turret[] turret = { sender as Obj_AI_Turret }; if (turret[0] != null) { if (Turrets.Count == 0) { foreach (var gameObjectTurret in GameObjects.Turrets) { Turrets.Add(gameObjectTurret, new TurretArgs { Turret = gameObjectTurret }); if (gameObjectTurret.NetworkId == turret[0].NetworkId) { turret[0] = gameObjectTurret; } } } else { foreach (var gameObjectTurret in Turrets.Where(gameObjectTurret => gameObjectTurret.Key.NetworkId == turret[0].NetworkId)) { turret[0] = gameObjectTurret.Key; } } Turrets[turret[0]].AttackStart = Variables.TickCount; if (Turrets[turret[0]].Target != null && Turrets[turret[0]].Target.IsValid) { Turrets[turret[0]].AttackDelay = (turret[0].AttackCastDelay * 1000) + (turret[0].Distance(Turrets[turret[0]].Target) / turret[0].BasicAttack.MissileSpeed * 1000); Turrets[turret[0]].AttackEnd = (int)(Variables.TickCount + Turrets[turret[0]].AttackDelay); } OnTurretAttack?.Invoke(turret[0], Turrets[turret[0]]); } }