Exemple #1
0
 public void OnPlayerTriggerTesla(TriggeringTeslaEventArgs ev)
 {
     if (Blackout.active && Blackout.instance.Config.TeslaFlicker)
     {
         ev.IsTriggerable = false;
     }
 }
Exemple #2
0
        public void OnTriggeringTesla(TriggeringTeslaEventArgs ev)
        {
            if (!Tracking.PlayersWithSubclasses.ContainsKey(ev.Player) || !Tracking.PlayersWithSubclasses[ev.Player].Abilities.Contains(AbilityType.BypassTeslaGates))
            {
                return;
            }
            SubClass subClass = Tracking.PlayersWithSubclasses[ev.Player];

            if (Tracking.PlayerJustBypassedTeslaGate(ev.Player)) // The triggering tesla happens a lot, this allows the bypass to last 3 seconds.
            {
                ev.IsTriggerable = false;
                return;
            }
            if (Tracking.OnCooldown(ev.Player, AbilityType.BypassTeslaGates, subClass))
            {
                Tracking.DisplayCooldown(ev.Player, AbilityType.BypassTeslaGates, subClass, "bypass tesla gates", Time.time);
            }
            else
            {
                Log.Debug($"Player with subclass {Tracking.PlayersWithSubclasses[ev.Player].Name} has been allowed to bypass tesla gate", Subclass.Instance.Config.Debug);
                Tracking.AddCooldown(ev.Player, AbilityType.BypassTeslaGates);
                if (!Tracking.PlayersThatBypassedTeslaGates.ContainsKey(ev.Player))
                {
                    Tracking.PlayersThatBypassedTeslaGates.Add(ev.Player, 0);
                }
                Tracking.PlayersThatBypassedTeslaGates[ev.Player] = Time.time;
                ev.IsTriggerable = false;
                //ev.Player.IsUsingStamina = false;
            }
        }
Exemple #3
0
 internal void OnActivateTesla(TriggeringTeslaEventArgs ev)
 {
     if (!config.Tesla.canActivateTeslaGlobal && !config.Tesla.canActivateTesla[ev.Player.Role])
     {
         ev.IsTriggerable = false;
     }
 }
 public void OnTriggeringTesla(TriggeringTeslaEventArgs ev)
 {
     if (ev.Player.GetEffectActive <CustomPlayerEffects.Scp268>())
     {
         ev.IsTriggerable = false;
     }
 }
Exemple #5
0
 /// <inheritdoc cref="Exiled.Events.Handlers.Player.OnTriggeringTesla(TriggeringTeslaEventArgs)"/>
 public void OnTriggeringTesla(TriggeringTeslaEventArgs ev)
 {
     if (teslasDisabled)
     {
         ev.IsTriggerable = false;
     }
 }
 private static void HandleTeslaTrigger(TriggeringTeslaEventArgs ev)
 {
     if (!Plugin.Config.TeslaTriggerableTeam.Contains(ev.Player.Team))
     {
         ev.IsTriggerable = false;
     }
 }
 public async void OnTriggeringTesla(TriggeringTeslaEventArgs ev)
 {
     if (Instance.Config.EventsToLog.PlayerTriggeringTesla && (!ev.Player.DoNotTrack || !Instance.Config.ShouldRespectDoNotTrack))
     {
         await Network.SendAsync(new RemoteCommand("log", "gameEvents", string.Format(Language.HasTriggeredATeslaGate, ev.Player.Nickname, Instance.Config.ShouldLogUserIds ? ev.Player.UserId : Language.Redacted, ev.Player.Role))).ConfigureAwait(false);
     }
 }
Exemple #8
0
 public void OnTriggeringTesla(TriggeringTeslaEventArgs ev)
 {
     if ((FacilityControl.Instance.Config.BlackoutTeslasDisabled == true && FacilityControl.LightsOut[ZoneType.HeavyContainment] == true) || FacilityControl.TeslasDisabled)
     {
         ev.IsTriggerable = false;
     }
     else
     {
         bool canDisable = false;
         foreach (ItemType i in FacilityControl.Instance.Config.TeslaItems)
         {
             (bool hasItem, bool isHolding) = API.GetItemInInventory(ev.Player, i);
             if (hasItem)
             {
                 if (FacilityControl.Instance.Config.TeslaHoldItems == true)
                 {
                     if (isHolding)
                     {
                         canDisable = true;
                     }
                 }
                 else
                 {
                     canDisable = true;
                 }
             }
         }
         if (canDisable)
         {
             ev.IsTriggerable = false;
         }
     }
 }
Exemple #9
0
        public void OnTeslaTrigger(TriggeringTeslaEventArgs ev)
        {
            if (ev.Player.GetCustomRoles().Select(x => x.Id).Intersect(PluginMain.Config.IgnoredCustomroles).Any())
            {
                ev.IsTriggerable = false;
                ev.IsInIdleRange = false;
            }

            switch (PluginMain.Config.TeslaControlMode)
            {
            case WorkMode.KeycardMode:
                if (ev.Player.IsScp)
                {
                    return;
                }
                foreach (Item item in ev.Player.Items)
                {
                    if (PluginMain.Config.AllowedCards.Contains(item.Base.ItemTypeId))
                    {
                        ev.IsTriggerable = false;
                        ev.IsInIdleRange = false;
                        break;
                    }
                }
                break;

            case WorkMode.RoleMode:
                if (PluginMain.Config.WhitelistedRoles.Contains(ev.Player.Role))
                {
                    ev.IsTriggerable = false;
                    ev.IsInIdleRange = false;
                }
                break;
            }
        }
 public void TriggeringTeslaGate(TriggeringTeslaEventArgs ev)
 {
     if (Singleton.Config.MTFTesla)
     {
         return;
     }
     else
     {
         if (ev.Player.Team == Team.MTF)
         {
             ev.IsTriggerable = false;
         }
     }
     if (Singleton.Config.ScientistTesla)
     {
         return;
     }
     else
     {
         if (ev.Player.Team == Team.RSC)
         {
             ev.IsTriggerable = false;
         }
     }
 }
Exemple #11
0
 public void OnTeslaGate(TriggeringTeslaEventArgs ev)
 {
     if (ev.Player.Inventory.items.Any(item => item.id == ItemType.WeaponManagerTablet))
     {
         ev.IsTriggerable = false;
     }
 }
Exemple #12
0
 private static bool Prefix(TeslaGateControl.eventHandlers __instance, TriggeringTeslaEventArgs ev)
 {
     if (ev.Player.IsNPC())
     {
         ev.IsTriggerable = false;
         return(false);
     }
     return(true);
 }
Exemple #13
0
 private void OnTriggeringTesla(TriggeringTeslaEventArgs ev)
 {
     foreach (TeslaGate gate in TeslaGate.List)
     {
         if (Exiled.API.Features.Map.FindParentRoom(gate.GameObject) == ev.Player.CurrentRoom && disabledTeslaGates.Contains(gate))
         {
             ev.IsTriggerable = false;
         }
     }
 }
Exemple #14
0
 // Token: 0x06000008 RID: 8 RVA: 0x00002500 File Offset: 0x00000700
 private static void HandleTeslaTrigger(TriggeringTeslaEventArgs ev)
 {
     if (SameThings.TeslaTriggerableTeam.Count == 0)
     {
         return;
     }
     if (!SameThings.TeslaTriggerableTeam.Contains((int)ev.Player.Team))
     {
         ev.IsTriggerable = false;
     }
 }
Exemple #15
0
        internal void TriggeringTesla(TriggeringTeslaEventArgs ev)
        {
            if (Plugin.Instance.Config.TriggeringTesla == "")
            {
                return;
            }
            string message = Plugin.Instance.Config.TriggeringTesla.Replace("%player%", ev.Player.ToString());


            if (Plugin.Instance.Config.debug_to_console)
            {
                Log.Debug(message: "[ " + Plugin.Instance.Config.player_name + "] " + message);
            }
            Plugin.sendWebHook(Plugin.Instance.Config.player_url, message, Plugin.Instance.Config.player_name);
        }
Exemple #16
0
        private static bool Prefix(TeslaGateController __instance)
        {
            foreach (KeyValuePair<GameObject, ReferenceHub> allHub in ReferenceHub.GetAllHubs())
            {
                if (allHub.Value.characterClassManager.CurClass == RoleType.Spectator)
                    continue;
                foreach (TeslaGate teslaGate in __instance.TeslaGates)
                {
                    if (!teslaGate.PlayerInRange(allHub.Value) || teslaGate.InProgress)
                        continue;

                    var ev = new TriggeringTeslaEventArgs(API.Features.Player.Get(allHub.Key), teslaGate.PlayerInHurtRange(allHub.Key));
                    Player.OnTriggeringTesla(ev);

                    if (ev.IsTriggerable)
                        teslaGate.ServerSideCode();
                }
            }

            return false;
        }
Exemple #17
0
        private static bool Prefix(TeslaGateController __instance)
        {
            try
            {
                foreach (KeyValuePair <GameObject, ReferenceHub> allHub in ReferenceHub.GetAllHubs())
                {
                    if (allHub.Value.characterClassManager.CurClass == RoleType.Spectator)
                    {
                        continue;
                    }
                    foreach (TeslaGate teslaGate in __instance.TeslaGates)
                    {
                        if (!teslaGate.PlayerInRange(allHub.Value) || teslaGate.InProgress)
                        {
                            continue;
                        }

                        var ev = new TriggeringTeslaEventArgs(API.Features.Player.Get(allHub.Key), teslaGate.PlayerInHurtRange(allHub.Key));
                        Player.OnTriggeringTesla(ev);

                        if (ev.IsTriggerable)
                        {
                            teslaGate.ServerSideCode();
                        }
                    }
                }

                return(false);
            }
            catch (Exception e)
            {
                Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.TriggeringTesla: {e}\n{e.StackTrace}");

                return(true);
            }
        }
Exemple #18
0
        public void OnTriggeringTesla(TriggeringTeslaEventArgs eventArgs)
        {
            if (TeslaKeycardBlocker.Instance.Config.ItemsDisableTesla)
            {
                // Get all disabling items listed in config
                ItemType[] disablingItemTypes = TeslaKeycardBlocker.Instance.Config.DisablingItems;

                // Check wether item needs to be in hand or is only required in inventory
                if (TeslaKeycardBlocker.Instance.Config.OnlyInHands)
                {
                    if (disablingItemTypes.Contains <ItemType>(eventArgs.Player.Inventory.curItem))
                    {
                        // Disable tesla gate trigger
                        eventArgs.IsTriggerable = false;
                    }
                }
                else
                {
                    // Search inventory of the player for any of the disabling items
                    if (eventArgs.Player.Inventory.items.Any <Inventory.SyncItemInfo>(item =>
                                                                                      disablingItemTypes.Contains(item.id)))
                    {
                        // Disable tesla gate trigger
                        eventArgs.IsTriggerable = false;
                    }
                }
            }

            // If SCP 268 is active, disable tesla trigger
            if (TeslaKeycardBlocker.Instance.Config.HatDisablesTesla && eventArgs.Player.ReferenceHub.playerEffectsController.GetEffect <Scp268>().Enabled)
            {
                eventArgs.IsTriggerable = false;
            }

            // CASSIE Announcment -> alle x Minuten Statusmeldung über aktuelle Anzahl von Leuten in der Facility nach Klassen sortiert (Facility Scan)
        }
Exemple #19
0
        public void PlayerTesla(TriggeringTeslaEventArgs ev)
        {
            string currentTelsa = ev.Player.CurrentRoom.Name;

            if (Config.cardSwipe)
            {
                foreach (lockedTesla r in lt)
                {
                    if (r.locked && currentTelsa == r.roomName)
                    {
                        ev.IsTriggerable = false;
                        return;
                    }
                }
            }
            switch (Config.cardMode)
            {
            case (true):
            {
                bool validCard       = false;
                var  playerHeldItem  = ev.Player.CurrentItem;
                var  playerInventory = ev.Player.Inventory.items;
                if (playerInventory != null)
                {
                    foreach (var item in playerInventory)
                    {
                        if (Config.allowedCards.Count > 0 && !Config.allowedCards.Contains(item.id))
                        {
                            continue;
                        }
                        else if (Config.allowedCards.Contains(item.id))
                        {
                            validCard = true;
                            break;
                        }
                    }
                    if (Config.cardSwipe)
                    {
                        if (Config.allowedCards.Contains(playerHeldItem.id))
                        {
                            int id = gateId(currentTelsa);
                            coroutine = Timing.RunCoroutine(teslaSwipe(id));
                        }
                    }
                }
                if (validCard)
                {
                    ev.IsTriggerable = false;
                }
                break;
            }

            case (false):
            {
                if (Config.allowedRoles != null)
                {
                    foreach (RoleType role in Config.allowedRoles)
                    {
                        if (ev.Player.Role == role)
                        {
                            ev.IsTriggerable = false;
                        }
                    }
                }
                break;
            }
            }
        }
Exemple #20
0
 /// <summary>
 /// Called before triggering a tesla.
 /// </summary>
 /// <param name="ev">The <see cref="TriggeringTeslaEventArgs"/> instance.</param>
 public static void OnTriggeringTesla(TriggeringTeslaEventArgs ev) => TriggeringTesla.InvokeSafely(ev);
Exemple #21
0
        private static bool Prefix(TeslaGateController __instance)
        {
            try
            {
                foreach (TeslaGate teslaGate in __instance.TeslaGates)
                {
                    if (!teslaGate.isActiveAndEnabled || teslaGate.InProgress)
                    {
                        continue;
                    }

                    if (teslaGate.NetworkInactiveTime > 0f)
                    {
                        teslaGate.NetworkInactiveTime = Mathf.Max(0f, teslaGate.InactiveTime - Time.fixedDeltaTime);
                        continue;
                    }

                    bool inIdleRange   = false;
                    bool isTriggerable = false;
                    foreach (KeyValuePair <GameObject, ReferenceHub> allHub in ReferenceHub.GetAllHubs())
                    {
                        if (allHub.Value.isDedicatedServer || allHub.Value.characterClassManager.CurClass == RoleType.Spectator)
                        {
                            continue;
                        }

                        if (teslaGate.PlayerInIdleRange(allHub.Value))
                        {
                            TriggeringTeslaEventArgs ev = new TriggeringTeslaEventArgs(API.Features.Player.Get(allHub.Key), teslaGate, teslaGate.PlayerInHurtRange(allHub.Key), teslaGate.PlayerInRange(allHub.Value));
                            Player.OnTriggeringTesla(ev);

                            if (ev.IsTriggerable && !isTriggerable)
                            {
                                isTriggerable = ev.IsTriggerable;
                            }

                            if (!inIdleRange)
                            {
                                inIdleRange = ev.IsInIdleRange;
                            }
                        }
                    }

                    if (isTriggerable)
                    {
                        teslaGate.ServerSideCode();
                    }

                    if (inIdleRange != teslaGate.isIdling)
                    {
                        teslaGate.ServerSideIdle(inIdleRange);
                    }
                }

                return(false);
            }
            catch (Exception e)
            {
                API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.TriggeringTesla: {e}\n{e.StackTrace}");

                return(true);
            }
        }
Exemple #22
0
 public void OnTriggeringTesla(TriggeringTeslaEventArgs ev)
 {
     ev.IsTriggerable = !Pro079Tesla.Singleton.IsActive;
 }
Exemple #23
0
 public void TriggeringTeslaGate(TriggeringTeslaEventArgs ev)
 {
     ev.IsTriggerable = !(ev.Player.Team == Team.MTF || ev.Player.Team == Team.RSC);
 }