From da02be6f494b79264ecbbb6dca1c07e52f902d3f Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 19 Jun 2023 10:53:48 +0300 Subject: [PATCH] Hairless hides are created from the entire stack of hides instead of only one item from stack (#75974) Tanning is barely used because biogens are available everywhere and are a default source of leather. This PR makes one of the steps - hairless hide creation - easier, as before to process 5 hides you had to either click on the stack 5 times in sequence, or manually separate 1 hide from the stack, throw around you avoiding their merging, click on each of them and then merge them back. Maybe people will use this way of leather creation more often. --- .../objects/items/stacks/sheets/leather.dm | 117 +++++++++--------- 1 file changed, 61 insertions(+), 56 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 11f1cea26a2..be9c6026beb 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -120,6 +120,26 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \ . = ..() . += GLOB.xeno_recipes +/obj/item/stack/sheet/animalhide/carp + name = "carp scales" + desc = "The scaly skin of a space carp. It looks quite beatiful when detached from the foul creature who once wore it." + singular_name = "carp scale" + icon_state = "sheet-carp" + inhand_icon_state = null + merge_type = /obj/item/stack/sheet/animalhide/carp + +GLOBAL_LIST_INIT(carp_recipes, list ( \ + new/datum/stack_recipe("carp costume", /obj/item/clothing/suit/hooded/carp_costume, 4, check_density = FALSE, category = CAT_CLOTHING), \ + new/datum/stack_recipe("carp mask", /obj/item/clothing/mask/gas/carp, 1, check_density = FALSE, category = CAT_CLOTHING), \ + new/datum/stack_recipe("carpskin chair", /obj/structure/chair/comfy/carp, 2, check_density = FALSE, category = CAT_FURNITURE), \ + new/datum/stack_recipe("carpskin suit", /obj/item/clothing/under/suit/carpskin, 3, check_density = FALSE, category = CAT_CLOTHING), \ + new/datum/stack_recipe("carpskin fedora", /obj/item/clothing/head/fedora/carpskin, 2, check_density = FALSE, category = CAT_CLOTHING), \ + )) + +/obj/item/stack/sheet/animalhide/carp/get_main_recipes() + . = ..() + . += GLOB.carp_recipes + //don't see anywhere else to put these, maybe together they could be used to make the xenos suit? /obj/item/stack/sheet/xenochitin name = "alien chitin" @@ -142,38 +162,6 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \ icon = 'icons/mob/nonhuman-player/alien.dmi' icon_state = "weed_extract" -/obj/item/stack/sheet/hairlesshide - name = "hairless hide" - desc = "This hide was stripped of its hair, but still needs washing and tanning." - singular_name = "hairless hide piece" - icon_state = "sheet-hairlesshide" - inhand_icon_state = null - merge_type = /obj/item/stack/sheet/hairlesshide - -/obj/item/stack/sheet/wethide - name = "wet hide" - desc = "This hide has been cleaned but still needs to be dried." - singular_name = "wet hide piece" - icon_state = "sheet-wetleather" - inhand_icon_state = null - merge_type = /obj/item/stack/sheet/wethide - /// Reduced when exposed to high temperatures - var/wetness = 30 - /// Kelvin to start drying - var/drying_threshold_temperature = 500 - -/obj/item/stack/sheet/wethide/Initialize(mapload, new_amount, merge = TRUE, list/mat_override=null, mat_amt=1) - . = ..() - AddElement(/datum/element/dryable, /obj/item/stack/sheet/leather) - AddElement(/datum/element/atmos_sensitive, mapload) - AddComponent(/datum/component/grillable, /obj/item/stack/sheet/leather, rand(1 SECONDS, 3 SECONDS), TRUE) - -/obj/item/stack/sheet/wethide/burn() - visible_message(span_notice("[src] burns up, leaving a sheet of leather behind!")) - new /obj/item/stack/sheet/leather(loc) // only one sheet remains to incentivise not burning your wethide to dry it - qdel(src) - - /* * Leather SHeet */ @@ -287,23 +275,60 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ playsound(loc, 'sound/weapons/slice.ogg', 50, TRUE, -1) user.visible_message(span_notice("[user] starts cutting hair off \the [src]."), span_notice("You start cutting the hair off \the [src]..."), span_hear("You hear the sound of a knife rubbing against flesh.")) if(do_after(user, 50, target = src)) - to_chat(user, span_notice("You cut the hair from this [src.singular_name].")) - new /obj/item/stack/sheet/hairlesshide(user.drop_location(), 1) - use(1) + to_chat(user, span_notice("You cut the hair from [src.name].")) + new /obj/item/stack/sheet/hairlesshide(user.drop_location(), amount) + use(amount) else return ..() +/obj/item/stack/sheet/animalhide/examine(mob/user) + . = ..() + . += span_notice("You can remove the hair with any sharp object.") //Step two - washing..... it's actually in washing machine code. +/obj/item/stack/sheet/hairlesshide + name = "hairless hide" + desc = "This hide was stripped of its hair, but still needs washing and tanning." + singular_name = "hairless hide piece" + icon_state = "sheet-hairlesshide" + inhand_icon_state = null + merge_type = /obj/item/stack/sheet/hairlesshide + +/obj/item/stack/sheet/hairlesshide/examine(mob/user) + . = ..() + . += span_notice("You can clean it up by washing in the water.") + //Step three - drying /obj/item/stack/sheet/wethide + name = "wet hide" + desc = "This hide has been cleaned but still needs to be dried." + singular_name = "wet hide piece" + icon_state = "sheet-wetleather" + inhand_icon_state = null + merge_type = /obj/item/stack/sheet/wethide + /// Reduced when exposed to high temperatures + var/wetness = 30 + /// Kelvin to start drying + var/drying_threshold_temperature = 500 -/obj/item/stack/sheet/wethide/Initialize(mapload) +/obj/item/stack/sheet/wethide/examine(mob/user) . = ..() + . += span_notice("You can dry it up to make leather.") + +/obj/item/stack/sheet/wethide/Initialize(mapload, new_amount, merge = TRUE, list/mat_override=null, mat_amt=1) + . = ..() + AddElement(/datum/element/atmos_sensitive, mapload) + AddElement(/datum/element/dryable, /obj/item/stack/sheet/leather) AddElement(/datum/element/microwavable, /obj/item/stack/sheet/leather) + AddComponent(/datum/component/grillable, /obj/item/stack/sheet/leather, rand(1 SECONDS, 3 SECONDS), TRUE) AddComponent(/datum/component/bakeable, /obj/item/stack/sheet/leather, rand(15 SECONDS, 20 SECONDS), TRUE, TRUE) +/obj/item/stack/sheet/wethide/burn() + visible_message(span_notice("[src] burns up, leaving a sheet of leather behind!")) + new /obj/item/stack/sheet/leather(loc) // only one sheet remains to incentivise not burning your wethide to dry it + qdel(src) + /obj/item/stack/sheet/wethide/should_atmos_process(datum/gas_mixture/air, exposed_temperature) return (exposed_temperature > drying_threshold_temperature) @@ -313,23 +338,3 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ new /obj/item/stack/sheet/leather(drop_location(), 1) wetness = initial(wetness) use(1) - -/obj/item/stack/sheet/animalhide/carp - name = "carp scales" - desc = "The scaly skin of a space carp. It looks quite beatiful when detached from the foul creature who once wore it." - singular_name = "carp scale" - icon_state = "sheet-carp" - inhand_icon_state = null - merge_type = /obj/item/stack/sheet/animalhide/carp - -GLOBAL_LIST_INIT(carp_recipes, list ( \ - new/datum/stack_recipe("carp costume", /obj/item/clothing/suit/hooded/carp_costume, 4, check_density = FALSE, category = CAT_CLOTHING), \ - new/datum/stack_recipe("carp mask", /obj/item/clothing/mask/gas/carp, 1, check_density = FALSE, category = CAT_CLOTHING), \ - new/datum/stack_recipe("carpskin chair", /obj/structure/chair/comfy/carp, 2, check_density = FALSE, category = CAT_FURNITURE), \ - new/datum/stack_recipe("carpskin suit", /obj/item/clothing/under/suit/carpskin, 3, check_density = FALSE, category = CAT_CLOTHING), \ - new/datum/stack_recipe("carpskin fedora", /obj/item/clothing/head/fedora/carpskin, 2, check_density = FALSE, category = CAT_CLOTHING), \ - )) - -/obj/item/stack/sheet/animalhide/carp/get_main_recipes() - . = ..() - . += GLOB.carp_recipes