Beds and Benches: The Aesthetic Revolution [re-PR'd With EOB's Blessing] (#62169)

About The Pull Request

Ever since I saw @EOBGames PR this, I've wanted it. I've needed it. I've been delaying some mapwork FOR this. This is an identical PR to #61689, just updated so that it's not conflicting with anything. I've done everything @Krysonism asked for from last time too. That's right spacemen, double beds are back, and more cursed then ever. Cursed to succeed that is!
Why It's Good For The Game

We. Don't. Have. Benches.
Benches are a hallmark of any public space! You can sit on them, sleep on them, stand on them, even sleep on them! Our stations have a ton of chairs, but chairs don't really communicate public that well. Benches do. As for the beds? Well Inept wants them, and you know what? I respect that.


cl
expansion: Sofas now include the Bench Type. These are buildable with 2 metal plates from the crafting menu.
expansion: Beds can now be rotated (flipped), and include the Double Bed Type. Miners can also make Double Pod Beds to really feel like an Alaskan King.
expansion: Bedsheets to match! Try to share those big blankets with a lizard if you see that they're shivering!
code: Stuff that lets you interact with the benches and beds in-game, so that you too can enjoy being a king.
sprites: Ports the Benches and Double Bed sprites from Skyrat
sprites: Flipped Beds
This commit is contained in:
Zytolg
2021-10-25 02:55:13 -06:00
committed by GitHub
parent 72ff4f50c6
commit 0a9404e69b
16 changed files with 275 additions and 1 deletions

View File

@@ -4,6 +4,7 @@
#define DYE_REGISTRY_SNEAKERS "sneakers"
#define DYE_REGISTRY_FANNYPACK "fannypack"
#define DYE_REGISTRY_BEDSHEET "bedsheet"
#define DYE_REGISTRY_DOUBLE_BEDSHEET "double_bedsheet"
#define DYE_LAWYER_SPECIAL "lawyer_special"
#define DYE_RED "red"

View File

@@ -115,7 +115,7 @@
/datum/greyscale_config/pda/chaplain
name = "Chaplain PDA"
json_config = 'code/datums/greyscale/json_configs/pda_chaplain.json'
/datum/greyscale_config/pda/captain
name = "Captain PDA"
json_config = 'code/datums/greyscale/json_configs/pda_captain.json'
@@ -393,6 +393,26 @@
/datum/greyscale_config/janicart_upgrade/installed
json_config = 'code/datums/greyscale/json_configs/janicart_upgrade_installed.json'
/datum/greyscale_config/bench_middle
name = "Bench Middle"
icon_file = 'icons/obj/sofa.dmi'
json_config = 'code/datums/greyscale/json_configs/bench_middle.json'
/datum/greyscale_config/bench_left
name = "Bench Left"
icon_file = 'icons/obj/sofa.dmi'
json_config = 'code/datums/greyscale/json_configs/bench_left.json'
/datum/greyscale_config/bench_right
name = "Bench Right"
icon_file = 'icons/obj/sofa.dmi'
json_config = 'code/datums/greyscale/json_configs/bench_right.json'
/datum/greyscale_config/bench_corner
name = "Bench Corner"
icon_file = 'icons/obj/sofa.dmi'
json_config = 'code/datums/greyscale/json_configs/bench_corner.json'
/datum/greyscale_config/ctf_standard
name = "CTF Standard Vest"
icon_file = 'icons/obj/clothing/suits/ctf.dmi'

View File

@@ -0,0 +1,15 @@
{
"bench_corner": [
{
"type": "icon_state",
"icon_state": "bench_corner_base",
"blend_mode": "overlay"
},
{
"type": "icon_state",
"icon_state": "bench_corner_cover",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
]
}

View File

@@ -0,0 +1,15 @@
{
"bench_left": [
{
"type": "icon_state",
"icon_state": "bench_left_base",
"blend_mode": "overlay"
},
{
"type": "icon_state",
"icon_state": "bench_left_cover",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
]
}

View File

@@ -0,0 +1,15 @@
{
"bench_middle": [
{
"type": "icon_state",
"icon_state": "bench_middle_base",
"blend_mode": "overlay"
},
{
"type": "icon_state",
"icon_state": "bench_middle_cover",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
]
}

View File

@@ -0,0 +1,15 @@
{
"bench_right": [
{
"type": "icon_state",
"icon_state": "bench_right_base",
"blend_mode": "overlay"
},
{
"type": "icon_state",
"icon_state": "bench_right_cover",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
]
}

View File

@@ -126,6 +126,31 @@ GLOBAL_LIST_INIT(dye_registry, list(
DYE_COSMIC = /obj/item/bedsheet/cosmos,
DYE_SYNDICATE = /obj/item/bedsheet/syndie,
DYE_CENTCOM = /obj/item/bedsheet/centcom
),
DYE_REGISTRY_DOUBLE_BEDSHEET = list(
DYE_RED = /obj/item/bedsheet/red/double,
DYE_ORANGE = /obj/item/bedsheet/orange/double,
DYE_YELLOW = /obj/item/bedsheet/yellow/double,
DYE_GREEN = /obj/item/bedsheet/green/double,
DYE_BLUE = /obj/item/bedsheet/blue/double,
DYE_PURPLE = /obj/item/bedsheet/purple/double,
DYE_BLACK = /obj/item/bedsheet/black/double,
DYE_WHITE = /obj/item/bedsheet/double,
DYE_RAINBOW = /obj/item/bedsheet/rainbow/double,
DYE_MIME = /obj/item/bedsheet/mime/double,
DYE_CLOWN = /obj/item/bedsheet/clown/double,
DYE_CHAP = /obj/item/bedsheet/chaplain/double,
DYE_QM = /obj/item/bedsheet/qm/double,
DYE_LAW = /obj/item/bedsheet/black/double,
DYE_CAPTAIN = /obj/item/bedsheet/captain/double,
DYE_HOP = /obj/item/bedsheet/hop/double,
DYE_HOS = /obj/item/bedsheet/hos/double,
DYE_CE = /obj/item/bedsheet/ce/double,
DYE_RD = /obj/item/bedsheet/rd/double,
DYE_CMO = /obj/item/bedsheet/cmo/double,
DYE_COSMIC = /obj/item/bedsheet/cosmos/double,
DYE_SYNDICATE = /obj/item/bedsheet/syndie/double,
DYE_CENTCOM = /obj/item/bedsheet/centcom/double
),
DYE_LAWYER_SPECIAL = list(
DYE_COSMIC = /obj/item/clothing/under/rank/civilian/lawyer/galaxy,

View File

@@ -18,6 +18,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("double bed", /obj/structure/bed/double, 2, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe_list("office chairs", list( \
new/datum/stack_recipe("dark office chair", /obj/structure/chair/office, 5, one_per_turf = TRUE, on_floor = TRUE), \
@@ -42,6 +43,12 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/corp/right, one_per_turf = TRUE, on_floor = TRUE), \
new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corp/corner, one_per_turf = TRUE, on_floor = TRUE), \
)), \
new /datum/stack_recipe_list("benches", list( \
new /datum/stack_recipe("bench (middle)", /obj/structure/chair/sofa/bench, one_per_turf = TRUE, on_floor = TRUE), \
new /datum/stack_recipe("bench (left)", /obj/structure/chair/sofa/bench/left, one_per_turf = TRUE, on_floor = TRUE), \
new /datum/stack_recipe("bench (right)", /obj/structure/chair/sofa/bench/right, one_per_turf = TRUE, on_floor = TRUE), \
new /datum/stack_recipe("bench (corner)", /obj/structure/chair/sofa/bench/corner, one_per_turf = TRUE, on_floor = TRUE), \
)), \
new /datum/stack_recipe_list("chess pieces", list( \
new /datum/stack_recipe("White Pawn", /obj/structure/chess/whitepawn, 2, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE), \
new /datum/stack_recipe("White Rook", /obj/structure/chess/whiterook, 2, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE), \
@@ -349,6 +356,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
new/datum/stack_recipe("improvised gauze", /obj/item/stack/medical/gauze/improvised, 1, 2, 6), \
new/datum/stack_recipe("rag", /obj/item/reagent_containers/glass/rag, 1), \
new/datum/stack_recipe("bedsheet", /obj/item/bedsheet, 3), \
new/datum/stack_recipe("double bedsheet", /obj/item/bedsheet/double, 3), \
new/datum/stack_recipe("empty sandbag", /obj/item/emptysandbag, 4), \
null, \
new/datum/stack_recipe("fingerless gloves", /obj/item/clothing/gloves/fingerless, 1), \

View File

@@ -228,3 +228,9 @@
/obj/structure/bed/maint/Initialize(mapload)
. = ..()
AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOLD, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 25)
//Double Beds, for luxurious sleeping, i.e. the captain and maybe heads- if people use this for ERP, send them to skyrat
/obj/structure/bed/double
name = "double bed"
desc = "A luxurious double bed, for those too important for small dreams."
icon_state = "bed_double"

View File

@@ -55,3 +55,26 @@
/obj/structure/chair/sofa/corp/corner
icon_state = "corp_sofacorner"
// Ported from Skyrat
/obj/structure/chair/sofa/bench
name = "bench"
desc = "Perfectly designed to be comfortable to sit on, and hellish to sleep on."
icon_state = "bench_middle"
greyscale_config = /datum/greyscale_config/bench_middle
greyscale_colors = "#e3ab4b"
/obj/structure/chair/sofa/bench/left
icon_state = "bench_left"
greyscale_config = /datum/greyscale_config/bench_left
greyscale_colors = "#e3ab4b"
/obj/structure/chair/sofa/bench/right
icon_state = "bench_right"
greyscale_config = /datum/greyscale_config/bench_right
greyscale_colors = "#e3ab4b"
/obj/structure/chair/sofa/bench/corner
icon_state = "bench_corner"
greyscale_config = /datum/greyscale_config/bench_corner
greyscale_colors = "#e3ab4b"

View File

@@ -290,6 +290,133 @@ LINEN BINS
new type(loc)
return INITIALIZE_HINT_QDEL
/obj/item/bedsheet/double
icon_state = "double_sheetwhite"
dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET
/obj/item/bedsheet/blue/double
icon_state = "double_sheetblue"
/obj/item/bedsheet/green/double
icon_state = "double_sheetgreen"
/obj/item/bedsheet/grey/double
icon_state = "double_sheetgrey"
/obj/item/bedsheet/orange/double
icon_state = "double_sheetorange"
/obj/item/bedsheet/purple/double
icon_state = "double_sheetpurple"
/obj/item/bedsheet/patriot/double
icon_state = "double_sheetUSA"
/obj/item/bedsheet/rainbow/double
icon_state = "double_sheetrainbow"
/obj/item/bedsheet/red/double
icon_state = "double_sheetred"
/obj/item/bedsheet/yellow/double
icon_state = "double_sheetyellow"
/obj/item/bedsheet/mime/double
icon_state = "double_sheetmime"
/obj/item/bedsheet/clown/double
icon_state = "double_sheetclown"
/obj/item/bedsheet/captain/double
icon_state = "double_sheetcaptain"
/obj/item/bedsheet/rd/double
icon_state = "double_sheetrd"
/obj/item/bedsheet/medical/double
icon_state = "double_sheetmedical"
/obj/item/bedsheet/cmo/double
icon_state = "double_sheetcmo"
/obj/item/bedsheet/hos/double
icon_state = "double_sheethos"
/obj/item/bedsheet/hop/double
icon_state = "double_sheethop"
/obj/item/bedsheet/ce/double
icon_state = "double_sheetce"
/obj/item/bedsheet/qm/double
icon_state = "double_sheetqm"
/obj/item/bedsheet/chaplain/double
icon_state = "double_sheetchap"
/obj/item/bedsheet/brown/double
icon_state = "double_sheetbrown"
/obj/item/bedsheet/black/double
icon_state = "double_sheetblack"
/obj/item/bedsheet/centcom/double
icon_state = "double_sheetcentcom"
/obj/item/bedsheet/syndie/double
icon_state = "double_sheetsyndie"
/obj/item/bedsheet/cult/double
icon_state = "double_sheetcult"
/obj/item/bedsheet/wiz/double
icon_state = "double_sheetwiz"
/obj/item/bedsheet/nanotrasen/double
icon_state = "double_sheetNT"
/obj/item/bedsheet/ian/double
icon_state = "double_sheetian"
/obj/item/bedsheet/cosmos/double
icon_state = "double_sheetcosmos"
/obj/item/bedsheet/random/double
icon_state = "random_bedsheet"
/obj/item/bedsheet/random/double/Initialize()
..()
var/type = pick(typesof(/obj/item/bedsheet) - /obj/item/bedsheet/random)
new type(loc)
return INITIALIZE_HINT_QDEL
/obj/item/bedsheet/dorms/double
icon_state = "random_bedsheet"
/obj/item/bedsheet/dorms/double/Initialize()
..()
var/type = pick_weight(list("Colors" = 80, "Special" = 20))
switch(type)
if("Colors")
type = pick(list(/obj/item/bedsheet,
/obj/item/bedsheet/blue/double,
/obj/item/bedsheet/green/double,
/obj/item/bedsheet/grey/double,
/obj/item/bedsheet/orange/double,
/obj/item/bedsheet/purple/double,
/obj/item/bedsheet/red/double,
/obj/item/bedsheet/yellow/double,
/obj/item/bedsheet/brown/double,
/obj/item/bedsheet/black/double))
if("Special")
type = pick(list(/obj/item/bedsheet/patriot/double,
/obj/item/bedsheet/rainbow/double,
/obj/item/bedsheet/ian/double,
/obj/item/bedsheet/cosmos/double,
/obj/item/bedsheet/nanotrasen/double))
new type(loc)
return INITIALIZE_HINT_QDEL
/obj/structure/bedsheetbin
name = "linen bin"
desc = "It looks rather cosy."

View File

@@ -186,6 +186,10 @@
icon = 'icons/obj/lavaland/survival_pod.dmi'
icon_state = "bed"
/obj/structure/bed/double/pod
icon = 'icons/obj/lavaland/survival_pod.dmi'
icon_state = "bed_double"
//Survival Storage Unit
/obj/machinery/smartfridge/survival_pod
name = "survival pod storage"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 23 KiB