diff --git a/code/modules/modular_computers/computers/_modular_computer_shared.dm b/code/modules/modular_computers/computers/_modular_computer_shared.dm index 77888fdf01..0aca92f9d8 100644 --- a/code/modules/modular_computers/computers/_modular_computer_shared.dm +++ b/code/modules/modular_computers/computers/_modular_computer_shared.dm @@ -63,4 +63,4 @@ if(printer_slot) . += "It has a printer installed." if(user_is_adjacent) - . += "The printer's paper levels are at: [printer_slot.stored_paper]/[printer_slot.max_paper].]" + . += "The printer's paper levels are at: [printer_slot.stored_paper]/[printer_slot.max_paper]." diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm index a9f353bca4..d9d9e5c876 100644 --- a/code/modules/modular_computers/computers/item/computer_ui.dm +++ b/code/modules/modular_computers/computers/item/computer_ui.dm @@ -114,6 +114,12 @@ update_icon() if(user && istype(user)) ui_interact(user) // Re-open the UI on this computer. It should show the main screen now. + if("eject_pen") + if(istype(src, /obj/item/modular_computer/tablet)) + var/obj/item/modular_computer/tablet/self = src + if(self.can_have_pen) + self.remove_pen() + return if("PC_killprogram") var/prog = params["name"] diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index 72e1283553..d4d3ef52c2 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -18,6 +18,69 @@ var/has_variants = TRUE var/finish_color = null + //Pen stuff + var/list/contained_item = list(/obj/item/pen, /obj/item/toy/crayon, /obj/item/lipstick, /obj/item/flashlight/pen, /obj/item/clothing/mask/cigarette) + var/obj/item/inserted_item //Used for pen, crayon, and lipstick insertion or removal. Same as above. + var/can_have_pen = TRUE + +/obj/item/modular_computer/tablet/examine(mob/user) + . = ..() + if(inserted_item && (!isturf(loc))) + . += "Ctrl-click to remove [inserted_item]." + +/obj/item/modular_computer/tablet/Initialize() + . = ..() + if(can_have_pen) + if(inserted_item) + inserted_item = new inserted_item(src) + else + inserted_item = new /obj/item/pen(src) + +/obj/item/modular_computer/tablet/proc/insert_pen(obj/item/pen) + if(!usr.transferItemToLoc(pen, src)) + return + to_chat(usr, "You slide \the [pen] into \the [src]'s pen slot.") + inserted_item = pen + playsound(src, 'sound/machines/button.ogg', 50, 1) + +/obj/item/modular_computer/tablet/proc/remove_pen() + if(hasSiliconAccessInArea(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + return + + if(inserted_item) + usr.put_in_hands(inserted_item) + to_chat(usr, "You remove [inserted_item] from \the [src]'s pen slot.") + inserted_item = null + else + to_chat(usr, "\The [src] does not have a pen in it!") + +/obj/item/modular_computer/tablet/CtrlClick(mob/user) + . = ..() + if(isturf(loc)) + return + + if(can_have_pen) + remove_pen(user) + +/obj/item/modular_computer/tablet/attackby(obj/item/W, mob/user) + if(can_have_pen && is_type_in_list(W, contained_item)) + if(inserted_item) + to_chat(user, "There is \a [inserted_item] blocking \the [src]'s pen slot!") + return + else + insert_pen(W) + return + . = ..() + +/obj/item/modular_computer/tablet/Destroy() + if(istype(inserted_item)) + QDEL_NULL(inserted_item) + return ..() + +/obj/item/modular_computer/tablet/ui_data(mob/user) + . = ..() + .["PC_showpeneject"] = inserted_item ? 1 : 0 + /obj/item/modular_computer/tablet/update_icon_state() if(has_variants) if(!finish_color) @@ -64,6 +127,7 @@ var/datum/computer_file/program/robotact/robotact ///IC log that borgs can view in their personal management app var/list/borglog = list() + can_have_pen = FALSE /obj/item/modular_computer/tablet/integrated/Initialize(mapload) . = ..() diff --git a/tgui/packages/tgui/layouts/NtosWindow.js b/tgui/packages/tgui/layouts/NtosWindow.js index 325f89a4a4..d13cea1f03 100644 --- a/tgui/packages/tgui/layouts/NtosWindow.js +++ b/tgui/packages/tgui/layouts/NtosWindow.js @@ -6,7 +6,7 @@ import { resolveAsset } from '../assets'; import { useBackend } from '../backend'; -import { Box, Button } from '../components'; +import { Box, Button, Icon, Tooltip } from '../components'; import { Window } from './Window'; export const NtosWindow = (props, context) => { @@ -28,6 +28,7 @@ export const NtosWindow = (props, context) => { PC_stationtime, PC_programheaders = [], PC_showexitprogram, + PC_showpeneject, } = data; return ( { src={resolveAsset(PC_apclinkicon)} /> )} + {!!PC_showpeneject && ( +