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); } }
internal void OnUpgradingItems(UpgradingItemsEventArgs ev) { if (!Round.IsStarted) { return; } if (!ev.IsAllowed) { return; } data.Total914UpgradeItems += ev.Items.Count; data.Total914UpgradePlayers += ev.Players.Count; }
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); // }); // } //} }
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); }
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); }
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; } } } }
/// <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);
/// <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}."); }
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(); }
internal static void OnUpgrade(UpgradingItemsEventArgs ev) { ev.Items.RemoveAll(pickup => pickup.gameObject.TryGetComponent <HatItemComponent>(out _)); }
/// <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) { }