diff --git a/code/datums/supplypacks/hydroponics.dm b/code/datums/supplypacks/hydroponics.dm index 67de54be202..bb368c5898b 100644 --- a/code/datums/supplypacks/hydroponics.dm +++ b/code/datums/supplypacks/hydroponics.dm @@ -58,15 +58,6 @@ containername = "exotic Seeds crate" access = access_xenobiology -/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) - containername = "beekeeping crate" - access = access_hydroponics - /decl/hierarchy/supply_pack/hydroponics/hydrotray name = "Equipment - Hydroponics tray" contains = list(/obj/machinery/portable_atmospherics/hydroponics) diff --git a/code/datums/trading/traders/ai.dm b/code/datums/trading/traders/ai.dm index 2f77f6b2063..51d038d968b 100644 --- a/code/datums/trading/traders/ai.dm +++ b/code/datums/trading/traders/ai.dm @@ -104,11 +104,7 @@ They sell generic supplies and ask for generic supplies. /obj/structure/ore_box = TRADER_THIS_TYPE, /obj/structure/coatrack = TRADER_THIS_TYPE, /obj/structure/bookcase = TRADER_THIS_TYPE, - /obj/item/bee_pack = TRADER_THIS_TYPE, - /obj/item/bee_smoker = TRADER_THIS_TYPE, - /obj/item/beehive_assembly = TRADER_THIS_TYPE, /obj/item/glass_jar = TRADER_THIS_TYPE, - /obj/item/honey_frame = TRADER_THIS_TYPE, /obj/item/training_dummy = TRADER_THIS_TYPE, /obj/item/training_dummy/syndicate = TRADER_THIS_TYPE, /obj/item/training_dummy/alien = TRADER_THIS_TYPE, diff --git a/code/game/objects/items/circuitboards/machinery/household.dm b/code/game/objects/items/circuitboards/machinery/household.dm index 8878ee43271..1e2b70aba16 100644 --- a/code/game/objects/items/circuitboards/machinery/household.dm +++ b/code/game/objects/items/circuitboards/machinery/household.dm @@ -46,20 +46,6 @@ /obj/item/stock_parts/circuitboard/cooker/get_buildable_types() return subtypesof(/obj/machinery/cooker) -/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/stock_parts/circuitboard/honey/seed - name = "circuitboard (seed extractor)" - build_path = /obj/machinery/seed_extractor - board_type = "machine" - /obj/item/stock_parts/circuitboard/seed_storage name = "circuitboard (seed storage)" build_path = /obj/machinery/seed_storage diff --git a/code/modules/crafting/stack_recipes/recipes_planks.dm b/code/modules/crafting/stack_recipes/recipes_planks.dm index 797c346a9dd..e1e762675cf 100644 --- a/code/modules/crafting/stack_recipes/recipes_planks.dm +++ b/code/modules/crafting/stack_recipes/recipes_planks.dm @@ -10,13 +10,6 @@ difficulty = MAT_VALUE_VERY_HARD_DIY category = "weapons" -/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 - /decl/stack_recipe/planks/zipgunframe result_type = /obj/item/zipgunframe difficulty = MAT_VALUE_VERY_HARD_DIY diff --git a/code/modules/fabrication/designs/imprinter/designs_misc_circuits.dm b/code/modules/fabrication/designs/imprinter/designs_misc_circuits.dm index 756507124eb..3e5b152aeee 100644 --- a/code/modules/fabrication/designs/imprinter/designs_misc_circuits.dm +++ b/code/modules/fabrication/designs/imprinter/designs_misc_circuits.dm @@ -344,11 +344,8 @@ /datum/fabricator_recipe/imprinter/circuit/cooker path = /obj/item/stock_parts/circuitboard/cooker -/datum/fabricator_recipe/imprinter/circuit/honey_extractor - path = /obj/item/stock_parts/circuitboard/honey - /datum/fabricator_recipe/imprinter/circuit/seed_extractor - path = /obj/item/stock_parts/circuitboard/honey/seed + path = /obj/item/stock_parts/circuitboard/seed /datum/fabricator_recipe/imprinter/circuit/vending path = /obj/item/stock_parts/circuitboard/vending diff --git a/maps/exodus/exodus.dm b/maps/exodus/exodus.dm index 081ad6f823b..47e23abbfe0 100644 --- a/maps/exodus/exodus.dm +++ b/maps/exodus/exodus.dm @@ -3,6 +3,7 @@ #include "../../mods/content/mundane.dm" #include "../../mods/content/scaling_descriptors.dm" + #include "../../mods/content/beekeeping/_beekeeping.dme" #include "../../mods/content/bigpharma/_bigpharma.dme" #include "../../mods/content/corporate/_corporate.dme" #include "../../mods/content/government/_government.dme" diff --git a/maps/ministation/ministation.dm b/maps/ministation/ministation.dm index 4a4d0277102..4b103d995e4 100644 --- a/maps/ministation/ministation.dm +++ b/maps/ministation/ministation.dm @@ -43,6 +43,7 @@ Twice... #include "../../mods/mobs/dionaea/_dionaea.dme" #include "../../mods/mobs/borers/_borers.dme" + #include "../../mods/content/beekeeping/_beekeeping.dme" #include "../../mods/content/tabloids/_tabloids.dme" #include "../../mods/species/ascent/_ascent.dme" #include "../../mods/species/tajaran/_tajaran.dme" diff --git a/maps/tradeship/tradeship.dm b/maps/tradeship/tradeship.dm index e829a329918..5a866a9c8b8 100644 --- a/maps/tradeship/tradeship.dm +++ b/maps/tradeship/tradeship.dm @@ -11,6 +11,7 @@ #include "../../mods/content/government/away_sites/icarus/icarus.dm" #include "../../mods/content/corporate/away_sites/lar_maria/lar_maria.dm" + #include "../../mods/content/beekeeping/_beekeeping.dme" #include "../../mods/content/mundane.dm" #include "../../mods/content/scaling_descriptors.dm" diff --git a/mods/content/beekeeping/_beekeeping.dm b/mods/content/beekeeping/_beekeeping.dm new file mode 100644 index 00000000000..e9af8c7b24c --- /dev/null +++ b/mods/content/beekeeping/_beekeeping.dm @@ -0,0 +1,3 @@ +/decl/modpack/beekeeping + name = "Beekeeping Content" + \ No newline at end of file diff --git a/mods/content/beekeeping/_beekeeping.dme b/mods/content/beekeeping/_beekeeping.dme new file mode 100644 index 00000000000..3c5ab7163b3 --- /dev/null +++ b/mods/content/beekeeping/_beekeeping.dme @@ -0,0 +1,12 @@ +#ifndef MODPACK_INSECTS +#define MODPACK_INSECTS +// BEGIN_INCLUDE +#include "_beekeeping.dm" +#include "centrifuge.dm" +#include "closets.dm" +#include "items.dm" +#include "recipes.dm" +#include "trading.dm" +#include "hives/_hive.dm" +// END_INCLUDE +#endif diff --git a/icons/obj/apiary_bees_etc.dmi b/mods/content/beekeeping/apiary_bees_etc.dmi similarity index 100% rename from icons/obj/apiary_bees_etc.dmi rename to mods/content/beekeeping/apiary_bees_etc.dmi diff --git a/mods/content/beekeeping/centrifuge.dm b/mods/content/beekeeping/centrifuge.dm new file mode 100644 index 00000000000..39e837d6d7f --- /dev/null +++ b/mods/content/beekeeping/centrifuge.dm @@ -0,0 +1,54 @@ + +/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 new file mode 100644 index 00000000000..224ff0561eb --- /dev/null +++ b/mods/content/beekeeping/closets.dm @@ -0,0 +1,15 @@ +/obj/structure/closet/crate/hydroponics/beekeeping + name = "beekeeping crate" + desc = "All you need to set up your own beehive." + +/obj/structure/closet/crate/hydroponics/beekeeping/Initialize() + . = ..() + 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/bee_pack(src) + new /obj/item/crowbar(src) diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/mods/content/beekeeping/hives/_hive.dm similarity index 57% rename from code/modules/hydroponics/beekeeping/beehive.dm rename to mods/content/beekeeping/hives/_hive.dm index e2c2d1bc219..5fe7f93c8d4 100644 --- a/code/modules/hydroponics/beekeeping/beehive.dm +++ b/mods/content/beekeeping/hives/_hive.dm @@ -1,6 +1,6 @@ /obj/machinery/beehive name = "apiary" - icon = 'icons/obj/beekeeping.dmi' + icon = 'mods/content/beekeeping/icons/beekeeping.dmi' icon_state = "beehive-0" desc = "A wooden box designed specifically to house our buzzling buddies. Far more efficient than traditional hives. Just insert a frame and a queen, close it up, and you're good to go!" density = TRUE @@ -164,140 +164,3 @@ H.plant_health += 0.05 * coef ++trays honeycombs = min(honeycombs + 0.1 * coef * min(trays, 5), frames * 100) - -/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 TRUE - 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 TRUE - 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" - return TRUE - else if(istype(I, /obj/item/chems/glass)) - if(!honey) - to_chat(user, "There is no honey in \the [src].") - return TRUE - 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 TRUE - return ..() // smack it, interact with components, etc. - -/obj/item/bee_smoker - name = "bee smoker" - desc = "A device used to calm down bees before harvesting honey." - icon = 'icons/obj/items/weapon/batterer.dmi' - icon_state = ICON_STATE_WORLD - 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 = 'icons/obj/beekeeping.dmi' - icon_state = "honeyframe" - w_class = ITEM_SIZE_SMALL - material = /decl/material/solid/organic/wood/oak - 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/oak - -/obj/item/honey_frame/filled/Initialize() - . = ..() - overlays += "honeycomb" - -/obj/item/beehive_assembly - name = "beehive assembly" - desc = "Contains everything you need to build a beehive." - icon = 'icons/obj/apiary_bees_etc.dmi' - icon_state = "apiary" - material = /decl/material/solid/organic/wood/oak - -/obj/item/beehive_assembly/attack_self(var/mob/user) - to_chat(user, "You start assembling \the [src]...") - if(do_after(user, 30, src)) - user.visible_message("\The [user] constructs a beehive.", "You construct a beehive.") - new /obj/machinery/beehive(get_turf(user)) - 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!" - icon = 'icons/obj/beekeeping.dmi' - icon_state = "beepack" - material = /decl/material/solid/organic/plastic - var/full = 1 - -/obj/item/bee_pack/Initialize() - . = ..() - overlays += "beepack-full" - -/obj/item/bee_pack/proc/empty() - full = 0 - name = "empty bee pack" - desc = "A stasis pack for moving bees. It's empty." - overlays.Cut() - overlays += "beepack-empty" - -/obj/item/bee_pack/proc/fill() - full = initial(full) - SetName(initial(name)) - desc = initial(desc) - overlays.Cut() - overlays += "beepack-full" - -/obj/structure/closet/crate/hydroponics/beekeeping - name = "beekeeping crate" - desc = "All you need to set up your own beehive." - -/obj/structure/closet/crate/hydroponics/beekeeping/Initialize() - . = ..() - 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/bee_pack(src) - new /obj/item/crowbar(src) diff --git a/icons/obj/beekeeping.dmi b/mods/content/beekeeping/icons/beekeeping.dmi similarity index 100% rename from icons/obj/beekeeping.dmi rename to mods/content/beekeeping/icons/beekeeping.dmi diff --git a/mods/content/beekeeping/icons/smoker.dmi b/mods/content/beekeeping/icons/smoker.dmi new file mode 100644 index 00000000000..5109ca468e5 Binary files /dev/null and b/mods/content/beekeeping/icons/smoker.dmi differ diff --git a/mods/content/beekeeping/items.dm b/mods/content/beekeeping/items.dm new file mode 100644 index 00000000000..d63abadaea0 --- /dev/null +++ b/mods/content/beekeeping/items.dm @@ -0,0 +1,85 @@ +/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_state = "apiary" + material = /decl/material/solid/organic/wood + +/obj/item/beehive_assembly/attack_self(var/mob/user) + to_chat(user, "You start assembling \the [src]...") + if(do_after(user, 30, src)) + user.visible_message("\The [user] constructs a beehive.", "You construct a beehive.") + 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/stock_parts/circuitboard/seed + name = "circuitboard (seed extractor)" + build_path = /obj/machinery/seed_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." + icon = 'mods/content/beekeeping/icons/smoker.dmi' + icon_state = ICON_STATE_WORLD + 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" + +/obj/item/bee_pack + name = "bee pack" + desc = "Contains a queen bee and some worker bees. Everything you'll need to start a hive!" + icon = 'mods/content/beekeeping/icons/beekeeping.dmi' + icon_state = "beepack" + material = /decl/material/solid/organic/plastic + var/full = 1 + +/obj/item/bee_pack/Initialize() + . = ..() + overlays += "beepack-full" + +/obj/item/bee_pack/proc/empty() + full = 0 + name = "empty bee pack" + desc = "A stasis pack for moving bees. It's empty." + overlays.Cut() + overlays += "beepack-empty" + +/obj/item/bee_pack/proc/fill() + full = initial(full) + SetName(initial(name)) + desc = initial(desc) + overlays.Cut() + overlays += "beepack-full" diff --git a/mods/content/beekeeping/recipes.dm b/mods/content/beekeeping/recipes.dm new file mode 100644 index 00000000000..03089d932ab --- /dev/null +++ b/mods/content/beekeeping/recipes.dm @@ -0,0 +1,10 @@ + +/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 diff --git a/mods/content/beekeeping/trading.dm b/mods/content/beekeeping/trading.dm new file mode 100644 index 00000000000..1a119ddc99b --- /dev/null +++ b/mods/content/beekeeping/trading.dm @@ -0,0 +1,15 @@ +/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) + ..() + +/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) + containername = "beekeeping crate" + access = access_hydroponics diff --git a/nebula.dme b/nebula.dme index 5519d2e270c..1b8408ccc2b 100644 --- a/nebula.dme +++ b/nebula.dme @@ -2588,7 +2588,6 @@ #include "code\modules\hydroponics\seed_mobs.dm" #include "code\modules\hydroponics\seed_packets.dm" #include "code\modules\hydroponics\seed_storage.dm" -#include "code\modules\hydroponics\beekeeping\beehive.dm" #include "code\modules\hydroponics\plant_types\seeds_herbs.dm" #include "code\modules\hydroponics\plant_types\seeds_misc.dm" #include "code\modules\hydroponics\spreading\spreading.dm"