Ejemplo n.º 1
0
        public async void OnUpgradingItems(UpgradingItemsEventArgs ev)
        {
            if (Instance.Config.EventsToLog.UpgradingScp914Items)
            {
                StringBuilder players = StringBuilderPool.Shared.Rent();
                StringBuilder items   = StringBuilderPool.Shared.Rent();

                foreach (Player player in ev.Players)
                {
                    if (!player.DoNotTrack || !Instance.Config.ShouldRespectDoNotTrack)
                    {
                        players.Append(player.Nickname).Append(" (").Append(Instance.Config.ShouldLogUserIds ? player.UserId : Language.Redacted).Append(") [").Append(player.Role).Append(']').AppendLine();
                    }
                }

                foreach (Pickup item in ev.Items)
                {
                    items.Append(item.ItemId.ToString()).AppendLine();
                }

                await Network.SendAsync(new RemoteCommand("log", "gameEvents", string.Format(Language.Scp914HasProcessedTheFollowingPlayers, players, items)));

                StringBuilderPool.Shared.Return(players);
                StringBuilderPool.Shared.Return(items);
            }
        }
Ejemplo n.º 2
0
 internal void OnUpgradingItems(UpgradingItemsEventArgs ev)
 {
     if (!Round.IsStarted)
     {
         return;
     }
     if (!ev.IsAllowed)
     {
         return;
     }
     data.Total914UpgradeItems   += ev.Items.Count;
     data.Total914UpgradePlayers += ev.Players.Count;
 }
Ejemplo n.º 3
0
        internal void OnUpgradingItems(UpgradingItemsEventArgs ev)
        {
            ev.Players.RemoveAll(p => Plugin.GhostList.Contains(p));

            //foreach (Exiled.API.Features.Player ply in Plugin.GhostList)
            //{
            //	if (ev.Players.Contains(ply))
            //	{
            //		Timing.CallDelayed(0.2f, () =>
            //		{
            //			ply.ClearInventory();
            //			ply.AddItem(ItemType.Ammo762);
            //			ply.AddItem(ItemType.Ammo556);
            //			ply.AddItem(ItemType.Ammo9mm);
            //			ply.AddItem(ItemType.Flashlight);
            //		});
            //	}
            //}
        }
Ejemplo n.º 4
0
        internal void UpgradingItems(UpgradingItemsEventArgs ev)
        {
            if (Plugin.Instance.Config.UpgradingItems == "")
            {
                return;
            }
            string message = Plugin.Instance.Config.UpgradingItems.Replace("%setting%", ev.KnobSetting.ToString());
            string players = string.Join(", ", ev.Players);

            message = message.Replace("%players%", players);
            message = message.Replace("%items%", ev.Items.Count.ToString());


            if (Plugin.Instance.Config.debug_to_console)
            {
                Log.Debug(message: "[ " + Plugin.Instance.Config.scp914_name + "] " + message);
            }
            Plugin.sendWebHook(Plugin.Instance.Config.scp914_url, message, Plugin.Instance.Config.scp914_name);
        }
Ejemplo n.º 5
0
        private static bool Prefix(Scp914Machine __instance)
        {
            if (!NetworkServer.active)
            {
                return(true);
            }
            Collider[] colliderArray = Physics.OverlapBox(__instance.intake.position, __instance.inputSize / 2f);
            __instance.players.Clear();
            __instance.items.Clear();
            foreach (Collider collider in colliderArray)
            {
                CharacterClassManager component1 = collider.GetComponent <CharacterClassManager>();
                if (component1 != null)
                {
                    __instance.players.Add(component1);
                }
                else
                {
                    Pickup component2 = collider.GetComponent <Pickup>();
                    if (component2 != null)
                    {
                        __instance.items.Add(component2);
                    }
                }
            }

            var ev = new UpgradingItemsEventArgs(__instance, __instance.players.Select(player => API.Features.Player.Get(player.gameObject)).ToList(), __instance.items, __instance.knobState);

            Scp914.OnUpgradingItems(ev);

            var players = ev.Players.Select(player => player.ReferenceHub.characterClassManager).ToList();

            __instance.MoveObjects(ev.Items, players);

            if (ev.IsAllowed)
            {
                __instance.UpgradeObjects(ev.Items, players);
            }

            return(false);
        }
Ejemplo n.º 6
0
        public void OnUpgradingItems(UpgradingItemsEventArgs ev)
        {
            if (!KeepTheChange.Instance.Config.Enable914Upgrades)
            {
                return;
            }
            foreach (Exiled.API.Features.Player player in ev.Players)
            {
                while (player.Inventory.items.Any(item => item.id == ItemType.Coin))
                {
                    int num = rnd.Next(100);
                    int i   = player.Inventory.items.FindIndex(item => item.id == ItemType.Coin);
                    switch (ev.KnobSetting)
                    {
                    case Scp914Knob.Rough:
                        InventoryChanges(onRough, player, num, i);
                        break;

                    case Scp914Knob.Coarse:
                        InventoryChanges(onCoarse, player, num, i);
                        break;

                    case Scp914Knob.OneToOne:
                        InventoryChanges(onOneOne, player, num, i);
                        break;

                    case Scp914Knob.Fine:
                        InventoryChanges(onFine, player, num, i);
                        break;

                    case Scp914Knob.VeryFine:
                        InventoryChanges(onVeryFine, player, num, i);
                        break;
                    }
                }
            }
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Called before upgrading items in the SCP-914 machine.
 /// </summary>
 /// <param name="ev">The <see cref="UpgradingItemsEventArgs"/> instance.</param>
 public static void OnUpgradingItems(UpgradingItemsEventArgs ev) => UpgradingItems.InvokeSafely(ev);
Ejemplo n.º 8
0
 /// <inheritdoc cref="Exiled.Events.Handlers.Scp914.OnUpgradingItems(UpgradingItemsEventArgs)"/>
 public void OnUpgradingItems(UpgradingItemsEventArgs ev)
 {
     Log.Info($"Items ({ev.Items.Count}):\n{ev.Items.ToString(false)}\nand players ({ev.Players.Count}):\n{ev.Players.ToString(false)}\nare being processed inside SCP-914, which is set on {ev.KnobSetting}.");
 }
Ejemplo n.º 9
0
 internal void OnUpgradingItems(UpgradingItemsEventArgs ev)
 {
     if (ev.KnobSetting == Scp914.Scp914Knob.Coarse)
     {
         foreach (Player player in ev.Players)
         {
             Vector3 pos = rooms[UnityEngine.Random.Range(0, rooms.Count)].Position;
             pos.y += 2f;
             Timing.CallDelayed(0.1f, () => player.ReferenceHub.playerMovementSync.ForceSafePosition(pos));
             player.Health *= REP914.singleton.Config.courceHealthPercent / 100f;
         }
     }
     else if (ev.KnobSetting == Scp914.Scp914Knob.OneToOne)
     {
         foreach (Player player in ev.Players)
         {
             if (player.Team == Team.SCP && player.Role != RoleType.Scp0492)
             {
                 List <RoleType> scpList = scps.Where(x => x != player.Role).ToList();
                 RoleType        role    = scpList[UnityEngine.Random.Range(0, scpList.Count)];
                 if (role == RoleType.Scp096 && Player.List.FirstOrDefault(x => x.Role == RoleType.Scp096) != null)
                 {
                     var list = scpList.Where(x => x != RoleType.Scp096).ToList();
                     role = list[UnityEngine.Random.Range(0, list.Count)];
                 }
                 else if (role == RoleType.Scp106 && Player.List.FirstOrDefault(x => x.Role == RoleType.Scp106) != null)
                 {
                     var list = scpList.Where(x => x != RoleType.Scp106).ToList();
                     role = list[UnityEngine.Random.Range(0, list.Count)];
                 }
                 ChangeRole(player, role);
             }
             else if (player.Team == Team.CDP)
             {
                 ChangeRole(player, RoleType.Scientist);
             }
             else if (player.Team == Team.RSC)
             {
                 ChangeRole(player, RoleType.ClassD);
                 player.Inventory.AddNewItem(ItemType.Coin);
             }
             else if (player.Team == Team.MTF)
             {
                 ChangeRole(player, RoleType.ChaosInsurgency);
             }
             else if (player.Team == Team.CHI)
             {
                 ChangeRole(player, (RoleType)REP914.singleton.Config.mtfClassId);
             }
         }
     }
     else if (ev.KnobSetting == Scp914.Scp914Knob.Fine)
     {
         foreach (Player player in ev.Players)
         {
             if (player.CurrentItem.id == ItemType.Coin)
             {
                 player.Inventory.items.Remove(player.CurrentItem);
                 player.Inventory.AddNewItem(ItemType.KeycardJanitor);
             }
         }
         foreach (Pickup item in ev.Items)
         {
             if (item.ItemId == ItemType.Coin)
             {
                 Timing.CallDelayed(0.1f, () => item.ItemId = ItemType.KeycardJanitor);
             }
         }
     }
     else if (ev.KnobSetting == Scp914.Scp914Knob.VeryFine)
     {
         foreach (Player player in ev.Players)
         {
             if (player.Role == RoleType.Scp0492)
             {
                 if (UnityEngine.Random.Range(0, 101) <= REP914.singleton.Config.zombieToClassdPercent)
                 {
                     ChangeRole(player, RoleType.ClassD);
                 }
             }
         }
     }
 }
        public void OnUpgradingItems(UpgradingItemsEventArgs ev)
        {
            if (!Scp914Teleportation.enabledInGame)
            {
                return;
            }
            if (Scp914Teleportation.Instance.Config.TeleportEffects.ContainsKey(ev.KnobSetting))
            {
                Log.Info("SCP-914 Teleportation activated");
                int roomIndex = rnd.Next(0, Scp914Teleportation.Instance.Config.TeleportRooms.Count());
                if (!Scp914Teleportation.Instance.Config.TeleportChance.ContainsKey(ev.KnobSetting))
                {
                    Log.Warn($"TeleportChance config does not provide a setting for the {ev.KnobSetting.ToString()} 914 setting. Aborting teleportation");
                    return;
                }
                foreach (Player Ply in ev.Players)
                {
                    if (rnd.Next(0, 100) > Scp914Teleportation.Instance.Config.TeleportChance[ev.KnobSetting])
                    {
                        if (Scp914Teleportation.Instance.Config.TeleportBackfire == true)
                        {
                            ApplyTeleportEffects(Ply, Scp914Teleportation.Instance.Config.TeleportEffects[ev.KnobSetting]);
                        }
                        return;
                    }
                    if (!Scp914Teleportation.Instance.Config.AffectedTeams.Contains(Ply.Team))
                    {
                        return;
                    }
                    RoomType roomType     = Scp914Teleportation.Instance.Config.TeleportRooms.ElementAt(roomIndex);
                    Room     teleportRoom = Map.Rooms.Where(r => r.Type == roomType).First();

                    if (Scp914Teleportation.Instance.Config.TeleportChangeMode == true)
                    {
                        roomIndex = rnd.Next(0, Scp914Teleportation.Instance.Config.TeleportRooms.Count());
                    }

                    Timing.CallDelayed(0.1f, () =>
                    {
                        Ply.Position = teleportRoom.Position + new Vector3(0, 2, 0);
                        teleported.Add(Ply);
                        Timing.CallDelayed(Timing.WaitForOneFrame, () =>
                        {
                            ApplyTeleportEffects(Ply, Scp914Teleportation.Instance.Config.TeleportEffects[ev.KnobSetting]);
                        });
                    });
                }
                Timing.CallDelayed(0.5f, () =>
                {
                    if (Scp914Teleportation.Instance.Config.AlertSCPs == true)
                    {
                        // Notify players
                        if (Scp914Teleportation.Instance.Config.AlertInformPlayer == true)
                        {
                            foreach (Player TeleportedPly in teleported)
                            {
                                if (TeleportedPly.Team == Team.SCP)
                                {
                                    continue;                                 // Prevent SCPs from being notified about other SCPs using SCP-914 to teleport.
                                }
                                TeleportedPly.ClearBroadcasts();
                                TeleportedPly.Broadcast(5, Scp914Teleportation.Instance.Config.TeleportPlayerMessage);
                            }
                        }

                        // Notify SCPs
                        foreach (Player SCP in Player.List)
                        {
                            if (SCP.Team == Team.SCP)
                            {
                                string stringToShow = "\n\n\n\n\n\n\n";
                                foreach (Player Escapee in teleported)
                                {
                                    if (Escapee.Team == Team.SCP)
                                    {
                                        continue;                           // Prevent SCPs from being notified about other SCPs using SCP-914 to teleport.
                                    }
                                    stringToShow += Scp914Teleportation.Instance.Config.TeleportSCPMessage.Replace("{Name}", Escapee.Nickname).Replace("{Room}", GetRoomName(Escapee.CurrentRoom)).Replace("{Class}", $"<color={Escapee.Role.GetColor().ToHex()}>{Constants.ClassStrings[Escapee.Role.ToString()]}</color>") + "\n";
                                }
                                SCP.ReferenceHub.hints.Show(new TextHint(stringToShow, new HintParameter[] {
                                    new StringHintParameter("")
                                }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0.25f), 5f));
                            }
                        }
                    }
                });
            }

            teleported.Clear();
        }
Ejemplo n.º 11
0
 internal static void OnUpgrade(UpgradingItemsEventArgs ev)
 {
     ev.Items.RemoveAll(pickup => pickup.gameObject.TryGetComponent <HatItemComponent>(out _));
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UpgradingEventArgs"/> class.
 /// </summary>
 /// <param name="item"><inheritdoc cref="Item"/></param>
 /// <param name="ev">The <see cref="ChangingRoleEventArgs"/> instance.</param>
 public UpgradingEventArgs(Inventory.SyncItemInfo item, UpgradingItemsEventArgs ev)
     : this(item, ev.Scp914, ev.Players, ev.Items, ev.KnobSetting, ev.IsAllowed)
 {
 }