From 85cfd66cdb6da374f559b70b7d798c455f6d7970 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Tue, 11 Feb 2025 17:09:32 +1100 Subject: [PATCH] Reworking hive frames. --- maps/ministation/ministation-1.dmm | 6 +- mods/content/beekeeping/_beekeeping.dm | 12 +--- mods/content/beekeeping/_beekeeping.dme | 2 +- mods/content/beekeeping/centrifuge.dm | 53 --------------- mods/content/beekeeping/closets.dm | 10 +-- mods/content/beekeeping/hive_frame.dm | 62 ++++++++++++++++++ mods/content/beekeeping/hives/_hive.dm | 8 +-- .../{ => icons}/apiary_bees_etc.dmi | Bin mods/content/beekeeping/icons/frame.dmi | Bin 0 -> 1311 bytes mods/content/beekeeping/items.dm | 40 +---------- mods/content/beekeeping/recipes.dm | 6 +- mods/content/beekeeping/trading.dm | 18 ++--- 12 files changed, 88 insertions(+), 129 deletions(-) delete mode 100644 mods/content/beekeeping/centrifuge.dm create mode 100644 mods/content/beekeeping/hive_frame.dm rename mods/content/beekeeping/{ => icons}/apiary_bees_etc.dmi (100%) create mode 100644 mods/content/beekeeping/icons/frame.dmi diff --git a/maps/ministation/ministation-1.dmm b/maps/ministation/ministation-1.dmm index 9ab4635ba0c4..34871f8e955d 100644 --- a/maps/ministation/ministation-1.dmm +++ b/maps/ministation/ministation-1.dmm @@ -5716,9 +5716,9 @@ /obj/item/tool/hoe/mini, /obj/item/tool/spade, /obj/item/tool/spade, -/obj/item/honey_frame, -/obj/item/honey_frame, -/obj/item/honey_frame, +/obj/item/hive_frame/crafted, +/obj/item/hive_frame/crafted, +/obj/item/hive_frame/crafted, /turf/floor/tiled, /area/ministation/hydro) "yg" = ( diff --git a/mods/content/beekeeping/_beekeeping.dm b/mods/content/beekeeping/_beekeeping.dm index d026d7d1f576..d3b58be746d6 100644 --- a/mods/content/beekeeping/_beekeeping.dm +++ b/mods/content/beekeeping/_beekeeping.dm @@ -3,15 +3,5 @@ /datum/storage/hopper/industrial/centrifuge/New() ..() - can_hold |= /obj/item/honey_frame + can_hold |= /obj/item/hive_frame -// Terrible, will be replaced in beewrite. -/datum/storage/hopper/industrial/centrifuge/should_ingest(mob/user, obj/item/thing) - if(istype(thing, /obj/item/honey_frame)) - var/obj/item/honey_frame/frame = thing - if(frame.honey > 0) - return TRUE - if(user) - to_chat(user, SPAN_WARNING("\The [thing] is empty.")) - return FALSE - return ..() diff --git a/mods/content/beekeeping/_beekeeping.dme b/mods/content/beekeeping/_beekeeping.dme index 2d950fe7a392..75778704f368 100644 --- a/mods/content/beekeeping/_beekeeping.dme +++ b/mods/content/beekeeping/_beekeeping.dme @@ -2,8 +2,8 @@ #define MODPACK_BEEKEEPING // BEGIN_INCLUDE #include "_beekeeping.dm" -#include "centrifuge.dm" #include "closets.dm" +#include "hive_frame.dm" #include "items.dm" #include "recipes.dm" #include "trading.dm" diff --git a/mods/content/beekeeping/centrifuge.dm b/mods/content/beekeeping/centrifuge.dm deleted file mode 100644 index 9b04168d744a..000000000000 --- a/mods/content/beekeeping/centrifuge.dm +++ /dev/null @@ -1,53 +0,0 @@ -/obj/machinery/honey_extractor - name = "honey extractor" - desc = "A machine used to extract honey and wax from a beehive frame." - icon = 'icons/obj/virology.dmi' - icon_state = "centrifuge" - anchored = TRUE - density = TRUE - construct_state = /decl/machine_construction/default/panel_closed - uncreated_component_parts = null - stat_immune = 0 - - var/processing = 0 - var/honey = 0 - -/obj/machinery/honey_extractor/components_are_accessible(path) - return !processing && ..() - -/obj/machinery/honey_extractor/cannot_transition_to(state_path, mob/user) - if(processing) - return SPAN_NOTICE("You must wait for \the [src] to finish first!") - return ..() - -/obj/machinery/honey_extractor/attackby(var/obj/item/I, var/mob/user) - if(processing) - to_chat(user, "\The [src] is currently spinning, wait until it's finished.") - return - if((. = component_attackby(I, user))) - return - if(istype(I, /obj/item/honey_frame)) - var/obj/item/honey_frame/H = I - if(!H.honey) - to_chat(user, "\The [H] is empty, put it into a beehive.") - return - user.visible_message("\The [user] loads \the [H] into \the [src] and turns it on.", "You load \the [H] into \the [src] and turn it on.") - processing = H.honey - icon_state = "centrifuge_moving" - qdel(H) - spawn(50) - new /obj/item/honey_frame(loc) - new /obj/item/stack/material/bar/wax(loc, 1) - honey += processing - processing = 0 - icon_state = "centrifuge" - else if(istype(I, /obj/item/chems/glass)) - if(!honey) - to_chat(user, "There is no honey in \the [src].") - return - var/obj/item/chems/glass/G = I - var/transferred = min(G.reagents.maximum_volume - G.reagents.total_volume, honey) - G.add_to_reagents(/decl/material/liquid/nutriment/honey, transferred) - honey -= transferred - user.visible_message("\The [user] collects honey from \the [src] into \the [G].", "You collect [transferred] units of honey from \the [src] into \the [G].") - return 1 diff --git a/mods/content/beekeeping/closets.dm b/mods/content/beekeeping/closets.dm index 224ff0561eb8..c39e70dbb457 100644 --- a/mods/content/beekeeping/closets.dm +++ b/mods/content/beekeeping/closets.dm @@ -6,10 +6,10 @@ . = ..() new /obj/item/beehive_assembly(src) new /obj/item/bee_smoker(src) - new /obj/item/honey_frame(src) - new /obj/item/honey_frame(src) - new /obj/item/honey_frame(src) - new /obj/item/honey_frame(src) - new /obj/item/honey_frame(src) + new /obj/item/hive_frame/crafted(src) + new /obj/item/hive_frame/crafted(src) + new /obj/item/hive_frame/crafted(src) + new /obj/item/hive_frame/crafted(src) + new /obj/item/hive_frame/crafted(src) new /obj/item/bee_pack(src) new /obj/item/crowbar(src) diff --git a/mods/content/beekeeping/hive_frame.dm b/mods/content/beekeeping/hive_frame.dm new file mode 100644 index 000000000000..787210811ac4 --- /dev/null +++ b/mods/content/beekeeping/hive_frame.dm @@ -0,0 +1,62 @@ +/obj/item/hive_frame + abstract_type = /obj/item/hive_frame + icon_state = ICON_STATE_WORLD + w_class = ITEM_SIZE_SMALL + material_alteration = MAT_FLAG_ALTERATION_ALL + var/destroy_on_centrifuge = FALSE + +/obj/item/hive_frame/Initialize(ml, material_key) + . = ..() + initialize_reagents() + +/obj/item/hive_frame/initialize_reagents(populate = TRUE) + create_reagents(20) + . = ..() + +/obj/item/hive_frame/on_reagent_change() + . = ..() + if(reagents?.total_volume) + SetName("filled [initial(name)] ([reagents.get_primary_reagent_name()])") + else + SetName(initial(name)) + queue_icon_update() + +/obj/item/hive_frame/on_update_icon() + . = ..() + var/mesh_state = "[icon_state]-mesh" + if(check_state_in_icon(mesh_state, icon)) + add_overlay(overlay_image(icon, mesh_state, COLOR_WHITE, RESET_COLOR)) + if(reagents?.total_volume) + var/comb_state = "[icon_state]-comb" + if(check_state_in_icon(comb_state, icon)) + add_overlay(overlay_image(icon, comb_state, reagents.get_color(), RESET_COLOR)) + compile_overlays() + +/obj/item/hive_frame/handle_centrifuge_process(obj/machinery/centrifuge/centrifuge) + if(!(. = ..())) + return + if(reagents.total_volume) + reagents.trans_to_holder(centrifuge.loaded_beaker.reagents, reagents.total_volume) + for(var/obj/item/thing in contents) + thing.dropInto(centrifuge.loc) + if(destroy_on_centrifuge) + for(var/atom/movable/thing in convert_matter_to_lumps()) + thing.dropInto(centrifuge.loc) + +// Crafted frame used in apiaries. +/obj/item/hive_frame/crafted + name = "hive frame" + desc = "A wooden frame for insect hives that the workers will fill with products like honey." + icon = 'mods/content/beekeeping/icons/frame.dmi' + material = /decl/material/solid/organic/wood + material_alteration = MAT_FLAG_ALTERATION_ALL + +// TEMP until beewrite redoes hives. +/obj/item/hive_frame/crafted/filled/Initialize() + . = ..() + new /obj/item/stack/material/bar/wax(src) + update_icon() + +/obj/item/hive_frame/crafted/filled/populate_reagents() + . = ..() + reagents.add_reagent(/decl/material/liquid/nutriment/honey, reagents?.maximum_volume) diff --git a/mods/content/beekeeping/hives/_hive.dm b/mods/content/beekeeping/hives/_hive.dm index edea2885862b..515fe39f8dc0 100644 --- a/mods/content/beekeeping/hives/_hive.dm +++ b/mods/content/beekeeping/hives/_hive.dm @@ -63,15 +63,15 @@ smoked = 30 update_icon() return TRUE - else if(istype(I, /obj/item/honey_frame)) + else if(istype(I, /obj/item/hive_frame/crafted)) if(closed) to_chat(user, "You need to open \the [src] with a crowbar before inserting \the [I].") return TRUE if(frames >= maxFrames) to_chat(user, "There is no place for an another frame.") return TRUE - var/obj/item/honey_frame/H = I - if(H.honey) + var/obj/item/hive_frame/crafted/H = I + if(H.reagents?.total_volume) to_chat(user, "\The [I] is full with beeswax and honey, empty it in the extractor first.") return TRUE ++frames @@ -140,7 +140,7 @@ return user.visible_message("\The [user] starts taking the honeycombs out of \the [src].", "You start taking the honeycombs out of \the [src]...") while(honeycombs >= 100 && do_after(user, 30, src)) - new /obj/item/honey_frame/filled(loc) + new /obj/item/hive_frame/crafted/filled(loc) honeycombs -= 100 --frames update_icon() diff --git a/mods/content/beekeeping/apiary_bees_etc.dmi b/mods/content/beekeeping/icons/apiary_bees_etc.dmi similarity index 100% rename from mods/content/beekeeping/apiary_bees_etc.dmi rename to mods/content/beekeeping/icons/apiary_bees_etc.dmi diff --git a/mods/content/beekeeping/icons/frame.dmi b/mods/content/beekeeping/icons/frame.dmi new file mode 100644 index 0000000000000000000000000000000000000000..136c77b72d6ffd1b1bd1cdb9b96318c6b54b6c05 GIT binary patch literal 1311 zcmV+)1>pLLP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex7wuvIWN;^NFm z%}mcIfpCgT5=&AQY!#Hs^NVs)l(;xkGK-28Y!wW-IMa#}b5kK~R8_jUsl^#YDoxJM zO~R#AS;5uMMZv|_lM4XHeKTkF(4LV100dh}L_t(|ob8%VNF!Gq$GM|Y zp(G6p;z1&F5Zcj$f<1@_K}0Aicr3jwvPVzL_Ts&NZh{06JbE+ks@NcuQUYO28dgm- zf2MIrCTkp%^iT|OQ8VVxK5gc6N#+f_-}m=@zc+brUUWX653NiaX#u3s3?MClG@1dV z1(2rY4WRC7^!xuVH9F8yFo=ckzST9l-+H;z004OT^7~uY@80_H^*7vuZSUUt%ilk4 zKMDrx7TXN&G~g&0yp;?99Q+=5@cO>ChuWV4_f~+~1fOHlmFVtU3cq>%YeSy{ORpB6 z-24X~FaY?^1bcrUe*W#vKPM+AU>F99qTuT43Jk*_7K?#pS;S(o^1WCrhFmTOv)POv ze^@r#`}^vC`0+e1))GG&jeb$B?|Y{}C81CVcDo%H7Z=E8vj9;3j6@;;fOtHP?(S}| zEQ@$NUURaaI=(6coK7chMxedD{mv0cBofGGv!E!dJOYiPnekOu0DxQ0R*rz(Zim5O zD7WeLdL$BwMiAU+`0B+A{Pg;l znt#(8u>-tsLG$6m2LPz6+8$g90`)D4pX&0rlBx#$-)Z?bLYe`j1&~HFfV2S8Xal0-?8MD6eIf7a2_k=fkb z{Bm}7w))BB6F`*#%gf7uS}c|eo6XifFfb6Cn3#wqlS#eRYV8;r8cLf?rt5q@f9>&j z&cfkv=gP{;ACr@lsb-6B1gZ=W1Oc)vTRa|5NS0+wBocw!?Y^3tnulAA zOL@Is%iP>tN)UwRDsK>~PlkA&-xdS`E|&{yYilgWaj8Hc09lqT9LJ>`4u^bm|Aw8N zo$+e@KC2fZE|&{}AYgue{(YfPkf*1oWuwuU^85XkT9SVXJnC$a=lSis+UrT4bOk)> zo#0JkJkM`eCi(I8bAtHkFzE_t`K7RC0BHfF(F`ChfHax`qy>;hGk~-J(zLt*{{mX> Vni&pM#1Q}h002ovPDHLkV1g+&Tdx2B literal 0 HcmV?d00001 diff --git a/mods/content/beekeeping/items.dm b/mods/content/beekeeping/items.dm index 58778d369034..c55a11d7d20f 100644 --- a/mods/content/beekeeping/items.dm +++ b/mods/content/beekeeping/items.dm @@ -1,7 +1,7 @@ /obj/item/beehive_assembly name = "beehive assembly" desc = "Contains everything you need to build a beehive." - icon = 'mods/content/beekeeping/apiary_bees_etc.dmi' + icon = 'mods/content/beekeeping/icons/apiary_bees_etc.dmi' icon_state = "apiary" material = /decl/material/solid/organic/wood @@ -12,15 +12,6 @@ new /obj/machinery/beehive(get_turf(user)) qdel(src) -/obj/item/stock_parts/circuitboard/honey - name = "circuitboard (honey extractor)" - build_path = /obj/machinery/honey_extractor - board_type = "machine" - origin_tech = @'{"biotech":2,"engineering":1}' - req_components = list( - /obj/item/stock_parts/manipulator = 2, - /obj/item/stock_parts/matter_bin = 2) - /obj/item/bee_smoker name = "bee smoker" desc = "A device used to calm down bees before harvesting honey." @@ -29,35 +20,6 @@ w_class = ITEM_SIZE_SMALL material = /decl/material/solid/metal/steel -/obj/item/honey_frame - name = "beehive frame" - desc = "A frame for the beehive that the bees will fill with honeycombs." - icon = 'mods/content/beekeeping/icons/beekeeping.dmi' - icon_state = "honeyframe" - w_class = ITEM_SIZE_SMALL - material = /decl/material/solid/organic/wood - var/honey = 0 - -/obj/item/honey_frame/filled - name = "filled beehive frame" - desc = "A frame for the beehive that the bees have filled with honeycombs." - honey = 20 - material = /decl/material/solid/organic/wood - -/obj/item/honey_frame/filled/Initialize() - . = ..() - overlays += "honeycomb" - -// This is crap, will be replaced in beewrite PR. -/obj/item/honey_frame/handle_centrifuge_process(obj/machinery/centrifuge/centrifuge) - if(!(. = ..()) || !honey) - return - centrifuge?.loaded_beaker?.add_to_reagents(/decl/material/liquid/nutriment/honey, honey) - honey = 0 - new /obj/item/honey_frame(centrifuge.loc) - new /obj/item/stack/material/bar(centrifuge.loc, 1, /decl/material/solid/organic/wax) - qdel(src) - /obj/item/bee_pack name = "bee pack" desc = "Contains a queen bee and some worker bees. Everything you'll need to start a hive!" diff --git a/mods/content/beekeeping/recipes.dm b/mods/content/beekeeping/recipes.dm index 03089d932ab9..8494617d3477 100644 --- a/mods/content/beekeeping/recipes.dm +++ b/mods/content/beekeeping/recipes.dm @@ -1,10 +1,6 @@ - /decl/stack_recipe/planks/beehive_assembly result_type = /obj/item/beehive_assembly category = "furniture" /decl/stack_recipe/planks/beehive_frame - result_type = /obj/item/honey_frame - -/datum/fabricator_recipe/imprinter/circuit/honey_extractor - path = /obj/item/stock_parts/circuitboard/honey + result_type = /obj/item/hive_frame/crafted diff --git a/mods/content/beekeeping/trading.dm b/mods/content/beekeeping/trading.dm index 1a119ddc99be..45009265f1bf 100644 --- a/mods/content/beekeeping/trading.dm +++ b/mods/content/beekeeping/trading.dm @@ -1,15 +1,17 @@ /datum/trader/trading_beacon/manufacturing/New() - LAZYSET(possible_trading_items, /obj/item/bee_pack, TRADER_THIS_TYPE) - LAZYSET(possible_trading_items, /obj/item/bee_smoker, TRADER_THIS_TYPE) - LAZYSET(possible_trading_items, /obj/item/beehive_assembly, TRADER_THIS_TYPE) - LAZYSET(possible_trading_items, /obj/item/honey_frame, TRADER_THIS_TYPE) + LAZYSET(possible_trading_items, /obj/item/bee_pack, TRADER_THIS_TYPE) + LAZYSET(possible_trading_items, /obj/item/bee_smoker, TRADER_THIS_TYPE) + LAZYSET(possible_trading_items, /obj/item/beehive_assembly, TRADER_THIS_TYPE) + LAZYSET(possible_trading_items, /obj/item/hive_frame/crafted, TRADER_THIS_TYPE) ..() /decl/hierarchy/supply_pack/hydroponics/bee_keeper name = "Equipment - Beekeeping" - contains = list(/obj/item/beehive_assembly, - /obj/item/bee_smoker, - /obj/item/honey_frame = 5, - /obj/item/bee_pack) + contains = list( + /obj/item/beehive_assembly, + /obj/item/bee_smoker, + /obj/item/hive_frame/crafted = 5, + /obj/item/bee_pack + ) containername = "beekeeping crate" access = access_hydroponics