diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index c464b78b86b..0eb24d18860 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -2056,7 +2056,7 @@ "aNB" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) "aNC" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) "aND" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Law office"; pixel_x = 0; pixel_y = 32},/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/wood,/area/lawoffice) -"aNE" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/pen/red,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/wood,/area/lawoffice) +"aNE" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/pen/multi,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/wood,/area/lawoffice) "aNF" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/secure/briefcase{pixel_x = 2; pixel_y = -2},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/wood,/area/lawoffice) "aNG" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Law Office APC"; pixel_y = 24},/obj/structure/flora/kirbyplants{icon_state = "plant-21"; layer = 4.1; tag = "icon-plant-21"},/turf/simulated/floor/wood,/area/lawoffice) "aNH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) @@ -2346,7 +2346,7 @@ "aTf" = (/obj/structure/stool/bed/chair{dir = 8; name = "Defense"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/crew_quarters/courtroom) "aTg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel,/area/crew_quarters/courtroom) "aTh" = (/obj/item/device/taperecorder{pixel_y = 0},/obj/item/weapon/cartridge/lawyer,/obj/machinery/door_control{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_x = 0; pixel_y = -26},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/lawoffice) -"aTi" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/lawoffice) +"aTi" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/multi,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/lawoffice) "aTj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/lawoffice) "aTk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/lawoffice) "aTl" = (/obj/structure/closet/lawcloset,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -28},/turf/simulated/floor/wood,/area/lawoffice) @@ -5149,7 +5149,7 @@ "bVa" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/blueshield) "bVb" = (/obj/structure/sign/poster/legit{pixel_x = -32},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/ntrep) "bVc" = (/obj/structure/table/woodentable,/obj/machinery/computer/skills{req_access_txt = "57"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/ntrep) -"bVd" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/stamp/centcom,/obj/item/weapon/pen/fountain,/turf/simulated/floor/carpet,/area/ntrep) +"bVd" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/stamp/centcom,/obj/item/weapon/pen/multi/fountain,/turf/simulated/floor/carpet,/area/ntrep) "bVe" = (/obj/machinery/door/window{dir = 1; name = "Desk Door"; req_access_txt = "73"},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/turf/simulated/floor/wood,/area/ntrep) "bVf" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/reagent_containers/syringe/charcoal,/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = -1; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) "bVg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/gateway) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 099c35b2aa2..8f81531aa5b 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -278,7 +278,7 @@ "afs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/security/podbay) "aft" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/podbay) "afu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Pods"; req_access_txt = "71"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) -"afv" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/gold,/turf/simulated/floor/carpet,/area/magistrateoffice) +"afv" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/multi/gold,/turf/simulated/floor/carpet,/area/magistrateoffice) "afw" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/podbay) "afx" = (/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) "afy" = (/turf/simulated/floor/plasteel,/area/security/range) @@ -1623,10 +1623,10 @@ "aFm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/port) "aFn" = (/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aFo" = (/obj/structure/table/reinforced,/obj/item/weapon/folder{pixel_x = -4},/obj/item/weapon/folder/red{pixel_y = 3},/obj/item/weapon/folder/blue{pixel_x = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/folder/yellow{pixel_x = 2; pixel_y = 2},/obj/item/weapon/stamp/law,/obj/machinery/requests_console{department = "Internal Affairs Office"; name = "Internal Affairs Requests Console"; pixel_y = -30},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) -"aFp" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/blue{pixel_x = -5; pixel_y = -1},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = 3},/obj/item/ashtray/plastic{pixel_x = 4; pixel_y = 6},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) +"aFp" = (/obj/structure/table/reinforced,/obj/item/ashtray/plastic{pixel_x = 4; pixel_y = 6},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/weapon/pen/multi,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aFq" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/obj/item/device/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aFr" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/obj/machinery/requests_console{department = "Internal Affairs Office"; name = "Internal Affairs Requests Console"; pixel_y = -30},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) -"aFs" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/blue{pixel_x = -5; pixel_y = -1},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = 3},/obj/item/ashtray/plastic{pixel_x = 5; pixel_y = 6},/obj/machinery/power/apc{dir = 2; name = "Law Office APC"; pixel_y = -24},/obj/structure/cable,/obj/item/weapon/pen,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) +"aFs" = (/obj/structure/table/reinforced,/obj/item/ashtray/plastic{pixel_x = 5; pixel_y = 6},/obj/machinery/power/apc{dir = 2; name = "Law Office APC"; pixel_y = -24},/obj/structure/cable,/obj/item/weapon/pen/multi,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aFt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "lawyer"; name = "Privacy Shutters Control"; pixel_y = -25},/obj/item/weapon/folder{pixel_x = -4},/obj/item/weapon/folder/red{pixel_y = 3},/obj/machinery/camera{c_tag = "Internal Affairs Office"; dir = 1; network = list("SS13")},/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/blue{pixel_x = 5},/obj/item/weapon/stamp/law,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aFu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id_tag = "lawyer"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/lawoffice) "aFv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) @@ -5548,7 +5548,7 @@ "ccL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/ntrep) "ccM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet,/area/ntrep) "ccN" = (/obj/structure/table/woodentable,/obj/machinery/computer/skills{req_access_txt = "57"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet,/area/ntrep) -"ccO" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/stamp/centcom,/obj/item/weapon/pen/fountain,/turf/simulated/floor/carpet,/area/ntrep) +"ccO" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/stamp/centcom,/obj/item/weapon/pen/multi/fountain,/turf/simulated/floor/carpet,/area/ntrep) "ccP" = (/obj/machinery/door/window{dir = 1; name = "Desk Door"; req_access_txt = "73"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/turf/simulated/floor/wood,/area/ntrep) "ccQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "ccR" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index fb46c2547de..965503cb288 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -1,23 +1,20 @@ // A special pen for service droids. Can be toggled to switch between normal writing mode, and paper rename mode // Allows service droids to rename paper items. -/obj/item/weapon/pen/robopen +/obj/item/weapon/pen/multi/robopen desc = "A black ink printing attachment with a paper naming mode." name = "Printing Pen" var/mode = 1 -/obj/item/weapon/pen/robopen/attack_self(mob/user as mob) +/obj/item/weapon/pen/multi/robopen/attack_self(mob/user as mob) var/choice = input("Would you like to change colour or mode?") as null|anything in list("Colour","Mode") if(!choice) return - playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) - switch(choice) if("Colour") - var/newcolour = input("Which colour would you like to use?") as null|anything in list("black","blue","red","green","yellow") - if(newcolour) colour = newcolour + select_colour(user) if("Mode") if (mode == 1) @@ -25,13 +22,14 @@ else mode = 1 user << "Changed printing mode to '[mode == 2 ? "Rename Paper" : "Write Paper"]'" + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) return // Copied over from paper's rename verb // see code\modules\paperwork\paper.dm line 62 -/obj/item/weapon/pen/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj) +/obj/item/weapon/pen/multi/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj) if ( !user || !paper ) return var/n_name = input(user, "What would you like to label the paper?", "Paper Labelling", null) as text diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 9191ebbfa13..ca2e0c30fef 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -314,7 +314,7 @@ New() src.modules += new /obj/item/device/flashlight(src) src.modules += new /obj/item/device/flash/cyborg(src) - src.modules += new /obj/item/weapon/pen/robopen(src) + src.modules += new /obj/item/weapon/pen/multi/robopen(src) src.modules += new /obj/item/weapon/form_printer(src) src.modules += new /obj/item/device/taperecorder(src) src.modules += new /obj/item/weapon/gripper/paperwork(src) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 723f4a2147d..76128dae463 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -416,8 +416,8 @@ B.update_icon() else if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) - var/obj/item/weapon/pen/robopen/RP = P - if(istype(P, /obj/item/weapon/pen/robopen) && RP.mode == 2) + var/obj/item/weapon/pen/multi/robopen/RP = P + if(istype(P, /obj/item/weapon/pen/multi/robopen) && RP.mode == 2) RP.RenamePaper(user,src) else show_content(user, infolinks = 1) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index f463cc71447..6bba24d2805 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -50,24 +50,59 @@ icon_state = "pen" colour = "white" -/obj/item/weapon/pen/multi //spaceman96: Trenna Seber +/obj/item/weapon/pen/multi name = "multicolor pen" desc = "It's a cool looking pen. Lots of colors!" + // these values are for the overlay + var/list/colour_choices = list( + "black" = list(0.25, 0.25, 0.25), + "red" = list(1, 0.25, 0.25), + "green" = list(0, 1, 0), + "blue" = list(0.5, 0.5, 1), + "yellow" = list(1, 1, 0)) + var/pen_color_iconstate = "pencolor" + var/pen_color_shift = 3 + +/obj/item/weapon/pen/multi/New() + ..() + update_icon() + +/obj/item/weapon/pen/multi/proc/select_colour(mob/user as mob) + var/newcolour = input(user, "Which colour would you like to use?", name, colour) as null|anything in colour_choices + if(newcolour) + colour = newcolour + playsound(loc, 'sound/effects/pop.ogg', 50, 1) + update_icon() + +/obj/item/weapon/pen/multi/attack_self(mob/living/user as mob) + select_colour(user) + +/obj/item/weapon/pen/multi/update_icon() + overlays.Cut() + var/icon/o = new(icon, pen_color_iconstate) + var/list/c = colour_choices[colour] + o.SetIntensity(c[1], c[2], c[3]) + if(pen_color_shift) + o.Shift(SOUTH, pen_color_shift) + overlays += o + /obj/item/weapon/pen/fancy name = "fancy pen" desc = "A fancy metal pen. It uses blue ink. An inscription on one side reads,\"L.L. - L.R.\"" icon_state = "fancypen" -/obj/item/weapon/pen/gold +/obj/item/weapon/pen/multi/gold name = "Gilded Pen" desc = "A golden pen that is gilded with a meager amount of gold material. The word 'Nanotrasen' is etched on the clip of the pen." icon_state = "goldpen" - -/obj/item/weapon/pen/fountain + pen_color_shift = 0 + +/obj/item/weapon/pen/multi/fountain name = "Engraved Fountain Pen" desc = "An expensive looking pen." - icon_state = "fountainpen" + icon_state = "fountainpen" + pen_color_shift = 0 /obj/item/weapon/pen/attack(mob/living/M, mob/user) if(!istype(M)) diff --git a/html/changelogs/Tastyfish-PR-multipens.yml b/html/changelogs/Tastyfish-PR-multipens.yml new file mode 100644 index 00000000000..59db542a02e --- /dev/null +++ b/html/changelogs/Tastyfish-PR-multipens.yml @@ -0,0 +1,35 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. Remove the quotation mark and put in your name when copy+pasting the example changelog. +author: Tastyfish + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "NT Rep fountain pens and magistrate gold pens can now write in 5 different colors. The IAA gets a cheap plastic equivalent." diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index 830da266dd6..159d2f572f2 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ