public static void InvokeScp914Upgrade(Scp914.Scp914Machine machine, List <CharacterClassManager> characterClassManagers, ref List <Pickup> pickups, Scp914.Scp914Knob knobSetting, ref bool allow) { if (Scp914UpgradeEvent == null) { return; } List <ReferenceHub> players = new List <ReferenceHub>(); foreach (CharacterClassManager characterClassManager in characterClassManagers) { players.Add(characterClassManager.gameObject.GetPlayer()); } SCP914UpgradeEvent ev = new SCP914UpgradeEvent() { Allow = allow, Machine = machine, Players = players, Items = pickups, KnobSetting = knobSetting }; Scp914UpgradeEvent.Invoke(ref ev); pickups = ev.Items; allow = ev.Allow; }
private static bool Prefix(Scp914.Scp914Machine __instance) { try { if (!NetworkServer.active) { return(false); } var array = Physics.OverlapBox(__instance.intake.position, __instance.inputSize / 2f); var players = new List <Player>(); var items = new List <SynapseItem>(); foreach (var collider in array) { var player = collider.GetComponent <Player>(); if (player != null) { players.Add(player); } else { var item = collider.GetComponent <Pickup>().GetSynapseItem(); if (item != null) { items.Add(item); } } } Event.Get.Map.Invoke914Activate(ref players, ref items, out var allow, out var move); if (!allow) { return(false); } var vanillaitems = items.Where(x => x.State == Api.Enum.ItemState.Map).Select(x => x.pickup); var vanillaplayers = players.Select(x => x.ClassManager); try { if (move) { __instance.MoveObjects(vanillaitems, vanillaplayers); } } finally { __instance.UpgradeObjects(vanillaitems, vanillaplayers.ToList()); } return(false); } catch (Exception e) { Synapse.Api.Logger.Get.Error($"Synapse-Event: Scp914 Activate Event failed!!\n{e}\nStackTrace:\n{e.StackTrace}"); return(true); } }
public static bool Prefix(Scp914.Scp914Machine __instance) { if (EventPlugin.Scp914UpgradeEventPatchDisable) { return(true); } try { 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); } } } List <Pickup> pickups = __instance.items; bool allowUpgrade = true; Events.InvokeScp914Upgrade(__instance, __instance.players, ref pickups, __instance.knobState, ref allowUpgrade); __instance.MoveObjects(pickups, __instance.players); if (allowUpgrade) { __instance.UpgradeObjects(pickups, __instance.players); } return(false); } catch (Exception exception) { Log.Error($"SCP914UpgradeEvent error: {exception}"); return(true); } }
public static bool Prefix(Scp914.Scp914Machine __instance, Pickup item) { ItemType itemType = __instance.UpgradeItemID(item.info.itemId); if (itemType == ItemType.KeycardO5) { return(false); } if (itemType < ItemType.KeycardJanitor) { item.Delete(); return(false); } item.SetIDFull(itemType); return(true); }
private static void Prefix(Scp914.Scp914Machine __instance) { try { if (loaded) { return; } foreach (var recipe in __instance.recipes) { Synapse.Api.Map.Get.Scp914.Recipes.Add(new Api.Scp914Recipe(recipe)); } loaded = true; } catch (Exception e) { Synapse.Api.Logger.Get.Error($"Synapse-Wrapper: Scp914 recipes failed!!\n{e}\nStackTrace:\n{e.StackTrace}"); } }