private static bool Prefix(WorkStation __instance, GameObject tabletOwner)
        {
            try
            {
                if (!__instance.CanPlace(tabletOwner) || __instance._animationCooldown > 0f)
                {
                    return(false);
                }

                var player  = tabletOwner.GetPlayer();
                var station = __instance.GetWorkStation();

                foreach (var item in player.Inventory.Items)
                {
                    if (item.ItemType == ItemType.WeaponManagerTablet && !station.IsTabletConnected)
                    {
                        try
                        {
                            Event.Get.Player.InvokePlayerConnectWorkstation(player, item, station, out var allow);
                            Event.Get.Player.InvokePlayerItemUseEvent(player, item, Api.Events.SynapseEventArguments.ItemInteractState.Finalizing, ref allow);

                            if (!allow)
                            {
                                continue;
                            }
                        }
                        catch (Exception e)
                        {
                            Synapse.Api.Logger.Get.Error($"Synapse-Event: PlayerConnectWorkstation Event failed!!\n{e}\nStackTrace:\n{e.StackTrace}");
                        }

                        item.Despawn();
                        station.ConnectedTablet = item;
                        station.TabletOwner     = tabletOwner.GetPlayer();
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Get.Error($"Synapse-Item: Connect Workstation Tablet failed!!\n{e}\nStackTrace:\n{e.StackTrace}");
            }

            return(false);
        }
Example #2
0
        private static bool Prefix(WorkStation __instance, GameObject tabletOwner)
        {
            try
            {
                if (!__instance.CanPlace(tabletOwner) || __instance._animationCooldown > 0f)
                {
                    return(false);
                }

                Inventory component = tabletOwner.GetComponent <Inventory>();
                foreach (Inventory.SyncItemInfo syncItemInfo in component.items)
                {
                    if (syncItemInfo.id == ItemType.WeaponManagerTablet)
                    {
                        ActivatingWorkstationEventArgs ev = new ActivatingWorkstationEventArgs(Exiled.API.Features.Player.Get(tabletOwner), __instance);
                        Player.OnActivatingWorkstation(ev);

                        if (ev.IsAllowed)
                        {
                            component.items.Remove(syncItemInfo);
                            __instance.NetworkisTabletConnected = true;
                            __instance._animationCooldown       = 6.5f;
                            __instance.Network_playerConnected  = tabletOwner;
                        }

                        break;
                    }
                }

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