diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index 03b20c16953..6e9ed7b2770 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -3601,7 +3601,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/structure/sign/plaques/atmos{ +/obj/structure/plaque/static_plaque/atmos{ pixel_y = 32 }, /turf/open/floor/plating, @@ -3626,7 +3626,7 @@ "lb" = ( /obj/structure/table, /obj/machinery/recharger, -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ pixel_x = -32 }, /obj/effect/turf_decal/tile/red{ diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index b351d0db90b..fc3fc6913af 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -1830,7 +1830,7 @@ id = "TheRealSecretPlace"; name = "\improper Tear In The Fabric of Reality" }, -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ desc = "Holding the record for about 500 years now."; name = "The Most Annoying Organization Ever"; pixel_y = 32 @@ -3940,7 +3940,7 @@ /turf/open/floor/wood, /area/awaymission/cabin/caves) "kn" = ( -/obj/structure/sign/basic{ +/obj/structure/sign{ pixel_x = 32 }, /turf/open/floor/plating/asteroid/snow{ diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 53efc47ff0f..92b1bfd60e5 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -2375,7 +2375,7 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior/security) "fv" = ( -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ pixel_x = 32 }, /obj/effect/turf_decal/tile/red{ diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 8b988e00647..33a7c0a8022 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -3717,7 +3717,7 @@ /turf/open/floor/plasteel, /area/security/brig) "ajd" = ( -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ pixel_y = 32 }, /obj/effect/turf_decal/tile/red{ @@ -35049,7 +35049,7 @@ /turf/open/floor/plating, /area/engine/atmos) "bSD" = ( -/obj/structure/sign/plaques/atmos{ +/obj/structure/plaque/static_plaque/atmos{ pixel_y = -32 }, /obj/structure/table, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 274d32c0a61..ec3c357b55a 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -28561,7 +28561,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "beE" = ( -/obj/structure/sign/plaques/atmos, +/obj/structure/plaque/static_plaque/atmos, /turf/closed/wall, /area/engine/atmos) "beF" = ( @@ -38381,7 +38381,7 @@ /turf/open/floor/plasteel, /area/security/main) "bwh" = ( -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ pixel_y = -32 }, /obj/effect/turf_decal/tile/red, @@ -50796,7 +50796,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bQW" = ( -/obj/structure/sign/plaques/golden/captain{ +/obj/structure/plaque/static_plaque/golden/captain{ pixel_x = 32 }, /turf/open/floor/wood, diff --git a/_maps/map_files/Donutstation/Donutstation.dmm b/_maps/map_files/Donutstation/Donutstation.dmm index 2058585ef3d..f8a8703deb0 100644 --- a/_maps/map_files/Donutstation/Donutstation.dmm +++ b/_maps/map_files/Donutstation/Donutstation.dmm @@ -12120,7 +12120,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "aBK" = ( -/obj/structure/sign/plaques/atmos{ +/obj/structure/plaque/static_plaque/atmos{ pixel_y = 32 }, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -27048,7 +27048,7 @@ }, /obj/effect/turf_decal/tile/red, /obj/effect/landmark/start/security_officer, -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ pixel_y = -32 }, /turf/open/floor/plasteel, @@ -50075,7 +50075,7 @@ /turf/open/space/basic, /area/space/nearstation) "rhZ" = ( -/obj/structure/sign/plaques/golden/captain{ +/obj/structure/plaque/static_plaque/golden/captain{ pixel_y = 32 }, /obj/machinery/camera{ diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 8d81ef68e8c..c097ac56ddd 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -11015,7 +11015,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/sign/plaques/golden/captain{ +/obj/structure/plaque/static_plaque/golden/captain{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -18365,7 +18365,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ dir = 4 }, -/obj/structure/sign/plaques/atmos, +/obj/structure/plaque/static_plaque/atmos, /turf/closed/wall/rust, /area/engine/atmos) "aCV" = ( @@ -49913,7 +49913,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard) "bxm" = ( -/obj/structure/sign/plaques/atmos, +/obj/structure/plaque/static_plaque/atmos, /turf/closed/wall/rust, /area/engine/atmos) "bxn" = ( @@ -60418,7 +60418,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ pixel_x = -32 }, /turf/open/floor/plasteel, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 823120bd1f6..42e7bdbe95d 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -34499,7 +34499,7 @@ }, /area/engine/atmos) "bAF" = ( -/obj/structure/sign/plaques/atmos{ +/obj/structure/plaque/static_plaque/atmos{ pixel_y = 32 }, /obj/item/phone{ @@ -49759,7 +49759,7 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "cjK" = ( -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ desc = "A golden plaque commemorating excellence in medical care. God only knows how this ended up in this medbay."; name = "The Hippocratic Award for Excellence in Medicine"; pixel_x = -32 diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 961a26631c1..27481527c0d 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -3240,7 +3240,7 @@ /area/security/main) "ajn" = ( /obj/structure/table, -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ pixel_y = 32 }, /obj/machinery/light{ @@ -39463,7 +39463,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/structure/sign/plaques/atmos{ +/obj/structure/plaque/static_plaque/atmos{ pixel_y = 32 }, /obj/machinery/light{ diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 31983c3892b..98a3d01bafc 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -7248,7 +7248,7 @@ /area/centcom/ferry) "ql" = ( /obj/structure/dresser, -/obj/structure/sign/plaques/golden/captain{ +/obj/structure/plaque/static_plaque/golden/captain{ pixel_x = 32 }, /obj/effect/turf_decal/tile/neutral{ @@ -14518,7 +14518,7 @@ /area/tdome/tdomeobserve) "GL" = ( /obj/structure/table/wood, -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ pixel_y = 32 }, /obj/item/clothing/accessory/lawyers_badge{ @@ -14542,7 +14542,7 @@ /area/tdome/tdomeobserve) "GO" = ( /obj/structure/table/wood, -/obj/structure/sign/plaques/golden{ +/obj/structure/plaque/static_plaque/golden{ pixel_y = 32 }, /obj/item/clothing/accessory/medal/silver{ @@ -14817,7 +14817,7 @@ /area/tdome/tdomeobserve) "Hr" = ( /obj/structure/table/wood, -/obj/structure/sign/plaques/thunderdome{ +/obj/structure/plaque/static_plaque/thunderdome{ pixel_y = -32 }, /obj/item/clothing/accessory/medal/gold{ @@ -14843,7 +14843,7 @@ /area/tdome/tdomeobserve) "Ht" = ( /obj/structure/table/wood, -/obj/structure/sign/plaques/thunderdome{ +/obj/structure/plaque/static_plaque/thunderdome{ pixel_y = -32 }, /obj/item/clothing/accessory/medal{ diff --git a/_maps/shuttles/whiteship_kilo.dmm b/_maps/shuttles/whiteship_kilo.dmm index 2b38f09db6a..e881e56aabb 100644 --- a/_maps/shuttles/whiteship_kilo.dmm +++ b/_maps/shuttles/whiteship_kilo.dmm @@ -1158,7 +1158,7 @@ /obj/machinery/status_display/evac{ pixel_y = 32 }, -/obj/structure/sign/plaques/golden/captain{ +/obj/structure/plaque/static_plaque/golden/captain{ pixel_x = 32 }, /obj/item/gun/energy/laser/retro, diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 6fba8782ca7..9559552a71b 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -106,6 +106,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/stack/rods/twentyfive = 1, /obj/item/stack/sheet/metal/twenty = 1, /obj/item/stack/sheet/mineral/plasma = 1, + /obj/item/sign = 1, //assemblies /obj/item/assembly/infra = 1, @@ -192,7 +193,8 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/stack/sheet/mineral/wood/fifty = 1, /obj/item/beacon = 1, /obj/item/weaponcrafting/receiver = 1, - /obj/item/paper/fluff/stations/soap =1, //recipes count as crafting. + /obj/item/paper/fluff/stations/soap = 1, //recipes count as crafting. + /obj/item/plaque = 1, ) = 8, list(//medical and chemicals diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 6dcc6225799..08cac62460e 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -32,6 +32,8 @@ GLOBAL_LIST_EMPTY(meteor_list) // List of all meteors. GLOBAL_LIST_EMPTY(active_jammers) // List of active radio jammers GLOBAL_LIST_EMPTY(ladders) GLOBAL_LIST_EMPTY(trophy_cases) +///This is a global list of all signs you can change an existing sign or new sign backing to, when using a pen on them. +GLOBAL_LIST_EMPTY(editable_sign_types) GLOBAL_LIST_EMPTY(wire_color_directory) GLOBAL_LIST_EMPTY(wire_name_directory) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 8f2a23df9e0..29c3a88f5bc 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -211,6 +211,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ GLOBAL_LIST_INIT(gold_recipes, list ( \ new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \ + new/datum/stack_recipe("blank plaque", /obj/item/plaque, 1), \ new/datum/stack_recipe("HoS Statue", /obj/structure/statue/gold/hos, 5, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("HoP Statue", /obj/structure/statue/gold/hop, 5, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("CE Statue", /obj/structure/statue/gold/ce, 5, one_per_turf = 1, on_floor = 1), \ diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 92863243f6b..dbfb7c2f75c 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -626,7 +626,7 @@ GLOBAL_LIST_INIT(plastic_recipes, list( new /datum/stack_recipe("large water bottle", /obj/item/reagent_containers/food/drinks/waterbottle/large/empty, 3), \ new /datum/stack_recipe("colo cups", /obj/item/reagent_containers/food/drinks/colocup, 1), \ new /datum/stack_recipe("wet floor sign", /obj/item/clothing/suit/caution, 2), \ - new /datum/stack_recipe("blank sign", /obj/item/sign_backing, 1))) + new /datum/stack_recipe("blank wall sign", /obj/item/sign, 1))) /obj/item/stack/sheet/plastic name = "plastic" diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index dd887c061ca..5275a5d2cb6 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -7,7 +7,7 @@ max_integrity = 500 integrity_failure = 0.5 armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) - buildable_sign = 0 + buildable_sign = FALSE var/panel_open = FALSE var/datum/barsign/chosen_sign diff --git a/code/game/objects/structures/plaques/_plaques.dm b/code/game/objects/structures/plaques/_plaques.dm new file mode 100644 index 00000000000..a2da8f6d07e --- /dev/null +++ b/code/game/objects/structures/plaques/_plaques.dm @@ -0,0 +1,183 @@ +/obj/structure/plaque //This is a plaque you can craft with gold, then permanently engrave a title and description on, with a fountain pen. + icon = 'icons/obj/decals.dmi' + icon_state = "blankplaque" + name = "blank plaque" + desc = "A blank plaque, use a fancy pen to engrave it. It can be detatched from the wall with a wrench." + anchored = TRUE + opacity = FALSE + density = FALSE + layer = SIGN_LAYER + custom_materials = list(/datum/material/gold = 2000) + max_integrity = 200 //Twice as durable as regular signs. + armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE + ///Custom plaque structures and items both start "unengraved", once engraved with a fountain pen their text can't be altered again. Static plaques are already engraved. + var/engraved = FALSE + +/obj/item/plaque //The item version of the above. + icon = 'icons/obj/decals.dmi' + icon_state = "blankplaque" + name = "blank plaque" + desc = "A blank plaque, use a fancy pen to engrave it. It can be placed on a wall." + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list(/datum/material/gold = 2000) + max_integrity = 200 + armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + ///This points the item to make the proper structure when placed on a wall. + var/plaque_path = /obj/structure/plaque + ///Custom plaque structures and items both start "unengraved", once engraved with a fountain pen their text can't be altered again. + var/engraved = FALSE + +/obj/structure/plaque/attack_hand(mob/user) + . = ..() + if(.) + return + user.examinate(src) + +/obj/structure/plaque/wrench_act(mob/living/user, obj/item/wrench/I) + . = ..() + user.visible_message("[user] starts removing [src]...", \ + "You start unfastening [src].") + I.play_tool_sound(src) + if(!I.use_tool(src, user, 4 SECONDS)) + return TRUE + playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) + user.visible_message("[user] unfastens [src].", \ + "You unfasten [src].") + var/obj/item/plaque/unwrenched_plaque = new (get_turf(user)) + if(engraved) //If it's still just a basic unengraved plaque, we can (and should) skip some of the below variable transfers. + unwrenched_plaque.name = name //Copy over the plaque structure variables to the plaque item we're creating when we unwrench it. + unwrenched_plaque.desc = desc + unwrenched_plaque.engraved = engraved + unwrenched_plaque.obj_integrity = obj_integrity + unwrenched_plaque.setDir(dir) + qdel(src) //The plaque structure on the wall goes poof and only the plaque item from unwrenching remains. + return TRUE + +/obj/structure/plaque/welder_act(mob/living/user, obj/item/I) + . = ..() + if(user.a_intent == INTENT_HARM) + return FALSE + if(obj_integrity == max_integrity) + to_chat(user, "This plaque is already in perfect condition.") + return TRUE + if(!I.tool_start_check(user, amount=0)) + return TRUE + user.visible_message("[user] starts repairing [src]...", \ + "You start repairing [src].") + if(!I.use_tool(src, user, 4 SECONDS, volume = 50)) + return TRUE + user.visible_message("[user] finishes repairing [src].", \ + "You finish repairing [src].") + obj_integrity = max_integrity + return TRUE + +/obj/item/plaque/welder_act(mob/living/user, obj/item/I) + . = ..() + if(user.a_intent == INTENT_HARM) + return FALSE + if(obj_integrity == max_integrity) + to_chat(user, "This plaque is already in perfect condition.") + return TRUE + if(!I.tool_start_check(user, amount=0)) + return TRUE + user.visible_message("[user] starts repairing [src]...", \ + "You start repairing [src].") + if(!I.use_tool(src, user, 4 SECONDS, volume = 50)) + return TRUE + user.visible_message("[user] finishes repairing [src].", \ + "You finish repairing [src].") + obj_integrity = max_integrity + return TRUE + +/obj/structure/plaque/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/pen/fountain)) + if(engraved) + to_chat(user, "This plaque has already been engraved.") + return + var/namechoice = input(user, "Title this plaque. (e.g. 'Best HoP Award', 'Great Ashwalker War Memorial')", "Plaque Customization") + if(!namechoice) + return + var/descriptionchoice = input(user, "Engrave this plaque's text.", "Plaque Customization") + if(!descriptionchoice) + return + if(!Adjacent(user)) //Make sure user is adjacent still + to_chat(user, "You need to stand next to the plaque to engrave it!") + return + user.visible_message("[user] begins engraving [src].", \ + "You begin engraving [src].") + if(!do_after(user, 4 SECONDS, target = src)) //This spits out a visible message that somebody is engraving a plaque, then has a delay. + return + name = "\improper [namechoice]" //We want improper here so examine doesn't get weird if somebody capitalizes the plaque title. + desc = "The plaque reads: '[descriptionchoice]'" + engraved = TRUE //The plaque now has a name, description, and can't be altered again. + user.visible_message("[user] engraves [src].", \ + "You engrave [src].") + return + if(istype(I, /obj/item/pen)) + if(engraved) + to_chat(user, "This plaque has already been engraved, and your pen isn't fancy enough to engrave it anyway! Find a fountain pen.") + return + to_chat(user, "Your pen isn't fancy enough to engrave this! Find a fountain pen.") //Go steal the Curator's. + return + return ..() + +/obj/item/plaque/attackby(obj/item/I, mob/user, params) //Same as part of the above, except for the item in hand instead of the structure. + if(istype(I, /obj/item/pen/fountain)) + if(engraved) + to_chat(user, "This plaque has already been engraved.") + return + var/namechoice = input(user, "Title this plaque. (e.g. 'Best HoP Award', 'Great Ashwalker War Memorial')", "Plaque Customization") + if(!namechoice) + return + var/descriptionchoice = input(user, "Engrave this plaque's text.", "Plaque Customization") + if(!descriptionchoice) + return + if(!Adjacent(user)) //Make sure user is adjacent still + to_chat(user, "You need to stand next to the plaque to engrave it!") + return + user.visible_message("[user] begins engraving [src].", \ + "You begin engraving [src].") + if(!do_after(user, 40, target = src)) //This spits out a visible message that somebody is engraving a plaque, then has a delay. + return + name = "\improper [namechoice]" //We want improper here so examine doesn't get weird if somebody capitalizes the plaque title. + desc = "The plaque reads: '[descriptionchoice]'" + engraved = TRUE //The plaque now has a name, description, and can't be altered again. + user.visible_message("[user] engraves [src].", \ + "You engrave [src].") + return + if(istype(I, /obj/item/pen)) + if(engraved) + to_chat(user, "This plaque has already been engraved, and your pen isn't fancy enough to engrave it anyway! Find a fountain pen.") + return + to_chat(user, "Your pen isn't fancy enough to engrave this! Find a fountain pen.") //Go steal the Curator's. + return + return ..() + +/obj/item/plaque/afterattack(atom/target, mob/user, proximity) + . = ..() + if(!iswallturf(target) || !proximity) + return + var/turf/target_turf = target + var/turf/user_turf = get_turf(user) + var/obj/structure/plaque/placed_plaque = new plaque_path(user_turf) //We place the plaque on the turf the user is standing, and pixel shift it to the target wall, as below. + //This is to mimic how signs and other wall objects are usually placed by mappers, and so they're only visible from one side of a wall. + var/dir = get_dir(user_turf, target_turf) + if(dir & NORTH) + placed_plaque.pixel_y = 32 + else if(dir & SOUTH) + placed_plaque.pixel_y = -32 + if(dir & EAST) + placed_plaque.pixel_x = 32 + else if(dir & WEST) + placed_plaque.pixel_x = -32 + user.visible_message("[user] fastens [src] to [target_turf].", \ + "You attach [src] to [target_turf].") + playsound(target_turf, 'sound/items/deconstruct.ogg', 50, TRUE) + if(engraved) + placed_plaque.name = name + placed_plaque.desc = desc + placed_plaque.engraved = engraved + placed_plaque.obj_integrity = obj_integrity + placed_plaque.setDir(dir) + qdel(src) diff --git a/code/game/objects/structures/signs/signs_plaques.dm b/code/game/objects/structures/plaques/static_plaques.dm similarity index 80% rename from code/game/objects/structures/signs/signs_plaques.dm rename to code/game/objects/structures/plaques/static_plaques.dm index 68caf105d01..1ac3ec7546d 100644 --- a/code/game/objects/structures/signs/signs_plaques.dm +++ b/code/game/objects/structures/plaques/static_plaques.dm @@ -1,26 +1,27 @@ -//plaques and memorials +//These are static plaques, they are made of gold and start engraved with a title and description. -/obj/structure/sign/plaques - name = "plaque" - desc = "A plaque commemorating an event." - icon_state = "atmosplaque" +/obj/structure/plaque/static_plaque + engraved = TRUE -/obj/structure/sign/plaques/atmos +/obj/structure/plaque/static_plaque/atmos name = "\improper FEA Atmospherics Division plaque" desc = "This plaque commemorates the fall of the Atmos FEA division. For all the charred, dizzy, and brittle men who have died in its hands." -/obj/structure/sign/plaques/thunderdome +/obj/structure/plaque/static_plaque/thunderdome name = "Thunderdome Plaque" desc = "This plaque commemorates those who have fallen in glorious combat. For all the charred, dizzy, and beaten men who have died in its hands." -/obj/structure/sign/plaques/golden +/obj/structure/plaque/static_plaque/golden name = "The Most Robust Men Award for Robustness" desc = "To be Robust is not an action or a way of life, but a mental state. Only those with the force of Will strong enough to act during a crisis, saving friend from foe, are truly Robust. Stay Robust my friends." icon_state = "goldenplaque" -/obj/structure/sign/plaques/golden/captain +/obj/structure/plaque/static_plaque/golden/captain name = "The Most Robust Captain Award for Robustness" +//These are plaques that aren't made of metal, so we'll just consider them signs. Those are made of plastic, not gold. +//See: code>game>objects>structures>signs>_signs.dm + /obj/structure/sign/plaques/kiddie name = "\improper AI developers plaque" desc = "Next to the extremely long list of names and job titles, there is a drawing of a little child. The child appears to be disabled. Beneath the image, someone has scratched the word \"PACKETS\"." @@ -31,7 +32,7 @@ desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom." /obj/structure/sign/plaques/kiddie/library - name = "Library Rules Sign" + name = "\improper Library Rules Sign" desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside." /obj/structure/sign/plaques/kiddie/perfect_man @@ -43,6 +44,6 @@ desc = "A guide to the drone shell dispenser, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today." /obj/structure/sign/plaques/deempisi - name = "Mr. Deempisi portrait" + name = "\improper Mr. Deempisi portrait" desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'" icon_state = "monkey_painting" diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm index ed3a506d5fb..5b9b29bafb5 100644 --- a/code/game/objects/structures/signs/_signs.dm +++ b/code/game/objects/structures/signs/_signs.dm @@ -1,28 +1,44 @@ /obj/structure/sign icon = 'icons/obj/decals.dmi' + icon_state = "backing" + name = "sign backing" + desc = "A plastic sign backing, use a pen to change the decal. It can be detached from the wall with a wrench." anchored = TRUE opacity = 0 density = FALSE layer = SIGN_LAYER + custom_materials = list(/datum/material/plastic = 2000) max_integrity = 100 armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) - var/buildable_sign = 1 //unwrenchable and modifiable + ///Determines if a sign is unwrenchable. + var/buildable_sign = TRUE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE + resistance_flags = FLAMMABLE + ///This determines if you can select this sign type when using a pen on a sign backing. False by default, set to true per sign type to override. + var/is_editable = FALSE + ///sign_change_name is used to make nice looking, alphebetized and categorized names when you use a pen on a sign backing. + var/sign_change_name = "Sign - Blank" //If this is ever seen in game, something went wrong. -/obj/structure/sign/basic - name = "blank sign" - desc = "How can signs be real if our eyes aren't real? Use a pen to change the decal." +/obj/item/sign + name = "sign backing" + desc = "A plastic sign backing, use a pen to change the decal. It can be placed on a wall." + icon = 'icons/obj/decals.dmi' icon_state = "backing" + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list(/datum/material/plastic = 2000) + armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + resistance_flags = FLAMMABLE + max_integrity = 100 + ///The type of sign structure that will be created when placed on a turf, the default looks just like a sign backing item. + var/sign_path = /obj/structure/sign + ///This determines if you can select this sign type when using a pen on a sign backing. False by default, set to true per sign type to override. + var/is_editable = TRUE -/obj/structure/sign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - if(damage_amount) - playsound(src.loc, 'sound/weapons/slash.ogg', 80, TRUE) - else - playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE) - if(BURN) - playsound(loc, 'sound/items/welder.ogg', 80, TRUE) +/obj/item/sign/Initialize() //Signs not attached to walls are always rotated so they look like they're laying horizontal. + . = ..() + var/matrix/M = matrix() + M.Turn(90) + transform = M /obj/structure/sign/attack_hand(mob/user) . = ..() @@ -30,125 +46,164 @@ return user.examinate(src) +/** + * This proc populates GLOBAL_LIST_EMPTY(editable_sign_types) + * + * The first time a pen is used on any sign, this populates GLOBAL_LIST_EMPTY(editable_sign_types), creating a global list of all the signs that you can set a sign backing to with a pen. + */ +/proc/populate_editable_sign_types() + for(var/s in subtypesof(/obj/structure/sign)) + var/obj/structure/sign/potential_sign = s + if(!initial(potential_sign.is_editable)) + continue + GLOB.editable_sign_types[initial(potential_sign.sign_change_name)] = potential_sign + GLOB.editable_sign_types = sortList(GLOB.editable_sign_types) //Alphabetizes the results. + +/obj/structure/sign/wrench_act(mob/living/user, obj/item/wrench/I) + . = ..() + user.visible_message("[user] starts removing [src]...", \ + "You start unfastening [src].") + I.play_tool_sound(src) + if(!I.use_tool(src, user, 4 SECONDS)) + return TRUE + playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) + user.visible_message("[user] unfastens [src].", \ + "You unfasten [src].") + var/obj/item/sign/unwrenched_sign = new (get_turf(user)) + if(type != /obj/structure/sign) //If it's still just a basic sign backing, we can (and should) skip some of the below variable transfers. + unwrenched_sign.name = name //Copy over the sign structure variables to the sign item we're creating when we unwrench a sign. + unwrenched_sign.desc = "[desc] It can be placed on a wall." + unwrenched_sign.icon_state = icon_state + unwrenched_sign.sign_path = type + unwrenched_sign.obj_integrity = obj_integrity //Transfer how damaged it is. + unwrenched_sign.setDir(dir) + qdel(src) //The sign structure on the wall goes poof and only the sign item from unwrenching remains. + return TRUE + +/obj/structure/sign/welder_act(mob/living/user, obj/item/I) + . = ..() + if(user.a_intent == INTENT_HARM) + return FALSE + if(obj_integrity == max_integrity) + to_chat(user, "This sign is already in perfect condition.") + return TRUE + if(!I.tool_start_check(user, amount=0)) + return TRUE + user.visible_message("[user] starts repairing [src]...", \ + "You start repairing [src].") + if(!I.use_tool(src, user, 4 SECONDS, volume =50 )) + return TRUE + user.visible_message("[user] finishes repairing [src].", \ + "You finish repairing [src].") + obj_integrity = max_integrity + return TRUE + +/obj/item/sign/welder_act(mob/living/user, obj/item/I) + . = ..() + if(user.a_intent == INTENT_HARM) + return FALSE + if(obj_integrity == max_integrity) + to_chat(user, "This sign is already in perfect condition.") + return TRUE + if(!I.tool_start_check(user, amount=0)) + return TRUE + user.visible_message("[user] starts repairing [src]...", \ + "You start repairing [src].") + if(!I.use_tool(src, user, 4 SECONDS, volume =50 )) + return TRUE + user.visible_message("[user] finishes repairing [src].", \ + "You finish repairing [src].") + obj_integrity = max_integrity + return TRUE + /obj/structure/sign/attackby(obj/item/I, mob/user, params) - if(I.tool_behaviour == TOOL_WRENCH && buildable_sign) - user.visible_message("[user] starts removing [src]...", \ - "You start unfastening [src].") - I.play_tool_sound(src) - if(I.use_tool(src, user, 40)) - playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) - user.visible_message("[user] unfastens [src].", \ - "You unfasten [src].") - var/obj/item/sign_backing/SB = new (get_turf(user)) - SB.icon_state = icon_state - SB.sign_path = type - SB.setDir(dir) - qdel(src) - return - else if(istype(I, /obj/item/pen) && buildable_sign) - var/list/sign_types = list("Secure Area", "Biohazard", "High Voltage", "Radiation", "Hard Vacuum Ahead", "Disposal: Leads To Space", "Danger: Fire", "No Smoking", "Medbay", "Science", "Chemistry", \ - "Hydroponics", "Xenobiology", "Test Chamber","Firing Range", "Extreme Cold", "Extreme Heat", "Gas Mask", "Nanites Lab", "Maintenance", "Reactive Chemicals") - var/obj/structure/sign/sign_type - switch(input(user, "Select a sign type.", "Sign Customization") as null|anything in sortList(sign_types)) - if("Blank") - sign_type = /obj/structure/sign/basic - if("Secure Area") - sign_type = /obj/structure/sign/warning/securearea - if("Biohazard") - sign_type = /obj/structure/sign/warning/biohazard - if("High Voltage") - sign_type = /obj/structure/sign/warning/electricshock - if("Radiation") - sign_type = /obj/structure/sign/warning/radiation - if("Hard Vacuum Ahead") - sign_type = /obj/structure/sign/warning/vacuum - if("Disposal: Leads To Space") - sign_type = /obj/structure/sign/warning/deathsposal - if("Danger: Fire") - sign_type = /obj/structure/sign/warning/fire - if("No Smoking") - sign_type = /obj/structure/sign/warning/nosmoking/circle - if("Test Chamber") - sign_type = /obj/structure/sign/warning/testchamber - if("Firing Range") - sign_type = /obj/structure/sign/warning/firingrange - if("Extreme Cold") - sign_type = /obj/structure/sign/warning/coldtemp - if("Extreme Heat") - sign_type = /obj/structure/sign/warning/hottemp - if("Gas Mask") - sign_type = /obj/structure/sign/warning/gasmask - if("Reactive Chemicals") - sign_type = /obj/structure/sign/warning/chemdiamond - if("Medbay") - sign_type = /obj/structure/sign/departments/medbay/alt - if("Science") - sign_type = /obj/structure/sign/departments/science - if("Chemistry") - sign_type = /obj/structure/sign/departments/chemistry - if("Hydroponics") - sign_type = /obj/structure/sign/departments/botany - if("Xenobiology") - sign_type = /obj/structure/sign/departments/xenobio - if("Nanites Lab") - sign_type = /obj/structure/sign/departments/nanites - if("Maintenance") - sign_type = /obj/structure/sign/departments/mait - - //Make sure user is adjacent still - if(!Adjacent(user)) + if(is_editable && istype(I, /obj/item/pen)) + if(!length(GLOB.editable_sign_types)) + populate_editable_sign_types() + if(!length(GLOB.editable_sign_types)) + CRASH("GLOB.editable_sign_types failed to populate") + var/choice = input(user, "Select a sign type.", "Sign Customization") as null|anything in GLOB.editable_sign_types + if(!choice) return - - if(!sign_type) + if(!Adjacent(user)) //Make sure user is adjacent still. + to_chat(user, "You need to stand next to the sign to change it!") return - - //It's import to clone the pixel layout information + user.visible_message("[user] begins changing [src].", \ + "You begin changing [src].") + if(!do_after(user, 4 SECONDS, target = src)) //Small delay for changing signs instead of it being instant, so somebody could be shoved or stunned to prevent them from doing so. + return + var/sign_type = GLOB.editable_sign_types[choice] + //It's import to clone the pixel layout information. //Otherwise signs revert to being on the turf and - //move jarringly - var/obj/structure/sign/newsign = new sign_type(get_turf(src)) - newsign.pixel_x = pixel_x - newsign.pixel_y = pixel_y + //move jarringly. + var/obj/structure/sign/changedsign = new sign_type(get_turf(src)) + changedsign.pixel_x = pixel_x + changedsign.pixel_y = pixel_y + changedsign.obj_integrity = obj_integrity qdel(src) - else - return ..() + user.visible_message("[user] finishes changing the sign.", \ + "You finish changing the sign.") + return + return ..() -/obj/item/sign_backing - name = "sign backing" - desc = "A sign with adhesive backing. Use a pen to change the decal once installed." - icon = 'icons/obj/decals.dmi' - icon_state = "backing" - w_class = WEIGHT_CLASS_NORMAL - custom_materials = list(/datum/material/plastic = 2000) - resistance_flags = FLAMMABLE - var/sign_path = /obj/structure/sign/basic //the type of sign that will be created when placed on a turf +/obj/item/sign/attackby(obj/item/I, mob/user, params) + if(is_editable && istype(I, /obj/item/pen)) + if(!length(GLOB.editable_sign_types)) + populate_editable_sign_types() + if(!length(GLOB.editable_sign_types)) + CRASH("GLOB.editable_sign_types failed to populate") + var/choice = input(user, "Select a sign type.", "Sign Customization") as null|anything in GLOB.editable_sign_types + if(!choice) + return + if(!Adjacent(user)) //Make sure user is adjacent still. + to_chat(user, "You need to stand next to the sign to change it!") + return + if(!choice) + return + user.visible_message("You begin changing [src].") + if(!do_after(user, 4 SECONDS, target = src)) + return + var/obj/structure/sign/sign_type = GLOB.editable_sign_types[choice] + name = initial(sign_type.name) + desc = "[initial(sign_type.desc)] It can be placed on a wall." + icon_state = initial(sign_type.icon_state) + sign_path = sign_type + user.visible_message("You finish changing the sign.") + return + return ..() -/obj/item/sign_backing/afterattack(atom/target, mob/user, proximity) +/obj/item/sign/afterattack(atom/target, mob/user, proximity) . = ..() - if(isturf(target) && proximity) - var/turf/T = target - user.visible_message("[user] fastens [src] to [T].", \ - "You attach the sign to [T].") - playsound(T, 'sound/items/deconstruct.ogg', 50, TRUE) - var/obj/structure/sign/S = new sign_path(T) - S.setDir(dir) - qdel(src) - -/obj/item/sign_backing/Move(atom/new_loc, direct = 0) - // pulling, throwing, or conveying a sign backing does not rotate it - var/old_dir = dir - . = ..() - setDir(old_dir) - -/obj/item/sign_backing/attack_self(mob/user) - . = ..() - setDir(turn(dir, 90)) + if(!iswallturf(target) || !proximity) + return + var/turf/target_turf = target + var/turf/user_turf = get_turf(user) + var/obj/structure/sign/placed_sign = new sign_path(user_turf) //We place the sign on the turf the user is standing, and pixel shift it to the target wall, as below. + //This is to mimic how signs and other wall objects are usually placed by mappers, and so they're only visible from one side of a wall. + var/dir = get_dir(user_turf, target_turf) + if(dir & NORTH) + placed_sign.pixel_y = 32 + else if(dir & SOUTH) + placed_sign.pixel_y = -32 + if(dir & EAST) + placed_sign.pixel_x = 32 + else if(dir & WEST) + placed_sign.pixel_x = -32 + user.visible_message("[user] fastens [src] to [target_turf].", \ + "You attach the sign to [target_turf].") + playsound(target_turf, 'sound/items/deconstruct.ogg', 50, TRUE) + placed_sign.obj_integrity = obj_integrity + placed_sign.setDir(dir) + qdel(src) /obj/structure/sign/nanotrasen - name = "\improper Nanotrasen logo" + name = "\improper Nanotrasen logo sign" + sign_change_name = "Corporate Logo - Nanotrasen" desc = "A sign with the Nanotrasen logo on it. Glory to Nanotrasen!" icon_state = "nanotrasen" + is_editable = TRUE /obj/structure/sign/logo - name = "\improper Nanotrasen logo" + name = "\improper Nanotrasen logo sign" desc = "The Nanotrasen corporate logo." icon_state = "nanotrasen_sign1" diff --git a/code/game/objects/structures/signs/signs_departments.dm b/code/game/objects/structures/signs/signs_departments.dm index 907ad30fe3f..0de5621ae0a 100644 --- a/code/game/objects/structures/signs/signs_departments.dm +++ b/code/game/objects/structures/signs/signs_departments.dm @@ -1,96 +1,163 @@ //departmental signs -/obj/structure/sign/departments/examroom - name = "\improper EXAM ROOM" - desc = "A guidance sign which reads 'EXAM ROOM'." - icon_state = "examroom" -/obj/structure/sign/departments/science //These 3 have multiple types, just var-edit the icon_state to whatever one you want on the map - name = "\improper SCIENCE" - desc = "A sign labelling an area where research and science is performed." - icon_state = "science1" - -/obj/structure/sign/departments/chemistry - name = "\improper CHEMISTRY" - desc = "A sign labelling an area containing chemical equipment." - icon_state = "chemistry1" - -/obj/structure/sign/departments/chemistry/pharmacy - name = "\improper PHARMACY" - desc = "A sign labelling an area containing pharmacy equipment." - icon_state = "pharmacy" - -/obj/structure/sign/departments/botany - name = "\improper HYDROPONICS" - desc = "A sign labelling an area as a place where plants are grown." - icon_state = "hydro1" - -/obj/structure/sign/departments/xenobio - name = "\improper XENOBIOLOGY" - desc = "A sign labelling an area as a place where xenobiological entities are researched." - icon_state = "xenobio" - -/obj/structure/sign/departments/evac - name = "\improper EVACUATION" - desc = "A sign labelling an area where evacuation procedures take place." - icon_state = "evac" - -/obj/structure/sign/departments/drop - name = "\improper DROP PODS" - desc = "A sign labelling an area where drop pod loading procedures take place." - icon_state = "drop" - -/obj/structure/sign/departments/custodian - name = "\improper CUSTODIAN" - desc = "A sign labelling an area where the custodian works." - icon_state = "custodian" - -/obj/structure/sign/departments/engineering - name = "\improper ENGINEERING" - desc = "A sign labelling an area where engineers work." - icon_state = "engine" - -/obj/structure/sign/departments/cargo - name = "\improper CARGO" - desc = "A sign labelling an area where cargo ships dock." - icon_state = "cargo" - -/obj/structure/sign/departments/security - name = "\improper SECURITY" - desc = "A sign labelling an area where the law is law." - icon_state = "security" - -/obj/structure/sign/departments/holy - name = "\improper HOLY" - desc = "A sign labelling a religious area." - icon_state = "holy" - -/obj/structure/sign/departments/restroom - name = "\improper RESTROOM" - desc = "A sign labelling a restroom." - icon_state = "restroom" +///////MEDBAY /obj/structure/sign/departments/medbay - name = "\improper MEDBAY" + name = "\improper Medbay sign" + sign_change_name = "Department - Medbay" desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here." icon_state = "bluecross" + is_editable = TRUE /obj/structure/sign/departments/medbay/alt + name = "\improper Medbay sign" + sign_change_name = "Department - Medbay Alt" + desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here." icon_state = "bluecross2" + is_editable = TRUE -/obj/structure/sign/departments/mait - name = "\improper MAINTENANCE TUNNEL" - desc = "A sign labelling an area where the departments of the station are linked together." - icon_state = "mait1" +/obj/structure/sign/departments/examroom + name = "\improper Exam Room sign" + sign_change_name = "Department - Medbay: Exam Room" + desc = "A guidance sign which reads 'Exam Room'." + icon_state = "examroom" + is_editable = TRUE -/obj/structure/sign/departments/mait/alt - icon_state = "mait2" +/obj/structure/sign/departments/chemistry + name = "\improper Chemistry sign" + sign_change_name = "Department - Medbay: Chemistry" + desc = "A sign labelling an area containing chemical equipment." + icon_state = "chemistry1" + is_editable = TRUE -/obj/structure/sign/departments/nanites - name = "\improper NANITE LAB" - desc = "A sign labelling an area where testing and development of nanites is performed." - icon_state = "nanites" +/obj/structure/sign/departments/chemistry/pharmacy + name = "\improper Pharmacy sign" + sign_change_name = "Department - Medbay: Pharmacy" + desc = "A sign labelling an area containing pharmacy equipment." + icon_state = "pharmacy" + is_editable = TRUE + /obj/structure/sign/departments/psychology - name = "\improper PSYCHOLOGY" + name = "\improper Psychology sign" + sign_change_name = "Department - Medbay: Psychology" desc = "A sign labelling where the Psychologist works, they can probably help you get your head straight." icon_state = "psychology" + is_editable = TRUE + +///////ENGINEERING + +/obj/structure/sign/departments/engineering + name = "\improper Engineering sign" + sign_change_name = "Department - Engineering" + desc = "A sign labelling an area where engineers work." + icon_state = "engine" + is_editable = TRUE + +///////SCIENCE + +/obj/structure/sign/departments/science + name = "\improper Science sign" + sign_change_name = "Department - Science" + desc = "A sign labelling an area where research and science is performed." + icon_state = "science1" + is_editable = TRUE + +/obj/structure/sign/departments/science/alt + name = "\improper Science sign" + sign_change_name = "Department - Science Alt" + desc = "A sign labelling an area where research and science is performed." + icon_state = "science2" + is_editable = TRUE + +/obj/structure/sign/departments/xenobio + name = "\improper Xenobiolgoy sign" + sign_change_name = "Department - Science: Xenobiology" + desc = "A sign labelling an area as a place where xenobiological entities are researched." + icon_state = "xenobio" + is_editable = TRUE + +/obj/structure/sign/departments/nanites + name = "\improper Nanite Lab sign" + sign_change_name = "Department - Science: Nanites" + desc = "A sign labelling an area where testing and development of nanites is performed." + icon_state = "nanites" + is_editable = TRUE + +///////SERVICE + +/obj/structure/sign/departments/botany + name = "\improper Botany sign" + sign_change_name = "Department - Botany" + desc = "A sign labelling an area as a place where plants are grown." + icon_state = "hydro1" + is_editable = TRUE + +/obj/structure/sign/departments/custodian + name = "\improper Janitor sign" + sign_change_name = "Department - Janitor" + desc = "A sign labelling an area where the janitor works." + icon_state = "custodian" + is_editable = TRUE + +/obj/structure/sign/departments/holy + name = "\improper Chapel sign" + sign_change_name = "Department - Chapel" + desc = "A sign labelling a religious area." + icon_state = "holy" + is_editable = TRUE + +///////SUPPLY + +/obj/structure/sign/departments/cargo + name = "\improper Cargo sign" + sign_change_name = "Department - Cargo" + desc = "A sign labelling an area where cargo ships dock." + icon_state = "cargo" + is_editable = TRUE + +///////SECURITY + +/obj/structure/sign/departments/security + name = "\improper Security sign" + sign_change_name = "Department - Security" + desc = "A sign labelling an area where the law is law." + icon_state = "security" + is_editable = TRUE + +////MISC LOCATIONS + +/obj/structure/sign/departments/restroom + name = "\improper Restroom sign" + sign_change_name = "Location - Restroom" + desc = "A sign labelling a restroom." + icon_state = "restroom" + is_editable = TRUE + +/obj/structure/sign/departments/mait + name = "\improper Maintenance Tunnel sign" + sign_change_name = "Location - Maintenance" + desc = "A sign labelling an area where the departments of the station are linked together." + icon_state = "mait1" + is_editable = TRUE + +/obj/structure/sign/departments/mait/alt + name = "\improper Maintenance Tunnel sign" + sign_change_name = "Location - Maintenance Alt" + desc = "A sign labelling an area where the departments of the station are linked together." + icon_state = "mait2" + is_editable = TRUE + +/obj/structure/sign/departments/evac + name = "\improper Evacuation sign" + sign_change_name = "Location - Evacuation" + desc = "A sign labelling an area where evacuation procedures take place." + icon_state = "evac" + is_editable = TRUE + +/obj/structure/sign/departments/drop + name = "\improper Drop Pods sign" + sign_change_name = "Location - Drop Pods" + desc = "A sign labelling an area where drop pod loading procedures take place." + icon_state = "drop" + is_editable = TRUE diff --git a/code/game/objects/structures/signs/signs_maps.dm b/code/game/objects/structures/signs/signs_maps.dm index 63de37f2e8c..ba79b6ff93f 100644 --- a/code/game/objects/structures/signs/signs_maps.dm +++ b/code/game/objects/structures/signs/signs_maps.dm @@ -2,7 +2,7 @@ /obj/structure/sign/map name = "station map" - desc = "A framed picture of the station." + desc = "A navigational chart of the station." max_integrity = 500 /obj/structure/sign/map/left @@ -12,47 +12,47 @@ icon_state = "map-right" /obj/structure/sign/directions/science - name = "science department" + name = "science department sign" desc = "A direction sign, pointing out which way the Science department is." icon_state = "direction_sci" /obj/structure/sign/directions/engineering - name = "engineering department" + name = "engineering department sign" desc = "A direction sign, pointing out which way the Engineering department is." icon_state = "direction_eng" /obj/structure/sign/directions/security - name = "security department" + name = "security department sign" desc = "A direction sign, pointing out which way the Security department is." icon_state = "direction_sec" /obj/structure/sign/directions/medical - name = "medical bay" - desc = "A direction sign, pointing out which way the Medical Bay is." + name = "medbay sign" + desc = "A direction sign, pointing out which way the Medbay is." icon_state = "direction_med" /obj/structure/sign/directions/evac - name = "escape arm" + name = "evacuation sign" desc = "A direction sign, pointing out which way the escape shuttle dock is." icon_state = "direction_evac" /obj/structure/sign/directions/supply - name = "cargo bay" + name = "cargo sign" desc = "A direction sign, pointing out which way the Cargo Bay is." icon_state = "direction_supply" /obj/structure/sign/directions/command - name = "command department" + name = "command department sign" desc = "A direction sign, pointing out which way the Command department is." icon_state = "direction_bridge" /obj/structure/sign/directions/vault - name = "vault directions" + name = "vault sign" desc = "A direction sign, pointing out which way the station's Vault is." icon_state = "direction_vault" /obj/structure/sign/directions/upload - name = "upload directions" + name = "upload sign" desc = "A direction sign, pointing out which way the station's AI Upload is." icon_state = "direction_upload" diff --git a/code/game/objects/structures/signs/signs_warning.dm b/code/game/objects/structures/signs/signs_warning.dm index 3a35f2d26ea..9b0867b5520 100644 --- a/code/game/objects/structures/signs/signs_warning.dm +++ b/code/game/objects/structures/signs/signs_warning.dm @@ -1,122 +1,181 @@ +//warning signs + + +///////DANGEROUS THINGS + /obj/structure/sign/warning - name = "\improper WARNING" + name = "\improper WARNING sign" + sign_change_name = "Warning" desc = "A warning sign." icon_state = "securearea" + is_editable = TRUE /obj/structure/sign/warning/securearea - name = "\improper SECURE AREA" + name = "\improper SECURE AREA sign" + sign_change_name = "Warning - Secure Area" desc = "A warning sign which reads 'SECURE AREA'." + is_editable = TRUE /obj/structure/sign/warning/docking - name = "\improper KEEP CLEAR: DOCKING AREA" + name = "\improper KEEP CLEAR: DOCKING AREA sign" + sign_change_name = "Warning - Docking Area" desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'." + is_editable = TRUE /obj/structure/sign/warning/biohazard - name = "\improper BIOHAZARD" + name = "\improper BIOHAZARD sign" + sign_change_name = "Warning - Biohazard" desc = "A warning sign which reads 'BIOHAZARD'." icon_state = "bio" + is_editable = TRUE /obj/structure/sign/warning/electricshock - name = "\improper HIGH VOLTAGE" + name = "\improper HIGH VOLTAGE sign" + sign_change_name = "Warning - High Voltage" desc = "A warning sign which reads 'HIGH VOLTAGE'." icon_state = "shock" + is_editable = TRUE /obj/structure/sign/warning/vacuum - name = "\improper HARD VACUUM AHEAD" + name = "\improper HARD VACUUM AHEAD sign" + sign_change_name = "Warning - Hard Vacuum" desc = "A warning sign which reads 'HARD VACUUM AHEAD'." icon_state = "space" + is_editable = TRUE /obj/structure/sign/warning/vacuum/external - name = "\improper EXTERNAL AIRLOCK" + name = "\improper EXTERNAL AIRLOCK sign" + sign_change_name = "Warning - External Airlock" desc = "A warning sign which reads 'EXTERNAL AIRLOCK'." layer = MOB_LAYER + is_editable = TRUE /obj/structure/sign/warning/deathsposal - name = "\improper DISPOSAL: LEADS TO SPACE" + name = "\improper DISPOSAL: LEADS TO SPACE sign" + sign_change_name = "Warning - Disposals: Leads to Space" desc = "A warning sign which reads 'DISPOSAL: LEADS TO SPACE'." icon_state = "deathsposal" + is_editable = TRUE /obj/structure/sign/warning/bodysposal - name = "\improper DISPOSAL: LEADS TO MORGUE" + name = "\improper DISPOSAL: LEADS TO MORGUE sign" + sign_change_name = "Warning - Disposals: Leads to Morgue" desc = "A warning sign which reads 'DISPOSAL: LEADS TO MORGUE'." icon_state = "bodysposal" - -/obj/structure/sign/warning/pods - name = "\improper ESCAPE PODS" - desc = "A warning sign which reads 'ESCAPE PODS'." - icon_state = "pods" + is_editable = TRUE /obj/structure/sign/warning/fire - name = "\improper DANGER: FIRE" + name = "\improper DANGER: FIRE sign" + sign_change_name = "Warning - Fire Hazard" desc = "A warning sign which reads 'DANGER: FIRE'." icon_state = "fire" resistance_flags = FIRE_PROOF + is_editable = TRUE /obj/structure/sign/warning/nosmoking - name = "\improper NO SMOKING" + name = "\improper NO SMOKING sign" + sign_change_name = "Warning - No Smoking" desc = "A warning sign which reads 'NO SMOKING'." icon_state = "nosmoking2" resistance_flags = FLAMMABLE + is_editable = TRUE /obj/structure/sign/warning/nosmoking/circle + name = "\improper NO SMOKING sign" + sign_change_name = "Warning - No Smoking Alt" + desc = "A warning sign which reads 'NO SMOKING'." icon_state = "nosmoking" + is_editable = TRUE /obj/structure/sign/warning/radiation - name = "\improper HAZARDOUS RADIATION" + name = "\improper HAZARDOUS RADIATION sign" + sign_change_name = "Warning - Radiation" desc = "A warning sign alerting the user of potential radiation hazards." icon_state = "radiation" + is_editable = TRUE /obj/structure/sign/warning/radiation/rad_area - name = "\improper RADIOACTIVE AREA" + name = "\improper RADIOACTIVE AREA sign" + sign_change_name = "Warning - Radioactive Area" desc = "A warning sign which reads 'RADIOACTIVE AREA'." + is_editable = TRUE /obj/structure/sign/warning/xeno_mining - name = "\improper DANGEROUS ALIEN LIFE" + name = "\improper DANGEROUS ALIEN LIFE sign" + sign_change_name = "Warning - Xenos" desc = "A sign that warns would-be travellers of hostile alien life in the vicinity." icon = 'icons/obj/mining.dmi' icon_state = "xeno_warning" + is_editable = TRUE /obj/structure/sign/warning/enginesafety - name = "\improper ENGINEERING SAFETY" + name = "\improper ENGINEERING SAFETY sign" + sign_change_name = "Warning - Engineering Safety Protocols" desc = "A sign detailing the various safety protocols when working on-site to ensure a safe shift." icon_state = "safety" + is_editable = TRUE /obj/structure/sign/warning/explosives - name = "\improper HIGH EXPLOSIVES" + name = "\improper HIGH EXPLOSIVES sign" + sign_change_name = "Warning - Explosives" desc = "A warning sign which reads 'HIGH EXPLOSIVES'." icon_state = "explosives" + is_editable = TRUE /obj/structure/sign/warning/explosives/alt - name = "\improper HIGH EXPLOSIVES" + name = "\improper HIGH EXPLOSIVES sign" + sign_change_name = "Warning - Explosives Alt" desc = "A warning sign which reads 'HIGH EXPLOSIVES'." icon_state = "explosives2" + is_editable = TRUE /obj/structure/sign/warning/testchamber - name = "\improper TESTING AREA" - desc = "A sign that warns of high-power testing equipment in the area. That's either a really powerful laser... or a satellite landing on some person's head." + name = "\improper TESTING AREA sign" + sign_change_name = "Warning - Testing Area" + desc = "A sign that warns of high-power testing equipment in the area." icon_state = "testchamber" + is_editable = TRUE /obj/structure/sign/warning/firingrange - name = "\improper FIRING RANGE" + name = "\improper FIRING RANGE sign" + sign_change_name = "Warning - Firing Range" desc = "A sign reminding you to remain behind the firing line, and to wear ear protection." icon_state = "firingrange" + is_editable = TRUE /obj/structure/sign/warning/coldtemp - name = "\improper FREEZING AIR" + name = "\improper FREEZING AIR sign" + sign_change_name = "Warning - Temp: Cold" desc = "A sign that warns of extremely cold air in the vicinity." icon_state = "cold" + is_editable = TRUE /obj/structure/sign/warning/hottemp - name = "\improper SUPERHEATED AIR" + name = "\improper SUPERHEATED AIR sign" + sign_change_name = "Warning - Temp: Hot" desc = "A sign that warns of extremely hot air in the vicinity." icon_state = "heat" + is_editable = TRUE /obj/structure/sign/warning/gasmask - name = "\improper CONTAMINATED AIR" - desc = "A sign that warns of dangerous particulates in the air, instructing you to wear a filtration device." + name = "\improper CONTAMINATED AIR sign" + sign_change_name = "Warning - Contaminated Air" + desc = "A sign that warns of dangerous particulates or gasses in the air, instructing you to wear a filtration device." icon_state = "gasmask" + is_editable = TRUE /obj/structure/sign/warning/chemdiamond name = "\improper REACTIVE CHEMICALS" + sign_change_name = "Warning - Hazardous Chemicals sign" desc = "A sign that warns of potentially reactive chemicals nearby, be they explosive, flamable, or acidic." icon_state = "chemdiamond" + is_editable = TRUE + +////MISC LOCATIONS + +/obj/structure/sign/warning/pods + name = "\improper ESCAPE PODS sign" + sign_change_name = "Location - Escape Pods" + desc = "A warning sign which reads 'ESCAPE PODS'." + icon_state = "pods" + is_editable = TRUE diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index 2234b56eab9..e239a2e2ccf 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 15e59902c95..0fbc47b7afc 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1223,8 +1223,9 @@ #include "code\game\objects\structures\signs\_signs.dm" #include "code\game\objects\structures\signs\signs_departments.dm" #include "code\game\objects\structures\signs\signs_maps.dm" -#include "code\game\objects\structures\signs\signs_plaques.dm" #include "code\game\objects\structures\signs\signs_warning.dm" +#include "code\game\objects\structures\plaques\_plaques.dm" +#include "code\game\objects\structures\plaques\static_plaques.dm" #include "code\game\objects\structures\transit_tubes\station.dm" #include "code\game\objects\structures\transit_tubes\transit_tube.dm" #include "code\game\objects\structures\transit_tubes\transit_tube_construction.dm"