From b662ee76659e93d651230be4db97e0c750287c6b Mon Sep 17 00:00:00 2001 From: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com> Date: Sun, 16 Jun 2024 23:46:25 +0100 Subject: [PATCH] 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 --- code/__HELPERS/global_lists.dm | 1 - .../primitive_production/code/ceramics.dm | 39 +-- .../primitive_production/code/hydroponics.dm | 313 ++++++++++++++++++ .../primitive_production/icons/prim_fun.dmi | Bin 4209 -> 4014 bytes .../code/storage_structures.dm | 8 +- .../primitive_structures/icons/storage.dmi | Bin 2845 -> 7395 bytes tgstation.dme | 1 + 7 files changed, 325 insertions(+), 37 deletions(-) create mode 100644 modular_skyrat/modules/primitive_production/code/hydroponics.dm diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index baee9ab7b06..32a4460536d 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -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, diff --git a/modular_skyrat/modules/primitive_production/code/ceramics.dm b/modular_skyrat/modules/primitive_production/code/ceramics.dm index b04fdad9fa5..edc5614d0a4 100644 --- a/modular_skyrat/modules/primitive_production/code/ceramics.dm +++ b/modular_skyrat/modules/primitive_production/code/ceramics.dm @@ -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)) diff --git a/modular_skyrat/modules/primitive_production/code/hydroponics.dm b/modular_skyrat/modules/primitive_production/code/hydroponics.dm new file mode 100644 index 00000000000..f4c56206f8a --- /dev/null +++ b/modular_skyrat/modules/primitive_production/code/hydroponics.dm @@ -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: [reagents.total_volume] units.") + . += span_notice("The compost bin can hold: [reagents.maximum_volume] 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 diff --git a/modular_skyrat/modules/primitive_production/icons/prim_fun.dmi b/modular_skyrat/modules/primitive_production/icons/prim_fun.dmi index 1caf775d6829a6d53f572d6da64c1caf6f2d23a3..aac7a73b735f423ded8d9d59258adeb2c4eaa0cb 100644 GIT binary patch literal 4014 zcma)9XHXN)_Dz6*G=YSOh)8I{Lz+kvrAi5c5u`{JFd|hc5^AVY1w)f2QX)!Gx|GmD z6@nm$fRyl~cL*UMB@*D_|9$$;ybtfg?#{h)_U_%8GiT4n86ou8SuU{v004GdOBSVg{sg|Y9DUVAz4#ARZ{@R}ae&f`0Yohy{C13SHa*6Wt!!&@_|s$Z}c zY4@NW74EY3wY^Ho)%`|^*<8U~?Tnn2k?844&56wQ@2q^w;yk#V)7cehReWgQni#4C zmZr7(xHl}}cAeaIW*^x9~gPKsy+SE_Uo zj@R#1#1R_{OXBz9^R%Hyx9aRR&6ej=kpEYqHanLk z--4E(!FZBHe7dAm=%^HTqfuQiDx@>mV{jlxeWm~14f0gbj2N3Ad8%P|pg&+)b)`Qi z=sB_dC6lV=?7YboAFM`ED8KDnQG-&O0{t*O^iR+S(xe4H9WDUB+&U zorA-G@%)@5{R5!nqvmnzmOzw24)yxcBdno?Hu}#IHs*@N@9~)X)itGL5&BOcPwI{% zkKls^vcFT$Yq8;PK3{|NMAo|QT=04QHejt`H{T3q=jZ2FnV0GF_VO1a&#TKrU~q zNG*$D@h@^}2Z*3np8B)(Wh@owB7qI8dACA%7Ym*Nbb7ubf2}LB2>&OSf({N2j&c;3 zJQaGJ;uF?YfJCVNb6d&MnU!FBI7P8GQ&S)|C{J5uIN<)4xb}@{WZ^PCUC%Ma&-wxA z|IW&XE(v?m?giEsikP=gMGf)`Xw;df$*fx}{AAtosY*W9aA*7vFl{M5V)2Xqhp@k> zymNgqD`gS_Vd%O(EJ9>BDw3==d?S9SDe|6$Ho2Q#uS=)fWtKlV79+7vm?>dqZ=4g|LA;S@ZFk5?CKCFhN3K z)nan1h5Cy!qFBKE30*H`Ym*IF)^qH>y_n1~+v0MR*TB;KY+-%(ycgw`2-G5{X2G}yIZj9H1k9Ka|FgUn1HGu5TRjOAag>4791oO&m5l=w5!k{LcW&5 zK;uKMd64*SPVh@M3O%J+ESQR>&@soLnU6#LH~Dv?qq|v;8Lf@;jYi!si}9y#*qn;G zd2ulb0d2Wl0&*ao%Je^foH}sD|Ir7iPf$1aZ{(lqks+B7xUxL{NLSbW@sA<6D|i;g zlLY59SdmN6*Hr{_+CdGE*jX~v+4H*vE|JSvV&rkeKw3s4|6Fi3cz;iy;)985Oh61y!8K6D(x^y;28g^9XqUWm%iIpeKgDqzDum~3~=E5+d?=3%*I9Fz$a@-y8l9jIvovYFN zsuQVwhTzFJiSU#kX=s9dMeBai-GjFZk8nI!qPq&*6BaV+PWm$(UY#&Ymmi7p+FGUJ+C(Oec>K#;k%MmUtq$Xw}n24u*WB1l4M#&#U0 z)7B17O_VB-Yfi4h3ec}@$>H|r3X^Mv{~*IHpU&WeUsRuTa;Qsw=e(1kB51rbL=(C( z+a_d(52C3zs&Q30ckF!q4oMjr2n!uoUvJrtUuh->udFqWh0sz30*QGOj*fs_c{-|w z9!l4&L+FM>inD(iR1RCV>0t^&qPgMl{7IeVPNSN#2t<0PT!ysm4kHs&_Jc0mW}c4L zf}*{@DdG|o550KhO8Jy`pOkK&Qg&qBm(b2&u$=ctt5L+!Ff{b7_Y7A!JhK`Y`x--PZwkC2y};qj0F`d6$ENNLS;+2KVdk;^&uz}$FC4D(h`+-h^YeW*- zf%0?SfKif5JpaYY04VhHC=bCJWP)l$Q+LLzpf~5^!$g5mdA|d#%-K@+uhBU$H~dXu zS6Qd$FyM#ihVy6Inv;~$7To^!8ve=uLM_p~0-VyczwlVh2#4BX{%E5A&$=Gp=IZcc zJDexhZ*Sc!@d{r+9)uj-K5#`fux7uxrR5*xwohiCOE1H~1{ikXuEgDLBt;0)uZ0?+*>0@3sQZ^gd8Q0N8A13A^s0{f;$uUqAh2s-7Ah zc>b5CHFy>MFaAt6`zKm&(DHV2_K*k&fYk7z?jg5`#H3?@T=BP&kvC&AGvwD8%&!(- za?1hZ?(uSTnuU(g7|=vxKN_CtgI#*|Fn)M=I6P8b^Y-n@ly~$iyqp>AhAb5cN$_!w zoIY7;BC_Urp!*Z5hRbJr(;&s_bLFh_-YGMT@*(7CcD~6+!F!{V;y@MRd+C?t?#KMy z;nuM~S#U1Hg>@N^0-0O8xlL6qHR>YJ_f_{y1v9jqvvf(x>$09t?ER+Pgx&OVkS6IrR&EQ0XBOS95~X8k zLt4c|t2Nb$+D-X(u@5XfxLu>ShCK5kxvD|GCQc$6`*}q3zoo4&m1P1QC3Wm2FTod#8MuGrQt)sgv*b>*>T}{t-GTlv+JLK{yj5e7o>)xYzQ@iE>*K&F7e2^=HAN<^$jAfI`jV-vKJKT=6+Uu z>YoV`Nt{`n!)~nsUps%(?$-y26-fusALq1x_$I!Jm72Xw1>kdIJXCMK;aps^8DGsb zTA??+;n0@jH@#M7QPpv4s*Z59=P|Rdt9w5_lGi!2PxfjKyX4W3o`7XMJ9A4Jk*?~; zRrFC=XFKgq%=v&b1LyiOH@iil{jAq%dT0q|&-o%S?nCMF&I3ajc5qpyw8VYQZjN+0 zSShJu{|^@VObB~((o9x`w|)lworoVM`vB0Iyfe_8#v!hDH)$0iuVUVzy^oo)oNVCe zzxTh3Dor$IWMkMR1|)eB7ecHn?WvP1gS!LoZl*RG@`gnw8N<5|RqUl8_~y#`)qbUo zl~fD{lTYtCX6yGoOO~VJyG=9=@lx%B9D4rCvBj2*Bv^*bZgYN zCRRWq(E~y9?9W!3IU0YMzeCxZY!=sCk!hazvkx@ufYsF;CH#v-vbb?WpwL(OsZ&MJ zSVf^s5sNF|n$KcE4R2*~5<<`Su1x;(n9dJKp*Jx%q;b z_q>xyPe;AR^|;9b0Ej-w!rBk+^2piuo{!%>Z!Z7{%uY)#^J*1gj$Zh~z3AmNIN{%I zK4;-l9eiq*9kQqf0^MsJ4QTffx;^csdk`NMzGFsk)I7*qDXrgY&dhd1N>AoG!YgVN zY)3jb^)H^zDSI6LikaUTF_Sw$nyG(Rd~U^G}=IZrNNzIt~|JdeujAs04bswBz{s41^zpMweHYVP@(;6a_ACD4J5PNO9HPB4g z-6G{rKHrN>I^)Ut7WtX@`NK~y7yWcD$brvpp5Xq$($VD~H4BS38`v=I2$kIczn&Wn zn>TiaPr>YKX(LRDJr=xZcW*syo%31}H)X)u))ovH8XKF_UF!Y8Zz@qyQE^*}TPHkRtDsNnY!dy< zx~hv4IM+qn3S@6@&nGPGRboOQ29vBMQ#o)~v_cO)4LtJxi&b+8HBrnX&~(m~^NI?R zag=$xxkRIJ=TXWN%s51jGd7Sv$mH+Q(b3XmE~MT-LzomD9nBsKrw%)RwMZuSRBsOt z13!AwdXH>2xY8{2ZL(aBv4^52=3oyf=IlgzcrX>2;8+)x@b;u@?p&UdxNnk;GK6oS zn4Ay?98+Nk@TyW%hQiO4aEtDAIw;Fb(`G%(QqyKZTMp{2AEzh`x+>-8KomS z%tAQx9la_8HC1a`h2bn~hK7c)9Y{}z*c08-Xfyl$V)D5Z{SV`FO3M`L@*C@X{whty z(vJQiX&ay~FEa9PYf1{4?$5WaR%!Y(ysh1^Y(vOGf!7-nDf%ox{Knv>rC1gE#Ne+h zHZcu^m4=aypa9ePoSo~`SZV4s5BGY zYMtt2>6<$iCkCrh(2oILJ*pXPORxIMRT=*Y32{>EA$4vjxKjI=YbGmKx%rQANZwi7 zFP(0>)EZO!2S;i(N`i|^Lk8DD$vyNbCgN{s{(0ip-H(om0k2+wn%3l+`CS>H|Hr9H zOD0488~!@5o1!3w*I4wwuVuf$ z@d##S=Hb$vt?_`#zJOstEE;xaCiLNI$x&X=eaJ($Jfg$tl|E}q|ACY zXiYqiiH?r$qU1#H9m;hmZ-Wg45DZ3I*jiivfj19sk1E?#H{kn~rn@ymP}!=e*6kQ< zY4k&M$AWlnQg`zM>RP@62|N3S4=>UrQtY?kI)^cd8C-1%syFqXvI{Jwu>rL$In_HZ zKg)XBpE?k7eGuCq3&jc>SIU2D~!IP6NG};sOJp5DFps#U|-S|0Om@K7v*zaf(rD% zeS7t4qDeAt8Ic@ZUY6!Z!i)DE4>&i^%rm*v{rRB;Ox=c8He|8U1<)Z4js>o#Zl?fB z=KLKx5YeW*zyO7gn_!|%E{iQ zf&2Zy!Jg8)Mf>Rj;5$>|aT5hPJ+hGNRsC2X-9Y<45}jb2nO0V@c)Haq(wYCwSM+qV{1}nRB3K?9@(P?nvgYzQO;Fc5ZyR6DP#RW zc9y7>TEU#NJVSS7Tmn(`#M5TaQIU(+7}^0YcHo5;*ar?SeCK(uMh8e1@OZvje9i74 zJjy7U>Hxn|H>04Zo$-;Y3yvK7NvLqs;_+>7z4`HoK=v0(qWD#ueJ=18~)xt2kgk58V8dxy)E^j^z6%uds1w6TGrYP~VLtIsY-g-L6`bD8zH zyw*HL<}S%uAIQ9{z7QrW-(*)8_|Rl1d?xnXTY+WucKFjrQx9&)Im5&kQct4xJi|pv=NayamKp}~V?!x`btl?$W ztyDOOIZ9Qfg{%i=m&DGEPqGb%0?WT5_I_t!YgWG)eQ2Fm5l-~j?i{$uS=)W2u{IJw zL!-_h(XlYMei(rmnXHQA>OQ>d#eBmuqhR~qESN8`O}QxSqnuLS&6}?|Nt$88nD+Lg zQY8^vxxLmhF=c#c(0YHmeY&TwucFg?3^gsv?=L-m;rLkt$rL-q_~*~}3pA^F&mH`& zprSI7RJ_5j@XS3G+i^}uqtNH8a#@Z%Z0Nf*Qt`!r;tRuWR0*5#wPTRrnKQoeCMC|w zq8&(cGSBx|-?) ze4sQs3Db0Gl)Q^VS=my*?jNi6Y0h{@*gQHD3zy;DwBW$edU9r$-;&~1qCe1eX>1dIllBH6)RWpsKA*eu|Bvbafw2T$F>%h==-*6%TYWd89AsB5g!|TC zK8K&pKlSwL%E}7*aCu?ZQ`+flQt$l2LP>Z43N^%ajq71VW}tw8z~BSQ?poDYPu$Hr zY2GmzI^rq%4<0@&a}Ac~8~E$XhT-UnS>;YRc(aTC$$_MakU$s3fh! zEiNDrk2e{9uI9Qi+BZ7Nq`eX&lBAc}+2+0_SW@tdf;J?SmckH-Ih3DYUST14d3kv( zAbErsAPqI;@OO4DocuE2!ef0L{`IIZA&RLwoSemaRa77Cl|eW~ z(Qr1%&+k)dNy-)z{bC8C3}x7#Q$Dp(>%P(=pJmY0`+u)+Cm3u9?Q~-&yG(5DQF}a+Kc=SgoNrZCRFLn5#|vd0N?&LxF1VL9MI;iJ z{B*@4bwn2z6dz}1X3{UNdAs%t!B4nLO((k|2bnDiwCrrFBcPjmd$Hv|- z^EElKZ*Fb|t`m8q^rqev_7HO1EveLA_~4LrS$$VyZT;mXFbxj_@9ERM+64MX7^<4@`=*K>wDNU1$FI3uzX*0+n_S+t<1v-XwZ~)pM*?`0s#395x+0$M z?gfqewQbYTRB|SxBPEnK2A>-1PdYj5YLZ2kufLa z_zzk0;}fEV-B4`*RteeN^Lh^3gu3%)sEnK{!Z6kd?ema@-{%lBp|H zL-ypU+Kj3?srnblo8ND5rw69yyR$kwJD9dXp*os42)Z~D)e{^PG{9ZXs;7;+lK~oe zBv}F#0ok%sdFhjB;q}r<%SC&VSqJ%?<}sPi(c_aHYCVTebVUuQTmLHX5~|xq;E)$& zbw(mvH_b%61^ed8)rI9`Tq_b2Li=gEmPmiTa@fO4$bC}7+UjBE25lyc_WK>IHav|2 zH~ebeC$#xoX55L(^k>LSzzu}eeTHgH{A7Eq#^MnC$}4%ADUf!0Wcj~V8H4M?D3uqLMMZ5Y{Ys^$#>A-l z^U50VO26GWck~{;%|m!b*HWOy#_Z?*+JNKBApiQBZu9%UJ(u@FTG?e>WKW#VayQrw0(M?wg{c3eV)hj^-tp$&}SR7QXC~F{mj6hRMm1d-JbV_Iwz6v=s{d$nQ>)7c6e~zg)9KtM$oT~R!_VD@DCZ;)79qaXLo4**VC;4=pPck z^LXj`_T#Nk{z{g&TR3<&azeGB>$N(;&^>nI(v9sUYr?&V*rD0uTNN!uPV~ce)L#jJ N{&iz`sg6^`{{g`+`yT)R diff --git a/modular_skyrat/modules/primitive_structures/code/storage_structures.dm b/modular_skyrat/modules/primitive_structures/code/storage_structures.dm index afdee5b7301..c9932d6e7a3 100644 --- a/modular_skyrat/modules/primitive_structures/code/storage_structures.dm +++ b/modular_skyrat/modules/primitive_structures/code/storage_structures.dm @@ -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" diff --git a/modular_skyrat/modules/primitive_structures/icons/storage.dmi b/modular_skyrat/modules/primitive_structures/icons/storage.dmi index 413a49e7eaa18394b69bedccb549848fcc11d50b..b588238364315994c9c388b7d6f397919c94ac16 100644 GIT binary patch literal 7395 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 diff --git a/tgstation.dme b/tgstation.dme index 67f2da01f13..51ca4d46f60 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -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"