" : ]"\
+ + "", "window=[name]")
/obj/item/weapon/paper_bundle/attack_self(mob/user as mob)
- if(ishuman(user))
- var/mob/living/carbon/human/human_user = user
- var/dat
- var/obj/item/weapon/W = src[page]
- switch(screen)
- if(0)
- dat+= "
"
- if(istype(src[page], /obj/item/weapon/paper))
- var/obj/item/weapon/paper/P = W
- if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/dead/observer) || istype(usr, /mob/living/silicon)))
- dat+= "
[P.info][P.stamps]"
- human_user << browse(dat, "window=[name]")
- P.add_fingerprint(usr)
- else if(istype(src[page], /obj/item/weapon/photo))
- var/obj/item/weapon/photo/P = W
- human_user << browse_rsc(P.img, "tmp_photo.png")
- human_user << browse(dat + "

Written on the back:
[P.scribble]" : ]"\
- + "", "window=[name]")
- P.add_fingerprint(usr)
- add_fingerprint(usr)
- update_icon()
+ src.show_content(user)
+ add_fingerprint(usr)
+ update_icon()
return
-
/obj/item/weapon/paper_bundle/Topic(href, href_list)
..()
if((src in usr.contents) || (istype(src.loc, /obj/item/weapon/folder) && (src.loc in usr.contents)))
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index ce867e818a..41e59884c7 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -2,210 +2,159 @@
name = "photocopier"
icon = 'icons/obj/library.dmi'
icon_state = "bigscanner"
+ var/insert_anim = "bigscanner1"
anchored = 1
density = 1
use_power = 1
idle_power_usage = 30
active_power_usage = 200
power_channel = EQUIP
- var/obj/item/weapon/paper/copy = null //what's in the copier!
- var/obj/item/weapon/photo/photocopy = null
- var/obj/item/weapon/paper_bundle/bundle = null
+ var/obj/item/copyitem = null //what's in the copier!
var/copies = 1 //how many copies to print!
var/toner = 30 //how much toner is left! woooooo~
var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier!
- attack_ai(mob/user as mob)
- return attack_hand(user)
+/obj/machinery/photocopier/attack_ai(mob/user as mob)
+ return attack_hand(user)
- attack_hand(mob/user as mob)
- user.set_machine(src)
+/obj/machinery/photocopier/attack_hand(mob/user as mob)
+ user.set_machine(src)
- var/dat = "Photocopier
"
- if(copy || photocopy || bundle)
- dat += "
Remove Paper"
- if(toner)
- dat += "
Copy"
- dat += "Printing: [copies] copies."
- dat += "
- "
- dat += "
+"
- else if(toner)
- dat += "Please insert paper to copy.
"
- if(istype(user,/mob/living/silicon))
- dat += "
Print photo from database"
- dat += "Current toner level: [toner]"
- if(!toner)
- dat +="
Please insert a new toner cartridge!"
- user << browse(dat, "window=copier")
- onclose(user, "copier")
- return
-
- Topic(href, href_list)
- if(href_list["copy"])
- if(copy)
- for(var/i = 0, i < copies, i++)
- if(toner > 0)
- copy(copy)
- sleep(15)
- else
- break
- updateUsrDialog()
- else if(photocopy)
- for(var/i = 0, i < copies, i++)
- if(toner > 0)
- photocopy(photocopy)
- sleep(15)
- else
- break
- updateUsrDialog()
- else if(bundle)
- for(var/i = 0, i < copies, i++)
- if(toner <= 0)
- break
- var/obj/item/weapon/paper_bundle/p = new /obj/item/weapon/paper_bundle (src)
- var/j = 0
- for(var/obj/item/weapon/W in bundle)
- if(toner <= 0)
- usr << "
The photocopier couldn't finish the printjob."
- break
- else if(istype(W, /obj/item/weapon/paper))
- W = copy(W)
- else if(istype(W, /obj/item/weapon/photo))
- W = photocopy(W)
- W.loc = p
- p.amount++
- j++
- p.amount--
- p.loc = src.loc
- p.update_icon()
- p.icon_state = "paper_words"
- p.name = bundle.name
- p.pixel_y = rand(-8, 8)
- p.pixel_x = rand(-9, 9)
- sleep(15*j)
- updateUsrDialog()
- else if(href_list["remove"])
- if(copy)
- copy.loc = usr.loc
- usr.put_in_hands(copy)
- usr << "
You take the paper out of \the [src]."
- copy = null
- updateUsrDialog()
- else if(photocopy)
- photocopy.loc = usr.loc
- usr.put_in_hands(photocopy)
- usr << "
You take the photo out of \the [src]."
- photocopy = null
- updateUsrDialog()
- else if(bundle)
- bundle.loc = usr.loc
- usr.put_in_hands(bundle)
- usr << "
You take the paper bundle out of \the [src]."
- bundle = null
- updateUsrDialog()
- else if(href_list["min"])
- if(copies > 1)
- copies--
- updateUsrDialog()
- else if(href_list["add"])
- if(copies < maxcopies)
- copies++
- updateUsrDialog()
- else if(href_list["aipic"])
- if(!istype(usr,/mob/living/silicon)) return
- if(toner >= 5)
- var/mob/living/silicon/tempAI = usr
- var/obj/item/device/camera/siliconcam/camera = tempAI.aiCamera
-
- if(!camera)
- return
- var/obj/item/weapon/photo/selection = camera.selectpicture()
- if (!selection)
- return
-
- var/obj/item/weapon/photo/p = photocopy(selection)
- p.loc = src.loc
- if (p.desc == "")
- p.desc += "Copy by [tempAI.name]"
- else
- p.desc += " - Copy by [tempAI.name]"
+ var/dat = "Photocopier
"
+ if(copyitem)
+ dat += "
Remove Item"
+ if(toner)
+ dat += "
Copy"
+ dat += "Printing: [copies] copies."
+ dat += "
- "
+ dat += "
+"
+ else if(toner)
+ dat += "Please insert something to copy.
"
+ if(istype(user,/mob/living/silicon))
+ dat += "
Print photo from database"
+ dat += "Current toner level: [toner]"
+ if(!toner)
+ dat +="
Please insert a new toner cartridge!"
+ user << browse(dat, "window=copier")
+ onclose(user, "copier")
+ return
+/obj/machinery/photocopier/Topic(href, href_list)
+ if(href_list["copy"])
+ if(stat & (BROKEN|NOPOWER))
+ return
+
+ for(var/i = 0, i < copies, i++)
+ if(toner <= 0)
+ break
+
+ if (istype(copyitem, /obj/item/weapon/paper))
+ copy(copyitem)
sleep(15)
+ else if (istype(copyitem, /obj/item/weapon/photo))
+ photocopy(copyitem)
+ sleep(15)
+ else if (istype(copyitem, /obj/item/weapon/paper_bundle))
+ var/obj/item/weapon/paper_bundle/B = bundlecopy(copyitem)
+ sleep(15*B.amount)
else
- usr << "
The photocopier couldn't finish the printjob."
+ usr << "
\The [copyitem] can't be copied by \the [src]."
+ break
+
+ use_power(active_power_usage)
+ updateUsrDialog()
+ else if(href_list["remove"])
+ if(copyitem)
+ copyitem.loc = usr.loc
+ usr.put_in_hands(copyitem)
+ usr << "
You take \the [copyitem] out of \the [src]."
+ copyitem = null
updateUsrDialog()
+ else if(href_list["min"])
+ if(copies > 1)
+ copies--
+ updateUsrDialog()
+ else if(href_list["add"])
+ if(copies < maxcopies)
+ copies++
+ updateUsrDialog()
+ else if(href_list["aipic"])
+ if(!istype(usr,/mob/living/silicon)) return
+ if(stat & (BROKEN|NOPOWER)) return
+
+ if(toner >= 5)
+ var/mob/living/silicon/tempAI = usr
+ var/obj/item/device/camera/siliconcam/camera = tempAI.aiCamera
- attackby(obj/item/O as obj, mob/user as mob)
- if(istype(O, /obj/item/weapon/paper))
- if(!copy && !photocopy && !bundle)
- user.drop_item()
- copy = O
- O.loc = src
- user << "
You insert the paper into \the [src]."
- flick("bigscanner1", src)
- updateUsrDialog()
- else
- user << "
There is already something in \the [src]."
- else if(istype(O, /obj/item/weapon/photo))
- if(!copy && !photocopy && !bundle)
- user.drop_item()
- photocopy = O
- O.loc = src
- user << "
You insert the photo into \the [src]."
- flick("bigscanner1", src)
- updateUsrDialog()
- else
- user << "
There is already something in \the [src]."
- else if(istype(O, /obj/item/weapon/paper_bundle))
- if(!copy && !photocopy && !bundle)
- user.drop_item()
- bundle = O
- O.loc = src
- user << "
You insert the bundle into \the [src]."
- flick("bigscanner1", src)
- updateUsrDialog()
- else if(istype(O, /obj/item/device/toner))
- if(toner == 0)
- user.drop_item()
- del(O)
- toner = 30
- user << "
You insert the toner cartridge into \the [src]."
- updateUsrDialog()
- else
- user << "
This cartridge is not yet ready for replacement! Use up the rest of the toner."
- else if(istype(O, /obj/item/weapon/wrench))
- playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
- anchored = !anchored
- user << "
You [anchored ? "wrench" : "unwrench"] \the [src]."
- return
+ if(!camera)
+ return
+ var/datum/picture/selection = camera.selectpicture()
+ if (!selection)
+ return
- ex_act(severity)
- switch(severity)
- if(1.0)
- del(src)
- if(2.0)
- if(prob(50))
- del(src)
- else
- if(toner > 0)
- new /obj/effect/decal/cleanable/blood/oil(get_turf(src))
- toner = 0
+ var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (src.loc)
+ p.construct(selection)
+ if (p.desc == "")
+ p.desc += "Copied by [tempAI.name]"
else
- if(prob(50))
- if(toner > 0)
- new /obj/effect/decal/cleanable/blood/oil(get_turf(src))
- toner = 0
- return
+ p.desc += " - Copied by [tempAI.name]"
+ toner -= 5
+ sleep(15)
+ updateUsrDialog()
- blob_act()
- if(prob(50))
- del(src)
+/obj/machinery/photocopier/attackby(obj/item/O as obj, mob/user as mob)
+ if(istype(O, /obj/item/weapon/paper) || istype(O, /obj/item/weapon/photo) || istype(O, /obj/item/weapon/paper_bundle))
+ if(!copyitem)
+ user.drop_item()
+ copyitem = O
+ O.loc = src
+ user << "
You insert \the [O] into \the [src]."
+ flick(insert_anim, src)
+ updateUsrDialog()
else
- if(toner > 0)
- new /obj/effect/decal/cleanable/blood/oil(get_turf(src))
- toner = 0
- return
+ user << "
There is already something in \the [src]."
+ else if(istype(O, /obj/item/device/toner))
+ if(toner <= 10) //allow replacing when low toner is affecting the print darkness
+ user.drop_item()
+ user << "
You insert the toner cartridge into \the [src]."
+ var/obj/item/device/toner/T = O
+ toner += T.toner_amount
+ del(O)
+ updateUsrDialog()
+ else
+ user << "
This cartridge is not yet ready for replacement! Use up the rest of the toner."
+ else if(istype(O, /obj/item/weapon/wrench))
+ playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
+ anchored = !anchored
+ user << "
You [anchored ? "wrench" : "unwrench"] \the [src]."
+ return
+/obj/machinery/photocopier/ex_act(severity)
+ switch(severity)
+ if(1.0)
+ del(src)
+ if(2.0)
+ if(prob(50))
+ del(src)
+ else
+ if(toner > 0)
+ new /obj/effect/decal/cleanable/blood/oil(get_turf(src))
+ toner = 0
+ else
+ if(prob(50))
+ if(toner > 0)
+ new /obj/effect/decal/cleanable/blood/oil(get_turf(src))
+ toner = 0
+ return
+
+/obj/machinery/photocopier/blob_act()
+ if(prob(50))
+ del(src)
+ else
+ if(toner > 0)
+ new /obj/effect/decal/cleanable/blood/oil(get_turf(src))
+ toner = 0
+ return
/obj/machinery/photocopier/proc/copy(var/obj/item/weapon/paper/copy)
var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc)
@@ -239,6 +188,8 @@
c.overlays += img
c.updateinfolinks()
toner--
+ if(toner == 0)
+ visible_message("
A red light on \the [src] flashes, indicating that it is out of toner.")
return c
@@ -258,9 +209,34 @@
toner -= 5 //photos use a lot of ink!
if(toner < 0)
toner = 0
+ visible_message("
A red light on \the [src] flashes, indicating that it is out of toner.")
return p
+//If need_toner is 0, the copies will still be lightened when low on toner, however it will not be prevented from printing. TODO: Implement print queues for fax machines and get rid of need_toner
+/obj/machinery/photocopier/proc/bundlecopy(var/obj/item/weapon/paper_bundle/bundle, var/need_toner=1)
+ var/obj/item/weapon/paper_bundle/p = new /obj/item/weapon/paper_bundle (src)
+ for(var/obj/item/weapon/W in bundle)
+ if(toner <= 0 && need_toner)
+ toner = 0
+ visible_message("
A red light on \the [src] flashes, indicating that it is out of toner.")
+ break
+
+ if(istype(W, /obj/item/weapon/paper))
+ W = copy(W)
+ else if(istype(W, /obj/item/weapon/photo))
+ W = photocopy(W)
+ W.loc = p
+ p.amount++
+ //p.amount--
+ p.loc = src.loc
+ p.update_icon()
+ p.icon_state = "paper_words"
+ p.name = bundle.name
+ p.pixel_y = rand(-8, 8)
+ p.pixel_x = rand(-9, 9)
+ return p
/obj/item/device/toner
name = "toner cartridge"
icon_state = "tonercartridge"
+ var/toner_amount = 30
diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm
index 78592666a1..53a131eb35 100644
--- a/maps/tgstation2.dmm
+++ b/maps/tgstation2.dmm
@@ -256,7 +256,7 @@
"aeV" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
"aeW" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
"aeX" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
-"aeY" = (/obj/structure/table,/obj/machinery/faxmachine{department = "Warden's Office"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden)
+"aeY" = (/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Warden's Office"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden)
"aeZ" = (/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
"afa" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
"afb" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/warden)
@@ -532,7 +532,7 @@
"akl" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/security/brig)
"akm" = (/obj/machinery/door/airlock/glass_security{name = "Solitary Confinement 2"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/brig)
"akn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
-"ako" = (/obj/structure/table/reinforced,/obj/machinery/faxmachine{anchored = 0; department = "Internal Affairs"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
+"ako" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{anchored = 0; department = "Internal Affairs"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"akp" = (/obj/structure/flora/pottedplant{tag = "icon-plant-10"; icon_state = "plant-10"},/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"akq" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"akr" = (/obj/structure/disposalpipe/segment,/obj/structure/closet/secure_closet/detective,/obj/item/weapon/reagent_containers/food/drinks/flask/detflask,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
@@ -788,7 +788,7 @@
"aph" = (/obj/structure/flora/pottedplant{tag = "icon-plant-22"; icon_state = "plant-22"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main)
"api" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
"apj" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/item/weapon/stamp,/obj/item/weapon/stamp/denied{pixel_x = 5},/turf/simulated/floor{icon_state = "dark"},/area/security/warden)
-"apk" = (/obj/structure/table/woodentable,/obj/machinery/keycard_auth{pixel_x = 30},/obj/machinery/faxmachine{department = "Head of Security"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
+"apk" = (/obj/structure/table/woodentable,/obj/machinery/keycard_auth{pixel_x = 30},/obj/machinery/photocopier/faxmachine{department = "Head of Security"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
"apl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos)
"apm" = (/obj/structure/table/woodentable,/obj/item/device/megaphone,/obj/item/device/radio/off,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
"apn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
@@ -1674,7 +1674,7 @@
"aGj" = (/obj/structure/closet/wardrobe/chaplain_black,/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aGk" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep)
"aGl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/bridge/meeting_room)
-"aGm" = (/obj/structure/table/woodentable,/obj/machinery/faxmachine{department = "Bridge"},/turf/simulated/floor/wood,/area/bridge/meeting_room)
+"aGm" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Bridge"},/turf/simulated/floor/wood,/area/bridge/meeting_room)
"aGn" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor/shutters{dir = 2; id = "bar"; layer = 3.1; name = "Bar Shutters"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aGo" = (/obj/structure/closet/coffin,/obj/machinery/door/window/eastleft{name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aGp" = (/obj/item/weapon/book/manual/security_space_law,/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/bridge/meeting_room)
@@ -2046,7 +2046,7 @@
"aNr" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/arrivals)
"aNs" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/primary/central_one)
"aNt" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; name = "Locker Room"; sortType = "Locker Room"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker)
-"aNu" = (/obj/structure/table,/obj/machinery/faxmachine{anchored = 1; department = "Vacant Office"},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/security/vacantoffice)
+"aNu" = (/obj/structure/table,/obj/machinery/photocopier/faxmachine{anchored = 1; department = "Vacant Office"},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/security/vacantoffice)
"aNv" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/effect/decal/cleanable/blood/oil,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/locker)
"aNw" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/evahallway)
"aNx" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/maintenance/evahallway)
@@ -3867,7 +3867,7 @@
"bws" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/aft)
"bwt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research)
"bwu" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/door_control{desc = "A remote control-switch for engine core."; id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -24; pixel_y = 10; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door_control{desc = "A remote control-switch for the engine core airlock hatch bolts."; id = "engine_access_hatch"; name = "Engine Hatch Bolt Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = -10; req_access_txt = "10"; specialfunctions = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief)
-"bwv" = (/obj/structure/table/reinforced,/obj/machinery/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor,/area/crew_quarters/heads/chief)
+"bwv" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor,/area/crew_quarters/heads/chief)
"bww" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/clothing/glasses/welding/superior,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief)
"bwx" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/central_two)
"bwy" = (/obj/structure/disposalpipe/segment,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central_two)
@@ -3896,7 +3896,7 @@
"bwV" = (/obj/machinery/light{dir = 1},/obj/structure/bookcase/manuals/medical,/obj/item/weapon/book/manual/stasis,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak)
"bwW" = (/turf/simulated/wall,/area/crew_quarters/medbreak)
"bwX" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
-"bwY" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/table,/obj/machinery/faxmachine{department = "CMO's Office"},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/crew_quarters/heads/cmo)
+"bwY" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "CMO's Office"},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/crew_quarters/heads/cmo)
"bwZ" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo)
"bxa" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/hallway/primary/central_one)
"bxb" = (/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo)
@@ -4071,7 +4071,7 @@
"bAo" = (/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
"bAp" = (/turf/simulated/floor,/area/hallway/secondary/entry/aft)
"bAq" = (/turf/simulated/wall,/area/medical/genetics)
-"bAr" = (/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/light,/obj/structure/table,/obj/machinery/faxmachine{department = "Research Director's Office"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hop)
+"bAr" = (/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/light,/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Research Director's Office"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hop)
"bAs" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/table,/obj/item/weapon/storage/box/botanydisk,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora)
"bAt" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/science,/obj/item/weapon/cartridge/signal/science{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/science{pixel_x = 4; pixel_y = 6},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("SS13","Research")},/obj/item/clothing/glasses/welding/superior,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
"bAu" = (/obj/structure/closet/secure_closet/RD,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
@@ -4887,7 +4887,7 @@
"bPY" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_server_room)
"bPZ" = (/turf/simulated/wall,/area/medical/medbay2)
"bQa" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/camera{c_tag = "Messaging Server"; dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room)
-"bQb" = (/obj/structure/table,/obj/machinery/faxmachine{department = "Head of Personnel's Office"},/turf/simulated/floor,/area/crew_quarters/heads/hop)
+"bQb" = (/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Head of Personnel's Office"},/turf/simulated/floor,/area/crew_quarters/heads/hop)
"bQc" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/crew_quarters/heads/hop)
"bQd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access_txt = "5"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo)
"bQe" = (/obj/machinery/camera{c_tag = "Mining Dock External"; dir = 8},/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor{icon_state = "warning"},/area/quartermaster/miningdock)
@@ -4983,7 +4983,7 @@
"bRQ" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/substation/command)
"bRR" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Command Substation"; dir = 2; network = list("SS13","Engineering")},/obj/machinery/power/smes/buildable{charge = 0},/turf/simulated/floor/plating,/area/maintenance/substation/command)
"bRS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/captain)
-"bRT" = (/obj/machinery/faxmachine{department = "Captain's Office"},/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain)
+"bRT" = (/obj/machinery/photocopier/faxmachine{department = "Captain's Office"},/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bRU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"bRV" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cryo)
"bRW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)