Adds a bunch of buildable wood stuff, resprites planks (#28528)

* New wooden furniture

* Bonfire repath

* Wood retexture

* Wood Resprite

* Fixes

* Description fix

* Fixes

* Undo match changes

* Undo match icon changes

* Typepath script

* rackable spears

* bounding box adjustment

* Spear Rack

* Memorial tweaks

* Apply suggestions from code review

Co-authored-by: Toastical <vnndvp@gmail.com>
Signed-off-by: ExusA <67055922+ExusA@users.noreply.github.com>

* More memorial tweaks

---------

Signed-off-by: ExusA <67055922+ExusA@users.noreply.github.com>
Co-authored-by: Toastical <toastical@toaster.com>
Co-authored-by: Toastical <vnndvp@gmail.com>
This commit is contained in:
ExusA
2025-03-16 18:02:40 +00:00
committed by GitHub
co-authored by Toastical Toastical
parent 0ff8eec5ff
commit a1ff715bf1
26 changed files with 314 additions and 117 deletions
@@ -248,19 +248,25 @@ GLOBAL_LIST_INIT(wood_recipes, list(
new /datum/stack_recipe("rake", /obj/item/cultivator/rake, 5, time = 1 SECONDS),
new /datum/stack_recipe("wooden bucket", /obj/item/reagent_containers/glass/bucket/wooden, 3, time = 1 SECONDS),
new /datum/stack_recipe("firebrand", /obj/item/match/firebrand, 2, time = 10 SECONDS),
new /datum/stack_recipe("mug", /obj/item/reagent_containers/drinks/mug/wood, 1, time = 0.5 SECONDS),
new /datum/stack_recipe("notice board", /obj/item/mounted/noticeboard, 5, time = 5 SECONDS),
null,
new /datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20),
new /datum/stack_recipe_list("wood structures", list(
new /datum/stack_recipe("wood table frame", /obj/structure/table_frame/wood, 2, time = 1 SECONDS),
new /datum/stack_recipe("wooden chair", /obj/structure/chair/wood, 3, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("wooden stool", /obj/structure/chair/stool/wood, 2, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("bookcase", /obj/structure/bookcase, 5, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("dresser", /obj/structure/dresser, 30, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("wooden marker", /obj/structure/signpost/wood, 2, time = 2 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("spear rack", /obj/structure/spear_rack, 2, time = 2 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("dog bed", /obj/structure/bed/dogbed, 10, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("slab bed", /obj/structure/bed/wood, 5, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 2 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("wooden airlock assembly", /obj/structure/door_assembly/door_assembly_wood, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("wooden airlock assembly", /obj/structure/door_assembly/door_assembly_wood, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 1.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("torch sconce", /obj/structure/lightable/torch, 5, time = 3 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
)),
new /datum/stack_recipe_list("pews", list(
new /datum/stack_recipe("pew (middle)", /obj/structure/chair/sofa/pew, 5, one_per_turf = TRUE, on_floor = TRUE),
@@ -6,13 +6,79 @@
*/
/obj/structure/signpost
name = "signpost"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "signpost"
anchored = TRUE
density = TRUE
density = FALSE
new_attack_chain = TRUE
var/writing = ""
/obj/structure/signpost/Initialize(mapload)
. = ..()
update()
/obj/structure/signpost/deconstruct()
new /obj/item/stack/sheet/wood (get_turf(src), 2)
qdel(src)
..()
/obj/structure/signpost/wrench_act(mob/user, obj/item/I)
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
deconstruct()
/obj/structure/signpost/item_interaction(mob/living/user, obj/item/used, list/modifiers)
if(istype(used, /obj/item/pen))
rename(user)
return ITEM_INTERACT_COMPLETE
return ..()
/obj/structure/signpost/proc/rename(mob/user)
var/n_name = rename_interactive(user)
if(n_name)
writing = n_name
update()
add_fingerprint(user)
/obj/structure/signpost/proc/update()
if(writing)
overlays += "[initial(icon_state)]_writing"
desc = "It says: '[writing]'."
else
overlays.Cut()
desc = "It says... nothing."
/obj/structure/signpost/ruin
name = "Salvation"
writing = "This way home"
/obj/structure/signpost/wood
name = "wooden sign"
desc = "A small wooden marker."
icon = 'icons/obj/objects.dmi'
icon_state = "signpost_wood"
var/scarf = FALSE
max_integrity = 100
/obj/structure/signpost/wood/AltClick(mob/living/user)
if(!scarf)
scarf = TRUE
to_chat(user, "<span class='notice'>You tie a memorial wreath around the sign.</span>")
else
scarf = FALSE
to_chat(user, "<span class='notice'>You untie the memorial wreath from the sign.</span>")
update()
/obj/structure/signpost/wood/update()
..()
if(scarf)
icon_state = "signpost_wood_scarf"
else
icon_state = "signpost_wood"
/obj/structure/ninjatele
name = "Long-Distance Teleportation Console"
desc = "A console used to send a Spider Clan operative long distances rapidly."
icon = 'icons/obj/ninjaobjects.dmi'
+41
View File
@@ -155,3 +155,44 @@ GLOBAL_LIST_INIT(shelf_colors, list("basic", "sci", "sup", "serv", "med", "sec",
name = "brass weapon rack"
icon_state = "gunrack_clockwork"
build_stack_type = /obj/item/stack/tile/brass
/obj/structure/spear_rack
name = "spear rack"
desc = "A rack meant to hold spears, though you could probably balance other things on there if you tried..."
icon = 'icons/obj/objects.dmi'
icon_state = "rack_wood"
layer = TABLE_LAYER
density = TRUE
anchored = TRUE
pass_flags_self = PASSTAKE
max_integrity = 80
var/build_stack_type = /obj/item/stack/sheet/wood
var/image/shelf_overlay
/obj/structure/spear_rack/Initialize(mapload)
. = ..()
var/static/list/spear_subtypes = typesof(/obj/item/spear)
shelf_overlay = mutable_appearance('icons/obj/objects.dmi', "rack_wood_over")
shelf_overlay.layer = LOW_ITEM_LAYER
AddComponent(/datum/component/shelver/spear_rack, allowed_types_ = spear_subtypes)
update_appearance(UPDATE_OVERLAYS)
if(mapload)
SEND_SIGNAL(src, COMSIG_SHELF_ADDED_ON_MAPLOAD)
/obj/structure/spear_rack/update_overlays()
return list(shelf_overlay)
/obj/structure/spear_rack/wrench_act(mob/living/user, obj/item/I)
. = TRUE
if(user.a_intent != INTENT_HELP)
return FALSE
if(!I.use_tool(src, user, 2.5 SECONDS, volume = I.tool_volume))
return
to_chat(user, "<span class='notice'>You disassemble [src].</span>")
deconstruct()
/obj/structure/spear_rack/deconstruct(disassembled)
new build_stack_type(get_turf(src), 2)
return ..()
@@ -128,6 +128,13 @@
return TRUE
/obj/structure/bed/wood
name = "wooden slab"
desc = "It looks even less comfortable than the floor it's built on..."
icon_state = "bed_wood"
buildstacktype = /obj/item/stack/sheet/wood
buildstackamount = 5
/*
* Roller beds
*/
@@ -506,6 +506,16 @@
buildstackamount = 2
buildstacktype = /obj/item/stack/sheet/bamboo
/obj/structure/chair/stool/wood
name = "wooden chair"
desc = "A short wooden stool. Pull up a stump, won't you?"
icon_state = "wooden_stool"
resistance_flags = FLAMMABLE
max_integrity = 50
buildstackamount = 2
buildstacktype = /obj/item/stack/sheet/wood
item_chair = /obj/item/chair/stool/wood
/obj/item/chair
name = "chair"
desc = "Bar brawl essential."
@@ -573,6 +583,13 @@
item_state = "stool_bamboo"
origin_type = /obj/structure/chair/stool/bamboo
/obj/item/chair/stool/wood
name = "wood stool"
desc = "The barfighter's choice of stool."
icon_state = "wooden_stool_toppled"
item_state = "stool_wood"
origin_type = /obj/structure/chair/stool/wood
/obj/item/chair/AltClick(mob/user)
. = ..()
if(Adjacent(user))
+7 -2
View File
@@ -909,6 +909,8 @@
anchored = TRUE
pass_flags_self = LETPASSTHROW | PASSTAKE
max_integrity = 20
var/deconstruction_item = /obj/item/rack_parts
var/deconstruction_quantity = 1
/obj/structure/rack/examine(mob/user)
. = ..()
@@ -1001,8 +1003,11 @@
/obj/structure/rack/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))
density = FALSE
var/obj/item/rack_parts/newparts = new(loc)
transfer_fingerprints_to(newparts)
if(deconstruction_quantity)
new deconstruction_item(loc, deconstruction_quantity)
else
var/decon_parts = new deconstruction_item(get_turf(src))
transfer_fingerprints_to(decon_parts)
qdel(src)
/*