mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 21:48:39 +01:00
Primitive Farming additions & changes (#28205)
* Update global_lists.dm * Update ceramics.dm * Update storage_structures.dm * Add files via upload * Add files via upload * Update storage_structures.dm * Add files via upload * Update ceramics.dm * Add files via upload * Add files via upload * Update tgstation.dme * Add files via upload
This commit is contained in:
@@ -46,7 +46,6 @@
|
||||
/obj/item/stack/sheet/sinew = GLOB.sinew_recipes,
|
||||
/obj/item/stack/sheet/animalhide/carp = GLOB.carp_recipes,
|
||||
/obj/item/stack/sheet/mineral/sandstone = GLOB.sandstone_recipes,
|
||||
/obj/item/stack/sheet/mineral/clay = GLOB.clay_recipes, // SKYRAT EDIT ADDITION
|
||||
/obj/item/stack/sheet/mineral/sandbags = GLOB.sandbag_recipes,
|
||||
/obj/item/stack/sheet/mineral/diamond = GLOB.diamond_recipes,
|
||||
/obj/item/stack/sheet/mineral/uranium = GLOB.uranium_recipes,
|
||||
|
||||
@@ -1,29 +1,5 @@
|
||||
#define DEFAULT_SPIN (4 SECONDS)
|
||||
|
||||
/*
|
||||
* Clay Bricks
|
||||
*/
|
||||
|
||||
/obj/item/stack/sheet/mineral/clay
|
||||
name = "clay brick"
|
||||
desc = "A heavy clay brick."
|
||||
singular_name = "clay brick"
|
||||
icon = 'modular_skyrat/modules/primitive_production/icons/prim_fun.dmi'
|
||||
icon_state = "sheet-clay"
|
||||
inhand_icon_state = null
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
merge_type = /obj/item/stack/sheet/mineral/clay
|
||||
|
||||
GLOBAL_LIST_INIT(clay_recipes, list ( \
|
||||
new/datum/stack_recipe("clay range", /obj/machinery/primitive_stove, 10, time = 5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_MISC), \
|
||||
new/datum/stack_recipe("clay oven", /obj/machinery/oven/stone, 10, time = 5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_MISC) \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/clay/get_main_recipes()
|
||||
. = ..()
|
||||
. += GLOB.clay_recipes
|
||||
|
||||
/obj/structure/water_source/puddle/attackby(obj/item/O, mob/user, params)
|
||||
if(istype(O, /obj/item/stack/ore/glass))
|
||||
var/obj/item/stack/ore/glass/glass_item = O
|
||||
@@ -151,12 +127,15 @@ GLOBAL_LIST_INIT(clay_recipes, list ( \
|
||||
icon_state = "clay_cup"
|
||||
custom_materials = null
|
||||
|
||||
/obj/item/stack/sheet/mineral/stone/five
|
||||
amount = 5
|
||||
|
||||
/obj/item/ceramic/brick
|
||||
name = "ceramic brick"
|
||||
desc = "A dense block of clay, ready to be fired into a brick!"
|
||||
name = "clay bricks"
|
||||
desc = "A few block of clay, ready to be fired into bricks!"
|
||||
icon = 'modular_skyrat/modules/primitive_production/icons/prim_fun.dmi'
|
||||
icon_state = "sheet-clay"
|
||||
forge_item = /obj/item/stack/sheet/mineral/clay
|
||||
icon_state = "claybricks"
|
||||
forge_item = /obj/item/stack/sheet/mineral/stone/five
|
||||
|
||||
/obj/structure/throwing_wheel
|
||||
name = "throwing wheel"
|
||||
@@ -238,7 +217,7 @@ GLOBAL_LIST_INIT(clay_recipes, list ( \
|
||||
return
|
||||
switch(user_input)
|
||||
if("Create")
|
||||
var/creation_choice = tgui_input_list(user, "What you like to create?", "Creation Choice", list("Cup", "Plate", "Bowl", "Tray", "Brick"))
|
||||
var/creation_choice = tgui_input_list(user, "What you like to create?", "Creation Choice", list("Cup", "Plate", "Bowl", "Tray", "Bricks"))
|
||||
if(!creation_choice)
|
||||
return
|
||||
switch(creation_choice)
|
||||
@@ -250,7 +229,7 @@ GLOBAL_LIST_INIT(clay_recipes, list ( \
|
||||
use_clay(/obj/item/ceramic/bowl, user)
|
||||
if("Tray")
|
||||
use_clay(/obj/item/ceramic/tray, user)
|
||||
if("Brick")
|
||||
if("Bricks")
|
||||
use_clay(/obj/item/ceramic/brick, user)
|
||||
if("Remove")
|
||||
if(!do_after(user, spinning_speed, target = src))
|
||||
|
||||
@@ -0,0 +1,313 @@
|
||||
/obj/machinery/hydroponics/soil/soilbin //Just a big ol' tub of dirt.
|
||||
name = "soilbin"
|
||||
desc = "I've got a box of dirt! and guess what's inside it!... Yes, dirt."
|
||||
icon = 'modular_skyrat/modules/primitive_structures/icons/storage.dmi'
|
||||
icon_state = "soilbin"
|
||||
gender = PLURAL
|
||||
circuit = null
|
||||
density = FALSE
|
||||
use_power = NO_POWER_USE
|
||||
unwrenchable = FALSE
|
||||
self_sustaining_overlay_icon_state = null
|
||||
self_sustaining = 0
|
||||
maxnutri = 30
|
||||
maxwater = 300
|
||||
|
||||
/datum/crafting_recipe/soilbin
|
||||
name = "Primitive soilbin"
|
||||
result = /obj/machinery/hydroponics/soil/soilbin
|
||||
reqs = list(/obj/item/stack/sheet/mineral/wood = 10,
|
||||
/obj/item/stack/sheet/mineral/sandstone = 5)
|
||||
time = 60
|
||||
category = CAT_MISC
|
||||
|
||||
/obj/machinery/hydroponics/soil/soilbin/crowbar_act(mob/living/user, obj/item/tool)
|
||||
user.balloon_alert_to_viewers("disassembling...")
|
||||
if(!tool.use_tool(src, user, 10 SECONDS, volume = 100))
|
||||
return
|
||||
new /obj/item/stack/sheet/mineral/wood(drop_location(), 10)
|
||||
new /obj/item/stack/sheet/mineral/sandstone(drop_location(), 5)
|
||||
deconstruct(TRUE)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
/obj/machinery/hydroponics/soil/soilbin/gaia //Just a big ol' tub of glowning dirt.
|
||||
name = "gaian soilbin"
|
||||
desc = "I've got a box of dirt! and guess what's inside it!... Yes, dirt AND Gaia."
|
||||
icon = 'modular_skyrat/modules/primitive_structures/icons/storage.dmi'
|
||||
icon_state = "soilbin"
|
||||
gender = PLURAL
|
||||
circuit = null
|
||||
density = FALSE //You can step over them like a dirt pile.
|
||||
use_power = NO_POWER_USE
|
||||
unwrenchable = FALSE
|
||||
self_sustaining_overlay_icon_state = "gaia"
|
||||
self_sustaining = 1
|
||||
maxnutri = 50
|
||||
maxwater = 500
|
||||
|
||||
/datum/crafting_recipe/soilbin/gaia
|
||||
name = "Primitive gaian soilbin"
|
||||
result = /obj/machinery/hydroponics/soil/soilbin/gaia
|
||||
reqs = list(/obj/item/stack/sheet/mineral/wood = 10,
|
||||
/obj/item/stack/sheet/mineral/sandstone = 5,
|
||||
/obj/item/food/grown/ambrosia/gaia = 10)
|
||||
time = 60
|
||||
category = CAT_MISC
|
||||
|
||||
/obj/machinery/hydroponics/soil/soilbin/gaia/crowbar_act(mob/living/user, obj/item/tool)
|
||||
user.balloon_alert_to_viewers("disassembling...")
|
||||
if(!tool.use_tool(src, user, 10 SECONDS, volume = 100))
|
||||
return
|
||||
new /obj/item/stack/sheet/mineral/wood(drop_location(), 10)
|
||||
new /obj/item/stack/sheet/mineral/sandstone(drop_location(), 5)
|
||||
deconstruct(TRUE)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
/datum/crafting_recipe/compostbin
|
||||
name = "Primitive compost"
|
||||
result = /obj/machinery/compostbin
|
||||
reqs = list(/obj/item/stack/sheet/mineral/wood = 10)
|
||||
time = 60
|
||||
category = CAT_MISC
|
||||
|
||||
/obj/machinery/compostbin
|
||||
name = "compost bin"
|
||||
desc = "A smelly structure made of wooden slats. Dump produce in, pull usable compost out."
|
||||
icon = 'modular_skyrat/modules/primitive_structures/icons/storage.dmi'
|
||||
icon_state = "compostbin"
|
||||
base_icon_state = "compost"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
use_power = NO_POWER_USE
|
||||
idle_power_usage = 0
|
||||
var/reagent_id = /datum/reagent/plantnutriment/eznutriment/compost
|
||||
var/user_sees_reagents = TRUE
|
||||
var/visible_contents = TRUE
|
||||
var/processing = FALSE
|
||||
var/processed_items_per_cycle = 5
|
||||
var/max_items = 20
|
||||
var/current_item_count = 0
|
||||
|
||||
|
||||
/obj/machinery/compostbin/Initialize(mapload)
|
||||
. = ..()
|
||||
create_reagents(1000, DRAINABLE)
|
||||
|
||||
/obj/machinery/compostbin/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("The compost bin has: <b>[reagents.total_volume] units</b>.")
|
||||
. += span_notice("The compost bin can hold: <b>[reagents.maximum_volume]</b> units.")
|
||||
|
||||
/obj/machinery/compostbin/proc/visible_volume()
|
||||
return reagents.total_volume
|
||||
|
||||
/obj/machinery/compostbin/attacked_by(obj/item/weapon, mob/living/user)
|
||||
if(!machine_stat)
|
||||
if(user.combat_mode)
|
||||
return ..()
|
||||
|
||||
if(istype(weapon, /obj/item/storage/bag))
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
to_chat(user, span_warning("\The [src] is already full of compost."))
|
||||
return TRUE
|
||||
|
||||
if(current_item_count >= max_items)
|
||||
to_chat(user, span_warning("\The [src] is already full of produce! Wait for it to decompose."))
|
||||
return TRUE
|
||||
|
||||
var/obj/item/storage/bag/bag = weapon
|
||||
|
||||
for(var/obj/item/food/item in bag.contents)
|
||||
if(current_item_count >= max_items)
|
||||
break
|
||||
|
||||
if(bag.atom_storage.attempt_remove(item, src))
|
||||
current_item_count++
|
||||
|
||||
if(bag.contents.len == 0)
|
||||
to_chat(user, span_info("You empty \the [bag] into \the [src]."))
|
||||
|
||||
else if (current_item_count >= max_items)
|
||||
to_chat(user, span_info("You fill \the [src] from \the [bag] to its capacity."))
|
||||
|
||||
else
|
||||
to_chat(user, span_info("You fill \the [src] from \the [bag]."))
|
||||
|
||||
start_process()
|
||||
return TRUE //no afterattack
|
||||
|
||||
else if(istype(weapon, /obj/item/food))
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
to_chat(user, span_warning("\The [src] is already full of compost."))
|
||||
return TRUE
|
||||
|
||||
if(current_item_count >= max_items)
|
||||
to_chat(user, span_warning("\The [src] is already full of produce! Wait for it to decompose."))
|
||||
|
||||
else
|
||||
if(user.transferItemToLoc(weapon, src))
|
||||
current_item_count++
|
||||
to_chat(user, span_info("You insert \the [weapon] in \the [src]"))
|
||||
|
||||
start_process()
|
||||
return TRUE //no afterattack
|
||||
|
||||
else
|
||||
to_chat(user, span_warning("You cannot put \the [weapon] in \the [src]!"))
|
||||
|
||||
/obj/machinery/compostbin/proc/start_process()
|
||||
if(machine_stat != NONE)
|
||||
return
|
||||
|
||||
if(!(locate(/obj/item/food) in contents))
|
||||
return
|
||||
|
||||
begin_processing()
|
||||
processing = TRUE
|
||||
update_appearance()
|
||||
|
||||
/obj/machinery/compostbin/process(seconds_per_tick)
|
||||
if(!processing)
|
||||
return
|
||||
|
||||
if(machine_stat != NONE)
|
||||
stop_process()
|
||||
return
|
||||
|
||||
if(!current_item_count)
|
||||
stop_process()
|
||||
return
|
||||
|
||||
for(var/i in 1 to processed_items_per_cycle)
|
||||
var/obj/item/food/food_to_convert = locate(/obj/item/food) in contents
|
||||
|
||||
if(!food_to_convert)
|
||||
break
|
||||
|
||||
if(food_to_convert.flags_1 & HOLOGRAM_1)
|
||||
qdel(food_to_convert)
|
||||
current_item_count = max(current_item_count - 1, 0)
|
||||
continue
|
||||
|
||||
convert_to_compost(food_to_convert)
|
||||
|
||||
if(!current_item_count)
|
||||
stop_process(FALSE)
|
||||
|
||||
update_appearance()
|
||||
|
||||
/obj/machinery/compostbin/proc/stop_process(update_appearance = TRUE)
|
||||
end_processing()
|
||||
processing = FALSE
|
||||
|
||||
if(update_appearance)
|
||||
update_appearance()
|
||||
|
||||
/obj/machinery/compostbin/proc/convert_to_compost(obj/item/food/food_to_convert)
|
||||
var/nutriments = ROUND_UP(food_to_convert.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment, type_check = REAGENT_PARENT_TYPE))
|
||||
qdel(food_to_convert)
|
||||
current_item_count = max(current_item_count - 1, 0)
|
||||
reagents.add_reagent(reagent_id, nutriments)
|
||||
|
||||
|
||||
/obj/machinery/compostbin/update_appearance(updates=ALL)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/compostbin/update_overlays()
|
||||
. = ..()
|
||||
|
||||
var/initial_icon_state = initial(icon_state)
|
||||
var/shown_contents_length = visible_volume()
|
||||
if(visible_contents && shown_contents_length)
|
||||
var/content_level = "[initial_icon_state]-[base_icon_state]"
|
||||
switch(shown_contents_length)
|
||||
if(1 to 349)
|
||||
content_level += "-1"
|
||||
if(350 to 749)
|
||||
content_level += "-2"
|
||||
if(750 to 1000)
|
||||
content_level += "-3"
|
||||
. += mutable_appearance(icon, content_level)
|
||||
|
||||
/obj/machinery/compostbin/welder_act(mob/living/user, obj/item/tool)
|
||||
return NONE
|
||||
|
||||
/obj/machinery/compostbin/welder_act_secondary(mob/living/user, obj/item/tool)
|
||||
return NONE
|
||||
|
||||
/obj/machinery/compostbin/default_deconstruction_screwdriver()
|
||||
return NONE
|
||||
|
||||
/obj/machinery/compostbin/exchange_parts()
|
||||
return
|
||||
|
||||
/obj/machinery/compostbin/crowbar_act(mob/living/user, obj/item/tool)
|
||||
user.balloon_alert_to_viewers("disassembling...")
|
||||
if(!tool.use_tool(src, user, 10 SECONDS, volume = 100))
|
||||
return
|
||||
new /obj/item/stack/sheet/mineral/wood(drop_location(), 10)
|
||||
deconstruct(TRUE)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
/datum/reagent/plantnutriment/eznutriment/compost //Basic compost (E-Z nutrients)
|
||||
name = "Basic compost"
|
||||
description = "Rotting plant matter, stinky."
|
||||
color = "#422813"
|
||||
|
||||
/datum/reagent/plantnutriment/eznutriment/compost/enhanced //Saltpetre and diethymix (Slightly worse than both combined)
|
||||
name = "Fertile compost"
|
||||
description = "Very fertile, rotting plant matter, stinky."
|
||||
color = "#6b963b"
|
||||
|
||||
/datum/reagent/plantnutriment/eznutriment/compost/enhanced/on_hydroponics_apply(obj/machinery/hydroponics/mytray, mob/user)
|
||||
mytray.adjust_plant_health(round(volume * 0.5))
|
||||
mytray.myseed?.adjust_production(-round(volume / 5)-prob(volume % 10))
|
||||
mytray.myseed?.adjust_potency(round(volume))
|
||||
mytray.adjust_pestlevel(-rand(1,2))
|
||||
var/obj/item/seeds/myseed = mytray.myseed
|
||||
if(!isnull(myseed))
|
||||
myseed.adjust_yield(round(volume))
|
||||
myseed.adjust_instability(-round(volume))
|
||||
|
||||
/datum/reagent/plantnutriment/left4zednutriment/compost //Left for Zed
|
||||
name = "Reactive compost"
|
||||
description = "A rancid smelling concoction that'll really change up your plants."
|
||||
color = "#122b29"
|
||||
|
||||
/datum/reagent/plantnutriment/endurogrow/compost //Endurogrow: Lifespan and Endurance up, yield and potency crippled.
|
||||
name = "Hearty compost"
|
||||
description = "A useful compost, while it might leave your plants stronger, it'll jeopardise your fruits."
|
||||
color = "#4f5010"
|
||||
|
||||
/datum/chemical_reaction/compost
|
||||
results = list(/datum/reagent/plantnutriment/eznutriment/compost/enhanced = 2)
|
||||
required_reagents = list(/datum/reagent/plantnutriment/eznutriment/compost = 1, /datum/reagent/medicine/earthsblood = 1)
|
||||
required_temp = 200
|
||||
optimal_temp = 700
|
||||
overheat_temp = 1000
|
||||
optimal_ph_min = 1
|
||||
optimal_ph_max = 14
|
||||
reaction_tags = REACTION_TAG_EASY
|
||||
|
||||
/datum/chemical_reaction/compost/leftforzed
|
||||
results = list(/datum/reagent/plantnutriment/left4zednutriment/compost = 2)
|
||||
required_reagents = list(/datum/reagent/plantnutriment/eznutriment/compost = 1, /datum/reagent/drug/nicotine = 1) //Smoking doesn't cause cancer.
|
||||
|
||||
/datum/chemical_reaction/compost/endurogrow
|
||||
results = list(/datum/reagent/plantnutriment/endurogrow/compost = 2)
|
||||
required_reagents = list(/datum/reagent/plantnutriment/eznutriment/compost = 1, /datum/reagent/medicine/omnizine = 1)
|
||||
|
||||
|
||||
/obj/item/secateurs/wooden
|
||||
name = "primitive secateurs"
|
||||
desc = "Some shoddy looking secateurs, they look sturdy enough to get a graft... or poke someone in both eyes at once!"
|
||||
icon = 'modular_skyrat/modules/primitive_production/icons/prim_fun.dmi'
|
||||
icon_state = "woodensecateurs"
|
||||
|
||||
/datum/crafting_recipe/secateur
|
||||
name = "Primitive secateurs"
|
||||
result = /obj/item/secateurs/wooden
|
||||
reqs = list(/obj/item/stack/sheet/iron = 2,
|
||||
/obj/item/stack/sheet/mineral/wood = 6)
|
||||
time = 160
|
||||
category = CAT_MISC
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.9 KiB |
@@ -22,14 +22,10 @@
|
||||
user.balloon_alert_to_viewers("disassembling...")
|
||||
if(!tool.use_tool(src, user, 2 SECONDS, volume = 100))
|
||||
return
|
||||
new /obj/item/stack/sheet/mineral/clay(drop_location(), 5)
|
||||
new /obj/item/stack/sheet/mineral/wood(drop_location(), 2)
|
||||
deconstruct(TRUE)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
/obj/structure/rack/wooden/atom_deconstruct(disassembled = TRUE)
|
||||
new /obj/item/stack/sheet/mineral/wood(drop_location(), 2)
|
||||
return ..()
|
||||
|
||||
// Barrel but it works like a crate
|
||||
|
||||
/obj/structure/closet/crate/wooden/storage_barrel
|
||||
@@ -106,7 +102,7 @@
|
||||
/obj/machinery/smartfridge/wooden/ration_shelf
|
||||
name = "Ration shelf"
|
||||
desc = "A wooden shelf, used to store food... preferably preserved."
|
||||
icon_state = "rationshelf"
|
||||
icon_state = "seedshelf"
|
||||
base_build_path = /obj/machinery/smartfridge/wooden/ration_shelf
|
||||
base_icon_state = "ration"
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 7.2 KiB |
@@ -8140,6 +8140,7 @@
|
||||
#include "modular_skyrat\modules\primitive_production\code\ceramics.dm"
|
||||
#include "modular_skyrat\modules\primitive_production\code\construction.dm"
|
||||
#include "modular_skyrat\modules\primitive_production\code\glassblowing.dm"
|
||||
#include "modular_skyrat\modules\primitive_production\code\hydroponics.dm"
|
||||
#include "modular_skyrat\modules\primitive_production\code\misc.dm"
|
||||
#include "modular_skyrat\modules\primitive_production\code\primitive.dm"
|
||||
#include "modular_skyrat\modules\primitive_production\code\production_skill.dm"
|
||||
|
||||
Reference in New Issue
Block a user