From f6bc0d861bef10cba43daea9c3cabed9356e69d7 Mon Sep 17 00:00:00 2001 From: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com> Date: Mon, 3 Feb 2025 22:11:28 +0000 Subject: [PATCH] Orefruit harvesting producing sheets (#2800) ## About The Pull Request This PR makes it so that orefruit when harvested produces cores as sheets, instead of a grown item. I've added stack sprites too, so you can get more of a visual update on stacks. This doesn't affect the tedium of peeling them, you still have to do that by hand, this just makes it so that the resulting cores can be loaded into protolathes, machines and silos. ## Why It's Good For The Game It was tedious for many to produce a recycler layout or autolathe to actually make use of the ores. ## Proof Of Testing
Screenshots/Videos ![image](https://github.com/user-attachments/assets/81eb40fe-1ad5-43c3-87dc-e94ab5ce042a) ![image](https://github.com/user-attachments/assets/bc88f7bd-5481-4595-9226-f3ca33162021)
## Changelog :cl: qol: made orefruits produce sheets as cores, instead of lame objects, letting them be inserted into a silo. /:cl: --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> --- .../modules/hydroponics/code/grown/rocks.dm | 176 ++++++++++-------- .../modules/hydroponics/icons/harvest.dmi | Bin 3939 -> 7071 bytes 2 files changed, 100 insertions(+), 76 deletions(-) diff --git a/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm b/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm index a666c778286..8ec39c17887 100644 --- a/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm +++ b/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm @@ -121,17 +121,19 @@ desc = "A mutated variant of rockfruits; rough, course and now available everywhere. Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/sandfruitcore + trash_type = /obj/item/stack/sheet/mineral/sandfruitcore foodtypes = FRUIT distill_reagent = /datum/reagent/silicon -/obj/item/grown/sandfruitcore - seed = /obj/item/seeds/sandfruit +/obj/item/stack/sheet/mineral/sandfruitcore name = "sandfruit core" desc = "A very fragile sandfruit core, literally composed of dozens of particles of sand... don't store in pockets." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + singular_name = "sandfruit core" icon_state = "sandfruit" - custom_materials = list(/datum/material/glass=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/sandfruitcore + max_amount = 10 + mats_per_unit = list(/datum/material/glass=SHEET_MATERIAL_AMOUNT*0.2) //Uranium - First on 'energy' line @@ -157,17 +159,19 @@ desc = "A mutated variant of rockfruits; you might not want to hold it for long... also not actually a berry! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/uraniberrycore + trash_type = /obj/item/stack/sheet/mineral/uraniberrycore foodtypes = FRUIT distill_reagent = /datum/reagent/uranium -/obj/item/grown/uraniberrycore - seed = /obj/item/seeds/uraniberry +/obj/item/stack/sheet/mineral/uraniberrycore name = "uraniberry core" + singular_name = "uraniberry core" desc = "A very dense uraniberry core, don't store in pockets, unless you want extra limbs." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "uraniberry" - custom_materials = list(/datum/material/uranium=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/uraniberrycore + max_amount = 10 + mats_per_unit =list(/datum/material/uranium=SHEET_MATERIAL_AMOUNT*0.2) //Plasma - Second stage of 'energy' line. @@ -193,17 +197,19 @@ desc = "A mutated variant of rockfruits; Incredibly volatile... also not actually a plum! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/plasmaplumcore + trash_type = /obj/item/stack/sheet/mineral/plasmaplumcore foodtypes = FRUIT distill_reagent = /datum/reagent/toxin/plasma -/obj/item/grown/plasmaplumcore - seed = /obj/item/seeds/plasmaplum +/obj/item/stack/sheet/mineral/plasmaplumcore name = "plasmaplum core" + singular_name = "plasmaplum core" desc = "A very dense plasmaplum core, store in a cold, fire and spark free place." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "plasmaplum" - custom_materials = list(/datum/material/plasma=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/plasmaplumcore + max_amount = 10 + mats_per_unit = list(/datum/material/plasma=SHEET_MATERIAL_AMOUNT*0.2) //Bluespace - ending of 'energy' line. @@ -229,29 +235,31 @@ desc = "A mutated variant of rockfruits; Incredibly fragile... also not actually a drupe! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/bluegemdrupecore + trash_type = /obj/item/stack/sheet/mineral/bluegemdrupecore foodtypes = FRUIT distill_reagent = /datum/reagent/bluespace -/obj/item/grown/bluegemdrupecore - seed = /obj/item/seeds/bluegemdrupe +/obj/item/stack/sheet/mineral/bluegemdrupecore name = "bluegem drupe core" + singular_name = "bluegem drupe core" desc = "A very dense bluegem drupe core, dropping may incur teleportation in rare cases." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "bluegemdrupe" - custom_materials = list(/datum/material/bluespace=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/bluegemdrupecore + max_amount = 10 + mats_per_unit = list(/datum/material/bluespace=SHEET_MATERIAL_AMOUNT*0.2) -//Silver - Aubergine (Get it? AU, silver?!) - First on 'precious' line +//Silver - Agbergine (Get it? AG, silver?!) - First on 'precious' line -/obj/item/seeds/aubergine - name = "au-bergine seed pack" +/obj/item/seeds/agbergine + name = "ag-bergine seed pack" desc = "These seeds grow to produce fruits, with cores of solid silver." icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' - icon_state = "seed-aubergine" + icon_state = "seed-agbergine" species = "ore" - plantname = "aubergine" - product = /obj/item/food/grown/shell/aubergine - mutatelist = list(/obj/item/seeds/agbergine) + plantname = "agbergine" + product = /obj/item/food/grown/shell/agbergine + mutatelist = list(/obj/item/seeds/aubergine) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/silver = 0.1) growthstages = 2 @@ -259,34 +267,36 @@ growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/aubergine - seed = /obj/item/seeds/aubergine - name = "au-bergine" - desc = "Au-bergine, get it AU? It's hilarious and valuable! Just peel it for a core." +/obj/item/food/grown/shell/agbergine + seed = /obj/item/seeds/agbergine + name = "ag-bergine" + desc = "Ag-bergine, get it AG? It's hilarious and valuable! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/auberginecore + trash_type = /obj/item/stack/sheet/mineral/agberginecore foodtypes = FRUIT distill_reagent = /datum/reagent/silver -/obj/item/grown/auberginecore - seed = /obj/item/seeds/aubergine - name = "au-bergine core" - desc = "A dense aubergine core of solid, sterling silver." +/obj/item/stack/sheet/mineral/agberginecore + name = "ag-bergine core" + singular_name = "ag-bergine core" + desc = "A dense agbergine core of solid, sterling silver." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' - icon_state = "aubergine" - custom_materials = list(/datum/material/silver=SHEET_MATERIAL_AMOUNT*0.2) + icon_state = "agbergine" + merge_type = /obj/item/stack/sheet/mineral/agberginecore + max_amount = 10 + mats_per_unit = list(/datum/material/silver=SHEET_MATERIAL_AMOUNT*0.2) -//Gold - Agbergine (Pretty sure you can work this one out) - Second stage of 'precious' line. +//Gold - Au-bergine (Pretty sure you can work this one out) - Second stage of 'precious' line. -/obj/item/seeds/agbergine - name = "ag-bergine seed pack" +/obj/item/seeds/aubergine + name = "au-bergine seed pack" desc = "These seeds grow to golden cored fruits." icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' - icon_state = "seed-agbergine" + icon_state = "seed-aubergine" species = "ore" - plantname = "agbergine" - product = /obj/item/food/grown/shell/agbergine + plantname = "aubergine" + product = /obj/item/food/grown/shell/aubergine mutatelist = list(/obj/item/seeds/dimantis) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/gold = 0.1) @@ -295,23 +305,25 @@ growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/agbergine - seed = /obj/item/seeds/agbergine - name = "agbergine" - desc = "An agbergine; AG? Get it?!... My talents are wasted here! Just peel it for a core." +/obj/item/food/grown/shell/aubergine + seed = /obj/item/seeds/aubergine + name = "aubergine" + desc = "An aubergine; AU? Get it?!... My talents are wasted here! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/agberginecore + trash_type = /obj/item/stack/sheet/mineral/auberginecore foodtypes = FRUIT distill_reagent = /datum/reagent/gold -/obj/item/grown/agberginecore - seed = /obj/item/seeds/agbergine - name = "ag-bergine core" - desc = "A very dense ag-bergine core, solid 24 karat goodness." +/obj/item/stack/sheet/mineral/auberginecore + name = "au-bergine core" + singular_name = "au-bergine core" + desc = "A very dense au-bergine core, solid 24 karat goodness." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' - icon_state = "agbergine" - custom_materials = list(/datum/material/gold=SHEET_MATERIAL_AMOUNT*0.2) + icon_state = "aubergine" + merge_type = /obj/item/stack/sheet/mineral/auberginecore + max_amount = 10 + mats_per_unit = list(/datum/material/gold=SHEET_MATERIAL_AMOUNT*0.2) //Dimantis - ending of 'precious' line. @@ -337,17 +349,19 @@ desc = "A fleshy fruid with a diamond core, Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/dimantiscore + trash_type = /obj/item/stack/sheet/mineral/dimantiscore foodtypes = FRUIT distill_reagent = /datum/reagent/carbon -/obj/item/grown/dimantiscore - seed = /obj/item/seeds/dimantis +/obj/item/stack/sheet/mineral/dimantiscore name = "dimantis core" + singular_name = "dimantis core" desc = "A very dense dimantis core, the way to a woman's heart, it could probably get through her ribcage..." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "dimantis" - custom_materials = list(/datum/material/diamond=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/dimantiscore + max_amount = 10 + mats_per_unit = list(/datum/material/diamond=SHEET_MATERIAL_AMOUNT*0.2) //Iron - Ferrotubers - First on 'metal' line @@ -373,17 +387,19 @@ desc = "Ferrotubers, fleshy shells with iron fillings! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/ferrotubercore + trash_type = /obj/item/stack/sheet/mineral/ferrotubercore foodtypes = FRUIT distill_reagent = /datum/reagent/iron -/obj/item/grown/ferrotubercore - seed = /obj/item/seeds/ferrotuber +/obj/item/stack/sheet/mineral/ferrotubercore name = "ferrotuber core" + singular_name = "ferrotuber core" desc = "A dense ferrotuber core of solid iron, slightly magnetic." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "ferrotuber" - custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/ferrotubercore + max_amount = 10 + mats_per_unit = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*0.2) //Titanium - titanituber - Second stage of 'metal' line. @@ -408,16 +424,18 @@ desc = "soft fruits with incredibly sturdy cores, watch your teeth! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/titanitubercore + trash_type = /obj/item/stack/sheet/mineral/titanitubercore foodtypes = FRUIT -/obj/item/grown/titanitubercore - seed = /obj/item/seeds/titanituber +/obj/item/stack/sheet/mineral/titanitubercore name = "titanituber core" + singular_name = "titanituber core" desc = "A very dense titanituber core, let's hope you didn't bite it!" icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "titanituber" - custom_materials = list(/datum/material/titanium=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/titanitubercore + max_amount = 10 + mats_per_unit = list(/datum/material/titanium=SHEET_MATERIAL_AMOUNT*0.2) //Adamantine - First on 'misc' line @@ -442,16 +460,18 @@ desc = "Adam's apples, The garden Eden's bounty! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/adamapplecore + trash_type = /obj/item/stack/sheet/mineral/adamapplecore foodtypes = FRUIT -/obj/item/grown/adamapplecore - seed = /obj/item/seeds/adamapple +/obj/item/stack/sheet/mineral/adamapplecore name = "adam's apple core" + singular_name = "adam's apple core" desc = "A dense adam's apple core of solid adamantine." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "adamapple" - custom_materials = list(/datum/material/adamantine=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/adamapplecore + max_amount = 10 + mats_per_unit = list(/datum/material/adamantine=SHEET_MATERIAL_AMOUNT*0.2) //Runite - Second stage of 'misc' line. @@ -476,16 +496,18 @@ desc = "A fruit, usually grown in wild places where men would kill each other for gain." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/runescoopercore + trash_type = /obj/item/stack/sheet/mineral/runescoopercore foodtypes = FRUIT -/obj/item/grown/runescoopercore - seed = /obj/item/seeds/runescooper - name = "ag-bergine core" +/obj/item/stack/sheet/mineral/runescoopercore + name = "runescooper core" + singular_name = "runescooper core" desc = "A very dense runite core, a few more of these and you might be able to make a scimitar to defeat your foes..." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "runescooper" - custom_materials = list(/datum/material/runite=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/runescoopercore + max_amount = 10 + mats_per_unit = list(/datum/material/runite=SHEET_MATERIAL_AMOUNT*0.2) //bananiumberry - ending of 'misc' line. @@ -511,14 +533,16 @@ desc = "holy honkmother... This fruit got a core of bananium, Just peel it!" icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/bananiumberrycore + trash_type = /obj/item/stack/sheet/mineral/bananiumberrycore foodtypes = FRUIT distill_reagent = /datum/reagent/consumable/nutriment/soup/clown_tears -/obj/item/grown/bananiumberrycore - seed = /obj/item/seeds/bananiumberry +/obj/item/stack/sheet/mineral/bananiumberrycore name = "bananiumberry core" + singular_name = "bananiumberry core" desc = "A very dense bananium core, the way to a clown's heart, it could probably get through their ribcage..." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "bananiumberry" - custom_materials = list(/datum/material/bananium=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/bananiumberrycore + max_amount = 10 + mats_per_unit = list(/datum/material/bananium=SHEET_MATERIAL_AMOUNT*0.2) diff --git a/modular_zubbers/code/modules/hydroponics/icons/harvest.dmi b/modular_zubbers/code/modules/hydroponics/icons/harvest.dmi index 9effeac5a383823b6e805e9b87467ee525eb970a..695cf60ce799e882f4879eed7f47ea6fd6987d99 100644 GIT binary patch literal 7071 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 literal 3939 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 S9X$Lsvl;1|!K?IcMg0$JJg`du