public static bool Prefix(SearchCoordinator __instance) { try { if (__instance.Completor.ValidateUpdate()) { if (!(NetworkTime.time >= __instance.SessionPipe.Session.FinishTime)) { return(false); } var allow = true; Events.InvokePickupItemEvent(__instance.GetPlayer(), __instance.Completor.TargetPickup, ref allow); if (!allow) { return(false); } __instance.Completor.Complete(); return(false); } else { __instance.SessionPipe.Invalidate(); } return(false); } catch (Exception e) { Log.Error($"PickupItem Event Error: {e}"); return(false); } }
private static bool Prefix(SearchCoordinator __instance) { var item = __instance.Completor.TargetPickup?.GetSynapseItem(); if (item == null) { return(true); } if (__instance.Completor.ValidateUpdate()) { if (!(NetworkTime.time >= __instance.SessionPipe.Session.FinishTime)) { return(false); } var player = __instance.GetPlayer(); var allow = true; try { Server.Get.Events.Player.InvokePlayerPickUpEvent(player, item, out allow); } catch (Exception e) { Logger.Get.Error($"Synapse-Event: PlayerPickUp failed!!\n{e}\nStackTrace:\n{e.StackTrace}"); } if (!allow) { __instance.SessionPipe.Invalidate(); return(false); } if (item.ItemType == ItemType.Ammo556 || item.ItemType == ItemType.Ammo762 || item.ItemType == ItemType.Ammo9mm) { __instance.Completor.Complete(); item.Destroy(); return(false); } item.PickUp(player); } return(false); }
private static bool OnPickup(SearchCoordinator __instance) { try { var item = __instance.Completor.TargetPickup?.GetSynapseItem(); var schematic = item.PickupBase?.GetComponent <SynapseObjectScript>(); var def = schematic?.Object as DefaultSynapseObject; if (item == null) { return(true); } if (!item.CanBePickedUp && (def == null || def.Parent.ItemParent == null)) { __instance.SessionPipe.Invalidate(); return(false); } if (__instance.Completor.ValidateUpdate()) { if (NetworkTime.time < __instance.SessionPipe.Session.FinishTime) { return(false); } var player = __instance.GetPlayer(); var allow = true; var change = def?.Parent?.ItemParent != null; if (change) { item = def.Parent.ItemParent; } try { if (schematic != null) { var ev = new SOPickupEventArgs { Object = schematic.Object as SynapseItemObject, Player = player }; Server.Get.Events.SynapseObject.InvokePickup(ev); if (!ev.Allow) { __instance.SessionPipe.Invalidate(); return(false); } } } catch (Exception ex) { Logger.Get.Error($"Synapse-Event: SynapseObject Pickup failed!!\n{ex}"); } try { Server.Get.Events.Player.InvokePlayerPickUpEvent(player, item, out allow); } catch (Exception e) { Logger.Get.Error($"Synapse-Event: PlayerPickUp failed!!\n{e}"); } if (!allow) { __instance.SessionPipe.Invalidate(); return(false); } if (change) { __instance.SessionPipe.Invalidate(); player.Inventory.AddItem(def.Parent.ItemParent); return(false); } __instance.Completor.Complete(); } else { __instance.SessionPipe.Invalidate(); } return(false); } catch (Exception e) { Logger.Get.Error($"Synapse-Event: PlayerPickUp Patch failed!!\n{e}"); return(true); } }
private static bool OnPickup(SearchCoordinator __instance) { try { var item = __instance.Completor.TargetPickup?.GetSynapseItem(); if (item == null) { return(true); } if (item.CanBePickedUp && __instance.Completor.ValidateUpdate()) { if (NetworkTime.time < __instance.SessionPipe.Session.FinishTime) { return(false); } var player = __instance.GetPlayer(); var allow = true; try { if (item.PickupBase.gameObject.TryGetComponent <SynapseObjectScript>(out var obj)) { var ev = new SOPickupEventArgs { Object = obj.Object as SynapseItemObject, Player = player }; Server.Get.Events.SynapseObject.InvokePickup(ev); if (!ev.Allow) { __instance.SessionPipe.Invalidate(); return(false); } } } catch (Exception ex) { Logger.Get.Error($"Synapse-Event: SynapseObject Pickup failed!!\n{ex}"); } try { Server.Get.Events.Player.InvokePlayerPickUpEvent(player, item, out allow); } catch (Exception e) { Logger.Get.Error($"Synapse-Event: PlayerPickUp failed!!\n{e}"); } if (!allow) { __instance.SessionPipe.Invalidate(); return(false); } __instance.Completor.Complete(); } else { __instance.SessionPipe.Invalidate(); } return(false); } catch (Exception e) { Logger.Get.Error($"Synapse-Event: PlayerPickUp Patch failed!!\n{e}"); return(true); } }