From 054647c38250f9ee7fc711799d11b890bbf5ef1b Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Tue, 18 Dec 2018 13:47:11 +0000 Subject: [PATCH] Refactors `container_type` into `reagents.flags` --- code/__DEFINES/flags.dm | 3 --- code/__DEFINES/reagents.dm | 2 +- code/_globalvars/bitfields.dm | 11 ---------- code/game/atoms.dm | 13 +++++------ code/game/machinery/limbgrower.dm | 3 +-- .../mecha/equipment/tools/medical_tools.dm | 5 ++--- code/game/objects/items/cigs_lighters.dm | 14 +++++------- code/game/objects/items/extinguisher.dm | 3 +-- .../objects/items/implants/implant_chem.dm | 3 +-- code/game/objects/items/tanks/watertank.dm | 5 ++--- code/game/objects/items/tools/weldingtool.dm | 4 ++-- code/game/objects/structures/janicart.dm | 3 +-- code/game/objects/structures/mop_bucket.dm | 5 ++--- .../detectivework/footprints_and_rag.dm | 3 +-- code/modules/food_and_drinks/drinks/drinks.dm | 8 +++---- code/modules/food_and_drinks/food.dm | 4 ++-- .../modules/food_and_drinks/food/condiment.dm | 2 +- .../food_and_drinks/food/customizables.dm | 2 +- .../kitchen_machinery/deep_fryer.dm | 3 +-- .../kitchen_machinery/food_cart.dm | 4 +--- .../kitchen_machinery/icecream_vat.dm | 4 +--- .../kitchen_machinery/microwave.dm | 3 --- .../kitchen_machinery/smartfridge.dm | 3 +-- code/modules/hydroponics/fermenting_barrel.dm | 10 +++++---- code/modules/hydroponics/grown/replicapod.dm | 3 +-- code/modules/hydroponics/plant_genes.dm | 4 ++-- code/modules/paperwork/pen.dm | 5 +---- code/modules/power/cell.dm | 3 +-- .../ammunition/ballistic/shotgun.dm | 18 +++++++-------- .../modules/projectiles/guns/misc/chem_gun.dm | 5 ++--- .../projectile/bullets/dart_syringe.dm | 5 ++--- code/modules/reagents/chemistry/holder.dm | 22 ++++++++----------- code/modules/reagents/chemistry/readme.md | 2 +- code/modules/reagents/reagent_containers.dm | 3 ++- .../reagents/reagent_containers/dropper.dm | 2 +- .../reagents/reagent_containers/glass.dm | 11 ++++------ .../reagents/reagent_containers/hypospray.dm | 10 ++++----- .../reagents/reagent_containers/medspray.dm | 2 +- .../reagents/reagent_containers/spray.dm | 4 ++-- .../reagents/reagent_containers/syringes.dm | 7 ++---- code/modules/reagents/reagent_dispenser.dm | 3 +-- .../modules/research/machinery/_production.dm | 3 +-- .../research/machinery/circuit_imprinter.dm | 1 - .../departmental_circuit_imprinter.dm | 3 +-- .../machinery/departmental_protolathe.dm | 3 +-- .../machinery/departmental_techfab.dm | 3 +-- code/modules/research/machinery/protolathe.dm | 3 +-- code/modules/research/machinery/techfab.dm | 3 +-- .../xenobiology/crossbreeding/__corecross.dm | 13 +++++++---- .../xenobiology/crossbreeding/burning.dm | 3 +-- .../xenobiology/crossbreeding/charged.dm | 3 +-- .../xenobiology/crossbreeding/chilling.dm | 4 ++-- .../xenobiology/crossbreeding/industrial.dm | 3 +-- .../research/xenobiology/xenobiology.dm | 3 +-- 54 files changed, 109 insertions(+), 168 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index dfea2f850a7..8a1671cf9e6 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -60,9 +60,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define FLOATING (1<<3) #define UNSTOPPABLE (1<<4) //When moving, will Bump()/Cross()/Uncross() everything, but won't be stopped. -// Flags for reagents -#define REAGENT_NOREACT (1<<0) - //Fire and Acid stuff, for resistance_flags #define LAVA_PROOF (1<<0) #define FIRE_PROOF (1<<1) //100% immune to fire damage (but not necessarily to lava or heat) diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index f8f59a367ff..030e077a722 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -2,7 +2,6 @@ #define LIQUID 2 #define GAS 3 -// container_type defines #define INJECTABLE (1<<0) // Makes it possible to add reagents through droppers and syringes. #define DRAWABLE (1<<1) // Makes it possible to remove reagents through syringes. @@ -11,6 +10,7 @@ #define TRANSPARENT (1<<4) // Used on containers which you want to be able to see the reagents off. #define AMOUNT_VISIBLE (1<<5) // For non-transparent containers that still have the general amount of reagents in them visible. +#define NO_REACT (1<<6) // Applied to a reagent holder, the contents will not react with each other. // Is an open container for all intents and purposes. #define OPENCONTAINER (REFILLABLE | DRAINABLE | TRANSPARENT) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 7ddb0036282..00756f5bc38 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -113,9 +113,6 @@ GLOBAL_LIST_INIT(bitfields, list( "INDESTRUCTIBLE" = INDESTRUCTIBLE, "FREEZE_PROOF" = FREEZE_PROOF ), - "reagents_holder_flags" = list( - "REAGENT_NOREACT" = REAGENT_NOREACT - ), "flags_1" = list( "NOJAUNT_1" = NOJAUNT_1, "UNUSED_RESERVATION_TURF_1" = UNUSED_RESERVATION_TURF_1, @@ -156,14 +153,6 @@ GLOBAL_LIST_INIT(bitfields, list( "SMOOTH_BORDER" = SMOOTH_BORDER, "SMOOTH_QUEUED" = SMOOTH_QUEUED, ), - "container_type" = list( - "INJECTABLE" = INJECTABLE, - "DRAWABLE" = DRAWABLE, - "REFILLABLE" = REFILLABLE, - "DRAINABLE" = DRAINABLE, - "TRANSPARENT" = TRANSPARENT, - "AMOUNT_VISIBLE" = AMOUNT_VISIBLE, - ), "car_traits" = list( "CAN_KIDNAP" = CAN_KIDNAP, ), diff --git a/code/game/atoms.dm b/code/game/atoms.dm index be61a0a03c9..7073362590e 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -6,7 +6,6 @@ var/flags_1 = NONE var/interaction_flags_atom = NONE - var/container_type = NONE var/datum/reagents/reagents = null //This atom's HUD (med/sec, etc) images. Associative list. @@ -214,16 +213,16 @@ return is_refillable() && is_drainable() /atom/proc/is_injectable(mob/user, allowmobs = TRUE) - return reagents && (container_type & (INJECTABLE | REFILLABLE)) + return reagents && (reagents.flags & (INJECTABLE | REFILLABLE)) /atom/proc/is_drawable(mob/user, allowmobs = TRUE) - return reagents && (container_type & (DRAWABLE | DRAINABLE)) + return reagents && (reagents.flags & (DRAWABLE | DRAINABLE)) /atom/proc/is_refillable() - return reagents && (container_type & REFILLABLE) + return reagents && (reagents.flags & REFILLABLE) /atom/proc/is_drainable() - return reagents && (container_type & DRAINABLE) + return reagents && (reagents.flags & DRAINABLE) /atom/proc/AllowDrop() @@ -272,7 +271,7 @@ to_chat(user, desc) if(reagents) - if(container_type & TRANSPARENT) + if(reagents.flags & TRANSPARENT) to_chat(user, "It contains:") if(reagents.reagent_list.len) if(user.can_see_reagents()) //Show each individual reagent @@ -285,7 +284,7 @@ to_chat(user, "[total_volume] units of various reagents") else to_chat(user, "Nothing.") - else if(container_type & AMOUNT_VISIBLE) + else if(reagents.flags & AMOUNT_VISIBLE) if(reagents.total_volume) to_chat(user, "It has [reagents.total_volume] unit\s left.") else diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index fc3a4379bca..005c7307373 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -10,7 +10,6 @@ icon = 'icons/obj/machines/limbgrower.dmi' icon_state = "limbgrower_idleoff" density = TRUE - container_type = OPENCONTAINER use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 100 @@ -34,7 +33,7 @@ ) /obj/machinery/limbgrower/Initialize() - create_reagents(100) + create_reagents(100, OPENCONTAINER) stored_research = new /datum/techweb/specialized/autounlocking/limbgrower . = ..() diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index c8f71bbbcf6..eee29b5f38f 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -259,8 +259,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Initialize() . = ..() - create_reagents(max_volume) - reagents.set_reacting(FALSE) + create_reagents(max_volume, NO_REACT) syringes = new known_reagents = list("epinephrine"="Epinephrine","charcoal"="Charcoal") processed_reagents = new @@ -276,7 +275,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/critfail() ..() if(reagents) - reagents.set_reacting(TRUE) + DISABLE_BITFIELD(reagents.flags, NO_REACT) /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/can_attach(obj/mecha/medical/M) if(..()) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index f1898ce9bdf..47ec6097cf1 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -102,7 +102,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = "cigoff" throw_speed = 0.5 item_state = "cigoff" - container_type = INJECTABLE w_class = WEIGHT_CLASS_TINY body_parts_covered = null grind_results = list() @@ -125,8 +124,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/Initialize() . = ..() - create_reagents(chem_volume) - reagents.set_reacting(FALSE) // so it doesn't react until you light it + create_reagents(chem_volume, INJECTABLE | NO_REACT) if(list_reagents) reagents.add_reagent_list(list_reagents) if(starts_lit) @@ -186,7 +184,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM qdel(src) return // allowing reagents to react after being lit - reagents.set_reacting(TRUE) + DISABLE_BITFIELD(reagents.flags, NO_REACT) reagents.handle_reactions() icon_state = icon_on item_state = icon_on @@ -729,8 +727,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/vape/Initialize(mapload, param_color) . = ..() - create_reagents(chem_volume) - reagents.set_reacting(FALSE) // so it doesn't react until you light it + create_reagents(chem_volume, NO_REACT) reagents.add_reagent("nicotine", 50) if(!icon_state) if(!param_color) @@ -799,13 +796,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(reagents.total_volume > 0) to_chat(user, "You empty [src] of all reagents.") reagents.clear_reagents() - return /obj/item/clothing/mask/vape/equipped(mob/user, slot) if(slot == SLOT_WEAR_MASK) if(!screw) to_chat(user, "You start puffing on the vape.") - reagents.set_reacting(TRUE) + DISABLE_BITFIELD(reagents.flags, NO_REACT) START_PROCESSING(SSobj, src) else //it will not start if the vape is opened. to_chat(user, "You need to close the cap first!") @@ -813,7 +809,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/vape/dropped(mob/user) var/mob/living/carbon/C = user if(C.get_item_by_slot(SLOT_WEAR_MASK) == src) - reagents.set_reacting(FALSE) + ENABLE_BITFIELD(reagents.flags, NO_REACT) STOP_PROCESSING(SSobj, src) /obj/item/clothing/mask/vape/proc/hand_reagents()//had to rename to avoid duplicate error diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index be1311e09d4..5a2b2c9013d 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -15,7 +15,6 @@ attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed") dog_fashion = /datum/dog_fashion/back resistance_flags = FIRE_PROOF - container_type = AMOUNT_VISIBLE var/max_water = 50 var/last_use = 1 var/chem = "water" @@ -44,7 +43,7 @@ /obj/item/extinguisher/Initialize() . = ..() - create_reagents(max_water) + create_reagents(max_water, AMOUNT_VISIBLE) reagents.add_reagent(chem, max_water) diff --git a/code/game/objects/items/implants/implant_chem.dm b/code/game/objects/items/implants/implant_chem.dm index b9c85c07289..c6c8be1a832 100644 --- a/code/game/objects/items/implants/implant_chem.dm +++ b/code/game/objects/items/implants/implant_chem.dm @@ -2,7 +2,6 @@ name = "chem implant" desc = "Injects things." icon_state = "reagents" - container_type = OPENCONTAINER activated = FALSE /obj/item/implant/chem/get_data() @@ -23,7 +22,7 @@ /obj/item/implant/chem/Initialize() . = ..() - create_reagents(50) + create_reagents(50, OPENCONTAINER) GLOB.tracked_chem_implants += src /obj/item/implant/chem/Destroy() diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index a11cbeb601a..4e975ccb7cb 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -18,7 +18,7 @@ /obj/item/watertank/Initialize() . = ..() - create_reagents(volume) + create_reagents(volume, OPENCONTAINER) noz = make_noz() /obj/item/watertank/ui_action_click(mob/user) @@ -113,7 +113,6 @@ possible_transfer_amounts = list(25,50,100) volume = 500 item_flags = NOBLUDGEON | ABSTRACT // don't put in storage - container_type = OPENCONTAINER slot_flags = 0 var/obj/item/watertank/tank @@ -336,7 +335,7 @@ var/usage_ratio = 5 //5 unit added per 1 removed var/injection_amount = 1 amount_per_transfer_from_this = 5 - container_type = OPENCONTAINER + reagent_flags = OPENCONTAINER spillable = FALSE possible_transfer_amounts = list(5,10,15) diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index a5e02d668b9..f87cfdc29a0 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -266,10 +266,10 @@ status = !status if(status) to_chat(user, "You resecure [src] and close the fuel tank.") - container_type = NONE + DISABLE_BITFIELD(reagents.flags, OPENCONTAINER) else to_chat(user, "[src] can now be attached, modified, and refuelled.") - container_type = OPENCONTAINER + ENABLE_BITFIELD(reagents.flags, OPENCONTAINER) add_fingerprint(user) /obj/item/weldingtool/proc/flamethrower_rods(obj/item/I, mob/user) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 6bd05c02aea..e71097173fd 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -5,7 +5,6 @@ icon_state = "cart" anchored = FALSE density = TRUE - container_type = OPENCONTAINER //copypaste sorry var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite var/obj/item/storage/bag/trash/mybag = null @@ -18,7 +17,7 @@ /obj/structure/janitorialcart/Initialize() . = ..() - create_reagents(100) + create_reagents(100, OPENCONTAINER) /obj/structure/janitorialcart/proc/wet_mop(obj/item/mop, mob/user) if(reagents.total_volume < 1) diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 04d6133e0a4..d5f94a2a566 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -4,13 +4,12 @@ icon = 'icons/obj/janitor.dmi' icon_state = "mopbucket" density = TRUE - container_type = OPENCONTAINER var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite /obj/structure/mopbucket/Initialize() . = ..() - create_reagents(100) + create_reagents(100, OPENCONTAINER) /obj/structure/mopbucket/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/mop)) @@ -27,4 +26,4 @@ /obj/structure/mopbucket/update_icon() cut_overlays() if(reagents.total_volume > 0) - add_overlay("mopbucket_water") \ No newline at end of file + add_overlay("mopbucket_water") diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 10448e8878e..faa1bc10dcc 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -13,7 +13,7 @@ icon = 'icons/obj/toy.dmi' icon_state = "rag" item_flags = NOBLUDGEON - container_type = OPENCONTAINER + reagent_flags = OPENCONTAINER amount_per_transfer_from_this = 5 possible_transfer_amounts = list() volume = 5 @@ -47,4 +47,3 @@ if(do_after(user,30, target = A)) user.visible_message("[user] finishes wiping off [A]!", "You finish wiping off [A].") SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) - return diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 5999606bd5d..33cca7623da 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -8,7 +8,7 @@ icon_state = null lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' - container_type = OPENCONTAINER + reagent_flags = OPENCONTAINER var/gulp_size = 5 //This is now officially broken ... need to think of a nice way to fix it. possible_transfer_amounts = list(5,10,15,20,25,30,50) volume = 50 @@ -148,7 +148,6 @@ possible_transfer_amounts = list() volume = 5 flags_1 = CONDUCT_1 - container_type = OPENCONTAINER spillable = TRUE resistance_flags = FIRE_PROOF isGlass = FALSE @@ -398,7 +397,7 @@ name = "soda can" lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' - container_type = NONE + reagent_flags = NONE spillable = FALSE isGlass = FALSE custom_price = 10 @@ -435,10 +434,9 @@ /obj/item/reagent_containers/food/drinks/soda_cans/proc/open_soda(mob/user) to_chat(user, "You pull back the tab of \the [src] with a satisfying pop.") //Ahhhhhhhh - container_type = OPENCONTAINER + ENABLE_BITFIELD(reagents.flags, OPENCONTAINER) playsound(src, "can_open", 50, 1) spillable = TRUE - return /obj/item/reagent_containers/food/drinks/soda_cans/attack_self(mob/user) if(!is_drainable()) diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm index b2aec58dd89..93b8aa97178 100644 --- a/code/modules/food_and_drinks/food.dm +++ b/code/modules/food_and_drinks/food.dm @@ -4,7 +4,7 @@ /obj/item/reagent_containers/food possible_transfer_amounts = list() volume = 50 //Sets the default container amount for all food items. - container_type = INJECTABLE + reagent_flags = INJECTABLE resistance_flags = FLAMMABLE var/foodtype = NONE var/last_check_time @@ -36,4 +36,4 @@ if(foodtype & H.dna.species.toxic_food) to_chat(H, "You don't feel so good...") H.adjust_disgust(25 + 30 * fraction) - last_check_time = world.time \ No newline at end of file + last_check_time = world.time diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index c2fa04033a4..20a14d66ae3 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -10,7 +10,7 @@ desc = "Just your average condiment container." icon = 'icons/obj/food/containers.dmi' icon_state = "emptycondiment" - container_type = OPENCONTAINER + reagent_flags = OPENCONTAINER possible_transfer_amounts = list(1, 5, 10, 15, 20, 25, 30, 50) volume = 50 //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change(changetype) to change names, descs and sprites. diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index bb026b2dfa8..fafc0cabe93 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -290,7 +290,7 @@ desc = "A simple bowl, used for soups and salads." icon = 'icons/obj/food/soupsalad.dmi' icon_state = "bowl" - container_type = OPENCONTAINER + reagent_flags = OPENCONTAINER materials = list(MAT_GLASS = 500) w_class = WEIGHT_CLASS_NORMAL diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 84c6b0e9a38..67f6e84162c 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -28,7 +28,6 @@ God bless America. density = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 - container_type = OPENCONTAINER layer = BELOW_OBJ_LAYER var/obj/item/reagent_containers/food/snacks/deepfryholder/frying //What's being fried RIGHT NOW? var/cook_time = 0 @@ -53,7 +52,7 @@ God bless America. /obj/machinery/deepfryer/Initialize() . = ..() - create_reagents(50) + create_reagents(50, OPENCONTAINER) reagents.add_reagent("cooking_oil", 25) component_parts = list() component_parts += new /obj/item/circuitboard/machine/deep_fryer(null) diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 228bfcce29d..9c01eaa13cd 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -15,13 +15,11 @@ var/portion = 10 var/selected_drink var/list/stored_food = list() - container_type = OPENCONTAINER var/obj/item/reagent_containers/mixer /obj/machinery/food_cart/Initialize() . = ..() - create_reagents(LIQUID_CAPACIY) - reagents.set_reacting(FALSE) + create_reagents(LIQUID_CAPACIY, OPENCONTAINER | NO_REACT) mixer = new /obj/item/reagent_containers(src, MIXER_CAPACITY) mixer.name = "Mixer" diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 611efc5737b..9ff68b5c06d 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -14,7 +14,6 @@ anchored = FALSE use_power = NO_POWER_USE layer = BELOW_OBJ_LAYER - container_type = OPENCONTAINER max_integrity = 300 var/list/product_types = list() var/dispense_flavour = ICECREAM_VANILLA @@ -65,8 +64,7 @@ . = ..() while(product_types.len < 6) product_types.Add(5) - create_reagents() - reagents.set_reacting(FALSE) + create_reagents(100, NO_REACT | OPENCONTAINER) for(var/reagent in icecream_vat_reagents) reagents.add_reagent(reagent, icecream_vat_reagents[reagent]) diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index c959798edc3..7eee6aa3655 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -95,7 +95,6 @@ if(O.use_tool(src, user, 20)) user.visible_message("[user] fixes \the [src].", "You fix \the [src].") broken = 0 - container_type = OPENCONTAINER update_icon() return FALSE //to use some fuel else @@ -111,7 +110,6 @@ playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) user.visible_message("[user] has cleaned \the [src].", "You clean \the [src].") dirty = 0 - container_type = OPENCONTAINER update_icon() updateUsrDialog() else @@ -124,7 +122,6 @@ if(do_after(user, P.cleanspeed, target = src)) user.visible_message("[user] has cleaned \the [src].", "You clean \the [src].") dirty = 0 - container_type = OPENCONTAINER update_icon() return TRUE diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 6a3bd686e00..81ec46b25f3 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -18,8 +18,7 @@ /obj/machinery/smartfridge/Initialize() . = ..() - create_reagents() - reagents.set_reacting(FALSE) + create_reagents(100, NO_REACT) if(islist(initial_contents)) for(var/typekey in initial_contents) diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index b88e6e1ebb3..bc5f3d2ace8 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -5,14 +5,14 @@ icon_state = "barrel" density = TRUE anchored = FALSE - container_type = DRAINABLE | AMOUNT_VISIBLE pressure_resistance = 2 * ONE_ATMOSPHERE max_integrity = 300 var/open = FALSE var/speed_multiplier = 1 //How fast it distills. Defaults to 100% (1.0). Lower is better. /obj/structure/fermenting_barrel/Initialize() - create_reagents(300) //Bluespace beakers, but without the portability or efficiency in circuits. + // Bluespace beakers, but without the portability or efficiency in circuits. + create_reagents(300, DRAINABLE | AMOUNT_VISIBLE) . = ..() /obj/structure/fermenting_barrel/examine(mob/user) @@ -56,10 +56,12 @@ /obj/structure/fermenting_barrel/attack_hand(mob/user) open = !open if(open) - container_type = REFILLABLE | AMOUNT_VISIBLE + DISABLE_BITFIELD(reagents.flags, DRAINABLE) + ENABLE_BITFIELD(reagents.flags, REFILLABLE) to_chat(user, "You open [src], letting you fill it.") else - container_type = DRAINABLE | AMOUNT_VISIBLE + ENABLE_BITFIELD(reagents.flags, DRAINABLE) + DISABLE_BITFIELD(reagents.flags, REFILLABLE) to_chat(user, "You close [src], letting you draw from its tap.") update_icon() diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index 55c0da91f27..b271eb5ce9f 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -7,7 +7,6 @@ species = "replicapod" plantname = "Replica Pod" product = /mob/living/carbon/human //verrry special -- Urist - container_type = INJECTABLE|DRAWABLE lifespan = 50 endurance = 8 maturation = 10 @@ -28,7 +27,7 @@ /obj/item/seeds/replicapod/Initialize() . = ..() - create_reagents(volume) + create_reagents(volume, INJECTABLE|DRAWABLE) /obj/item/seeds/replicapod/on_reagent_change(changetype) if(changetype == ADD_REAGENT) diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index b96db1f0d8f..483ec28ad6f 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -310,10 +310,10 @@ /datum/plant_gene/trait/noreact/on_new(obj/item/reagent_containers/food/snacks/grown/G, newloc) ..() - G.reagents.set_reacting(FALSE) + ENABLE_BITFIELD(G.reagents, NO_REACT) /datum/plant_gene/trait/noreact/on_squash(obj/item/reagent_containers/food/snacks/grown/G, atom/target) - G.reagents.set_reacting(TRUE) + DISABLE_BITFIELD(G.reagents, NO_REACT) G.reagents.handle_reactions() diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 088d3fee9ad..02e96f19737 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -150,9 +150,6 @@ /* * Sleepypens */ -/obj/item/pen/sleepy - container_type = OPENCONTAINER - /obj/item/pen/sleepy/attack(mob/living/M, mob/user) if(!istype(M)) @@ -167,7 +164,7 @@ /obj/item/pen/sleepy/Initialize() . = ..() - create_reagents(45) + create_reagents(45, OPENCONTAINER) reagents.add_reagent("chloralhydratedelayed", 20) reagents.add_reagent("mutetoxin", 15) reagents.add_reagent("tirizene", 10) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 539b60a2288..44d14a521a7 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -20,7 +20,6 @@ var/self_recharge = 0 //does it self recharge, over time, or not? var/ratingdesc = TRUE var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it. - container_type = INJECTABLE|DRAINABLE /obj/item/stock_parts/cell/get_cell() return src @@ -28,7 +27,7 @@ /obj/item/stock_parts/cell/Initialize(mapload, override_maxcharge) . = ..() START_PROCESSING(SSobj, src) - create_reagents(5) + create_reagents(5, INJECTABLE | DRAINABLE) if (override_maxcharge) maxcharge = override_maxcharge charge = maxcharge diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index 39cf9241694..ad5b31a5564 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -111,23 +111,23 @@ icon_state = "cshell" projectile_type = /obj/item/projectile/bullet/dart var/reagent_amount = 30 - var/reagent_react = TRUE + +/obj/item/ammo_casing/shotgun/dart/Initialize() + . = ..() + create_reagents(reagent_amount, OPENCONTAINER) + +/obj/item/ammo_casing/shotgun/dart/attackby() + return /obj/item/ammo_casing/shotgun/dart/noreact name = "cryostasis shotgun dart" desc = "A dart for use in shotguns, using similar technology as cryostatis beakers to keep internal reagents from reacting. Can be injected with up to 10 units of any chemical." icon_state = "cnrshell" reagent_amount = 10 - reagent_react = FALSE -/obj/item/ammo_casing/shotgun/dart/Initialize() +/obj/item/ammo_casing/shotgun/dart/noreact/Initialize() . = ..() - container_type |= OPENCONTAINER - create_reagents(reagent_amount) - reagents.set_reacting(reagent_react) - -/obj/item/ammo_casing/shotgun/dart/attackby() - return + ENABLE_BITFIELD(reagents.flags, NO_REACT) /obj/item/ammo_casing/shotgun/dart/bioterror desc = "A shotgun dart filled with deadly toxins." diff --git a/code/modules/projectiles/guns/misc/chem_gun.dm b/code/modules/projectiles/guns/misc/chem_gun.dm index 17e3bd18767..1c43ed6dab3 100644 --- a/code/modules/projectiles/guns/misc/chem_gun.dm +++ b/code/modules/projectiles/guns/misc/chem_gun.dm @@ -12,7 +12,6 @@ materials = list(MAT_METAL=2000) clumsy_check = FALSE fire_sound = 'sound/items/syringeproj.ogg' - container_type = OPENCONTAINER var/time_per_syringe = 250 var/syringes_left = 4 var/max_syringes = 4 @@ -22,7 +21,7 @@ . = ..() chambered = new /obj/item/ammo_casing/chemgun(src) START_PROCESSING(SSobj, src) - create_reagents(100) + create_reagents(100, OPENCONTAINER) /obj/item/gun/chem/Destroy() . = ..() @@ -44,4 +43,4 @@ syringes_left++ if(chambered && !chambered.BB) chambered.newshot() - last_synth = world.time \ No newline at end of file + last_synth = world.time diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index 023c3b90902..20e8d7db190 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -6,8 +6,7 @@ /obj/item/projectile/bullet/dart/Initialize() . = ..() - create_reagents(50) - reagents.set_reacting(FALSE) + create_reagents(50, NO_REACT) /obj/item/projectile/bullet/dart/on_hit(atom/target, blocked = FALSE) if(iscarbon(target)) @@ -24,7 +23,7 @@ "You were protected against \the [src]!") ..(target, blocked) - reagents.set_reacting(TRUE) + DISABLE_BITFIELD(reagents.flags, NO_REACT) reagents.handle_reactions() return TRUE diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index ab92457f7a0..57918acd185 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -51,9 +51,9 @@ var/last_tick = 1 var/addiction_tick = 1 var/list/datum/reagent/addiction_list = new/list() - var/reagents_holder_flags + var/flags -/datum/reagents/New(maximum=100) +/datum/reagents/New(maximum=100, new_flags=0) maximum_volume = maximum //I dislike having these here but map-objects are initialised before world/New() is called. >_> @@ -62,6 +62,8 @@ if(!GLOB.chemical_reactions_list) build_chemical_reactions_list() + flags = new_flags + /datum/reagents/Destroy() . = ..() var/list/cached_reagents = reagent_list @@ -321,13 +323,6 @@ C.update_stamina() update_total() - -/datum/reagents/proc/set_reacting(react = TRUE) - if(react) - reagents_holder_flags &= ~(REAGENT_NOREACT) - else - reagents_holder_flags |= REAGENT_NOREACT - /datum/reagents/proc/conditional_update_move(atom/A, Running = 0) var/list/cached_reagents = reagent_list for(var/reagent in cached_reagents) @@ -343,11 +338,12 @@ update_total() /datum/reagents/proc/handle_reactions() + if(flags & NO_REACT) + return //Yup, no reactions here. No siree. + var/list/cached_reagents = reagent_list var/list/cached_reactions = GLOB.chemical_reactions_list var/datum/cached_my_atom = my_atom - if(reagents_holder_flags & REAGENT_NOREACT) - return //Yup, no reactions here. No siree. var/reaction_occurred = 0 do @@ -804,10 +800,10 @@ // Convenience proc to create a reagents holder for an atom // Max vol is maximum volume of holder -/atom/proc/create_reagents(max_vol) +/atom/proc/create_reagents(max_vol, flags) if(reagents) qdel(reagents) - reagents = new/datum/reagents(max_vol) + reagents = new /datum/reagents(max_vol, flags) reagents.my_atom = src /proc/get_random_reagent_id() // Returns a random reagent ID minus blacklisted reagents diff --git a/code/modules/reagents/chemistry/readme.md b/code/modules/reagents/chemistry/readme.md index f8be4d20568..e72fe3b83cc 100644 --- a/code/modules/reagents/chemistry/readme.md +++ b/code/modules/reagents/chemistry/readme.md @@ -230,7 +230,7 @@ By default, all atom have a reagents var - but its empty. if you want to use an 'pouring' our reagents into something else. atom/proc/is_open_container() - Checks obj/var/container_type & OPENCONTAINER. + Checks atom/var/reagents.flags & OPENCONTAINER. If this returns 1 , you can use syringes, beakers etc to manipulate the contents of this object. If it's 0, you'll need to write your own custom reagent diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index d832346c707..9196acbfee8 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -7,6 +7,7 @@ var/amount_per_transfer_from_this = 5 var/list/possible_transfer_amounts = list(5,10,15,20,25,30) var/volume = 30 + var/reagent_flags var/list/list_reagents = null var/spawned_disease = null var/disease_amount = 20 @@ -16,7 +17,7 @@ . = ..() if(isnum(vol) && vol > 0) volume = vol - create_reagents(volume) + create_reagents(volume, reagent_flags) if(spawned_disease) var/datum/disease/F = new spawned_disease() var/list/data = list("viruses"= list(F)) diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 6ed38ba42a2..f8f09a3ceb6 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -6,7 +6,7 @@ amount_per_transfer_from_this = 5 possible_transfer_amounts = list(1, 2, 3, 4, 5) volume = 5 - container_type = TRANSPARENT + reagent_flags = TRANSPARENT /obj/item/reagent_containers/dropper/afterattack(obj/target, mob/user , proximity) . = ..() diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 6e868b287ce..5710ff28433 100755 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -3,7 +3,7 @@ amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50) volume = 50 - container_type = OPENCONTAINER + reagent_flags = OPENCONTAINER spillable = TRUE resistance_flags = ACID_PROOF @@ -197,13 +197,10 @@ reactions. Can hold up to 50 units." icon_state = "beakernoreact" materials = list(MAT_METAL=3000) + reagent_flags = OPENCONTAINER | NO_REACT volume = 50 amount_per_transfer_from_this = 10 -/obj/item/reagent_containers/glass/beaker/noreact/Initialize() - . = ..() - reagents.set_reacting(FALSE) - /obj/item/reagent_containers/glass/beaker/bluespace name = "bluespace beaker" desc = "A bluespace beaker, powered by experimental bluespace technology \ @@ -294,11 +291,11 @@ to_chat(user, "[src]'s contents spill all over you!") reagents.reaction(user, TOUCH) reagents.clear_reagents() - container_type = NONE + reagents.flags = NONE /obj/item/reagent_containers/glass/bucket/dropped(mob/user) . = ..() - container_type = initial(container_type) + reagents.flags = initial(reagent_flags) /obj/item/reagent_containers/glass/bucket/equip_to_best_slot(var/mob/M) if(reagents.total_volume) //If there is water in a bucket, don't quick equip it to the head diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 6db47118b54..349ad5676e7 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -10,7 +10,7 @@ volume = 30 possible_transfer_amounts = list() resistance_flags = ACID_PROOF - container_type = OPENCONTAINER + reagent_flags = OPENCONTAINER slot_flags = ITEM_SLOT_BELT var/ignore_flags = 0 var/infinite = FALSE @@ -73,7 +73,7 @@ desc = "A modified air-needle autoinjector with a small single-use reservoir. It contains an experimental serum." icon_state = "combat_hypo" volume = 5 - container_type = NONE + reagent_flags = NONE list_reagents = list("magillitis" = 5) //MediPens @@ -88,7 +88,7 @@ amount_per_transfer_from_this = 10 volume = 10 ignore_flags = 1 //so you can medipen through hardsuits - container_type = DRAWABLE + reagent_flags = DRAWABLE flags_1 = null list_reagents = list("epinephrine" = 10) custom_price = 40 @@ -104,7 +104,7 @@ ..() if(!iscyborg(user)) reagents.maximum_volume = 0 //Makes them useless afterwards - container_type = NONE + reagents.flags = NONE update_icon() addtimer(CALLBACK(src, .proc/cyborg_recharge, user), 80) @@ -179,4 +179,4 @@ /obj/item/reagent_containers/hypospray/medipen/atropine name = "atropine autoinjector" desc = "A rapid way to save a person from a critical injury state!" - list_reagents = list("atropine" = 10) \ No newline at end of file + list_reagents = list("atropine" = 10) diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm index 2298c414a39..acfe324c07e 100644 --- a/code/modules/reagents/reagent_containers/medspray.dm +++ b/code/modules/reagents/reagent_containers/medspray.dm @@ -8,7 +8,7 @@ righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' item_flags = NOBLUDGEON obj_flags = UNIQUE_RENAME - container_type = OPENCONTAINER + reagent_flags = OPENCONTAINER slot_flags = ITEM_SLOT_BELT throwforce = 0 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 33186ef79bf..535b7b74bd3 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' item_flags = NOBLUDGEON - container_type = OPENCONTAINER + reagent_flags = OPENCONTAINER slot_flags = ITEM_SLOT_BELT throwforce = 0 w_class = WEIGHT_CLASS_SMALL @@ -231,7 +231,7 @@ return /obj/item/reagent_containers/spray/waterflower/cyborg - container_type = NONE + reagent_flags = NONE volume = 100 list_reagents = list("water" = 100) var/generate_amount = 5 diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 6c50a773f8b..f45450b7b81 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -13,7 +13,7 @@ var/busy = FALSE // needed for delayed drawing of blood var/proj_piercing = 0 //does it pierce through thick clothes when shot with syringe gun materials = list(MAT_METAL=10, MAT_GLASS=20) - container_type = TRANSPARENT + reagent_flags = TRANSPARENT /obj/item/reagent_containers/syringe/Initialize() . = ..() @@ -249,10 +249,7 @@ name = "cryo syringe" desc = "An advanced syringe that stops reagents inside from reacting. It can hold up to 20 units." volume = 20 - -/obj/item/reagent_containers/syringe/noreact/Initialize() - . = ..() - reagents.set_reacting(FALSE) + reagent_flags = TRANSPARENT | NO_REACT /obj/item/reagent_containers/syringe/piercing name = "piercing syringe" diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index e13cf839414..0870c1dbbbe 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -5,7 +5,6 @@ icon_state = "water" density = TRUE anchored = FALSE - container_type = DRAINABLE | AMOUNT_VISIBLE pressure_resistance = 2*ONE_ATMOSPHERE max_integrity = 300 var/tank_volume = 1000 //In units, how much the dispenser can hold @@ -24,7 +23,7 @@ return ..() /obj/structure/reagent_dispensers/Initialize() - create_reagents(tank_volume) + create_reagents(tank_volume, DRAINABLE | AMOUNT_VISIBLE) reagents.add_reagent(reagent_id, tank_volume) . = ..() diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 6a18191af1f..57ded84afb3 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -1,7 +1,6 @@ /obj/machinery/rnd/production name = "technology fabricator" desc = "Makes researched and prototype items with materials and energy." - container_type = OPENCONTAINER layer = BELOW_OBJ_LAYER var/consoleless_interface = FALSE //Whether it can be used without a console. var/efficiency_coeff = 1 //Materials needed / coeff = actual. @@ -21,7 +20,7 @@ /obj/machinery/rnd/production/Initialize(mapload) . = ..() - create_reagents(0) + create_reagents(0, OPENCONTAINER) matching_designs = list() cached_designs = list() stored_research = new diff --git a/code/modules/research/machinery/circuit_imprinter.dm b/code/modules/research/machinery/circuit_imprinter.dm index 5a84f2f6633..09cf9cda871 100644 --- a/code/modules/research/machinery/circuit_imprinter.dm +++ b/code/modules/research/machinery/circuit_imprinter.dm @@ -2,7 +2,6 @@ name = "circuit imprinter" desc = "Manufactures circuit boards for the construction of machines." icon_state = "circuit_imprinter" - container_type = OPENCONTAINER circuit = /obj/item/circuitboard/machine/circuit_imprinter categories = list( "AI Modules", diff --git a/code/modules/research/machinery/departmental_circuit_imprinter.dm b/code/modules/research/machinery/departmental_circuit_imprinter.dm index e47bd974946..4c455ad9d05 100644 --- a/code/modules/research/machinery/departmental_circuit_imprinter.dm +++ b/code/modules/research/machinery/departmental_circuit_imprinter.dm @@ -2,7 +2,6 @@ name = "department circuit imprinter" desc = "A special circuit imprinter with a built in interface meant for departmental usage, with built in ExoSync receivers allowing it to print designs researched that match its ROM-encoded department type." icon_state = "circuit_imprinter" - container_type = OPENCONTAINER circuit = /obj/item/circuitboard/machine/circuit_imprinter/department requires_console = FALSE consoleless_interface = TRUE @@ -11,4 +10,4 @@ name = "department circuit imprinter (Science)" circuit = /obj/item/circuitboard/machine/circuit_imprinter/department/science allowed_department_flags = DEPARTMENTAL_FLAG_ALL|DEPARTMENTAL_FLAG_SCIENCE - department_tag = "Science" \ No newline at end of file + department_tag = "Science" diff --git a/code/modules/research/machinery/departmental_protolathe.dm b/code/modules/research/machinery/departmental_protolathe.dm index f91f3282d5f..c5956ce2a39 100644 --- a/code/modules/research/machinery/departmental_protolathe.dm +++ b/code/modules/research/machinery/departmental_protolathe.dm @@ -2,7 +2,6 @@ name = "department protolathe" desc = "A special protolathe with a built in interface meant for departmental usage, with built in ExoSync receivers allowing it to print designs researched that match its ROM-encoded department type." icon_state = "protolathe" - container_type = OPENCONTAINER circuit = /obj/item/circuitboard/machine/protolathe/department requires_console = FALSE consoleless_interface = TRUE @@ -41,4 +40,4 @@ name = "department protolathe (Security)" allowed_department_flags = DEPARTMENTAL_FLAG_ALL|DEPARTMENTAL_FLAG_SECURITY department_tag = "Security" - circuit = /obj/item/circuitboard/machine/protolathe/department/security \ No newline at end of file + circuit = /obj/item/circuitboard/machine/protolathe/department/security diff --git a/code/modules/research/machinery/departmental_techfab.dm b/code/modules/research/machinery/departmental_techfab.dm index cf0e30596f1..9e598376e5c 100644 --- a/code/modules/research/machinery/departmental_techfab.dm +++ b/code/modules/research/machinery/departmental_techfab.dm @@ -2,7 +2,6 @@ name = "department techfab" desc = "An advanced fabricator designed to print out the latest prototypes and circuits researched from Science. Contains hardware to sync to research networks. This one is department-locked and only possesses a limited set of decryption keys." icon_state = "protolathe" - container_type = OPENCONTAINER circuit = /obj/item/circuitboard/machine/techfab/department /obj/machinery/rnd/production/techfab/department/engineering @@ -39,4 +38,4 @@ name = "department techfab (Security)" allowed_department_flags = DEPARTMENTAL_FLAG_ALL|DEPARTMENTAL_FLAG_SECURITY department_tag = "Security" - circuit = /obj/item/circuitboard/machine/techfab/department/security \ No newline at end of file + circuit = /obj/item/circuitboard/machine/techfab/department/security diff --git a/code/modules/research/machinery/protolathe.dm b/code/modules/research/machinery/protolathe.dm index cb9c6c9add7..e04261c961d 100644 --- a/code/modules/research/machinery/protolathe.dm +++ b/code/modules/research/machinery/protolathe.dm @@ -2,7 +2,6 @@ name = "protolathe" desc = "Converts raw materials into useful objects." icon_state = "protolathe" - container_type = OPENCONTAINER circuit = /obj/item/circuitboard/machine/protolathe categories = list( "Power Designs", @@ -23,4 +22,4 @@ /obj/machinery/rnd/production/protolathe/disconnect_console() linked_console.linked_lathe = null - ..() \ No newline at end of file + ..() diff --git a/code/modules/research/machinery/techfab.dm b/code/modules/research/machinery/techfab.dm index e50455caf81..5525066f2ab 100644 --- a/code/modules/research/machinery/techfab.dm +++ b/code/modules/research/machinery/techfab.dm @@ -2,7 +2,6 @@ name = "technology fabricator" desc = "Produces researched prototypes with raw materials and energy." icon_state = "protolathe" - container_type = OPENCONTAINER circuit = /obj/item/circuitboard/machine/techfab categories = list( "Power Designs", @@ -33,4 +32,4 @@ production_animation = "protolathe_n" requires_console = FALSE consoleless_interface = TRUE - allowed_buildtypes = PROTOLATHE | IMPRINTER \ No newline at end of file + allowed_buildtypes = PROTOLATHE | IMPRINTER diff --git a/code/modules/research/xenobiology/crossbreeding/__corecross.dm b/code/modules/research/xenobiology/crossbreeding/__corecross.dm index df759981449..72aaa36e4b7 100644 --- a/code/modules/research/xenobiology/crossbreeding/__corecross.dm +++ b/code/modules/research/xenobiology/crossbreeding/__corecross.dm @@ -90,12 +90,11 @@ To add a crossbreed: icon = 'icons/obj/slimecrossing.dmi' icon_state = "base" var/del_on_empty = TRUE - container_type = INJECTABLE | DRAWABLE var/list/list_reagents /obj/item/slimecrossbeaker/Initialize() . = ..() - create_reagents(50) + create_reagents(50, INJECTABLE | DRAWABLE) if(list_reagents) for(var/reagent in list_reagents) reagents.add_reagent(reagent, list_reagents[reagent]) @@ -130,10 +129,13 @@ To add a crossbreed: list_reagents = list("omnizine" = 15) /obj/item/slimecrossbeaker/autoinjector //As with the above, but automatically injects whomever it is used on with contents. - container_type = DRAWABLE //Cannot be refilled, since it's basically an autoinjector! var/ignore_flags = FALSE var/self_use_only = FALSE +/obj/item/slimecrossbeaker/autoinjector/Initialize() + . = ..() + reagents.flags = DRAWABLE // Cannot be refilled, since it's basically an autoinjector! + /obj/item/slimecrossbeaker/autoinjector/attack(mob/living/M, mob/user) if(!reagents.total_volume) to_chat(user, "[src] is empty!") @@ -169,12 +171,15 @@ To add a crossbreed: list_reagents = list("slimejelly" = 50) /obj/item/slimecrossbeaker/autoinjector/peaceandlove - container_type = null //It won't be *that* easy to get your hands on pax. name = "peaceful distillation" desc = "A light pink gooey sphere. Simply touching it makes you a little dizzy." color = "#DDAAAA" list_reagents = list("synthpax" = 10, "space_drugs" = 15) //Peace, dudes +/obj/item/slimecrossbeaker/autoinjector/peaceandlove/Initialize() + . = ..() + reagents.flags = NONE // It won't be *that* easy to get your hands on pax. + /obj/item/slimecrossbeaker/autoinjector/slimestimulant name = "invigorating gel" desc = "A bubbling purple mixture, designed to heal and boost movement." diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index 26dd9f91b40..963c803c689 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -7,12 +7,11 @@ Burning extracts: name = "burning extract" desc = "It's boiling over with barely-contained energy." effect = "burning" - container_type = INJECTABLE | DRAWABLE icon_state = "burning" /obj/item/slimecross/burning/Initialize() . = ..() - create_reagents(10) + create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/burning/attack_self(mob/user) if(!reagents.has_reagent("plasma",10)) diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm index 05dd854c61c..62048ce6163 100644 --- a/code/modules/research/xenobiology/crossbreeding/charged.dm +++ b/code/modules/research/xenobiology/crossbreeding/charged.dm @@ -8,12 +8,11 @@ Charged extracts: name = "charged extract" desc = "It sparks with electric power." effect = "charged" - container_type = INJECTABLE | DRAWABLE icon_state = "charged" /obj/item/slimecross/charged/Initialize() . = ..() - create_reagents(10) + create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/charged/attack_self(mob/user) if(!reagents.has_reagent("plasma",10)) diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm index 1a5c4c68005..2cf368b22f4 100644 --- a/code/modules/research/xenobiology/crossbreeding/chilling.dm +++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm @@ -7,11 +7,11 @@ Chilling extracts: name = "chilling extract" desc = "It's cold to the touch, as if frozen solid." effect = "chilling" - container_type = INJECTABLE | DRAWABLE icon_state = "chilling" + /obj/item/slimecross/chilling/Initialize() . = ..() - create_reagents(10) + create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/chilling/attack_self(mob/user) if(!reagents.has_reagent("plasma",10)) diff --git a/code/modules/research/xenobiology/crossbreeding/industrial.dm b/code/modules/research/xenobiology/crossbreeding/industrial.dm index 2ab39eb06f0..4d39d956e77 100644 --- a/code/modules/research/xenobiology/crossbreeding/industrial.dm +++ b/code/modules/research/xenobiology/crossbreeding/industrial.dm @@ -5,7 +5,6 @@ Industrial extracts: /obj/item/slimecross/industrial name = "industrial extract" desc = "A gel-like, sturdy extract, fond of plasma and industry." - container_type = INJECTABLE | DRAWABLE effect = "industrial" icon_state = "industrial_still" var/plasmarequired = 2 //Units of plasma required to be consumed to produce item. @@ -22,7 +21,7 @@ Industrial extracts: /obj/item/slimecross/industrial/Initialize() . = ..() - create_reagents(100) + create_reagents(100, INJECTABLE | DRAWABLE) START_PROCESSING(SSobj,src) /obj/item/slimecross/industrial/Destroy() diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 9fc3b506859..5839e9b469d 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -10,7 +10,6 @@ throwforce = 0 throw_speed = 3 throw_range = 6 - container_type = INJECTABLE | DRAWABLE grind_results = list() var/Uses = 1 // uses before it goes inert var/qdel_timer = null // deletion timer, for delayed reactions @@ -39,7 +38,7 @@ /obj/item/slime_extract/Initialize() . = ..() - create_reagents(100) + create_reagents(100, INJECTABLE | DRAWABLE) /obj/item/slime_extract/on_grind() if(Uses)