diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm
index 61c58ce9aa5..4f5db94d4af 100644
--- a/code/game/objects/items/weapons/table_rack_parts.dm
+++ b/code/game/objects/items/weapons/table_rack_parts.dm
@@ -15,6 +15,11 @@
materials = list(MAT_METAL=4000)
flags = CONDUCT
attack_verb = list("slammed", "bashed", "battered", "bludgeoned", "thrashed", "whacked")
+ var/upgradable = 1
+ var/result = /obj/structure/table
+ var/parts = list(
+ /obj/item/stack/sheet/metal,
+ /obj/item/stack/sheet/metal)
/obj/item/weapon/table_parts/reinforced
name = "reinforced table parts"
@@ -23,18 +28,33 @@
icon_state = "reinf_tableparts"
materials = list(MAT_METAL=8000)
flags = CONDUCT
+ upgradable = 0
+ result = /obj/structure/table/reinforced
+ parts = list(
+ /obj/item/stack/sheet/metal,
+ /obj/item/stack/rods)
/obj/item/weapon/table_parts/wood
name = "wooden table parts"
desc = "Keep away from fire."
icon_state = "wood_tableparts"
flags = null
+ upgradable = 0
+ result = /obj/structure/table/woodentable
+ parts = list(
+ /obj/item/stack/sheet/wood,
+ /obj/item/stack/sheet/wood)
/obj/item/weapon/table_parts/glass
name = "glass table parts"
desc = "fragile!"
icon_state = "glass_tableparts"
flags = null
+ upgradable = 0
+ result = /obj/structure/glasstable_frame
+ parts = list(
+ /obj/item/stack/sheet/metal,
+ /obj/item/stack/sheet/metal)
/obj/item/weapon/rack_parts
name = "rack parts"
@@ -49,71 +69,27 @@
*/
/obj/item/weapon/table_parts/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
..()
- if (istype(W, /obj/item/weapon/wrench))
- new /obj/item/stack/sheet/metal( user.loc )
- new /obj/item/stack/sheet/metal( user.loc )
- //SN src = null
+ if(istype(W, /obj/item/weapon/wrench))
+ for(var/p in parts)
+ new p(user.loc)
qdel(src)
- if (istype(W, /obj/item/stack/rods))
- if (W:amount >= 4)
- new /obj/item/weapon/table_parts/reinforced( user.loc )
- to_chat(user, "\blue You reinforce the [name].")
- W:use(4)
+ else if(upgradable && istype(W, /obj/item/stack/rods))
+ var/obj/item/stack/rods/R = W
+ if(R.amount >= 4)
+ new /obj/item/weapon/table_parts/reinforced(user.loc)
+ to_chat(user, "You reinforce the [name].")
+ R.use(4)
qdel(src)
- else if (W:amount < 4)
- to_chat(user, "\red You need at least four rods to do this.")
+ else
+ to_chat(user, "You need at least four rods to do this.")
/obj/item/weapon/table_parts/attack_self(mob/user as mob)
- new /obj/structure/table( user.loc )
+ for(var/obj/structure/table/T in user.loc)
+ to_chat(user, "You can't build tables on top of tables!")
+ return
+ new result(user.loc)
user.drop_item()
qdel(src)
- return
-
-
-/*
- * Reinforced Table Parts
- */
-/obj/item/weapon/table_parts/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- if (istype(W, /obj/item/weapon/wrench))
- new /obj/item/stack/sheet/metal( user.loc )
- new /obj/item/stack/rods( user.loc )
- qdel(src)
-
-/obj/item/weapon/table_parts/reinforced/attack_self(mob/user as mob)
- new /obj/structure/table/reinforced( user.loc )
- user.drop_item()
- qdel(src)
- return
-
-/*
- * Wooden Table Parts
- */
-/obj/item/weapon/table_parts/wood/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- if (istype(W, /obj/item/weapon/wrench))
- new /obj/item/stack/sheet/wood(get_turf(src))
- new /obj/item/stack/sheet/wood(get_turf(src))
- qdel(src)
-
-/obj/item/weapon/table_parts/wood/attack_self(mob/user as mob)
- new /obj/structure/table/woodentable( user.loc )
- user.drop_item()
- qdel(src)
- return
-
-/*
- * Glass Table Parts
- */
-/obj/item/weapon/table_parts/glass/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- if (istype(W, /obj/item/weapon/wrench))
- new /obj/item/stack/sheet/metal( user.loc )
- new /obj/item/stack/sheet/metal( user.loc )
- qdel(src)
-
-/obj/item/weapon/table_parts/glass/attack_self(mob/user as mob)
- new /obj/structure/glasstable_frame( user.loc )
- user.drop_item()
- qdel(src)
- return
/*
* Rack Parts
@@ -121,14 +97,11 @@
/obj/item/weapon/rack_parts/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
..()
if (istype(W, /obj/item/weapon/wrench))
- new /obj/item/stack/sheet/metal( user.loc )
+ new /obj/item/stack/sheet/metal(user.loc)
qdel(src)
- return
- return
/obj/item/weapon/rack_parts/attack_self(mob/user as mob)
- var/obj/structure/rack/R = new /obj/structure/rack( user.loc )
+ var/obj/structure/rack/R = new /obj/structure/rack(user.loc)
R.add_fingerprint(user)
user.drop_item()
- qdel(src)
- return
\ No newline at end of file
+ qdel(src)
\ No newline at end of file