diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index e0c9f4ee18c..4ccd5e90e4a 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -76,6 +76,7 @@
icon_state = "tile-carpet"
turf_type = /turf/simulated/floor/carpet
resistance_flags = FLAMMABLE
+ var/fancy_table_type = /obj/structure/table/wood/fancy //Decides what table will be built with what carpet tile
/obj/item/stack/tile/carpet/twenty
amount = 20
@@ -84,6 +85,7 @@
name = "black carpet"
icon_state = "tile-carpet-black"
turf_type = /turf/simulated/floor/carpet/black
+ fancy_table_type = /obj/structure/table/wood/fancy/black
/obj/item/stack/tile/carpet/black/twenty
amount = 20
@@ -92,6 +94,7 @@
name = "blue carpet"
icon_state = "tile-carpet-blue"
turf_type = /turf/simulated/floor/carpet/blue
+ fancy_table_type = /obj/structure/table/wood/fancy/blue
/obj/item/stack/tile/carpet/blue/twenty
amount = 20
@@ -100,6 +103,7 @@
name = "cyan carpet"
icon_state = "tile-carpet-cyan"
turf_type = /turf/simulated/floor/carpet/cyan
+ fancy_table_type = /obj/structure/table/wood/fancy/cyan
/obj/item/stack/tile/carpet/cyan/twenty
amount = 20
@@ -108,6 +112,7 @@
name = "green carpet"
icon_state = "tile-carpet-green"
turf_type = /turf/simulated/floor/carpet/green
+ fancy_table_type = /obj/structure/table/wood/fancy/green
/obj/item/stack/tile/carpet/green/twenty
amount = 20
@@ -116,6 +121,7 @@
name = "orange carpet"
icon_state = "tile-carpet-orange"
turf_type = /turf/simulated/floor/carpet/orange
+ fancy_table_type = /obj/structure/table/wood/fancy/orange
/obj/item/stack/tile/carpet/orange/twenty
amount = 20
@@ -124,6 +130,7 @@
name = "purple carpet"
icon_state = "tile-carpet-purple"
turf_type = /turf/simulated/floor/carpet/purple
+ fancy_table_type = /obj/structure/table/wood/fancy/purple
/obj/item/stack/tile/carpet/purple/twenty
amount = 20
@@ -132,6 +139,7 @@
name = "red carpet"
icon_state = "tile-carpet-red"
turf_type = /turf/simulated/floor/carpet/red
+ fancy_table_type = /obj/structure/table/wood/fancy/red
/obj/item/stack/tile/carpet/red/twenty
amount = 20
@@ -140,7 +148,10 @@
name = "royal black carpet"
icon_state = "tile-carpet-royalblack"
turf_type = /turf/simulated/floor/carpet/royalblack
+ fancy_table_type = /obj/structure/table/wood/fancy/royalblack
+/obj/item/stack/tile/carpet/royalblack/ten
+ amount = 10
/obj/item/stack/tile/carpet/royalblack/twenty
amount = 20
@@ -148,6 +159,10 @@
name = "royal blue carpet"
icon_state = "tile-carpet-royalblue"
turf_type = /turf/simulated/floor/carpet/royalblue
+ fancy_table_type = /obj/structure/table/wood/fancy/royalblue
+
+/obj/item/stack/tile/carpet/royalblue/ten
+ amount = 10
/obj/item/stack/tile/carpet/royalblue/twenty
amount = 20
diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm
index 966c3f313b4..c6bff2f0205 100644
--- a/code/game/objects/structures/table_frames.dm
+++ b/code/game/objects/structures/table_frames.dm
@@ -30,6 +30,7 @@
to_chat(user, "You start adding [P] to [src]...")
if(do_after(user, 50, target = src) && P.use(1))
make_new_table(/obj/structure/table/reinforced)
+
else if(istype(I, /obj/item/stack/sheet/metal))
var/obj/item/stack/sheet/metal/M = I
if(M.get_amount() < 1)
@@ -38,6 +39,7 @@
to_chat(user, "You start adding [M] to [src]...")
if(do_after(user, 20, target = src) && M.use(1))
make_new_table(/obj/structure/table)
+
else if(istype(I, /obj/item/stack/sheet/glass))
var/obj/item/stack/sheet/glass/G = I
if(G.get_amount() < 1)
@@ -46,22 +48,16 @@
to_chat(user, "You start adding [G] to [src]...")
if(do_after(user, 20, target = src) && G.use(1))
make_new_table(/obj/structure/table/glass)
- else if(istype(I, /obj/item/stack/tile/carpet/black))
- var/obj/item/stack/tile/carpet/black/C = I
- if(C.get_amount() < 1)
- to_chat(user, "You need one black carpet sheet to do this!")
- return
- to_chat(user, "You start adding [C] to [src]...")
- if(do_after(user, 20, target = src) && C.use(1))
- make_new_table(/obj/structure/table/wood/fancy/black)
- else if(istype(I, /obj/item/stack/tile/carpet))
+
+ if(istype(I, /obj/item/stack/tile/carpet))
var/obj/item/stack/tile/carpet/C = I
if(C.get_amount() < 1)
- to_chat(user, "You need one carpet sheet to do this!")
+ to_chat(user, "You need one [C.name] sheet to do this!")
return
to_chat(user, "You start adding [C] to [src]...")
if(do_after(user, 20, target = src) && C.use(1))
- make_new_table(/obj/structure/table/wood/fancy)
+ make_new_table(C.fancy_table_type)
+
else
return ..()
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 2810e9d21e3..6dd727c6bbd 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -498,24 +498,85 @@
/obj/structure/table/wood/fancy
name = "fancy table"
desc = "A standard metal table frame covered with an amazingly fancy, patterned cloth."
- icon = 'icons/obj/structures.dmi'
+ icon = 'icons/obj/smooth_structures/fancy_table.dmi'
icon_state = "fancy_table"
frame = /obj/structure/table_frame
framestack = /obj/item/stack/rods
buildstack = /obj/item/stack/tile/carpet
- canSmoothWith = list(/obj/structure/table/wood/fancy, /obj/structure/table/wood/fancy/black)
+ canSmoothWith = list(/obj/structure/table/wood/fancy,
+ /obj/structure/table/wood/fancy/black,
+ /obj/structure/table/wood/fancy/blue,
+ /obj/structure/table/wood/fancy/cyan,
+ /obj/structure/table/wood/fancy/green,
+ /obj/structure/table/wood/fancy/orange,
+ /obj/structure/table/wood/fancy/purple,
+ /obj/structure/table/wood/fancy/red,
+ /obj/structure/table/wood/fancy/royalblack,
+ /obj/structure/table/wood/fancy/royalblue)
+ var/smooth_icon = 'icons/obj/smooth_structures/fancy_table.dmi'
-/obj/structure/table/wood/fancy/Initialize(mapload)
+/obj/structure/table/wood/fancy/flip(direction)
+ return FALSE
+
+/obj/structure/table/wood/fancy/Initialize()
. = ..()
- icon = 'icons/obj/smooth_structures/fancy_table.dmi' //so that the tables place correctly in the map editor
+ icon = smooth_icon
/obj/structure/table/wood/fancy/black
icon_state = "fancy_table_black"
buildstack = /obj/item/stack/tile/carpet/black
+ icon = 'icons/obj/smooth_structures/fancy_table_black.dmi'
+ smooth_icon = 'icons/obj/smooth_structures/fancy_table_black.dmi'
-/obj/structure/table/wood/fancy/black/Initialize(mapload)
- . = ..()
- icon = 'icons/obj/smooth_structures/fancy_table_black.dmi' //so that the tables place correctly in the map editor
+
+/obj/structure/table/wood/fancy/blue
+ icon_state = "fancy_table_blue"
+ buildstack = /obj/item/stack/tile/carpet/blue
+ icon = 'icons/obj/smooth_structures/fancy_table_blue.dmi'
+ smooth_icon = 'icons/obj/smooth_structures/fancy_table_blue.dmi'
+
+/obj/structure/table/wood/fancy/cyan
+ icon_state = "fancy_table_cyan"
+ buildstack = /obj/item/stack/tile/carpet/cyan
+ icon = 'icons/obj/smooth_structures/fancy_table_cyan.dmi'
+ smooth_icon = 'icons/obj/smooth_structures/fancy_table_cyan.dmi'
+
+/obj/structure/table/wood/fancy/green
+ icon_state = "fancy_table_green"
+ buildstack = /obj/item/stack/tile/carpet/green
+ icon = 'icons/obj/smooth_structures/fancy_table_green.dmi'
+ smooth_icon = 'icons/obj/smooth_structures/fancy_table_green.dmi'
+
+/obj/structure/table/wood/fancy/orange
+ icon_state = "fancy_table_orange"
+ buildstack = /obj/item/stack/tile/carpet/orange
+ icon = 'icons/obj/smooth_structures/fancy_table_orange.dmi'
+ smooth_icon = 'icons/obj/smooth_structures/fancy_table_orange.dmi'
+
+/obj/structure/table/wood/fancy/purple
+ icon_state = "fancy_table_purple"
+ buildstack = /obj/item/stack/tile/carpet/purple
+ icon = 'icons/obj/smooth_structures/fancy_table_purple.dmi'
+ smooth_icon = 'icons/obj/smooth_structures/fancy_table_purple.dmi'
+
+/obj/structure/table/wood/fancy/red
+ icon_state = "fancy_table_red"
+ buildstack = /obj/item/stack/tile/carpet/red
+ icon = 'icons/obj/smooth_structures/fancy_table_red.dmi'
+ smooth_icon = 'icons/obj/smooth_structures/fancy_table_red.dmi'
+
+/obj/structure/table/wood/fancy/royalblack
+ icon_state = "fancy_table_royalblack"
+ buildstack = /obj/item/stack/tile/carpet/royalblack
+ icon = 'icons/obj/smooth_structures/fancy_table_royalblack.dmi'
+ smooth_icon = 'icons/obj/smooth_structures/fancy_table_royalblack.dmi'
+
+
+/obj/structure/table/wood/fancy/royalblue
+ icon_state = "fancy_table_royalblue"
+ buildstack = /obj/item/stack/tile/carpet/royalblue
+ icon = 'icons/obj/smooth_structures/fancy_table_royalblue.dmi'
+ smooth_icon = 'icons/obj/smooth_structures/fancy_table_royalblue.dmi'
/*
* Reinforced tables
diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm
index 6d7ffbf829f..d9ef3e9b075 100644
--- a/code/modules/crafting/recipes.dm
+++ b/code/modules/crafting/recipes.dm
@@ -371,7 +371,7 @@
/datum/crafting_recipe/blackcarpet
name = "Black Carpet"
result = list(/obj/item/stack/tile/carpet/black)
- time = 20
+ time = 10
reqs = list(/obj/item/stack/tile/carpet = 1)
pathtools = list(/obj/item/toy/crayon/black)
category = CAT_MISC
@@ -379,7 +379,7 @@
/datum/crafting_recipe/bluecarpet
name = "Blue Carpet"
result = list(/obj/item/stack/tile/carpet/blue)
- time = 20
+ time = 10
reqs = list(/obj/item/stack/tile/carpet = 1)
pathtools = list(/obj/item/toy/crayon/blue)
category = CAT_MISC
@@ -387,7 +387,7 @@
/datum/crafting_recipe/cyancarpet
name = "Cyan Carpet"
result = list(/obj/item/stack/tile/carpet/cyan)
- time = 20
+ time = 10
reqs = list(/obj/item/stack/tile/carpet = 1)
pathtools = list(/obj/item/toy/crayon/blue, /obj/item/toy/crayon/green)
category = CAT_MISC
@@ -395,7 +395,7 @@
/datum/crafting_recipe/greencarpet
name = "Green Carpet"
result = list(/obj/item/stack/tile/carpet/green)
- time = 20
+ time = 10
reqs = list(/obj/item/stack/tile/carpet = 1)
pathtools = list(/obj/item/toy/crayon/green)
category = CAT_MISC
@@ -403,41 +403,41 @@
/datum/crafting_recipe/orangecarpet
name = "Orange Carpet"
result = list(/obj/item/stack/tile/carpet/orange)
- time = 20
+ time = 10
reqs = list(/obj/item/stack/tile/carpet = 1)
- pathtools = list(/obj/item/toy/crayon/yellow, /obj/item/toy/crayon/red)
+ pathtools = list(/obj/item/toy/crayon/orange)
category = CAT_MISC
/datum/crafting_recipe/purplecarpet
name = "Purple Carpet"
result = list(/obj/item/stack/tile/carpet/purple)
- time = 20
+ time = 10
reqs = list(/obj/item/stack/tile/carpet = 1)
- pathtools = list(/obj/item/toy/crayon/red, /obj/item/toy/crayon/blue)
+ pathtools = list(/obj/item/toy/crayon/purple)
category = CAT_MISC
/datum/crafting_recipe/redcarpet
name = "Red Carpet"
result = list(/obj/item/stack/tile/carpet/red)
- time = 20
+ time = 10
reqs = list(/obj/item/stack/tile/carpet = 1)
pathtools = list(/obj/item/toy/crayon/red)
category = CAT_MISC
/datum/crafting_recipe/royalblackcarpet
name = "Royal Black Carpet"
- result = list(/obj/item/stack/tile/carpet/royalblack = 10)
+ result = list(/obj/item/stack/tile/carpet/royalblack/ten)
time = 20
reqs = list(/obj/item/stack/tile/carpet/black = 10,
- /obj/item/stack/sheet/mineral/gold = 2)
+ /obj/item/stack/sheet/mineral/gold = 1)
category = CAT_MISC
/datum/crafting_recipe/royalbluecarpet
name = "Royal Blue Carpet"
- result = list(/obj/item/stack/tile/carpet/royalblue = 10)
+ result = list(/obj/item/stack/tile/carpet/royalblue/ten)
time = 20
reqs = list(/obj/item/stack/tile/carpet/blue = 10,
- /obj/item/stack/sheet/mineral/gold = 2)
+ /obj/item/stack/sheet/mineral/gold = 1)
category = CAT_MISC
/datum/crafting_recipe/showercurtain
diff --git a/icons/obj/smooth_structures/fancy_table.dmi b/icons/obj/smooth_structures/fancy_table.dmi
index c844ec5cedd..a08fd3212cc 100644
Binary files a/icons/obj/smooth_structures/fancy_table.dmi and b/icons/obj/smooth_structures/fancy_table.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_black.dmi b/icons/obj/smooth_structures/fancy_table_black.dmi
index 7932c0465b9..f9b8d3eb83e 100644
Binary files a/icons/obj/smooth_structures/fancy_table_black.dmi and b/icons/obj/smooth_structures/fancy_table_black.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_blue.dmi b/icons/obj/smooth_structures/fancy_table_blue.dmi
new file mode 100644
index 00000000000..07e13e99e64
Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_blue.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_cyan.dmi b/icons/obj/smooth_structures/fancy_table_cyan.dmi
new file mode 100644
index 00000000000..4f1a90e33b2
Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_cyan.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_green.dmi b/icons/obj/smooth_structures/fancy_table_green.dmi
new file mode 100644
index 00000000000..ea7f8daa99f
Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_green.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_orange.dmi b/icons/obj/smooth_structures/fancy_table_orange.dmi
new file mode 100644
index 00000000000..fe0375ddbb8
Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_orange.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_purple.dmi b/icons/obj/smooth_structures/fancy_table_purple.dmi
new file mode 100644
index 00000000000..c404a9eb5f4
Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_purple.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_red.dmi b/icons/obj/smooth_structures/fancy_table_red.dmi
new file mode 100644
index 00000000000..8bca0ca8c94
Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_red.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_royalblack.dmi b/icons/obj/smooth_structures/fancy_table_royalblack.dmi
new file mode 100644
index 00000000000..064b7c1945e
Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_royalblack.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_royalblue.dmi b/icons/obj/smooth_structures/fancy_table_royalblue.dmi
new file mode 100644
index 00000000000..9d0eba7265e
Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_royalblue.dmi differ