diff --git a/_maps/map_files/debug/multiz.dmm b/_maps/map_files/debug/multiz.dmm index eb8d233d0e8..63e7a22d273 100644 --- a/_maps/map_files/debug/multiz.dmm +++ b/_maps/map_files/debug/multiz.dmm @@ -1090,7 +1090,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/service) "eQ" = ( -/obj/structure/fluff/railing{ +/obj/structure/railing{ icon_state = "railing"; dir = 4 }, @@ -1168,7 +1168,7 @@ /turf/open/floor/plating, /area/engine/storage) "hY" = ( -/obj/structure/fluff/railing/corner, +/obj/structure/railing/corner, /turf/open/floor/plating, /area/hallway/secondary/service) "ij" = ( @@ -1192,7 +1192,7 @@ /area/hallway/secondary/service) "iH" = ( /obj/effect/turf_decal/stripes/white/line, -/obj/structure/fluff/railing/corner{ +/obj/structure/railing/corner{ icon_state = "railing_corner"; dir = 4 }, @@ -1216,8 +1216,7 @@ /turf/open/floor/plating, /area/engine/storage) "jD" = ( -/obj/structure/fluff/railing/corner{ - icon_state = "railing_corner"; +/obj/structure/railing/corner{ dir = 4 }, /turf/open/floor/plating, @@ -1312,12 +1311,18 @@ "qo" = ( /turf/open/openspace, /area/engine/storage) +"qx" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plating, +/area/construction) "qR" = ( /obj/effect/turf_decal/stripes/white/line{ icon_state = "warningline_white"; dir = 9 }, -/obj/structure/fluff/railing/corner{ +/obj/structure/railing/corner{ icon_state = "railing_corner"; dir = 1 }, @@ -1346,7 +1351,7 @@ /turf/open/floor/plating, /area/construction) "su" = ( -/obj/structure/fluff/railing{ +/obj/structure/railing{ icon_state = "railing"; dir = 8 }, @@ -1357,7 +1362,7 @@ icon_state = "warningline_white"; dir = 4 }, -/obj/structure/fluff/railing{ +/obj/structure/railing{ icon_state = "railing"; dir = 8 }, @@ -1447,11 +1452,11 @@ /turf/open/floor/plasteel, /area/construction) "zd" = ( -/obj/structure/fluff/railing{ +/obj/structure/railing{ icon_state = "railing"; dir = 4 }, -/obj/structure/fluff/railing{ +/obj/structure/railing{ icon_state = "railing"; dir = 8 }, @@ -1475,7 +1480,7 @@ /turf/open/floor/plating, /area/engine/storage) "Ai" = ( -/obj/structure/fluff/railing/corner{ +/obj/structure/railing/corner{ icon_state = "railing_corner"; dir = 8 }, @@ -1531,8 +1536,7 @@ /turf/open/floor/plating, /area/hallway/secondary/service) "CP" = ( -/obj/structure/fluff/railing{ - icon_state = "railing"; +/obj/structure/railing{ dir = 8 }, /turf/open/floor/plating, @@ -1555,7 +1559,7 @@ /area/engine/storage) "Eb" = ( /obj/effect/turf_decal/stripes/white/line, -/obj/structure/fluff/railing{ +/obj/structure/railing{ icon_state = "railing"; dir = 1 }, @@ -1608,8 +1612,7 @@ /turf/open/floor/plasteel, /area/storage/primary) "In" = ( -/obj/structure/fluff/railing{ - icon_state = "railing"; +/obj/structure/railing{ dir = 4 }, /turf/open/floor/plating, @@ -1619,8 +1622,8 @@ /turf/open/floor/plating, /area/hallway/secondary/service) "IL" = ( -/obj/structure/fluff/railing/corner, -/obj/structure/fluff/railing/corner{ +/obj/structure/railing/corner, +/obj/structure/railing/corner{ icon_state = "railing_corner"; dir = 8 }, @@ -1668,7 +1671,7 @@ /turf/open/floor/plating, /area/maintenance/department/bridge) "Lu" = ( -/obj/structure/fluff/railing{ +/obj/structure/railing{ icon_state = "railing"; dir = 4 }, @@ -1699,8 +1702,7 @@ /turf/open/floor/plating, /area/engine/storage) "Pm" = ( -/obj/structure/fluff/railing/corner{ - icon_state = "railing_corner"; +/obj/structure/railing/corner{ dir = 1 }, /turf/open/floor/plating, @@ -1744,8 +1746,7 @@ /turf/open/floor/plasteel, /area/construction) "Tf" = ( -/obj/structure/fluff/railing{ - icon_state = "railing"; +/obj/structure/railing{ dir = 1 }, /turf/open/floor/plating, @@ -1795,7 +1796,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/service) "XN" = ( -/obj/structure/fluff/railing, +/obj/structure/railing, /turf/open/floor/plating, /area/hallway/secondary/service) "XQ" = ( @@ -1809,6 +1810,10 @@ }, /turf/open/floor/plating, /area/hallway/secondary/service) +"Zv" = ( +/obj/structure/railing/corner, +/turf/open/floor/plating, +/area/construction) "ZH" = ( /obj/structure/disposalpipe/trunk/multiz, /turf/open/floor/plating, @@ -2884,7 +2889,7 @@ dn dn dn dn -dn +Zv In jD dL @@ -2992,7 +2997,7 @@ dn dn dn dn -dn +qx CP Pm ij diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm index f823f59f8f5..3f9acdb7ae6 100644 --- a/code/game/objects/structures/fluff.dm +++ b/code/game/objects/structures/fluff.dm @@ -178,19 +178,6 @@ density = TRUE deconstructible = FALSE -/obj/structure/fluff/railing - name = "railing" - desc = "Basic railing meant to protect idiots like you from falling." - icon = 'icons/obj/fluff.dmi' - icon_state = "railing" - density = TRUE - anchored = TRUE - deconstructible = FALSE - -/obj/structure/fluff/railing/corner - icon_state = "railing_corner" - density = FALSE - /obj/structure/fluff/beach_towel name = "beach towel" desc = "A towel decorated in various beach-themed designs." diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm new file mode 100644 index 00000000000..422d7a06524 --- /dev/null +++ b/code/game/objects/structures/railings.dm @@ -0,0 +1,60 @@ +/obj/structure/railing + name = "railing" + desc = "Basic railing meant to protect idiots like you from falling." + icon = 'icons/obj/fluff.dmi' + icon_state = "railing" + density = TRUE + anchored = TRUE + climbable = TRUE + +/obj/structure/railing/corner //aesthetic corner sharp edges hurt oof ouch + icon_state = "railing_corner" + density = FALSE + climbable = FALSE + +/obj/structure/railing/attackby(obj/item/I, mob/living/user, params) + add_fingerprint(user) + + if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP) + if(obj_integrity < max_integrity) + if(!I.tool_start_check(user, amount=0)) + return + + to_chat(user, "You begin repairing [src]...") + if(I.use_tool(src, user, 40, volume=50)) + obj_integrity = max_integrity + to_chat(user, "You repair [src].") + else + to_chat(user, "[src] is already in good condition!") + return + + if(!(flags_1&NODECONSTRUCT_1)) + if(I.tool_behaviour == TOOL_WRENCH) + to_chat(user, "You begin to [anchored ? "unfasten the railing from":"fasten the railing to"] the floor...") + if(I.use_tool(src, user, volume = 75, extra_checks = CALLBACK(src, .proc/check_anchored, anchored))) + setAnchored(!anchored) + to_chat(user, "You [anchored ? "fasten the railing to":"unfasten the railing from"] the floor.") + return + +/obj/structure/railing/proc/check_anchored(checked_anchored) + if(anchored == checked_anchored) + return TRUE + +/obj/structure/railing/CanPass(atom/movable/mover, turf/target) + ..() + if(get_dir(loc, target) & dir) + return !density + return TRUE + +/obj/structure/railing/corner/CanPass() + ..() + return TRUE + +/obj/structure/railing/CheckExit(atom/movable/O, turf/target) + ..() + if(get_dir(loc, target) & dir) + return 0 + return 1 + +/obj/structure/railing/corner/CheckExit() + return 1 diff --git a/tgstation.dme b/tgstation.dme index f1de9a2dc58..f9887efb784 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1129,6 +1129,7 @@ #include "code\game\objects\structures\noticeboard.dm" #include "code\game\objects\structures\petrified_statue.dm" #include "code\game\objects\structures\plasticflaps.dm" +#include "code\game\objects\structures\railings.dm" #include "code\game\objects\structures\reflector.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\showcase.dm"