diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm
index bc58a46958..33d37edfa6 100644
--- a/code/game/machinery/computer/prisoner.dm
+++ b/code/game/machinery/computer/prisoner.dm
@@ -15,90 +15,81 @@
var/stop = 0.0
var/screen = 0 // 0 - No Access Denied, 1 - Access allowed
-
- attack_ai(var/mob/user as mob)
- return src.attack_hand(user)
-
- attack_hand(var/mob/user as mob)
- if(..())
- return
- user.set_machine(src)
- var/dat
- dat += "Prisoner Implant Manager System
"
- if(screen == 0)
- dat += "
Unlock Console"
- else if(screen == 1)
- dat += "
Chemical Implants
"
- var/turf/Tr = null
- for(var/obj/item/weapon/implant/chem/C in GLOB.all_chem_implants)
- Tr = get_turf(C)
- if(!Tr) continue//Out of range
- if(!C.implanted) continue
- dat += "[C.imp_in.name] | Remaining Units: [C.reagents.total_volume] | Inject: "
- dat += "((1))"
- dat += "((5))"
- dat += "((10))
"
- dat += "********************************
"
- dat += "
Tracking Implants
"
- for(var/obj/item/weapon/implant/tracking/T in GLOB.all_tracking_implants)
- Tr = get_turf(T)
- if(!Tr) continue//Out of range
- if(!T.implanted) continue
- var/loc_display = "Unknown"
- var/mob/living/carbon/M = T.imp_in
- if((M.z in using_map.station_levels) && !istype(M.loc, /turf/space))
- var/turf/mob_loc = get_turf(M)
- loc_display = mob_loc.loc
- if(T.malfunction)
- loc_display = pick(teleportlocs)
- dat += "ID: [T.id] | Location: [loc_display]
"
- dat += "(Message Holder) |
"
- dat += "********************************
"
- dat += "
Lock Console"
-
- user << browse(dat, "window=computer;size=400x500")
- onclose(user, "computer")
+/obj/machinery/computer/prisoner/attack_hand(mob/user)
+ if(..())
return
+ tgui_interact(user)
+/obj/machinery/computer/prisoner/tgui_interact(mob/user, datum/tgui/ui)
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ ui = new(user, src, "PrisonerManagement", name)
+ ui.open()
- process()
- if(!..())
- src.updateDialog()
- return
+/obj/machinery/computer/prisoner/tgui_data(mob/user)
+ var/list/data = list()
+
+ data["locked"] = !screen
+ data["chemImplants"] = list()
+ data["trackImplants"] = list()
+ if(screen)
+ for(var/obj/item/weapon/implant/chem/C in GLOB.all_chem_implants)
+ var/turf/T = get_turf(C)
+ if(!T)
+ continue
+ if(!C.implanted)
+ continue
+ data["chemImplants"].Add(list(list(
+ "host" = C.imp_in,
+ "units" = C.reagents.total_volume,
+ "ref" = "\ref[C]"
+ )))
+ for(var/obj/item/weapon/implant/tracking/track in GLOB.all_tracking_implants)
+ var/turf/T = get_turf(track)
+ if(!T)
+ continue
+ if(!track.implanted)
+ continue
+ var/loc_display = "Unknown"
+ var/mob/living/L = track.imp_in
+ if((get_z(L) in using_map.station_levels) && !istype(L.loc, /turf/space))
+ loc_display = T.loc
+ if(track.malfunction)
+ loc_display = pick(teleportlocs)
+ data["trackImplants"].Add(list(list(
+ "host" = L,
+ "ref" = "\ref[track]",
+ "id" = "[track.id]",
+ "loc" = "[loc_display]",
+ )))
+ return data
- Topic(href, href_list)
- if(..())
- return
- if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
- usr.set_machine(src)
+/obj/machinery/computer/prisoner/tgui_act(action, list/params)
+ if(..())
+ return TRUE
- if(href_list["inject1"])
- var/obj/item/weapon/implant/I = locate(href_list["inject1"])
- if(I) I.activate(1)
+ switch(action)
+ if("inject")
+ var/obj/item/weapon/implant/I = locate(params["imp"])
+ if(I)
+ I.activate(clamp(params["val"], 0, 10))
+ . = TRUE
- else if(href_list["inject5"])
- var/obj/item/weapon/implant/I = locate(href_list["inject5"])
- if(I) I.activate(5)
+ if("lock")
+ if(allowed(usr))
+ screen = !screen
+ else
+ to_chat(usr, "Unauthorized Access.")
+ . = TRUE
- else if(href_list["inject10"])
- var/obj/item/weapon/implant/I = locate(href_list["inject10"])
- if(I) I.activate(10)
+ if("warn")
+ var/warning = sanitize(input(usr, "Message:", "Enter your message here!", ""))
+ if(!warning)
+ return
+ var/obj/item/weapon/implant/I = locate(params["imp"])
+ if(I && I.imp_in)
+ to_chat(I.imp_in, "You hear a voice in your head saying: '[warning]'")
+ . = TRUE
- else if(href_list["lock"])
- if(src.allowed(usr))
- screen = !screen
- else
- to_chat(usr, "Unauthorized Access.")
-
- else if(href_list["warn"])
- var/warning = sanitize(input(usr,"Message:","Enter your message here!",""))
- if(!warning) return
- var/obj/item/weapon/implant/I = locate(href_list["warn"])
- if((I)&&(I.imp_in))
- var/mob/living/carbon/R = I.imp_in
- to_chat(R, "You hear a voice in your head saying: '[warning]'")
-
- src.add_fingerprint(usr)
- src.updateUsrDialog()
- return
+ add_fingerprint(usr)
\ No newline at end of file
diff --git a/code/game/objects/items/toys_yw.dm b/code/game/objects/items/toys/toys_yw.dm
similarity index 100%
rename from code/game/objects/items/toys_yw.dm
rename to code/game/objects/items/toys/toys_yw.dm
diff --git a/maps/yw/cryogaia-04-maintenance.dmm b/maps/yw/cryogaia-04-maintenance.dmm
index 81087de747..0343f0feeb 100644
--- a/maps/yw/cryogaia-04-maintenance.dmm
+++ b/maps/yw/cryogaia-04-maintenance.dmm
@@ -13804,7 +13804,7 @@
/turf/simulated/floor/tiled/dark,
/area/medical/biostorage3)
"iCb" = (
-/obj/item/weapon/caution/cone,
+/obj/item/clothing/head/cone,
/turf/simulated/floor,
/area/maintenance/lowfloor3)
"iCJ" = (
@@ -18022,7 +18022,7 @@
/turf/simulated/floor/bluegrid,
/area/ai_upload)
"kLl" = (
-/obj/item/weapon/caution/cone,
+/obj/item/clothing/head/cone,
/obj/structure/cable{
icon_state = "1-4"
},
@@ -27024,7 +27024,7 @@
/turf/simulated/floor/tiled,
/area/security/prison)
"qcT" = (
-/obj/item/weapon/caution/cone,
+/obj/item/clothing/head/cone,
/turf/simulated/floor,
/area/maintenance/atmos_control)
"qdm" = (
diff --git a/maps/yw/cryogaia-05-main.dmm b/maps/yw/cryogaia-05-main.dmm
index d9f4e23bd4..7a54d6015b 100644
--- a/maps/yw/cryogaia-05-main.dmm
+++ b/maps/yw/cryogaia-05-main.dmm
@@ -48125,7 +48125,7 @@
/turf/simulated/floor/tiled/white,
/area/medical/medbay_primary_storage)
"sve" = (
-/obj/item/weapon/caution/cone,
+/obj/item/clothing/head/cone,
/turf/simulated/floor,
/area/maintenance/medbay)
"svg" = (
diff --git a/maps/yw/scratchmap.dmm b/maps/yw/scratchmap.dmm
index 54d185a089..bb2cb85930 100644
--- a/maps/yw/scratchmap.dmm
+++ b/maps/yw/scratchmap.dmm
@@ -793,7 +793,7 @@
"pm" = (/obj/effect/decal/cleanable/vomit,/obj/item/weapon/stool/padded,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor,/area/maintenance/lowfloor1)
"pn" = (/obj/machinery/light/small{dir = 8; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lowfloor1)
"po" = (/obj/structure/cable{icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/lowfloor1)
-"pp" = (/obj/item/weapon/caution/cone,/turf/simulated/floor,/area/maintenance/lowfloor1)
+"pp" = (/obj/item/clothing/head/cone,/turf/simulated/floor,/area/maintenance/lowfloor1)
"pq" = (/obj/item/weapon/broken_bottle,/turf/simulated/floor,/area/maintenance/lowfloor1)
"pr" = (/obj/structure/table/woodentable,/obj/item/weapon/material/ashtray/plastic,/obj/item/trash/cigbutt/cigarbutt,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/lowfloor1)
"ps" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/lowfloor1)
diff --git a/maps/yw/tempbackup/old_cryogaia-04-maintenance.dmm b/maps/yw/tempbackup/old_cryogaia-04-maintenance.dmm
index 3de2a2f55f..6b41f523bc 100644
--- a/maps/yw/tempbackup/old_cryogaia-04-maintenance.dmm
+++ b/maps/yw/tempbackup/old_cryogaia-04-maintenance.dmm
@@ -7616,7 +7616,7 @@
/turf/simulated/floor,
/area/maintenance/starboard)
"arp" = (
-/obj/item/weapon/caution/cone,
+/obj/item/clothing/head/cone,
/turf/simulated/floor,
/area/maintenance/lowfloor3)
"arq" = (
@@ -24927,7 +24927,7 @@
/turf/simulated/floor/plating,
/area/maintenance/maintroom6)
"bce" = (
-/obj/item/weapon/caution/cone,
+/obj/item/clothing/head/cone,
/obj/structure/cable{
icon_state = "1-4"
},
@@ -32026,7 +32026,7 @@
/turf/simulated/floor/tiled/dark,
/area/hydroponics)
"bqD" = (
-/obj/item/weapon/caution/cone,
+/obj/item/clothing/head/cone,
/turf/simulated/floor,
/area/maintenance/atmos_control)
"bqE" = (
diff --git a/maps/yw/tempbackup/old_cryogaia-05-main.dmm b/maps/yw/tempbackup/old_cryogaia-05-main.dmm
index b1b479db1d..e2674b74bd 100644
--- a/maps/yw/tempbackup/old_cryogaia-05-main.dmm
+++ b/maps/yw/tempbackup/old_cryogaia-05-main.dmm
@@ -1190,7 +1190,7 @@
"axe" = (/obj/structure/cable/heavyduty{icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 10},/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 4},/turf/simulated/floor/plating/snow/plating/cryogaia,/area/borealis2/outdoors/grounds/power)
"axf" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor/plating,/area/security/outpost)
"axg" = (/obj/effect/floor_decal/snow/floor/edges3,/obj/effect/floor_decal/snow/floor/edges,/obj/effect/floor_decal/snow/floor/edges{dir = 4},/turf/simulated/floor/outdoors/snow/gravsnow/cryogaia,/area/borealis2/outdoors/grounds)
-"axh" = (/obj/item/weapon/caution/cone,/turf/simulated/floor,/area/maintenance/medbay)
+"axh" = (/obj/item/clothing/head/cone,/turf/simulated/floor,/area/maintenance/medbay)
"axi" = (/turf/simulated/wall,/area/medical/patient_b)
"axj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/extinguisher_cabinet{dir = 4; icon_state = "extinguisher_closed"; pixel_x = -30},/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/tiled/white,/area/medical/scanning)
"axk" = (/obj/effect/floor_decal/corner/pink{dir = 5},/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/tiled/white,/area/medical/patient_b)