コード例 #1
0
        public override bool CanRemoveItem(CanRemoveItemContext context)
        {
            if (context.ByCharacter is null)
            {
                // server can remove anything
                return(true);
            }

            var itemsContainer = context.Container;

            return(ServerCanPlayerInteract(itemsContainer, allowClientNotifications: true));
        }
コード例 #2
0
        public override bool CanRemoveItem(CanRemoveItemContext context)
        {
            if (!(context.Item.ProtoItem is IProtoItemEquipment protoItem))
            {
                return(true);
            }

            var itemEquipmentType = protoItem.EquipmentType;

            //MOD
            if (itemEquipmentType == EquipmentType.Device &&
                context.Item.ProtoGameObject is ProtoItemBackpack backpack)
            {
                return(backpack.SharedCanRemoveItem(context.Item, context.ByCharacter, false));
            }

            if (!(context.Item.ProtoItem is IProtoItemEquipmentImplant protoItemEquipment))
            {
                // impossible - how did it end up here?
                return(true);
            }

            if (itemEquipmentType == EquipmentType.Implant)
            {
                // implant item
                if (context.ByCharacter is null ||
                    CreativeModeSystem.SharedIsInCreativeMode(context.ByCharacter))
                {
                    // Allowed to add/remove implant item by the game only (via medical station).
                    // But allow to characters in the creative mode to do this directly.
                    return(true);
                }

                if (IsClient)
                {
                    ClientShowNotificationCannotRemoveImplant(protoItemEquipment);
                }
                else
                {
                    this.CallClient(context.ByCharacter,
                                    _ => _.ClientRemote_ClientShowNotificationCannotRemoveImplant(protoItemEquipment));
                }

                return(false);
            }

            // can remove anything
            return(true);
        }
コード例 #3
0
        public override bool CanRemoveItem(CanRemoveItemContext context)
        {
            if (!(context.Item.ProtoItem is IProtoItemEquipmentImplant protoItemEquipment))
            {
                // impossible - how did it end up here?
                return(true);
            }

            var itemEquipmentType = protoItemEquipment.EquipmentType;

            if (itemEquipmentType == EquipmentType.Implant)
            {
                // implant item
                if (context.ByCharacter == null ||
                    CreativeModeSystem.SharedIsInCreativeMode(context.ByCharacter))
                {
                    // Allowed to add/remove implant item by the game only (via medical station).
                    // But allow to characters in the creative mode to do this directly.
                    return(true);
                }

                if (IsClient)
                {
                    NotificationSystem.ClientShowNotification(
                        NotificationUseStationToRemoveImplant_Title,
                        NotificationUseStationToRemoveImplant_Message,
                        NotificationColor.Bad,
                        protoItemEquipment.Icon);
                }

                return(false);
            }

            // can remove anything
            return(true);
        }
コード例 #4
0
 public override bool CanRemoveItem(CanRemoveItemContext context)
 {
     return(true);
 }