diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm
index ce1003d33a8..fb3ee4a7373 100644
--- a/code/__DEFINES/construction.dm
+++ b/code/__DEFINES/construction.dm
@@ -2,6 +2,13 @@
//Defines for construction states
+//girder construction states
+#define GIRDER_NORMAL 0
+#define GIRDER_REINF_STRUTS 1
+#define GIRDER_REINF 2
+#define GIRDER_DISPLACED 3
+#define GIRDER_DISASSEMBLED 4
+
//plastic flaps construction states
#define PLASTIC_FLAPS_NORMAL 0
#define PLASTIC_FLAPS_DETACHED 1
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 57909ebc6d7..0acab425d3d 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -25,7 +25,7 @@
/turf/simulated/wall/rust,
/turf/simulated/wall/r_wall/rust)
smooth = SMOOTH_TRUE
-
+
/obj/structure/falsewall/New(loc)
..()
air_update_turf(1)
@@ -41,10 +41,10 @@
/obj/structure/falsewall/attack_ghost(mob/user)
if(user.can_advanced_admin_interact())
toggle(user)
-
+
/obj/structure/falsewall/attack_hand(mob/user)
toggle(user)
-
+
/obj/structure/falsewall/proc/toggle(mob/user)
if(opening)
return
@@ -126,11 +126,11 @@
new /obj/structure/girder/displaced(loc)
if(mineral == "metal")
if(istype(src, /obj/structure/falsewall/reinforced))
- new /obj/item/stack/sheet/plasteel(loc)
- new /obj/item/stack/sheet/plasteel(loc)
+ new /obj/item/stack/sheet/plasteel(loc, 2)
else
- new /obj/item/stack/sheet/metal(loc)
- new /obj/item/stack/sheet/metal(loc)
+ new /obj/item/stack/sheet/metal(loc, 2)
+ else if(mineral == "wood")
+ new/obj/item/stack/sheet/wood(loc, 2)
else
var/P = text2path("/obj/item/stack/sheet/mineral/[mineral]")
new P(loc)
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index 5577f566416..9a890ba963f 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -4,15 +4,33 @@
anchored = 1
density = 1
layer = BELOW_OBJ_LAYER
- var/state = 0
+ var/state = GIRDER_NORMAL
+ var/girderpasschance = 20 // percentage chance that a projectile passes through the girder.
var/health = 200
+ var/can_displace = TRUE //If the girder can be moved around by crowbarring it
var/metalUsed = 2 //used to determine amount returned in deconstruction
+ var/can_deconstruct = TRUE
+
+/obj/structure/girder/examine(mob/user)
+ . = ..()
+ switch(state)
+ if(GIRDER_REINF)
+ to_chat(user, "The support struts are screwed in place.")
+ if(GIRDER_REINF_STRUTS)
+ to_chat(user, "The support struts are unscrewed and the inner grille is intact.")
+ if(GIRDER_NORMAL)
+ if(can_displace)
+ to_chat(user, "The bolts are lodged in place.")
+ if(GIRDER_DISPLACED)
+ to_chat(user, "The bolts are loosened, but the screws are holding [src] together.")
+ if(GIRDER_DISASSEMBLED)
+ to_chat(user, "[src] is disassembled! You probably shouldn't be able to see this examine message.")
/obj/structure/girder/proc/refundMetal(metalAmount) //refunds metal used in construction when deconstructed
for(var/i=0;i < metalAmount;i++)
new /obj/item/stack/sheet/metal(get_turf(src))
-/obj/structure/girder/attack_animal(var/mob/living/simple_animal/M)
+/obj/structure/girder/attack_animal(mob/living/simple_animal/M)
M.changeNext_move(CLICK_CD_MELEE)
M.do_attack_animation(src)
if(M.environment_smash >= 1)
@@ -24,36 +42,76 @@
take_damage(rand(25, 75))
return
-/obj/structure/girder/proc/take_damage(var/amount)
+/obj/structure/girder/proc/take_damage(amount)
health -= amount
if(health <= 0)
new /obj/item/stack/sheet/metal(get_turf(src))
qdel(src)
-/obj/structure/girder/attackby(obj/item/W as obj, mob/user as mob, params)
- if(istype(W, /obj/item/weapon/wrench) && state == 0)
- if(anchored && !istype(src,/obj/structure/girder/displaced))
- playsound(src.loc, W.usesound, 100, 1)
- to_chat(user, "Now disassembling the girder")
- if(do_after(user, 40 * W.toolspeed, target = src))
- if(!src) return
- to_chat(user, "You dissasembled the girder!")
- refundMetal(metalUsed)
+/obj/structure/girder/attackby(obj/item/W, mob/user, params)
+ add_fingerprint(user)
+ if(isscrewdriver(W))
+ if(state == GIRDER_DISPLACED)
+ playsound(loc, W.usesound, 100, 1)
+ user.visible_message("[user] disassembles the girder.", \
+ "You start to disassemble the girder...", "You hear clanking and banging noises.")
+ if(do_after(user, 40*W.toolspeed, target = src))
+ if(state != GIRDER_DISPLACED)
+ return
+ state = GIRDER_DISASSEMBLED
+ to_chat(user, "You disassemble the girder.")
+ var/obj/item/stack/sheet/metal/M = new(loc, 2)
+ M.add_fingerprint(user)
qdel(src)
- else if(!anchored)
- playsound(src.loc, W.usesound, 100, 1)
- to_chat(user, "Now securing the girder")
- if(do_after(user, 40 * W.toolspeed, target = src))
- to_chat(user, "You secured the girder!")
- new/obj/structure/girder( src.loc )
+ else if(state == GIRDER_REINF)
+ playsound(loc, W.usesound, 100, 1)
+ to_chat(user, "You start unsecuring support struts...")
+ if(do_after(user, 40*W.toolspeed, target = src))
+ if(state != GIRDER_REINF)
+ return
+ to_chat(user, "You unsecure the support struts.")
+ state = GIRDER_REINF_STRUTS
+ else if(state == GIRDER_REINF_STRUTS)
+ playsound(loc, W.usesound, 100, 1)
+ to_chat(user, "You start securing support struts...")
+ if(do_after(user, 40*W.toolspeed, target = src))
+ if(state != GIRDER_REINF_STRUTS)
+ return
+ to_chat(user, "You secure the support struts.")
+ state = GIRDER_REINF
+
+ else if(iswrench(W))
+ if(state == GIRDER_NORMAL)
+ playsound(loc, W.usesound, 100, 1)
+ user.visible_message("[user] disassembles the girder.", \
+ "You start to disassemble the girder...", "You hear clanking and banging noises.")
+ if(do_after(user, 40*W.toolspeed, target = src))
+ if(state != GIRDER_NORMAL)
+ return
+ state = GIRDER_DISASSEMBLED
+ to_chat(user, "You disassemble the girder.")
+ var/obj/item/stack/sheet/metal/M = new(loc, 2)
+ M.add_fingerprint(user)
+ qdel(src)
+ else if(state == GIRDER_DISPLACED)
+ if(!isfloorturf(loc))
+ to_chat(user, "A floor must be present to secure the girder!")
+ return
+ playsound(loc, W.usesound, 100, 1)
+ to_chat(user, "You start securing the girder...")
+ if(do_after(user, 40*W.toolspeed, target = src))
+ to_chat(user, "You secure the girder.")
+ var/obj/structure/girder/G = new(loc)
+ transfer_fingerprints_to(G)
qdel(src)
else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter))
- to_chat(user, "Now slicing apart the girder")
- if(do_after(user, 30 * W.toolspeed, target = src))
- if(!src) return
+ to_chat(user, "You start slicing apart the girder...")
+ if(do_after(user, 40 * W.toolspeed, target = src))
+ if(!src)
+ return
playsound(loc, W.usesound, 100, 1)
- to_chat(user, "You slice apart the girder!")
+ to_chat(user, "You slice apart the girder.")
refundMetal(metalUsed)
qdel(src)
@@ -63,128 +121,256 @@
qdel(src)
else if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer))
- playsound(src.loc, W.usesound, 100, 1)
- to_chat(user, "You Disintegrate the girder!")
+ playsound(loc, W.usesound, 100, 1)
+ to_chat(user, "You disintegrate the girder!")
refundMetal(metalUsed)
qdel(src)
- else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced))
- playsound(src.loc, W.usesound, 100, 1)
- to_chat(user, "Now unsecuring support struts")
+ else if(iswirecutter(W) && state == GIRDER_REINF_STRUTS)
+ playsound(loc, W.usesound, 100, 1)
+ to_chat(user, "You start removing the inner grille...")
if(do_after(user, 40 * W.toolspeed, target = src))
- if(!src) return
- to_chat(user, "You unsecured the support struts!")
- state = 1
-
- else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1)
- playsound(src.loc, W.usesound, 100, 1)
- to_chat(user, "Now removing support struts")
- if(do_after(user, 40 * W.toolspeed, target = src))
- if(!src) return
- to_chat(user, "You removed the support struts!")
- new/obj/structure/girder( src.loc )
+ if(!src)
+ return
+ to_chat(user, "You remove the inner grille.")
+ new /obj/item/stack/sheet/plasteel(get_turf(src))
+ var/obj/structure/girder/G = new (loc)
+ transfer_fingerprints_to(G)
qdel(src)
- else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored )
- playsound(src.loc, W.usesound, 100, 1)
- to_chat(user, "Now dislodging the girder")
- if(do_after(user, 40 * W.toolspeed, target = src))
- if(!src) return
- to_chat(user, "You dislodged the girder!")
- new/obj/structure/girder/displaced( src.loc )
- qdel(src)
-
- else if(istype(W, /obj/item/stack/sheet))
-
- var/obj/item/stack/sheet/S = W
- switch(S.type)
-
- if(/obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal/cyborg)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- to_chat(user, "You create a false wall! Push on it to open or close the passage.")
- new /obj/structure/falsewall (src.loc)
- qdel(src)
- else
- if(S.amount < 2) return ..()
- to_chat(user, "Now adding plating...")
- if(do_after(user, 40 * W.toolspeed, target = src))
- if(!src || !S || S.amount < 2) return
- S.use(2)
- to_chat(user, "You added the plating!")
- var/turf/Tsrc = get_turf(src)
- Tsrc.ChangeTurf(/turf/simulated/wall)
- for(var/turf/simulated/wall/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- qdel(src)
- return
-
- if(/obj/item/stack/sheet/plasteel)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- to_chat(user, "You create a false wall! Push on it to open or close the passage.")
- new /obj/structure/falsewall/reinforced (src.loc)
- qdel(src)
- else
- if(src.icon_state == "reinforced") //I cant believe someone would actually write this line of code...
- if(S.amount < 1) return ..()
- to_chat(user, "Now finalising reinforced wall.")
- if(do_after(user, 50, target = src))
- if(!src || !S || S.amount < 1) return
- S.use(1)
- to_chat(user, "Wall fully reinforced!")
- var/turf/Tsrc = get_turf(src)
- Tsrc.ChangeTurf(/turf/simulated/wall/r_wall)
- for(var/turf/simulated/wall/r_wall/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- qdel(src)
- return
- else
- if(S.amount < 1) return ..()
- to_chat(user, "Now reinforcing girders")
- if(do_after(user,60, target = src))
- if(!src || !S || S.amount < 1) return
- S.use(1)
- to_chat(user, "Girders reinforced!")
- new/obj/structure/girder/reinforced( src.loc )
- qdel(src)
- return
-
- if(S.sheettype)
- var/M = S.sheettype
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- to_chat(user, "You create a false wall! Push on it to open or close the passage.")
- var/F = text2path("/obj/structure/falsewall/[M]")
- new F (src.loc)
+ else if(iscrowbar(W))
+ if(state == GIRDER_NORMAL && can_displace)
+ playsound(loc, W.usesound, 100, 1)
+ to_chat(user, "You start dislodging the girder...")
+ if(do_after(user, 40*W.toolspeed, target = src))
+ to_chat(user, "You dislodge the girder.")
+ var/obj/structure/girder/displaced/D = new (loc)
+ transfer_fingerprints_to(D)
qdel(src)
- else
- if(S.amount < 2) return ..()
- to_chat(user, "Now adding plating...")
- if(do_after(user,40, target = src))
- if(!src || !S || S.amount < 2) return
+
+ else if(istype(W, /obj/item/stack))
+ if(iswallturf(loc))
+ to_chat(user, "There is already a wall present!")
+ return
+ if(!isfloorturf(loc))
+ to_chat(user, "A floor must be present to build a false wall!")
+ return
+ if (locate(/obj/structure/falsewall) in loc.contents)
+ to_chat(user, "There is already a false wall present!")
+ return
+
+ if(istype(W,/obj/item/stack/rods))
+ var/obj/item/stack/rods/S = W
+ if(state == GIRDER_DISPLACED)
+ if(S.get_amount() < 2)
+ to_chat(user, "You need at least two rods to create a false wall!")
+ return
+ to_chat(user, "You start building a reinforced false wall...")
+ if(do_after(user, 20, target = src))
+ if(!loc || !S || S.get_amount() < 2)
+ return
S.use(2)
- to_chat(user, "You added the plating!")
- var/turf/Tsrc = get_turf(src)
- Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]"))
- for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
+ to_chat(user, "You create a false wall. Push on it to open or close the passage.")
+ var/obj/structure/falsewall/iron/FW = new (loc)
+ transfer_fingerprints_to(FW)
+ qdel(src)
+ else
+ if(S.get_amount() < 5)
+ to_chat(user, "You need at least five rods to add plating!")
+ return
+ to_chat(user, "You start adding plating...")
+ if (do_after(user, 40, target = src))
+ if(!loc || !S || S.get_amount() < 5)
+ return
+ S.use(5)
+ to_chat(user, "You add the plating.")
+ var/turf/T = get_turf(src)
+ T.ChangeTurf(/turf/simulated/wall/mineral/iron)
+ transfer_fingerprints_to(T)
qdel(src)
return
- add_hiddenprint(usr)
+ if(!istype(W,/obj/item/stack/sheet))
+ return
+
+ var/obj/item/stack/sheet/S = W
+
+ if(istype(S, /obj/item/stack/sheet/wood))
+ if(state == GIRDER_DISPLACED)
+ if(S.get_amount() < 2)
+ to_chat(user, "You need two planks of wood to create a false wall!")
+ return
+ to_chat(user, "You start building a false wall...")
+ if(do_after(user, 20, target = src))
+ if(!loc || !S || S.get_amount() < 2)
+ return
+ S.use(2)
+ to_chat(user, "You create a false wall. Push on it to open or close the passage.")
+ var/obj/structure/falsewall/wood/falsewood = new(loc)
+ transfer_fingerprints_to(falsewood)
+ qdel(src)
+ else
+ if(S.get_amount() < 2)
+ to_chat(user, "You need two planks of wood to finish a wall!")
+ return
+ to_chat(user, "You start adding plating...")
+ if(do_after(user, 40 * W.toolspeed, target = src))
+ if(!src || !S || S.get_amount() < 2)
+ return
+ S.use(2)
+ to_chat(user, "You add the plating.")
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ChangeTurf(/turf/simulated/wall/mineral/wood)
+ for(var/turf/simulated/wall/mineral/wood/X in Tsrc.loc)
+ if(X)
+ X.add_hiddenprint(usr)
+ qdel(src)
+ return
+
+ else if(istype(S, /obj/item/stack/sheet/metal))
+ if(state == GIRDER_DISPLACED)
+ if(S.get_amount() < 2)
+ to_chat(user, "You need two sheets of metal to create a false wall!")
+ return
+ to_chat(user, "You start building a false wall...")
+ if(do_after(user, 20, target = src))
+ if(!loc || !S || S.get_amount() < 2)
+ return
+ S.use(2)
+ to_chat(user, "You create a false wall. Push on it to open or close the passage.")
+ var/obj/structure/falsewall/F = new(loc)
+ transfer_fingerprints_to(F)
+ qdel(src)
+ else
+ if(S.get_amount() < 2)
+ to_chat(user, "You need two sheets of metal to finish a wall!")
+ return
+ to_chat(user, "You start adding plating...")
+ if(do_after(user, 40 * W.toolspeed, target = src))
+ if(!src || !S || S.get_amount() < 2)
+ return
+ S.use(2)
+ to_chat(user, "You add the plating.")
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ChangeTurf(/turf/simulated/wall)
+ for(var/turf/simulated/wall/X in Tsrc.loc)
+ if(X)
+ X.add_hiddenprint(usr)
+ qdel(src)
+ return
+
+ if(istype(S, /obj/item/stack/sheet/plasteel))
+ if(state == GIRDER_DISPLACED)
+ if(S.get_amount() < 2)
+ to_chat(user, "You need at least two sheets to create a false wall!")
+ return
+ to_chat(user, "You start building a reinforced false wall...")
+ if(do_after(user, 20, target = src))
+ if(!loc || !S || S.get_amount() < 2)
+ return
+ S.use(2)
+ to_chat(user, "You create a reinforced false wall. Push on it to open or close the passage.")
+ var/obj/structure/falsewall/reinforced/FW = new (loc)
+ transfer_fingerprints_to(FW)
+ qdel(src)
+ else
+ if(state == GIRDER_REINF)
+ if(S.get_amount() < 1)
+ return
+ to_chat(user, "You start finalizing the reinforced wall...")
+ if(do_after(user, 50, target = src))
+ if(!src || !S || S.get_amount() < 1)
+ return
+ S.use(1)
+ to_chat(user, "You fully reinforce the wall.")
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ChangeTurf(/turf/simulated/wall/r_wall)
+ for(var/turf/simulated/wall/r_wall/X in Tsrc.loc)
+ if(X)
+ X.add_hiddenprint(usr)
+ qdel(src)
+ return
+ else
+ if(S.get_amount() < 1)
+ return
+ to_chat(user, "You start reinforcing the girder...")
+ if(do_after(user,60, target = src))
+ if(!src || !S || S.get_amount() < 1)
+ return
+ S.use(1)
+ to_chat(user, "You reinforce the girder.")
+ var/obj/structure/girder/reinforced/R = new (loc)
+ transfer_fingerprints_to(R)
+ qdel(src)
+ return
+
+ if(S.sheettype)
+ var/M = S.sheettype
+ if(state == GIRDER_DISPLACED)
+ if(S.get_amount() < 2)
+ to_chat(user, "You need at least two sheets to create a false wall!")
+ return
+ if(do_after(user, 20, target = src))
+ if(!loc || !S || S.get_amount() < 2)
+ return
+ S.use(2)
+ to_chat(user, "You create a false wall. Push on it to open or close the passage.")
+ var/F = text2path("/obj/structure/falsewall/[M]")
+ var/obj/structure/FW = new F (loc)
+ transfer_fingerprints_to(FW)
+ qdel(src)
+ else
+ if(S.get_amount() < 2)
+ to_chat(user, "You need at least two sheets to add plating!")
+ return
+ to_chat(user, "You start adding plating...")
+ if(do_after(user,40, target = src))
+ if(!src || !S || S.get_amount() < 2)
+ return
+ S.use(2)
+ to_chat(user, "You add the plating.")
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]"))
+ for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
+ if(X)
+ X.add_hiddenprint(usr)
+ qdel(src)
+ return
+
+ add_hiddenprint(user)
else if(istype(W, /obj/item/pipe))
var/obj/item/pipe/P = W
if(P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
- user.drop_item()
+ if(!user.drop_item())
+ return
P.loc = src.loc
- to_chat(user, "You fit the pipe into the [src]!")
+ to_chat(user, "You fit the pipe into \the [src].")
else
- ..()
+ return ..()
+
+/obj/structure/girder/CanPass(atom/movable/mover, turf/target, height=0)
+ if(height==0)
+ return 1
+ if(istype(mover) && mover.checkpass(PASSGRILLE))
+ return prob(girderpasschance)
+ else
+ if(istype(mover, /obj/item/projectile))
+ return prob(girderpasschance)
+ else
+ return 0
+
+/obj/structure/girder/CanAStarPass(ID, dir, caller)
+ . = !density
+ if(ismovableatom(caller))
+ var/atom/movable/mover = caller
+ . = . || mover.checkpass(PASSGRILLE)
+
+/obj/structure/girder/proc/deconstruct(disassembled = TRUE)
+ if(can_deconstruct)
+ var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
+ new remains(loc)
+ qdel(src)
/obj/structure/girder/blob_act()
if(prob(40))
@@ -195,9 +381,9 @@
new /obj/structure/girder/cult(loc)
qdel(src)
-/obj/structure/girder/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/girder/bullet_act(obj/item/projectile/Proj)
if(istype(Proj ,/obj/item/projectile/beam/pulse))
- src.ex_act(2)
+ ex_act(2)
else
take_damage(Proj.damage)
..()
@@ -205,16 +391,16 @@
/obj/structure/girder/ex_act(severity)
switch(severity)
- if(1.0)
+ if(1)
qdel(src)
return
- if(2.0)
+ if(2)
if(prob(75))
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc)
qdel(src)
return
- if(3.0)
+ if(3)
if(prob(40))
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc)
@@ -227,23 +413,24 @@
name = "displaced girder"
icon_state = "displaced"
anchored = 0
- health = 50
+ state = GIRDER_DISPLACED
+ girderpasschance = 25
+ health = 120
/obj/structure/girder/reinforced
name = "reinforced girder"
icon_state = "reinforced"
- state = 2
- health = 500
+ state = GIRDER_REINF
+ girderpasschance = 0
+ health = 350
/obj/structure/girder/cult
name = "runed girder"
desc = "Framework made of a strange and shockingly cold metal. It doesn't seem to have any bolts."
- icon= 'icons/obj/cult.dmi'
+ icon = 'icons/obj/cult.dmi'
icon_state= "cultgirder"
- anchored = 1
- density = 1
+ can_displace = FALSE
metalUsed = 1
- health = 250
/obj/structure/girder/cult/refundMetal(metalAmount)
for(var/i=0;i < metalAmount;i++)
@@ -312,3 +499,8 @@
/obj/structure/girder/cult/narsie_act()
return
+
+/obj/structure/girder/cult/deconstruct(disassembled = TRUE)
+ if(can_deconstruct)
+ new/obj/item/stack/sheet/runed_metal/(get_turf(src), 1)
+ qdel(src)
diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm
index 4974d4c070d..76323f3e2e1 100644
--- a/code/game/turfs/simulated/walls_mineral.dm
+++ b/code/game/turfs/simulated/walls_mineral.dm
@@ -144,6 +144,7 @@
icon = 'icons/turf/walls/iron_wall.dmi'
icon_state = "iron"
sheet_type = /obj/item/stack/rods
+ sheet_amount = 5
canSmoothWith = list(/turf/simulated/wall/mineral/iron, /obj/structure/falsewall/iron)
/turf/simulated/wall/mineral/abductor