diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm new file mode 100644 index 0000000000..8ffa13cac9 --- /dev/null +++ b/code/game/objects/structures/catwalk.dm @@ -0,0 +1,83 @@ +// Based on catwalk.dm from https://github.com/Endless-Horizon/CEV-Eris +/obj/structure/catwalk + layer = TURF_LAYER + 0.5 + icon = 'icons/turf/catwalks.dmi' + icon_state = "catwalk" + name = "catwalk" + desc = "Cats really don't like these things." + density = 0 + anchored = 1.0 + +/obj/structure/catwalk/New() + ..() + spawn(4) + if(src) + for(var/obj/structure/catwalk/C in get_turf(src)) + if(C != src) + qdel(C) + update_icon() + redraw_nearby_catwalks() + +/obj/structure/catwalk/Destroy() + ..() + redraw_nearby_catwalks() + +/obj/structure/catwalk/proc/redraw_nearby_catwalks() + for(var/direction in alldirs) + if(locate(/obj/structure/catwalk, get_step(src, direction))) + var/obj/structure/catwalk/L = locate(/obj/structure/catwalk, get_step(src, direction)) + L.update_icon() //so siding get updated properly + + +/obj/structure/catwalk/update_icon() + var/connectdir = 0 + for(var/direction in cardinal) + if(locate(/obj/structure/catwalk, get_step(src, direction))) + connectdir |= direction + + //Check the diagonal connections for corners, where you have, for example, connections both north and east. In this case it checks for a north-east connection to determine whether to add a corner marker or not. + var/diagonalconnect = 0 //1 = NE; 2 = SE; 4 = NW; 8 = SW + //NORTHEAST + if(connectdir & NORTH && connectdir & EAST) + if(locate(/obj/structure/catwalk, get_step(src, NORTHEAST))) + diagonalconnect |= 1 + //SOUTHEAST + if(connectdir & SOUTH && connectdir & EAST) + if(locate(/obj/structure/catwalk, get_step(src, SOUTHEAST))) + diagonalconnect |= 2 + //NORTHWEST + if(connectdir & NORTH && connectdir & WEST) + if(locate(/obj/structure/catwalk, get_step(src, NORTHWEST))) + diagonalconnect |= 4 + //SOUTHWEST + if(connectdir & SOUTH && connectdir & WEST) + if(locate(/obj/structure/catwalk, get_step(src, SOUTHWEST))) + diagonalconnect |= 8 + + icon_state = "catwalk[connectdir]-[diagonalconnect]" + + +/obj/structure/catwalk/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + if(2.0) + qdel(src) + return + +/obj/structure/catwalk/attackby(obj/item/C as obj, mob/user as mob) + if (istype(C, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = C + if(WT.isOn()) + if(WT.remove_fuel(0, user)) + to_chat(user, "Slicing lattice joints ...") + PoolOrNew(/obj/item/stack/rods, src.loc) + PoolOrNew(/obj/item/stack/rods, src.loc) + PoolOrNew(/obj/structure/lattice, src.loc) + qdel(src) + return ..() + +/obj/structure/catwalk/Crossed() + . = ..() + if(isliving(usr)) + playsound(src, pick('sound/effects/footstep/catwalk1.ogg', 'sound/effects/footstep/catwalk2.ogg', 'sound/effects/footstep/catwalk3.ogg', 'sound/effects/footstep/catwalk4.ogg', 'sound/effects/footstep/catwalk5.ogg'), 25, 1) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 0eb48e94e0..cd39971e6e 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -67,7 +67,16 @@ user << "Slicing lattice joints ..." PoolOrNew(/obj/item/stack/rods, src.loc) qdel(src) - + return + if (istype(C, /obj/item/stack/rods)) + var/obj/item/stack/rods/R = C + if(R.use(2)) + user << "You start connecting \the [R.name] to \the [src.name] ..." + if(do_after(user, 5 SECONDS)) + src.alpha = 0 // Note: I don't know why this is set, Eris did it, just trusting for now. ~Leshana + PoolOrNew(/obj/structure/catwalk, src.loc) + qdel(src) + return return /obj/structure/lattice/proc/updateOverlays() diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 122e1aa4cd..24af78a8f9 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -139,6 +139,8 @@ if(locate(/obj/structure/lattice, loc)) return FALSE + if(locate(/obj/structure/catwalk, loc)) + return FALSE // See if something prevents us from falling. var/turf/below = GetBelow(src) diff --git a/icons/turf/catwalks.dmi b/icons/turf/catwalks.dmi new file mode 100644 index 0000000000..9e3d3d977c Binary files /dev/null and b/icons/turf/catwalks.dmi differ diff --git a/sound/effects/footstep/catwalk1.ogg b/sound/effects/footstep/catwalk1.ogg new file mode 100644 index 0000000000..5d6ad7b4a0 Binary files /dev/null and b/sound/effects/footstep/catwalk1.ogg differ diff --git a/sound/effects/footstep/catwalk2.ogg b/sound/effects/footstep/catwalk2.ogg new file mode 100644 index 0000000000..07a624dbe4 Binary files /dev/null and b/sound/effects/footstep/catwalk2.ogg differ diff --git a/sound/effects/footstep/catwalk3.ogg b/sound/effects/footstep/catwalk3.ogg new file mode 100644 index 0000000000..acff22e386 Binary files /dev/null and b/sound/effects/footstep/catwalk3.ogg differ diff --git a/sound/effects/footstep/catwalk4.ogg b/sound/effects/footstep/catwalk4.ogg new file mode 100644 index 0000000000..7235a6b9fe Binary files /dev/null and b/sound/effects/footstep/catwalk4.ogg differ diff --git a/sound/effects/footstep/catwalk5.ogg b/sound/effects/footstep/catwalk5.ogg new file mode 100644 index 0000000000..c33f248acd Binary files /dev/null and b/sound/effects/footstep/catwalk5.ogg differ diff --git a/vorestation.dme b/vorestation.dme index d2cc5088d9..21b4fe41af 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -982,6 +982,7 @@ #include "code\game\objects\random\random_vr.dm" #include "code\game\objects\structures\barsign.dm" #include "code\game\objects\structures\bedsheet_bin.dm" +#include "code\game\objects\structures\catwalk.dm" #include "code\game\objects\structures\coathanger.dm" #include "code\game\objects\structures\curtains.dm" #include "code\game\objects\structures\displaycase.dm"