Files
Matrix (Selena Rohrmann) fdaf0a85c8 Brown retro sofa is now craftable (#94385)
## About The Pull Request

The "old ratty sofa" can now be crafted! Crafted version is called the
"retro sofa." Also grouped all craftable sofas under one dropdown menu
to reduce UI clutter.

<img width="702" height="439" alt="retro sofa coded"
src="https://github.com/user-attachments/assets/18a6f462-ffaf-4c8e-a64a-8247e9222578"
/>

## Why It's Good For The Game

The brown sofa looks right at home in cozy places like maints, library,
bar, even the command quarters. We had the model as a map spawn, so I
thought it'd be nice to give players the option to craft them too. Goes
well with wood! Also, reduced UI clutter by putting all sofas into one
drop-down menu.
2025-12-15 20:12:52 -06:00

144 lines
4.1 KiB
Plaintext

/// Create colored subtypes for sofas
#define COLORED_SOFA(path, color_name, sofa_color) \
path/middle/color_name {\
color = sofa_color; \
} \
path/right/color_name {\
color = sofa_color; \
} \
path/left/color_name {\
color = sofa_color; \
} \
path/corner/color_name {\
color = sofa_color; \
}
/obj/structure/chair/sofa
name = "old ratty sofa"
icon_state = "error"
icon = 'icons/obj/chairs_wide.dmi'
buildstackamount = 1
item_chair = null
fishing_modifier = -6
has_armrest = TRUE
/obj/structure/chair/sofa/Initialize(mapload)
. = ..()
AddElement(/datum/element/soft_landing)
/obj/structure/chair/sofa/electrify_self(obj/item/assembly/shock_kit/input_shock_kit, mob/user, list/overlays_from_child_procs)
if(!overlays_from_child_procs)
var/mutable_appearance/echair_overlay = mutable_appearance('icons/obj/chairs.dmi', "echair_over", OBJ_LAYER, src, appearance_flags = KEEP_APART)
echair_overlay.pixel_x = -1
overlays_from_child_procs = list(echair_overlay)
. = ..()
/obj/structure/chair/sofa/corner/handle_layer() //only the armrest/back of this chair should cover the mob.
return
/obj/structure/chair/sofa/middle
icon_state = "sofamiddle"
/obj/structure/chair/sofa/left
icon_state = "sofaend_left"
/obj/structure/chair/sofa/right
icon_state = "sofaend_right"
/obj/structure/chair/sofa/corner
icon_state = "sofacorner"
COLORED_SOFA(/obj/structure/chair/sofa, brown, SOFA_BROWN)
COLORED_SOFA(/obj/structure/chair/sofa, maroon, SOFA_MAROON)
// Make crafted brown sofas use the "retro sofa" display name without changing map-spawned ones.
/obj/structure/chair/sofa/middle/brown/Initialize(mapload)
. = ..()
if(!mapload)
name = "retro sofa"
/obj/structure/chair/sofa/left/brown/Initialize(mapload)
. = ..()
if(!mapload)
name = "retro sofa"
/obj/structure/chair/sofa/right/brown/Initialize(mapload)
. = ..()
if(!mapload)
name = "retro sofa"
/obj/structure/chair/sofa/corner/brown/Initialize(mapload)
. = ..()
if(!mapload)
name = "retro sofa"
// Original icon ported from Eris(?) and updated to work here.
/obj/structure/chair/sofa/corp
name = "sofa"
desc = "Soft and cushy."
icon_state = "corp_sofamiddle"
/obj/structure/chair/sofa/corp/left
icon_state = "corp_sofaend_left"
/obj/structure/chair/sofa/corp/right
icon_state = "corp_sofaend_right"
/obj/structure/chair/sofa/corp/corner
icon_state = "corp_sofacorner"
/obj/structure/chair/sofa/corp/corner/handle_layer() //only the armrest/back of this chair should cover the mob.
return
// 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 = 'icons/map_icons/objects.dmi'
icon_state = "/obj/structure/chair/sofa/bench"
post_init_icon_state = "bench_middle"
greyscale_config = /datum/greyscale_config/bench_middle
greyscale_colors = "#af7d28"
has_armrest = FALSE
/obj/structure/chair/sofa/bench/left
icon_state = "/obj/structure/chair/sofa/bench/left"
post_init_icon_state = "bench_left"
greyscale_config = /datum/greyscale_config/bench_left
/obj/structure/chair/sofa/bench/right
icon_state = "/obj/structure/chair/sofa/bench/right"
post_init_icon_state = "bench_right"
greyscale_config = /datum/greyscale_config/bench_right
/obj/structure/chair/sofa/bench/corner
icon_state = "/obj/structure/chair/sofa/bench/corner"
post_init_icon_state = "bench_corner"
greyscale_config = /datum/greyscale_config/bench_corner
/obj/structure/chair/sofa/bench/solo
icon_state = "/obj/structure/chair/sofa/bench/solo"
post_init_icon_state = "bench_solo"
greyscale_config = /datum/greyscale_config/bench_solo
// Bamboo benches
/obj/structure/chair/sofa/bamboo
name = "bamboo bench"
desc = "A makeshift bench with a rustic aesthetic."
icon_state = "bamboo_sofamiddle"
resistance_flags = FLAMMABLE
max_integrity = 60
buildstacktype = /obj/item/stack/sheet/mineral/bamboo
buildstackamount = 3
has_armrest = FALSE
custom_materials = list(/datum/material/bamboo = SHEET_MATERIAL_AMOUNT * 3)
/obj/structure/chair/sofa/bamboo/left
icon_state = "bamboo_sofaend_left"
/obj/structure/chair/sofa/bamboo/right
icon_state = "bamboo_sofaend_right"
#undef COLORED_SOFA