From df508a51b27659a3a2d6c080778db07c9ec4d6d1 Mon Sep 17 00:00:00 2001 From: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Date: Fri, 20 Oct 2023 11:22:16 +0530 Subject: [PATCH] More Plumbing Fixes & Pill Press UI Changes (#79059) ## About The Pull Request 1. Fixes #79051 It's a consequence of floating-point math. We round it to 2 decimal places to display results like 50 but in fact its actual value is something like 49.999... something. So, we also shift up our expectations and call it a day. 2. Made a lot of variables defines and lists static to save memory for plumbing pill press and moved global lists to it's global list folder 3. Copied over chem master patch & pill designs over too plumbing press and removed the old designs & resized the UI ## Changelog :cl: fix: plumbing pill press & bottler won't stop when processing 50 unit bottles code: made a lot of variables defines and lists static to save memory for plumbing pill press. Moved global lists to it's rightful place code: copied over chem master pill & patch designs over to plumbing pill press and removed the old designs. resized UI /:cl: --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/__DEFINES/plumbing.dm | 18 -- code/__DEFINES/reagents.dm | 40 +--- code/_globalvars/lists/plumbing.dm | 17 ++ code/_globalvars/lists/reagents.dm | 39 ++++ code/datums/components/plumbing/_plumbing.dm | 2 +- code/modules/asset_cache/assets/chemmaster.dm | 4 +- code/modules/asset_cache/assets/patches.dm | 25 --- code/modules/asset_cache/assets/pills.dm | 26 --- code/modules/plumbing/plumbers/bottler.dm | 29 +-- code/modules/plumbing/plumbers/pill_press.dm | 202 +++++++++--------- .../chemistry/machinery/chem_master.dm | 56 +---- icons/ui_icons/patches/bandaid_1.png | Bin 1703 -> 0 bytes icons/ui_icons/patches/bandaid_2.png | Bin 1718 -> 0 bytes icons/ui_icons/patches/bandaid_3.png | Bin 1707 -> 0 bytes icons/ui_icons/patches/bandaid_4.png | Bin 1700 -> 0 bytes icons/ui_icons/patches/bandaid_blank.png | Bin 1652 -> 0 bytes icons/ui_icons/patches/bandaid_both.png | Bin 1821 -> 0 bytes icons/ui_icons/patches/bandaid_brute.png | Bin 1728 -> 0 bytes icons/ui_icons/patches/bandaid_brute_2.png | Bin 1722 -> 0 bytes icons/ui_icons/patches/bandaid_burn.png | Bin 1776 -> 0 bytes icons/ui_icons/patches/bandaid_burn_2.png | Bin 1778 -> 0 bytes icons/ui_icons/patches/bandaid_clown.png | Bin 1904 -> 0 bytes icons/ui_icons/patches/bandaid_colonthree.png | Bin 1824 -> 0 bytes .../patches/bandaid_exclaimationpoint.png | Bin 1761 -> 0 bytes icons/ui_icons/patches/bandaid_mix.png | Bin 1852 -> 0 bytes icons/ui_icons/patches/bandaid_monke.png | Bin 1858 -> 0 bytes icons/ui_icons/patches/bandaid_msic.png | Bin 1819 -> 0 bytes .../ui_icons/patches/bandaid_questionmark.png | Bin 1765 -> 0 bytes .../ui_icons/patches/bandaid_suffocation.png | Bin 1799 -> 0 bytes .../patches/bandaid_suffocation_2.png | Bin 1786 -> 0 bytes icons/ui_icons/patches/bandaid_toxin.png | Bin 1733 -> 0 bytes icons/ui_icons/patches/bandaid_toxin_2.png | Bin 1753 -> 0 bytes icons/ui_icons/pills/pill1.png | Bin 260 -> 0 bytes icons/ui_icons/pills/pill10.png | Bin 225 -> 0 bytes icons/ui_icons/pills/pill11.png | Bin 212 -> 0 bytes icons/ui_icons/pills/pill12.png | Bin 212 -> 0 bytes icons/ui_icons/pills/pill13.png | Bin 253 -> 0 bytes icons/ui_icons/pills/pill14.png | Bin 251 -> 0 bytes icons/ui_icons/pills/pill15.png | Bin 246 -> 0 bytes icons/ui_icons/pills/pill16.png | Bin 249 -> 0 bytes icons/ui_icons/pills/pill17.png | Bin 228 -> 0 bytes icons/ui_icons/pills/pill18.png | Bin 224 -> 0 bytes icons/ui_icons/pills/pill19.png | Bin 251 -> 0 bytes icons/ui_icons/pills/pill2.png | Bin 233 -> 0 bytes icons/ui_icons/pills/pill20.png | Bin 260 -> 0 bytes icons/ui_icons/pills/pill21.png | Bin 239 -> 0 bytes icons/ui_icons/pills/pill22.png | Bin 285 -> 0 bytes icons/ui_icons/pills/pill3.png | Bin 224 -> 0 bytes icons/ui_icons/pills/pill4.png | Bin 224 -> 0 bytes icons/ui_icons/pills/pill5.png | Bin 260 -> 0 bytes icons/ui_icons/pills/pill6.png | Bin 258 -> 0 bytes icons/ui_icons/pills/pill7.png | Bin 225 -> 0 bytes icons/ui_icons/pills/pill8.png | Bin 228 -> 0 bytes icons/ui_icons/pills/pill9.png | Bin 225 -> 0 bytes tgstation.dme | 3 +- tgui/packages/tgui/interfaces/ChemPress.js | 122 ----------- tgui/packages/tgui/interfaces/ChemPress.tsx | 112 ++++++++++ 57 files changed, 302 insertions(+), 393 deletions(-) create mode 100644 code/_globalvars/lists/plumbing.dm delete mode 100644 code/modules/asset_cache/assets/patches.dm delete mode 100644 code/modules/asset_cache/assets/pills.dm delete mode 100644 icons/ui_icons/patches/bandaid_1.png delete mode 100644 icons/ui_icons/patches/bandaid_2.png delete mode 100644 icons/ui_icons/patches/bandaid_3.png delete mode 100644 icons/ui_icons/patches/bandaid_4.png delete mode 100644 icons/ui_icons/patches/bandaid_blank.png delete mode 100644 icons/ui_icons/patches/bandaid_both.png delete mode 100644 icons/ui_icons/patches/bandaid_brute.png delete mode 100644 icons/ui_icons/patches/bandaid_brute_2.png delete mode 100644 icons/ui_icons/patches/bandaid_burn.png delete mode 100644 icons/ui_icons/patches/bandaid_burn_2.png delete mode 100644 icons/ui_icons/patches/bandaid_clown.png delete mode 100644 icons/ui_icons/patches/bandaid_colonthree.png delete mode 100644 icons/ui_icons/patches/bandaid_exclaimationpoint.png delete mode 100644 icons/ui_icons/patches/bandaid_mix.png delete mode 100644 icons/ui_icons/patches/bandaid_monke.png delete mode 100644 icons/ui_icons/patches/bandaid_msic.png delete mode 100644 icons/ui_icons/patches/bandaid_questionmark.png delete mode 100644 icons/ui_icons/patches/bandaid_suffocation.png delete mode 100644 icons/ui_icons/patches/bandaid_suffocation_2.png delete mode 100644 icons/ui_icons/patches/bandaid_toxin.png delete mode 100644 icons/ui_icons/patches/bandaid_toxin_2.png delete mode 100644 icons/ui_icons/pills/pill1.png delete mode 100644 icons/ui_icons/pills/pill10.png delete mode 100644 icons/ui_icons/pills/pill11.png delete mode 100644 icons/ui_icons/pills/pill12.png delete mode 100644 icons/ui_icons/pills/pill13.png delete mode 100644 icons/ui_icons/pills/pill14.png delete mode 100644 icons/ui_icons/pills/pill15.png delete mode 100644 icons/ui_icons/pills/pill16.png delete mode 100644 icons/ui_icons/pills/pill17.png delete mode 100644 icons/ui_icons/pills/pill18.png delete mode 100644 icons/ui_icons/pills/pill19.png delete mode 100644 icons/ui_icons/pills/pill2.png delete mode 100644 icons/ui_icons/pills/pill20.png delete mode 100644 icons/ui_icons/pills/pill21.png delete mode 100644 icons/ui_icons/pills/pill22.png delete mode 100644 icons/ui_icons/pills/pill3.png delete mode 100644 icons/ui_icons/pills/pill4.png delete mode 100644 icons/ui_icons/pills/pill5.png delete mode 100644 icons/ui_icons/pills/pill6.png delete mode 100644 icons/ui_icons/pills/pill7.png delete mode 100644 icons/ui_icons/pills/pill8.png delete mode 100644 icons/ui_icons/pills/pill9.png delete mode 100644 tgui/packages/tgui/interfaces/ChemPress.js create mode 100644 tgui/packages/tgui/interfaces/ChemPress.tsx diff --git a/code/__DEFINES/plumbing.dm b/code/__DEFINES/plumbing.dm index 002c2c7c1e3..432f8ca4357 100644 --- a/code/__DEFINES/plumbing.dm +++ b/code/__DEFINES/plumbing.dm @@ -8,23 +8,5 @@ #define MACHINE_REAGENT_TRANSFER 10 //the default max plumbing machinery transfers -/// List of plumbing layers as name => bitflag -GLOBAL_LIST_INIT(plumbing_layers, list( - "First Layer" = FIRST_DUCT_LAYER, - "Second Layer" = SECOND_DUCT_LAYER, - "Default Layer" = THIRD_DUCT_LAYER, - "Fourth Layer" = FOURTH_DUCT_LAYER, - "Fifth Layer" = FIFTH_DUCT_LAYER, -)) - -/// Reverse of plumbing_layers, as "[bitflag]" => name -GLOBAL_LIST_INIT(plumbing_layer_names, list( - "[FIRST_DUCT_LAYER]" = "First Layer", - "[SECOND_DUCT_LAYER]" = "Second Layer", - "[THIRD_DUCT_LAYER]" = "Default Layer", - "[FOURTH_DUCT_LAYER]" = "Fourth Layer", - "[FIFTH_DUCT_LAYER]" = "Fifth Layer", -)) - /// Name of omni color #define DUCT_COLOR_OMNI "omni" diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index d832f21d136..0fad79f5494 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -45,45 +45,18 @@ #define SYNTHFLESH_UNHUSK_AMOUNT 100 //used by chem masters and pill presses -#define PILL_STYLE_COUNT 22 //Update this if you add more pill icons or you die -#define RANDOM_PILL_STYLE 22 //Dont change this one though - -//used by chem masters and pill presses -//update this if you add more patch icons -#define PATCH_STYLE_LIST list(\ - "bandaid_1", \ - "bandaid_2", \ - "bandaid_3", \ - "bandaid_4", \ - "bandaid_blank", \ - "bandaid_both", \ - "bandaid_brute", \ - "bandaid_brute_2", \ - "bandaid_burn", \ - "bandaid_burn_2", \ - "bandaid_clown", \ - "bandaid_colonthree", \ - "bandaid_exclaimationpoint", \ - "bandaid_mix", \ - "bandaid_monke", \ - "bandaid_msic", \ - "bandaid_questionmark", \ - "bandaid_suffocation", \ - "bandaid_suffocation_2", \ - "bandaid_toxin", \ - "bandaid_toxin_2", \ -) //icon_state list +// The categories of reagent packaging +#define CAT_CONDIMENTS "condiments" +#define CAT_TUBES "tubes" +#define CAT_PILLS "pills" +#define CAT_PATCHES "patches" #define DEFAULT_PATCH_STYLE "bandaid_blank" - //used by chem master #define CONDIMASTER_STYLE_AUTO "auto" #define CONDIMASTER_STYLE_FALLBACK "_" #define ALLERGIC_REMOVAL_SKIP "Allergy" -/// the default temperature at which chemicals are added to reagent holders at -#define DEFAULT_REAGENT_TEMPERATURE 300 - //Used in holder.dm/equlibrium.dm to set values and volume limits ///the minimum volume of reagents than can be operated on. #define CHEMICAL_QUANTISATION_LEVEL 0.0001 @@ -97,9 +70,10 @@ #define BUFFER_IONIZING_STRENGTH 30 ///The maximum temperature a reagent holder can attain #define CHEMICAL_MAXIMUM_TEMPERATURE 99999 - ///The default purity of all non reacted reagents #define REAGENT_STANDARD_PURITY 0.75 +/// the default temperature at which chemicals are added to reagent holders at +#define DEFAULT_REAGENT_TEMPERATURE 300 //reagent bitflags, used for altering how they works ///allows on_mob_dead() if present in a dead body diff --git a/code/_globalvars/lists/plumbing.dm b/code/_globalvars/lists/plumbing.dm new file mode 100644 index 00000000000..10953d5ab24 --- /dev/null +++ b/code/_globalvars/lists/plumbing.dm @@ -0,0 +1,17 @@ +/// List of plumbing layers as name => bitflag +GLOBAL_LIST_INIT(plumbing_layers, list( + "First Layer" = FIRST_DUCT_LAYER, + "Second Layer" = SECOND_DUCT_LAYER, + "Default Layer" = THIRD_DUCT_LAYER, + "Fourth Layer" = FOURTH_DUCT_LAYER, + "Fifth Layer" = FIFTH_DUCT_LAYER, +)) + +/// Reverse of plumbing_layers, as "[bitflag]" => name +GLOBAL_LIST_INIT(plumbing_layer_names, list( + "[FIRST_DUCT_LAYER]" = "First Layer", + "[SECOND_DUCT_LAYER]" = "Second Layer", + "[THIRD_DUCT_LAYER]" = "Default Layer", + "[FOURTH_DUCT_LAYER]" = "Fourth Layer", + "[FIFTH_DUCT_LAYER]" = "Fifth Layer", +)) diff --git a/code/_globalvars/lists/reagents.dm b/code/_globalvars/lists/reagents.dm index dec2724cfeb..49ef6b6e87c 100644 --- a/code/_globalvars/lists/reagents.dm +++ b/code/_globalvars/lists/reagents.dm @@ -1,3 +1,42 @@ +//Pills & Patches +/// List of containers the Chem Master machine can print +GLOBAL_LIST_INIT(reagent_containers, list( + CAT_CONDIMENTS = list( + /obj/item/reagent_containers/cup/bottle, + /obj/item/reagent_containers/condiment/flour, + /obj/item/reagent_containers/condiment/sugar, + /obj/item/reagent_containers/condiment/rice, + /obj/item/reagent_containers/condiment/cornmeal, + /obj/item/reagent_containers/condiment/milk, + /obj/item/reagent_containers/condiment/soymilk, + /obj/item/reagent_containers/condiment/yoghurt, + /obj/item/reagent_containers/condiment/saltshaker, + /obj/item/reagent_containers/condiment/peppermill, + /obj/item/reagent_containers/condiment/soysauce, + /obj/item/reagent_containers/condiment/bbqsauce, + /obj/item/reagent_containers/condiment/enzyme, + /obj/item/reagent_containers/condiment/hotsauce, + /obj/item/reagent_containers/condiment/coldsauce, + /obj/item/reagent_containers/condiment/mayonnaise, + /obj/item/reagent_containers/condiment/ketchup, + /obj/item/reagent_containers/condiment/olive_oil, + /obj/item/reagent_containers/condiment/vegetable_oil, + /obj/item/reagent_containers/condiment/peanut_butter, + /obj/item/reagent_containers/condiment/cherryjelly, + /obj/item/reagent_containers/condiment/honey, + /obj/item/reagent_containers/condiment/pack, + ), + CAT_TUBES = list( + /obj/item/reagent_containers/cup/tube + ), + CAT_PILLS = typecacheof(list( + /obj/item/reagent_containers/pill/style + )), + CAT_PATCHES = typecacheof(list( + /obj/item/reagent_containers/pill/patch/style + )) +)) + /// list of all /datum/chemical_reaction datums indexed by their typepath. Use this for general lookup stuff GLOBAL_LIST(chemical_reactions_list) /// list of all /datum/chemical_reaction datums. Used during chemical reactions. Indexed by REACTANT types diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm index 15c9f24833b..4d093da7ae2 100644 --- a/code/datums/components/plumbing/_plumbing.dm +++ b/code/datums/components/plumbing/_plumbing.dm @@ -75,7 +75,7 @@ if(!demand_connects || !reagents) return PROCESS_KILL - if(reagents.total_volume < reagents.maximum_volume) + if(!reagents.holder_full()) for(var/D in GLOB.cardinals) if(D & demand_connects) send_request(D) diff --git a/code/modules/asset_cache/assets/chemmaster.dm b/code/modules/asset_cache/assets/chemmaster.dm index d37e6de91a5..991d999b2cd 100644 --- a/code/modules/asset_cache/assets/chemmaster.dm +++ b/code/modules/asset_cache/assets/chemmaster.dm @@ -4,8 +4,8 @@ /datum/asset/spritesheet/chemmaster/create_spritesheets() var/list/ids = list() - for(var/category in GLOB.chem_master_containers) - for(var/obj/item/reagent_containers/container as anything in GLOB.chem_master_containers[category]) + for(var/category in GLOB.reagent_containers) + for(var/obj/item/reagent_containers/container as anything in GLOB.reagent_containers[category]) var/icon_file = initial(container.icon) var/icon_state = initial(container.icon_state) var/id = sanitize_css_class_name("[container]") diff --git a/code/modules/asset_cache/assets/patches.dm b/code/modules/asset_cache/assets/patches.dm deleted file mode 100644 index 0976bca7218..00000000000 --- a/code/modules/asset_cache/assets/patches.dm +++ /dev/null @@ -1,25 +0,0 @@ -/datum/asset/spritesheet/simple/patches - name = "patches" - assets = list( - "bandaid_1" = 'icons/ui_icons/patches/bandaid_1.png', - "bandaid_2" = 'icons/ui_icons/patches/bandaid_2.png', - "bandaid_3" = 'icons/ui_icons/patches/bandaid_3.png', - "bandaid_4" = 'icons/ui_icons/patches/bandaid_4.png', - "bandaid_blank" = 'icons/ui_icons/patches/bandaid_blank.png', - "bandaid_both" = 'icons/ui_icons/patches/bandaid_both.png', - "bandaid_brute" = 'icons/ui_icons/patches/bandaid_brute.png', - "bandaid_brute_2" = 'icons/ui_icons/patches/bandaid_brute_2.png', - "bandaid_burn" = 'icons/ui_icons/patches/bandaid_burn.png', - "bandaid_burn_2" = 'icons/ui_icons/patches/bandaid_burn_2.png', - "bandaid_clown" = 'icons/ui_icons/patches/bandaid_clown.png', - "bandaid_colonthree" = 'icons/ui_icons/patches/bandaid_colonthree.png', - "bandaid_exclaimationpoint" = 'icons/ui_icons/patches/bandaid_exclaimationpoint.png', - "bandaid_mix" = 'icons/ui_icons/patches/bandaid_mix.png', - "bandaid_monke" = 'icons/ui_icons/patches/bandaid_monke.png', - "bandaid_msic" = 'icons/ui_icons/patches/bandaid_msic.png', - "bandaid_questionmark" = 'icons/ui_icons/patches/bandaid_questionmark.png', - "bandaid_suffocation" = 'icons/ui_icons/patches/bandaid_suffocation.png', - "bandaid_suffocation_2" = 'icons/ui_icons/patches/bandaid_suffocation_2.png', - "bandaid_toxin" = 'icons/ui_icons/patches/bandaid_toxin.png', - "bandaid_toxin_2" = 'icons/ui_icons/patches/bandaid_toxin_2.png', - ) diff --git a/code/modules/asset_cache/assets/pills.dm b/code/modules/asset_cache/assets/pills.dm deleted file mode 100644 index bbc551e544d..00000000000 --- a/code/modules/asset_cache/assets/pills.dm +++ /dev/null @@ -1,26 +0,0 @@ -/datum/asset/spritesheet/simple/pills - name = "pills" - assets = list( - "pill1" = 'icons/ui_icons/pills/pill1.png', - "pill2" = 'icons/ui_icons/pills/pill2.png', - "pill3" = 'icons/ui_icons/pills/pill3.png', - "pill4" = 'icons/ui_icons/pills/pill4.png', - "pill5" = 'icons/ui_icons/pills/pill5.png', - "pill6" = 'icons/ui_icons/pills/pill6.png', - "pill7" = 'icons/ui_icons/pills/pill7.png', - "pill8" = 'icons/ui_icons/pills/pill8.png', - "pill9" = 'icons/ui_icons/pills/pill9.png', - "pill10" = 'icons/ui_icons/pills/pill10.png', - "pill11" = 'icons/ui_icons/pills/pill11.png', - "pill12" = 'icons/ui_icons/pills/pill12.png', - "pill13" = 'icons/ui_icons/pills/pill13.png', - "pill14" = 'icons/ui_icons/pills/pill14.png', - "pill15" = 'icons/ui_icons/pills/pill15.png', - "pill16" = 'icons/ui_icons/pills/pill16.png', - "pill17" = 'icons/ui_icons/pills/pill17.png', - "pill18" = 'icons/ui_icons/pills/pill18.png', - "pill19" = 'icons/ui_icons/pills/pill19.png', - "pill20" = 'icons/ui_icons/pills/pill20.png', - "pill21" = 'icons/ui_icons/pills/pill21.png', - "pill22" = 'icons/ui_icons/pills/pill22.png', - ) diff --git a/code/modules/plumbing/plumbers/bottler.dm b/code/modules/plumbing/plumbers/bottler.dm index 7ce4c2f5576..d0a33aebf4a 100644 --- a/code/modules/plumbing/plumbers/bottler.dm +++ b/code/modules/plumbing/plumbers/bottler.dm @@ -34,23 +34,24 @@ ///changes the tile array /obj/machinery/plumbing/bottler/setDir(newdir) . = ..() + var/turf/target_turf = get_turf(src) switch(dir) if(NORTH) - goodspot = get_step(get_turf(src), NORTH) - inputspot = get_step(get_turf(src), SOUTH) - badspot = get_step(get_turf(src), EAST) + goodspot = get_step(target_turf, NORTH) + inputspot = get_step(target_turf, SOUTH) + badspot = get_step(target_turf, EAST) if(SOUTH) - goodspot = get_step(get_turf(src), SOUTH) - inputspot = get_step(get_turf(src), NORTH) - badspot = get_step(get_turf(src), WEST) + goodspot = get_step(target_turf, SOUTH) + inputspot = get_step(target_turf, NORTH) + badspot = get_step(target_turf, WEST) if(WEST) - goodspot = get_step(get_turf(src), WEST) - inputspot = get_step(get_turf(src), EAST) - badspot = get_step(get_turf(src), NORTH) + goodspot = get_step(target_turf, WEST) + inputspot = get_step(target_turf, EAST) + badspot = get_step(target_turf, NORTH) if(EAST) - goodspot = get_step(get_turf(src), EAST) - inputspot = get_step(get_turf(src), WEST) - badspot = get_step(get_turf(src), SOUTH) + goodspot = get_step(target_turf, EAST) + inputspot = get_step(target_turf, WEST) + badspot = get_step(target_turf, SOUTH) //If by some miracle if( ( !valid_output_configuration ) && ( goodspot != null && inputspot != null && badspot != null ) ) @@ -63,7 +64,7 @@ if(!valid_output_configuration) to_chat(user, span_warning("A flashing notification on the screen reads: \"Output location error!\"")) return . - var/new_amount = tgui_input_number(user, "Set Amount to Fill", "Desired Amount", max_value = 100) + var/new_amount = tgui_input_number(user, "Set Amount to Fill", "Desired Amount", max_value = reagents.maximum_volume, round_value = TRUE) if(!new_amount || QDELETED(user) || QDELETED(src) || !user.can_perform_action(src, FORBID_TELEKINESIS_REACH)) return . wanted_amount = new_amount @@ -78,7 +79,7 @@ return PROCESS_KILL ///see if machine has enough to fill, is anchored down and has any inputspot objects to pick from - if(reagents.total_volume >= wanted_amount && anchored && length(inputspot.contents)) + if(reagents.total_volume + (CHEMICAL_QUANTISATION_LEVEL * 10) >= wanted_amount && anchored && length(inputspot.contents)) use_power(active_power_usage * seconds_per_tick) var/obj/AM = pick(inputspot.contents)///pick a reagent_container that could be used if((is_reagent_container(AM) && !istype(AM, /obj/item/reagent_containers/hypospray/medipen)) || istype(AM, /obj/item/ammo_casing/shotgun/dart)) diff --git a/code/modules/plumbing/plumbers/pill_press.dm b/code/modules/plumbing/plumbers/pill_press.dm index df6a627b103..262d3b68420 100644 --- a/code/modules/plumbing/plumbers/pill_press.dm +++ b/code/modules/plumbing/plumbers/pill_press.dm @@ -1,3 +1,10 @@ +///the minimum size of a pill or patch +#define MIN_VOLUME 5 +///the maximum size a pill or patch can be +#define MAX_VOLUME 50 +///max amount of pills allowed on our tile before we start storing them instead +#define MAX_FLOOR_PRODUCTS 10 + ///We take a constant input of reagents, and produce a pill once a set volume is reached /obj/machinery/plumbing/pill_press name = "chemical press" @@ -5,107 +12,104 @@ icon_state = "pill_press" active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2 - ///maximum size of a pill - var/max_pill_volume = 50 - ///maximum size of a patch - var/max_patch_volume = 40 - ///maximum size of a bottle - var/max_bottle_volume = 50 - ///current operating product (pills or patches) + /// current operating product (pills or patches) var/product = "pill" - ///the minimum size a pill or patch can be - var/min_volume = 5 - ///the maximum size a pill or patch can be - var/max_volume = 50 - ///selected size of the product + /// selected size of the product var/current_volume = 10 - ///prefix for the product name + /// prefix for the product name var/product_name = "factory" - ///the icon_state number for the pill. - var/pill_number = RANDOM_PILL_STYLE - ///list of id's and icons for the pill selection of the ui - var/list/pill_styles - /// Currently selected patch style - var/patch_style = DEFAULT_PATCH_STYLE - /// List of available patch styles for UI - var/list/patch_styles - ///list of products stored in the machine, so we dont have 610 pills on one tile + /// All packaging types wrapped up in 1 big list + var/static/list/packaging_types = null + ///The type of packaging to use + var/packaging_type + ///Category of packaging + var/packaging_category + /// list of products stored in the machine, so we dont have 610 pills on one tile var/list/stored_products = list() - ///max amount of pills allowed on our tile before we start storing them instead - var/max_floor_products = 10 - -/obj/machinery/plumbing/pill_press/examine(mob/user) - . = ..() - . += span_notice("The [name] currently has [stored_products.len] stored. There needs to be less than [max_floor_products] on the floor to continue dispensing.") /obj/machinery/plumbing/pill_press/Initialize(mapload, bolt, layer) . = ..() + if(!packaging_types) + var/datum/asset/spritesheet/simple/assets = get_asset_datum(/datum/asset/spritesheet/chemmaster) + + var/list/types = list( + CAT_PILLS = GLOB.reagent_containers[CAT_PILLS], + CAT_PATCHES = GLOB.reagent_containers[CAT_PATCHES], + "Bottles" = list(/obj/item/reagent_containers/cup/bottle), + ) + + packaging_types = list() + for(var/category in types) + var/list/packages = types[category] + + var/list/category_item = list("cat_name" = category) + for(var/obj/item/reagent_containers/container as anything in packages) + var/list/package_item = list( + "class_name" = assets.icon_class_name(sanitize_css_class_name("[container]")), + "ref" = REF(container) + ) + category_item["products"] += list(package_item) + + packaging_types += list(category_item) + + packaging_type = REF(GLOB.reagent_containers[CAT_PILLS][1]) + decode_category() + AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) +/obj/machinery/plumbing/pill_press/examine(mob/user) + . = ..() + . += span_notice("The [name] currently has [stored_products.len] stored. There needs to be less than [MAX_FLOOR_PRODUCTS] on the floor to continue dispensing.") + +/// decode product category from it's type path and returns the decoded typepath +/obj/machinery/plumbing/pill_press/proc/decode_category() + var/obj/item/reagent_containers/container = locate(packaging_type) + if(ispath(container, /obj/item/reagent_containers/pill/patch)) + packaging_category = CAT_PATCHES + else if(ispath(container, /obj/item/reagent_containers/pill)) + packaging_category = CAT_PILLS + else + packaging_category = "Bottles" + return container + /obj/machinery/plumbing/pill_press/process(seconds_per_tick) if(machine_stat & NOPOWER) return - if(reagents.total_volume >= current_volume) - if (product == "pill") - var/obj/item/reagent_containers/pill/P = new(src) - reagents.trans_to(P, current_volume) - P.name = trim("[product_name] pill") - stored_products += P - if(pill_number == RANDOM_PILL_STYLE) - P.icon_state = "pill[rand(1,21)]" + + //shift & check to account for floating point inaccuracies + if(reagents.total_volume + (CHEMICAL_QUANTISATION_LEVEL * 10) >= current_volume) + var/obj/item/reagent_containers/container = locate(packaging_type) + container = new container(src) + var/suffix + switch(packaging_category) + if(CAT_PILLS) + suffix = "Pill" + if(CAT_PATCHES) + suffix = "Patch" else - P.icon_state = "pill[pill_number]" - if(P.icon_state == "pill4") //mirrored from chem masters - P.desc = "A tablet or capsule, but not just any, a red one, one taken by the ones not scared of knowledge, freedom, uncertainty and the brutal truths of reality." - else if (product == "patch") - var/obj/item/reagent_containers/pill/patch/P = new(src) - reagents.trans_to(P, current_volume) - P.name = trim("[product_name] patch") - P.icon_state = patch_style - stored_products += P - else if (product == "bottle") - var/obj/item/reagent_containers/cup/bottle/P = new(src) - reagents.trans_to(P, current_volume) - P.name = trim("[product_name] bottle") - stored_products += P + suffix = "Bottle" + container.name = "[product_name] [suffix]" + reagents.trans_to(container, current_volume) + stored_products += container + + //dispense stored products on the floor if(stored_products.len) var/pill_amount = 0 - for(var/thing in loc) - if(!istype(thing, /obj/item/reagent_containers/cup/bottle) && !istype(thing, /obj/item/reagent_containers/pill)) - continue + for(var/obj/item/reagent_containers/thing in loc) pill_amount++ - if(pill_amount >= max_floor_products) //too much so just stop + if(pill_amount >= MAX_FLOOR_PRODUCTS) //too much so just stop break - if(pill_amount < max_floor_products && anchored) + if(pill_amount < MAX_FLOOR_PRODUCTS && anchored) var/atom/movable/AM = stored_products[1] //AM because forceMove is all we need stored_products -= AM AM.forceMove(drop_location()) use_power(active_power_usage * seconds_per_tick) -/obj/machinery/plumbing/pill_press/proc/load_styles() - //expertly copypasted from chemmasters - var/datum/asset/spritesheet/simple/assets = get_asset_datum(/datum/asset/spritesheet/simple/pills) - pill_styles = list() - for (var/x in 1 to PILL_STYLE_COUNT) - var/list/SL = list() - SL["id"] = x - SL["class_name"] = assets.icon_class_name("pill[x]") - pill_styles += list(SL) - var/datum/asset/spritesheet/simple/patches_assets = get_asset_datum(/datum/asset/spritesheet/simple/patches) - patch_styles = list() - for (var/raw_patch_style in PATCH_STYLE_LIST) - //adding class_name for use in UI - var/list/patch_style = list() - patch_style["style"] = raw_patch_style - patch_style["class_name"] = patches_assets.icon_class_name(raw_patch_style) - patch_styles += list(patch_style) - /obj/machinery/plumbing/pill_press/ui_assets(mob/user) return list( - get_asset_datum(/datum/asset/spritesheet/simple/pills), - get_asset_datum(/datum/asset/spritesheet/simple/patches), + get_asset_datum(/datum/asset/spritesheet/chemmaster) ) /obj/machinery/plumbing/pill_press/ui_interact(mob/user, datum/tgui/ui) @@ -114,45 +118,45 @@ ui = new(user, src, "ChemPress", name) ui.open() -/obj/machinery/plumbing/pill_press/ui_data(mob/user) - if(!pill_styles || !patch_styles) - load_styles() +/obj/machinery/plumbing/pill_press/ui_static_data(mob/user) var/list/data = list() - data["pill_style"] = pill_number + + data["min_volume"] = MIN_VOLUME + data["max_volume"] = MAX_VOLUME + data["packaging_types"] = packaging_types + + return data + +/obj/machinery/plumbing/pill_press/ui_data(mob/user) + var/list/data = list() + data["current_volume"] = current_volume data["product_name"] = product_name - data["pill_styles"] = pill_styles - data["product"] = product - data["min_volume"] = min_volume - data["max_volume"] = max_volume - data["patch_style"] = patch_style - data["patch_styles"] = patch_styles + data["packaging_type"] = packaging_type + data["packaging_category"] = packaging_category + return data /obj/machinery/plumbing/pill_press/ui_act(action, params) . = ..() if(.) return + . = TRUE switch(action) - if("change_pill_style") - pill_number = clamp(text2num(params["id"]), 1 , PILL_STYLE_COUNT) if("change_current_volume") - current_volume = clamp(text2num(params["volume"]), min_volume, max_volume) + current_volume = round(clamp(text2num(params["volume"]), MIN_VOLUME, MAX_VOLUME)) if("change_product_name") var/formatted_name = html_encode(params["name"]) if (length(formatted_name) > MAX_NAME_LEN) - product_name = copytext(formatted_name, 1, MAX_NAME_LEN+1) + product_name = copytext(formatted_name, 1, MAX_NAME_LEN + 1) else product_name = formatted_name if("change_product") - product = params["product"] - if (product == "pill") - max_volume = max_pill_volume - else if (product == "patch") - max_volume = max_patch_volume - else if (product == "bottle") - max_volume = max_bottle_volume - current_volume = clamp(current_volume, min_volume, max_volume) - if("change_patch_style") - patch_style = params["patch_style"] + packaging_type = params["ref"] + var/obj/item/reagent_containers/container = decode_category() + current_volume = clamp(current_volume, MIN_VOLUME, initial(container.volume)) + +#undef MIN_VOLUME +#undef MAX_VOLUME +#undef MAX_FLOOR_PRODUCTS diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 464df7bf363..6955cede78d 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -2,48 +2,6 @@ #define TRANSFER_MODE_MOVE 1 #define TARGET_BEAKER "beaker" #define TARGET_BUFFER "buffer" -#define CAT_CONDIMENTS "condiments" -#define CAT_TUBES "tubes" -#define CAT_PILLS "pills" -#define CAT_PATCHES "patches" - -/// List of containers the Chem Master machine can print -GLOBAL_LIST_INIT(chem_master_containers, list( - CAT_CONDIMENTS = list( - /obj/item/reagent_containers/cup/bottle, - /obj/item/reagent_containers/condiment/flour, - /obj/item/reagent_containers/condiment/sugar, - /obj/item/reagent_containers/condiment/rice, - /obj/item/reagent_containers/condiment/cornmeal, - /obj/item/reagent_containers/condiment/milk, - /obj/item/reagent_containers/condiment/soymilk, - /obj/item/reagent_containers/condiment/yoghurt, - /obj/item/reagent_containers/condiment/saltshaker, - /obj/item/reagent_containers/condiment/peppermill, - /obj/item/reagent_containers/condiment/soysauce, - /obj/item/reagent_containers/condiment/bbqsauce, - /obj/item/reagent_containers/condiment/enzyme, - /obj/item/reagent_containers/condiment/hotsauce, - /obj/item/reagent_containers/condiment/coldsauce, - /obj/item/reagent_containers/condiment/mayonnaise, - /obj/item/reagent_containers/condiment/ketchup, - /obj/item/reagent_containers/condiment/olive_oil, - /obj/item/reagent_containers/condiment/vegetable_oil, - /obj/item/reagent_containers/condiment/peanut_butter, - /obj/item/reagent_containers/condiment/cherryjelly, - /obj/item/reagent_containers/condiment/honey, - /obj/item/reagent_containers/condiment/pack, - ), - CAT_TUBES = list( - /obj/item/reagent_containers/cup/tube - ), - CAT_PILLS = typecacheof(list( - /obj/item/reagent_containers/pill/style - )), - CAT_PATCHES = typecacheof(list( - /obj/item/reagent_containers/pill/patch/style - )) -)) /obj/machinery/chem_master name = "ChemMaster 3000" @@ -59,7 +17,7 @@ GLOBAL_LIST_INIT(chem_master_containers, list( /// Icons for different percentages of buffer reagents var/fill_icon = 'icons/obj/medical/reagent_fillings.dmi' var/fill_icon_state = "chemmaster" - var/list/fill_icon_thresholds = list(10,20,30,40,50,60,70,80,90,100) + var/static/list/fill_icon_thresholds = list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) /// Inserted reagent container var/obj/item/reagent_containers/beaker /// Whether separated reagents should be moved back to container or destroyed. @@ -213,9 +171,9 @@ GLOBAL_LIST_INIT(chem_master_containers, list( /obj/machinery/chem_master/proc/load_printable_containers() printable_containers = list( - CAT_TUBES = GLOB.chem_master_containers[CAT_TUBES], - CAT_PILLS = GLOB.chem_master_containers[CAT_PILLS], - CAT_PATCHES = GLOB.chem_master_containers[CAT_PATCHES], + CAT_TUBES = GLOB.reagent_containers[CAT_TUBES], + CAT_PILLS = GLOB.reagent_containers[CAT_PILLS], + CAT_PATCHES = GLOB.reagent_containers[CAT_PATCHES], ) /obj/machinery/chem_master/ui_assets(mob/user) @@ -489,14 +447,10 @@ GLOBAL_LIST_INIT(chem_master_containers, list( /obj/machinery/chem_master/condimaster/load_printable_containers() printable_containers = list( - CAT_CONDIMENTS = GLOB.chem_master_containers[CAT_CONDIMENTS], + CAT_CONDIMENTS = GLOB.reagent_containers[CAT_CONDIMENTS], ) #undef TRANSFER_MODE_DESTROY #undef TRANSFER_MODE_MOVE #undef TARGET_BEAKER #undef TARGET_BUFFER -#undef CAT_CONDIMENTS -#undef CAT_TUBES -#undef CAT_PILLS -#undef CAT_PATCHES diff --git a/icons/ui_icons/patches/bandaid_1.png b/icons/ui_icons/patches/bandaid_1.png deleted file mode 100644 index f752da706a92ca9f7d34cba1e6d0e9fa4df9abfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1703 zcmV;Y23YxtP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1t5Awi>EI%de>FIggBs006 zV@?}efF!Df`{8P{AOUcDDnAv#?DqV+t=>2R3KHuy{VV2oF_~KoQ2M^iYEAR zbk*KETEiA67+YX-pv{na%0SyvNh@ixv`;_Ngo`EbEa-EdK-p!DB={7ugXNVlGbboZSn;8S&xGG;4@G7kx+%r>zzTk4k7>B!%=sO& zKuEG1Q$F~f7M|iJJ`qb`kPpla8`L;16@$}jY|-JFFppyi@j4nw)~x^#!8XI0L|`D+ zM4W1hlCz`)92@vic%G@`0R|FtUMU#3A*vv!Ww(trlFr=B`4S_wfC#2a0%|%b$SQ>q zKT;ZENSU|E^h(%shBu^*ooPn`i5*Qa} z00Etyv)EE8*_m_BV)q2b8LTCCa#nK2z+l-av!w@jugv`;Z-L8~c+0p^Vp@BG=FUB_32A}h~HfJqv%J`_Y{rU)Z=zF zMe1IijmMgsv@`V`5b~TDSq}BGj6KpWI7y8SBYN)5BUL%&eZqaS4 z2ObKwFge!1YQ_wFR-#QsVt_f=>=QKVcs6%!{!rLI z>b}y4j|0-vi%agGC%F}O)s$d+Rh`{8TWe>e!oAdV>7<~8kwzG4XU#E?<+56j8<5iM zw6V&8F!t4bAGAhA?x_S0Sb&|ZY(imL)_ss>xFSeWT=rT8Yxfuo=)Er}DOP2RX=*!} zwhM|aeO+4#Uk2kBScCyMT3g~hl4jcK@&WX*Nw`#W2)-9~Ay0i{o{cvM@OVNDU&PD7 z#^)P~BR%hfcid!q+BB!QPBP$nlIS$j&qFqR<4{=6cQ_^;z{wC(J0P-nZ;9Ed9L}T+ zI^5-Y$Xff5Ge8cgiYE@+I&tV}-pSM5DD;Wifak-xZya@b_+O^EoD^GP<|0%PJLLlb zpiNAMMVGY90)s2)ag_Z#Vq#fG(b=u8CR;C7q;LEqI&7o5|FRGNHsR|1D4&y^J>Ev= z+|7?*?3Vjj+)=Vu@^EC-&plCO@v^!eSWTuy05NMFkewb>KKvF0C-MQKj;?}As|S+| zU88ImT82+Kq?C>nbPoD`;OSKbeT<0kThb#;hTEP~sEN%JpPyf(7^W?wo_$A(~P5 z{{{lhQsoT-{wn|g00v@9M??VD0L%c)^^wpy00007bV*G`2j>L?5h)h1wnF&;008Sr zL_t(YOJn>G1PnmXksA)8CY5q z?}-M}qME8;`tbE{U>XK!=3=Y{UlM85OFu`<;D^Gc2r002ovPDHLkV1n_?8(RPX diff --git a/icons/ui_icons/patches/bandaid_2.png b/icons/ui_icons/patches/bandaid_2.png deleted file mode 100644 index 50ad473ba5d1f8b9391d72fb639f6350bc3bd9aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1718 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 LNkvXXu0mjfDS=G# diff --git a/icons/ui_icons/patches/bandaid_brute.png b/icons/ui_icons/patches/bandaid_brute.png deleted file mode 100644 index bf6350f6ced976847d5e17e6c3714660466074a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1728 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 U(Eqx&`~Uy|07*qoM6N<$f+%1~&j0`b diff --git a/icons/ui_icons/patches/bandaid_clown.png b/icons/ui_icons/patches/bandaid_clown.png deleted file mode 100644 index 0912ee04eac492df7f10fb820f17fe365cd651fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1904 zcmV-$2aouPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1*&>fSaechcOYv7X=a$#)mt-?WEEM@CaY zS+3W%Z+k&IJqK{T+x2aG;CcJ$x1+n`#bNQ8eYV@K-;PSY+SC0W#yw8ztL5BZoB4E; zUS03sD+7#0@Ko+el;XwHvV(wTRh`DW^vc_mop1ZN2&K0M*G#;-gNM`oV7DaHQ43UOu6X@ud- z`7f+MNU|GKI{2O^yvm#Sir4}M>A>8vK#6*}P)g6-Du?F+JBl^LYilH4w*x?gxe39f z0tRABg;GnAbLNzQV+TKi$aAS#!9XI)D+L2Lr8JP!v(Jq&oQ`d#d^JN_Km?Um7}Sg+ zAgfkF{&4NcA)!Jw5K$whPJ^VCRvWd}xVc6N7p_d)n7Q*{>800By>;%rk1ivR0tuth z28Yqd7$TTd;94+RU?HMei&iCV%G!0POr+1OlV+Pd`y5kNUS(nXueLa>zQ&TBHd1NV zO}lO0eUB}MT(e@;$eOWr8zv9dZdTv2mfkV5SkkHvVi#^qvojK<$4i_-WU@ei8vyw9g2J23lEIqh;GWS#70@dH*E&qtQ;MDyW z%mt_JX6_?zpRl&%oG9fG#o(fd$o(7Prp@$_{D+Wj=mjz&5_P7 zp0}$DqbOx29dOlR6ptcNc5h$3|;qH;$&waGut7^;jCR zS+=baNCj>&r7p#2f(5RXc&0!YFdgO`6O$M%IZ^52rc+_(Vd)7=B(TS29#%zUbGPo5 zN`9&Poicpv;E`TJ^7vfjR@_Ze!rZIL9Egk&-1bfns-h!on`I{(0#NpFnaeH&5^ZSS zi~C$G_(meAOj|ybGek_6`QmtrbkiC(Ly;g{8}bP$RA^Pkg$J@G3^<9!!LgiA$+%$Q z2q@4g+>8MJsu!yk3XqORk8l9(D=c;5P+G0b zh0D3^DGIsAwBCvnfI;M)a6B?jBv1-!kuc#@a9F)!0|>mL;}_WozeLMxHe?d(-fBoQ ztZB?BowbFH(=Y9bL`w>bbkeUGE@OsmvTRIo=&odIXN zA=i0jW8gZ)M)X||sVp#p-BR9&oMK(jYQ%Sja;cjY2EAv=MFy;JgW5){u)g zo)#zayCJ`aoO0STZUES$1*lmD*N}&UMusnBqhp9YLJ-Y?J#wV%mbCJ8Q6@Ia#jJ*D zMgEHeAUuWL=j+&0l8#)N%N4|n3U&^zOvqj^cfzjh^dW%{f#;S}f?*Sk0T6u)dH#Pe zil3Xjq`}=C{@F#pK)0(iotF*al1Q00006VoOIv z0M-D^0L=A~&^Z7A00(qQO+^Ri1p^T*5mTij9{>OWDoI2^R7gu>{0{^SK+usJ4x%Uq z6_ZzjX(lj91Hjmx69#rM4A^RNf$7)RZ-Z&WlBHl89h~op2GgRNs$lx?^>1Jr259DD zxWOQog7CXY6JKOL*2&j8af zm!SigPwvdj0Mjr)^K=Y%F)W|M%89=ZUxH~ur5m%nIG7gV;sevLQjTUWh8qmB34}p5 q!)zx8z|_O^!vO8Vc!;OB+M`X0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1&(@DSaechcOYeKxm+TG8}({%2ik9?ZB zUrq1divocs#xX@A32wyJ&Yky@et~ zxeeqUMt6PU&#^lQJ&!28Mt;*!)y#r646)>u6=lvN)2XYZx#dBdg0ipVS*g(s zRKe2#YlQ0j7)v^F+le<)MdX=anG>8P^!RXv&nkcCdN^|5(oHGW2UZwY-kQcRHgo$9 zD-e?W#*`1f=L%1{iBH557~}(U#RM((%SGq(sx3M^6YLnPKVC~C>AW2PBE)74CJ`8j zl8BR}s5xs&z_EfK!^kt0+`&L%&NBrEH$(z*YTmKYN7J#*oUdx677)Q$A_{668OSPy zp&u<38Zss>ftiJsD>pVFDZ(P6vU8LvX;D^D)v8UcQZ1FMRIRnPYArWH3gaeCL#wSd zGXyobHuN@FnDyMLm(E?f_S##w0r`wFc*xLEM;kWtq>1G}WonppwrMLZNNJVDOO~#> z+A@dMoV+-@xO(;G_F(O1^(|}Z9dkctE#0hb#>%nNSJqIi`r;z(bi$i6FqTUKKN~%x%tM+X;*_SWCRgnQ1cy2FpsBJw3R4W$vfE1ukFWE&qtQu&MhK%!N(e z&D=-cK4ERz*-_{av{&KAG?F8+!PIiK+*c{Cbw5_y`_q@o5P!4dx1(=IzvrlrYFoFn z8dCRc?A+&AWR0n<0LgP=WI61YrLUe=!Ah#^XkXP_*6tf!Xo*Je;@D4%TrHlOEw$yd z1?~p72-#;xZ-xbqmAHl>F(4dbwt*nd)6S^+ROzF`ZV#)UVVMQpO_&PXGSv@=KV$a2}d$?7wo zmNq-~#L@_Kz5}9O^|<1T@pmL;SkG}u6vs%aNUH!0cMHW9 zzyMcugM%RMIago1jvUEdynAohRd(++XhD`K*_IV7uQDo5Bj_Ny)Inv(7_453TEOxv zQVKscI4odR*u&=5lupb}cxLbiT(EE^b|HbnEnx4!nki5`H`COBmkt}s3n$zJ60uuR z!=45(bozzRK?dvUp|sXRcBpOjHs*2$A`7mTFX;emt7~+H04DZQoYDKxT^97fn0-1R z!T!7@7BsJ!wlqPbVm~JR)ex;TY;%5$WJsu=m2PnqCnO>Hi@7%ZnDS7X+pQ zoR19b#97MR2aB;-@&Bvm2Bd~dkZZf1PWWGNGL?&5C3$)lN0mrePJk4LPqU2(V&OnU zhy;vqln~CV#5Won&rYI8pXCxX0xtZcIWO_44DTy`v3v=bu|O(ATmjT>c_F73Z%9*n z6_%3=kjc}gF~$dx!=X9kZlDPGcKUi)gxiEZwRn;O{m{i_5^jqxWS-B<@YN3Aj=mlJ z8An*n`xx^tR9J}weSHZC00006VoOIv0M-D^0L=A~&^Z7A00(qQO+^Ri1p^T-2bD+k z%m4rY_DMuRR7gu>{0{^SK+usJ4x%Uq6_ZzjX(lj91Hjmx69#rM4A^RNf$7)RZ-Z&W zlBHl89h~op2GgRNs$lx?^>1Jr259DDxWOQog7CXJiN^wKdbpTo+DzYkx6 zX+otNv%EN%7UJRq)38#G_NfA769|KBhS^RGfT@S+hXLA!@er%?7#IK#262X}j&DN% O0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1z&npSaechcOYc5Am>yA@Hs#?$>f^n0C_7u&f%HuIV0 zaZSDbT?Ak(hCa$6Z%P#LUEB)!he*-$`G#T4`$$1kyvh66g~#g~@E&h(u#0++(`zU~ zthYdYgV8;n_X)EUqf`GHoSys^m zAI7_!*3lZaIKkKgn*(iz)Kdo9mP%Sllcjz7nI>E;d1pbN^UQR{8cFVXl2hRDmt7*d5 z6h{0=X^0_Z;u4s-vT)J8o>U}HC+wVov0M@u z7iRzgot?ATQYqP)bIxM-1cu}fFWJdi$r%HKWv9%R9^5@M_gmfqmv8ZwKVmL8b^ir( z!Ku5M`<1tMSX+833LS#{6gsAn42cb*nw#daOEGEw+SKdQxB3wOaN&=lA4PwrXw0S_ zx2q{q_v&ms*4(6>sqcW0=fuczsF!8zk#@mJYHXO_O|5QU8?Dl=5^YpNJuUT`vD9^o zZd*O@P^g8;u?AK%Byg=nn~KB$bFkSbj2JIHUX3Mn%mF!fYaF*!gScPjZWVYocWwSs z*e`Y8>BFxR($kYm?w=>Q6?fH?V0%@a-8WlnXQaZt)O6{jpo5V{7-?tCF_7i5TCaPo zd}jI@sEKnRqZr^IfeP$K*<=_1nzAY}t{{Q;ASBHtuDveTE(BY)X9Z+?OWzE5HWDrp zRNg1)t>Ii;XkDm1i72*MlQ`A^;z5qSMtQ4I{N;c;M=;fKe)( zt2^Kh%9a=MEi(9dL9HCPx)teBY{IcFTYdVFfy!jmJQUni^q4w343EG_QxI23%)5!M zhQ$|+zzDWabf5%&*oV&quHNIF_gcL1PpE=@6NXuFu6JaFW*CCtY*wr9ccZR=MFgwU zwwyMdHQ}ttNLNuhPEM>sHB>{nLWM)=vCy$09J8_ZU|lO4tWE5dHfr2quhK-NTFIlu zck28yuG!l___+k)u*EX=e%*4#(>ae+} z%q?+dnOco2q8#;pZWjD48oA@BOvmu-a~a{be)5Npot|)$@=ANVzFUp77l1U}2~`~x z7{fhML#XH=-(T5Kvo-88Bb7L`Fe88yS zA0Sd(NAl>1EO2-nU&%PQV-F^$;WQzo0!HBHSp_1mBg zA4NZk{wGB^&VIZ27oiny;m#mu+W-In24YJ`L;%(R%mB>wk@bzzC8U|?QVz|K|mxA!SZ=b-JSO8NG(+>l*4`U66 zr(gjXP)VNwWkJA6U0pD3e)%$(hJiaXGoUO8xWOO|rfKiu$dWFw01SNo{29uE09-ES z<>iI4AYge<8JMPhs-QL)c!NPPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1(AAGSaechcOYz3@{eKUdbWvl1jw8`YgqtQWQCzHzr2A*Hq++hd#$HJc>`?JxWj5MZN3GdniI| zcZc?b(OsYDbLcz~ z9Xw62R#2TEzN9m+ocU(zn0Y1i%n8O4Mtn%&v&yfehaoc$-IQW~UxW1qP$Wta8pVHIX(N_7{lrG&6KZdNDGLd(h7qbDGIV` zCBzTcju=uZR09z;V(KKMt+d*xwZ_dgO1W@l;>OIKg|(MnJN4GN_by!}OM!%uG~pm! zL{u@U!n9(vqKE3pql`Lew85hf89EU@vrd|A^6XQluDr^^_FrvrSbfRToi;*g*G;=^ z-hInfL#$b`YGlpWx{2w7wVT!VtfeRBe#~0BS#!qf>Bq0Ep_=){L~=PH=M0SHn!q?a z0|@BsoW-7M&CZ;27R3dOGFVIG@s|IKx!~0OAIt@( z?q=>IZ=bNX^qeT=5aheiF^$C_Z0M@FYaY8+)0dhik;NS(7wA`+dej0E4y*D(G2HlZC8sW(apMT zNuZ%Hiz&w%7)|JbYbDZD2m_|WoH8+q(bD79Slq@O=;v;YW0!oAdV=`2A9K}HC&v!<1P>A-^5HR@cD z8!Ul!wn4yYG^kE1eIzEoBjqhTWU~;5HlR*eyN(X@2NTQyzIFUUUM2%dXwmMlz*{fJ z8N=&^2SgvQ@KX3n?hMmji*|-)djZ-8{{{7JyBIGV*LZjp+`H1A=+24Y@+lUKi?$)N zy7uP5JxvaN;o<@A0h&pK&$it4IX12cmgMee%&}fk>Zw=xPLEavI zb4Y(d!<~8y6yqR*3pUOCK38E8lpS8ckb3lo|6`v;%Q@Vkp48W2Sl~v`5|$pbN6GLY zfmc;Wp?w})WO4B5vNaLb)9=Y?x3GYQpGRY%i_L**03h=KCAdT3kX)k{oMjbPT=esk zu3K%2vr2m#xCCn(pdXRxJBG&g;M$uOz?yIhz5>}@9sh%Ahk2UZNynbqj^i-e-Syxc z9_M{iVy!3dZ=#TY5QT5@@UhawEGXvKqu`7oKw)_hgRIFkZ50>5l000JJOGiWi)&R@^%=MAbIRF3v2XskIMF-~v0}&|@ zS=Hyv0003GNkl26izF*lKct>DSk9 zgK5K(rC=HzobQPS)1sQHVEXX&Z(te*XzyZ}OW%F_1g8H!d+W@dnC7`VY84W?=D;>eON zut5Hd3t*Z7lDrvOVpPC1%;hkb{@R=grh!I)N#Ur)V0w8^8JMP-iwPQBv*ZpKgIo&2 zAeSOsiyI7_i$P%w!Zi=3fiau!bTB3aXrC%@rDKpQv4IwaEHFKA=@?g8vA{zQOrwK@ q9hboLz?Bs+F!;;kAy(%xFaQ7-igs#dDjrJ!0000}hHM diff --git a/icons/ui_icons/patches/bandaid_monke.png b/icons/ui_icons/patches/bandaid_monke.png deleted file mode 100644 index d1083aa932fd3558428bbf5430a768830eeb70f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1858 zcmV-I2fg@-P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1%G-}SaechcOY?d@^fEMYPpk>w!<{rDwxKJFd?)(^1af^ONr_yuVvdkBy8a z#?04i^_$+XF0Ti)-0S20deV9GX*Z*LxH024vBKpA2n za8zQUN{8mGM6hE6J_gM*mpp&~iR49T0~_WFa9R%8IHPpZX35twQp*`2l@-u*Hh@)% zz<;zf_>c)pNg`53rAZg7TuYT&tJcU-rbt*ST2-}aS8Lo#lUAFy)_Sv^J0pcjuU%7b zy>~MRHLy0EHc*(2Jb08LqYfQy^kEb3Gs~1&r_MI}w3Qbxg#W5b(`u_Pb8@(n7Z))tS=qCS0TPRBP7{xJGs^gTvnHVeO9 z&5*iRmn~yWXY0b<6I@%kV*75J^oo_PyDz9%qkT*{dFV)Qx&t>b0|}o2&U= zJ;^Yzg~+i6P75f|R$@#;Vt_cv>=Qz^EIYLtOY4{ebfMNb)iO&OdhJlFK(pz!#Y2&3 z>b^3kj~m+QMWxU$lH5AH8WCi#YO{xCC0lKaHZlwnNJV0+xS;km_mH@GGmF!sx6KMG zz%t8*pve%=5Tv}+#Btb`O)W4V*l$bVfD~(f8e5PBm2C+R71&r~Jru;uQy~&b$y?^0ZOP?0Dd?_YoehunIksaKygL|s@^NZ5P~8# zI<|p8#3d@57lr+2_|Jr6;%Wxe3gQt>YwjyfxG6;?Gu(GBh(}edYXlCc-BKpH;r;Am zN;Pp{HN)I!{y3dB#cG(H7{%_3bR|Fifj^PrlHKSK>bP?z(U06}k>p+!vg*kfa zEB zU-c~${TO9eu%thXG6=l{CIGVtcHZb=yzA(F71O!vD&al>PiWqv6M;vmB0x6&GwBxH z%x4~twk z@bzzC8U|?QVz|K|mxA!SZ=b-JSO8NG(+>l*4`U66r(gjXD4%i^%EAvibF85(2)Mx@ z4W?=D;>eONuz;(A0+{xKIwT+qd-~om4U%5BK|Qwn!2>Y8yr&FI)6B&zP#Ob-KIohWR wkWC;AvKeMOF#x6>rXL1q7sf-Z&SPKz0CqikfGV4>P5=M^07*qoM6N<$f)FfK;Q#;t diff --git a/icons/ui_icons/patches/bandaid_msic.png b/icons/ui_icons/patches/bandaid_msic.png deleted file mode 100644 index ab7860c080c644755c4ef652ed42da29f3fd98ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1819 zcmV+$2juvPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1(14FSaechcOYwi>EI%c>$K!e2o6IDi z<34UM2qCH@A&33fpBDbWCzqH*VQID38u2N;^sMN#czv!m#d6-~lkX|~els2(6B$E< zmad<5-|~uaeqA8t9v^SVgUnk`yA|CNFAB+b_T6r|b}OQMji>u}==VA;Psh2xHuIV0 zaZSDdT?Ak(hCa$6Z%P#LF1`!-mq^j_d1GVD`$)l~m~Ee97arYr;5~Zpu#0++(_1J) zthYdYhtWNr_;c(ILeCbZ*PY)?l=*OikJ#C2X8SswmI|b5xDWMml+%MC;4E~ORXl<( zqc7*_cp8p4!Po+u1J4Yprwp_$m9&y3OZ&7lO_*5n&Vn}Qndyu*lHBtor@-Ma$+A$V z6{vxU3DyY1`C&^s`}VWnObt7)1j(GBEMdimCww;eo#&y*%w0F7*dAEHuIxSyGn_ep zLkff>yD{a1?|H(L-^3?k2@LXqx#55s$E9L$di5(RH0h2S|Oo2@}N-$k2++u(T7gB&n%N?oif|(Q&(QJ5dNz!39GHXbf*nh+GX>u zTXx%htHIZdtQcE0v1Z-$!P?F0Th`J$=6=swx><9^%8`>-)-Wvcq9S=ZVdo5t<&wa- zI0JC#?3~4xO3BWga~8WNFwS5tv6HisGX@6BPMIw|xO-*px4Z=|U*awQin-v_{U6K) zr|xF%BX6Iuw)EU6bO`b&bW9@|5*tJ{H_c<0V$!_Z)bFP+wIP0U;g6ypMc-32W>fdu z)fB0Fbv7PrZqm-wcYw=tVq`homu2jcc0nXHHq7s)R=2N>R%us>Hmc!1E%lnQ)OCw) zTRrelsKu6J4XkEJpsd6*6^Q}cVb4CXiSg27)mT!;9FTLf#xYAZh}&guR)J-6*XEtV zUetZ14Id|@rx%mlK2LHh?y4za?^ShnScbIIVDeZBsA$a@kSm7iLcSPQVJ9YJSnq}e zm)NMU#2e|T02?+e8n!#K$}Ynzj^uLE<_dx;goPF|Ak;`1sA>u|_9SJv;{{4ii?y+@ z&46kn`KnRg;^+uaXMshSv7ApUD8vTAI@C{~XqAh5BhV2~(n7uVc^l$C2s~Okgbf`a z|Fp=V4M)ZBTKEewwvZa?-qRV{;WLU;Y_l%saCQ58uL-cc=j?K7C?iof!#l)~*Lwis zNYgyvrW?6AGX&gs%S>hmb>0%rPzFICX6wgW%Hf&KW<=&%7-H-V+W zaPX^*n`}>m4me<)WPBZVOe1{_pzt3<_R!?P5>nFPhlk5=_&x6}F>Bg@bLo^p4332t zTHMSMA+`jUA5JS4^@_qJ9Dqd^Hy2K(7dqS~fR1(7 zmjMgan~OR^ab}rXjo|`bRKQ^bJ_OIu!P9DW&psYQ_)l=MlnKau zBa*QfiXp;ICa5Ap<-ALL6LIrdNwj|#bN@cpUfY)q^T2NwLmpYE*x(+DL<%0Y!<~^+ zj^*n;j}t5!@-|TP3^jo2vjj>%oc=S3hlXDXJZ%Dj0Evq-=^Ov)k1L=){c;<=yYNTR zkD~7@LNt2`^EZSOlmT|Kt%U#p00v@9M??VD0L%c)^^wpy00007bV*G`2j>L?5iA{A z6K^yC008evL_t(YOJn>G1PnmXksA)8CY5q?}-M}qME8;`tbE{U>XK!=3=ii#!@$D_^PnsU zSl&|xrfHulZ~>4@VXg%MbUrRHa4rUgDRQ`?^Kk*%r;4GMj$!#6R!;nV_!3MLD&3gn z#lf@?7ay30m2$LC6(E~H7-Tcdc47cbJxo6g&@POJSe?hf007;;Wrok>z&ro|002ov JPDHLkV1nm`OC10J diff --git a/icons/ui_icons/patches/bandaid_questionmark.png b/icons/ui_icons/patches/bandaid_questionmark.png deleted file mode 100644 index 99382b208aec3a3653b85173b24789e664880c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1765 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1yOobSaechcOYwi>EI%c>$K!eACNnpm zV~$NX2uV~)0*C$ApBDbWC*_(#VQID38u2N;^rU!b@%mgn#d3bnC*4zce={B)6A42Z zeZF4nzU39;{JKEOJwD!!2bs5?b}PCkUKD1x?AC6%b}P#18mId`^n0C_r|sNdo9RsR zxTfB}7XcWHp)aS9cBUNhTii|(HefmigE|#>DpigP0e8yUq)YHsPfx}WQS5+&0z-9ofX`8b)aW5u9rlP}8%5tWp^9 zBc&mRlrxvW%$0>3ch;I~sa$K7>NQFwOA(eTB2Btz%dIqSwMlEOH|?oslrZkKOX#il zt_q_H)r!>$3DuEC9%b;TLq;2Y=tTI;GI`c1v&}wrrIi=bf7K;nwbhqy+6bjxHt)J+ zx81iIV$HG@W2+|CteZYqyIFn98ogug*R0Xanlo08oV>DzVUZUV%j?!Lli_(Sy5J=6=ar;PNHj(myd5oVx#mx!}~@ z%zfnT6V{fV6D1#lJPRGum<@#uqMDkfu}d*&{@B#dr!Vy(eskfEq8~-yQ#58%kK5H0 zrF(TY9&7Hbopav-Apot`coj!+BcjHDlCui*8#z z@KC6Q$*~4jGbC`WM4O7j0CTX}CyW>`Jzk9^b<6=dcWWHCRD-x*=57^uHg|3QP}nbZ zU+Kfg3F-9WlKbaHZpB@d2)0+%*?qIMc19`OOHG%~9CR?s2&3$*IRI&E+H>1>80H~~FlBXrz2YrTng2KgRuZ1pNpqmG8p0wApu~=qO@<**CL#9Hal2?2)bXvFjXuxdkveoB>U9F0y@!pov4K9L zHW`4RB5&q$WDr6gK|>U~1?Psds?C!^0Y~D(Y4bo%RTs`5>^tuM3*2Pkgnb~vD|r4? z&%tbP#@4baxQo+n5Y0B$6^5|-2C}#zKW!SqvCeErk?TyGmi4zvQg|M)goxHXa4UcZ zQ<3sWero8-+MZ-MfdL*4W$YanzB)S4yOI|8;=d^38g~JH$t!^2mF`s&T6+z8T zUyKg|yCERvbOfC|Q2b5;Tj%hJ#Pj^WDuBS@D!k;%@21NClxshVeiZ$unr!Abj=upn zyqi)|j+?Up000JJOGiWi)&R@^%=MAbIRF3v2XskIMF-~v0}(7X_OF(70002^Nkl26izF*lKct>DSk9gK5K(rC=HzobQPS z)1sQHVEXX&Z(te*Xy#(L!627{@VjrHz?fJ7QxDS*1GEog4Th&+0T@t8p8=*%>gs}N z7%;zl8OnlyJ2Nw&EC{&4APuHz@8ZakF0cR$eE$3y%0dM&AHZDB%gYOXC(}YSlW_fWi zEyTqKreUQV?NbHFCJ+YM46~gW08AO00000NkvXX Hu0mjf>H#q% diff --git a/icons/ui_icons/patches/bandaid_suffocation.png b/icons/ui_icons/patches/bandaid_suffocation.png deleted file mode 100644 index 802baa07a8de386806de4d558afa8549ed36aa6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1799 zcmV+i2l)7jP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1#Ws&SaechcOYP&Kff-Ja`%tt{vh*~({4fcz>C1_nqAvHuib)jy87vU5B*-J<&8V{-)1_) zJg%Yl??nK{V#v!Wq@5{8Jd10|{?A!a^Laus#=WQDO)*+N$1XgY@4$Ps-eDK@?$6Iq zgjnwh^&LicKk?_-9faOmM6a5k253Ek;3Iann%Ta*(^7#{4YyM-uACMo0?v}pvWg=3 zGum=WM`>_zg0TfQ2g(f8DFJPxLW`7)_NgaLm{`(If;y#{^66_?Qcp8G1;qcoR4A4Y3&v@`1U*L5<@QF_>OsD<7US=5Z_`UR#4?-2wm+bTf>h3PBh-5u9rlP}8%5tWp^9 zBc&mRlrxvW%$0>3ch;I~sa$K7>N!d!OA(eTB2Btz%dIqSwMlEOH|?osq%iKaOX#il zt_r0J(TdfI8LA_VJj&ovhm1D*(24MwW%8_3W}AKLN-HmH|5cZS)mC4+X(N<&*}UtP z-FDwToec-&&?XgEY%=xm$_L5md#z8Hwycu z?sw|&aX>n~nB?|(l3Q_CC4%l%b#^42!POegXscQuYmdOXR2Ml2*8G^*yY&o)QTgqeP7|w1!OpfaUZ}PuVNR>b&)*4a7Do2HnM{Q z=?!@@-M|INimZUk2J(sE3yQj7C(UWV&c{p6- zG5&PMrvlz@kkrB-Z;)?6--7-ZK^fuPV+{WR`j(e{{0{^SK+usJ4x%Uq6_ZzjX(lj9 z1Hjmx69#rM4A^RNf$7)RZ-Z&WlBHl89h~op2GgRNs$lx?^>1Jr259DDxWOQog7CX< zpTL+{08E%Ov3=Wz8gJdV4C)+0v7@$+pqYzt zrsKI>sOgxQ5z0UVbWg`{7sK*7tep7!@FkcgRJt+Ci-Tz)EdYFC~pj{Xbu{w`|0RZ}1XRYd* diff --git a/icons/ui_icons/patches/bandaid_suffocation_2.png b/icons/ui_icons/patches/bandaid_suffocation_2.png deleted file mode 100644 index 20d4223ecd7f85ac71c800a2eab216755013e769..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1786 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1!j6wSaechcOYS6} zL+{^30LEh2%PFLtDM$Pk_mcfDXGPEF7mhLRl7i-vFR%;u*EjI)Z*SN|z2x~7iV*9i zP~R}R!K0-FPE2I`c6wo#!)N=EzilO{qeX(vIS(oFftT9(w)%ua#BU&xZ=o>#~X zJWa5cAx`&L==kl&-=qf5i=deZ#t1WhY2h>BPuks(nWrvMYSMr=j7|xvkLJNeD zU6}I0_q6boH}Q$s301y+7MpSse@3)_FyC1JJImu}ifrCm1fx@EWB zw;FQIvK3>iCf2N*-dVd?ePxZ_nEO3zbg|})m7^yQ)*u%7FhO2U*f|4ZsSp?!X8;ME zoU_=dl;q4gXR&($;{?`-ot#C^7#J*@5*yvQdocG~-U63z@s_?~E;x1n2Xn!xyO{fx zw@+AGdQOyl2=ZO%n8s`u(~N%PmHULwEMhxo&Ze+>OG^fNh`(OYTi|%jcPbgOTCR4b={)dRu4QB zX5n(If!PcVTr1J0qAlmX^}#1@|$W7#Xv0kpfq%+>*dDc!{Ta;o|nvhj+n$_xUh4 zbRY{(k7C*^u*=u-e8Zh!A(Kuojw9lht-y@d;32803MUWY^PaeO>27+L+g;?TakvM>7ZvSghsWA9-j?JlFws7*%QIFD%0#aP3} z7Gq4vbKuxoHFrO-bOr1woIjPDfMO*6LZY0|J4meh=uzyT!ylDUv> zNsz<9U~k*mUrfaikIAs;8TFPTnM%Vzr*6LYW4DAI?Gd;rF6@RHlfXAN z?HF*9U~7~OKMT-tFJbhUZWZRLH2Gm7&uo077pAlRu8M~5)#nd)p6UvUyx^izOe7@k zNLxH5kio?J#9dGrP8JV4*^J9aHXYVGFf1q0>0KvGC;Bs;o5q*J&u&~LSZ}u~yQQ!A zvoh;_`02zyhW;4(xgn&q-#q>WwMcx))!wdL00006VoOIv0M-D^0L=A~&^Z7A00(qQ zO+^Ri1p^T*0@oX2!2kdN_(?=TR7gu>{0{^SK+usJ4x%Uq6_ZzjX(lj91Hjmx69#rM z4A^RNf$7)RZ-Z&WlBHl89h~op2GgRNs$lx?^>1Jr259DDxWOQog7CX3G@;UsSza7W3vuy*X;>*oGZ(`R2H6C{Ae&*f69ZuCVftZ!c40ik c>O2Mp07-&qzCeIj0000007*qoM6N<$f@xw)<^TWy diff --git a/icons/ui_icons/patches/bandaid_toxin.png b/icons/ui_icons/patches/bandaid_toxin.png deleted file mode 100644 index 3a2fce33f0ffb389545241e043da7e12dca79530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1733 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 diff --git a/icons/ui_icons/pills/pill1.png b/icons/ui_icons/pills/pill1.png deleted file mode 100644 index e5545302761d9ee1f083032550d5c44208ed12fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEr!3HEZELe9NNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00n1yx;Tbd_$Q|{FjfDX_dh@_>_b=?;|#x4 zVTQ{)9RBT8PB5N%z($I}ZHD(%d#eW4g2wiDR}*$QcyRbUX4;--$98#3@y020^lu!s z>wk5SDQ0K>0TZhq--=~t_yq?sU4HT4>(TCnUCBqq41BA_SJ!P}=YGI+WLa0~b49)7 zbGsLsFrRt4!lvI6;>1s;*bKn;gMnDKc2iWHz=nWu|mh=qT0N<)*>?`8i3)Fkdymx=mlduBFg zN@Q3@uwOgO@@yibM50+{W=11x!h>7A*$Gn9EpD3ivGnR}_|ep8(C?wa%~T@t<=~f9 zvZoK4_}JbwGjdzmws?s|gqNeg!lvI6;>1s;*bKn;gMnDKc2iWHz=rl*Tzh=qT0N(0m9ZwvkhsKpg*Dw2)h7oOqH zme6u@$r~+RF$I=)@9Mago!nNal96)d!&attt^HG3A{JPvG5IWRzNe~v;LGu3{R1XX z%?>e~Nh@L4%*l3QyP%ixg4;dZcW%`5Oxkkl00ToFk7V!lvI6;>1s;*bKn;gMnDKc2iWHz=rl*Tzh=qT0N<&j#@a6vjYH!lvI6;>1s;*bKn;gMnDKc2iWH#WBu^K|5DWk0lm@2H-xmB2P?OL&pUisME9h2& z6k8PEwZ^Xojg=`3ZZmvOt-F-KC=s9~#(FtQDhepO?(Pn@Whb{4s$``6ta!sZqfp$( z$Ux+{OT$ZhDFNeBkuL|otdc!_@XOxx@Pj5d&5W{sL@it*QK!vm&^xav!R#QzPcx@X swvySsc_*AAS0vngJ9WyEP&PJ(^EVZRqWyz?fUaZkboFyt=akR{04N_;*#H0l diff --git a/icons/ui_icons/pills/pill14.png b/icons/ui_icons/pills/pill14.png deleted file mode 100644 index aff03f20610c4e6eb123f442f7af16a8cddf3e0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*bKn;gMnDKc2iWH#W1Wy;o5DWk0l!hkO&yW8(&rH~``mOqmut}HL zE*o4Z+Q7G_o%4(`v%#U9pz!G|+y@R^^U5<=yL2Jzvcw0sdb1N|e zkdT|pyKJjT%fT&uO?ETlwkBK7*!TU7)(o}VZpW5MRZkI7UarHx>|!wA88r!o`)(R% s8}dH)P8A9e(~2moR#nZM+Q`W8fJx=Q&QESJpxYQcUHx3vIVCg!00xm)lmGw# diff --git a/icons/ui_icons/pills/pill15.png b/icons/ui_icons/pills/pill15.png deleted file mode 100644 index 041b5be4b6bfbfd6e8b208c2de3c3a60f315c3a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*bKn;gMnDKc2iWHz=x2KC^h=qT0N<&j#@a6vjY7%qm{z~~&U%lO! zDdFJ}!*cB~%d?4$5{YJ!Uf#{D2@if;UY>9(ZISSdw#M1!^P4j_<;rkMMJ9Y?We%J* zD?p5;qeG+d!lvI6;>1s;*bKn;gMnDKc2iWHz=pQnpsh=qT0N(0mM9cTY9^f9O?`))Ji8qY?i z%LW^^U0_|)&Ur?e+2Bx)&~*W3?gIx-ORqn$rDOufjJ8Jo@B5oFH|5H3N<}7oJbEC3 zLv8LQ-2)~(H!`#vUdl%6HNSjsZU<74a%EGVlc!U9ZXUwDV nBEvaSU_)-2fokT|Mn;CxkE-^&zt^_`UB=+)>gTe~DWM4f`4d*@ diff --git a/icons/ui_icons/pills/pill17.png b/icons/ui_icons/pills/pill17.png deleted file mode 100644 index fcd92288ad94facd951d1fba7ebd1397d427c88f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*bKn;gMnDKc2iWHz=rKgKyh=qT0N(0m9Zwvkhs7ch=d}H$Y9PQbV zDPa-0lW$Es=NV;YgF`t%WmDO>4;;9A*Z-i2Ug4%(8BQrl)0(vh7IJm3e>8)`VDH1H zi3YL?dECpYr>|kSyy3^vJ8lvUH+$w4CDceL+;`JB+mL6hSCIVK(Cd;GGc$vUtZMU% TwbGtIM=*H0`njxgN@xNA6n0Bz diff --git a/icons/ui_icons/pills/pill18.png b/icons/ui_icons/pills/pill18.png deleted file mode 100644 index 9d730172a8e1832c889b2edf85f25d3300c6d7e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEr!3HEZELe9NNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00m1uT^vI!{F74}nx3AX{=eO5V-vS{USlRR zv#CKZw~L!w)7ccJ&lwC7iF&3cCM?_!n4X`X&wlyHs>O4=PoI`PsORUy!_LjY&E1?? z^5NUtXair5x_^JBCd~S#rzUdy$TF@OR=0Laco`pv@zZ?qX3g?ctF#0LhO+(Y5AN%A RUjjOS!PC{xWt~$(699`gOius+ diff --git a/icons/ui_icons/pills/pill19.png b/icons/ui_icons/pills/pill19.png deleted file mode 100644 index 1e3773404d6a3c228cfd5c45a5f048f820b99d44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEr!3HEZELe9NNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00k#_x;Tbd_$Q|{G(9~%{eQdB#-{X_KNF&| zp1BzGa=W;>HJwdi`kcWak*H^CV#31xfGPjaoP%3VEZdtPC2mpw&t}H5ncb0kF*{h( z4#eo_=;?9|DGfo#a uuD-iBA!_#)37^MIbLW2D;&Ysbhr!{vX7}UL|E@r{F?hQAxvXxtcsnK22QJ_c!U zi|(oYE#`B6{(d2!%Lk8o35W|bwFDh+<=%e4gg2Il*G=;U2^6C a14GFP*$2jZ%QgaC!r diff --git a/icons/ui_icons/pills/pill21.png b/icons/ui_icons/pills/pill21.png deleted file mode 100644 index 37a4512d15d0def76a936552568fa87126a063fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEr!3HEZELe9NNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00mn-T^vI!{F74}m}F(={tr+K3y6*7O?}8d zapJ@T6jsu5)m#nzn9j41$iVdf*?Ucy3^7A>ba>kZL|F18OHOg#!etW^nLBR-1g#iWwx&IyXP%ZKi}#me8c4V z9Z{p(6Bzxn)-L7jG+ZXhxQAc;xS`uCRYjIxbv``{7-z>NTJ|kJl(gmA+90oxGnRX= z7`^#!YFKPGRl2VsxB5a?>E4S+IBGO9ZGI~Y*!?}YEl3I diff --git a/icons/ui_icons/pills/pill3.png b/icons/ui_icons/pills/pill3.png deleted file mode 100644 index e0c812fd0a44bdbae785a2aebbbee98c7e21ca7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEr!3HEZELe9NNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00m1uT^vI!{F74}njZYK{lCy>&4b^){Ry*z zo8^5TGi7tf9!N84tTbWhF_`{Iqo|p+pi%$({-(^Ns~685jeD7WP*3dZ6ejK)8QP7R zB?V7j*&6tI{QLSXJz>^2JvEWrN0xETu)4KV!przTjGyKWGvgW4Ue0J_WO#l~J>BAE RS0m5?44$rjF6*2UngIK{QiuQm diff --git a/icons/ui_icons/pills/pill4.png b/icons/ui_icons/pills/pill4.png deleted file mode 100644 index 5e02dd0d3e00384573b681cd08094ba361d20a94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEr!3HEZELe9NNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00m1uT^vI!{F74}n&Rv>{tr+K+wlK1zrouR zhZ&a@Ha_xSe<01MvC@R0$6)#_?+s0?1&x#S>zXr@u3kKM)Xt|SK|FlLhbGnvU(*97 zRzGTfvCU9ZxnKC)c*e55-JD0wHm+n^)>o$2c8SMedN9|vKfhg0mz+7kz>vH}r7Ugg S`F%hKFnGH9xvXVsdT?b8iwlO@es% ziVsb!6~3kiOspo%+Q8&vuie3L`Nf0JFQpT9JwBIi;9D(j{i&b39m#gpMfJWy0{N6e3<%~u~hC|KjWv(U5>w%7B@O1TaS?83{1OTcN BUitt4 diff --git a/icons/ui_icons/pills/pill6.png b/icons/ui_icons/pills/pill6.png deleted file mode 100644 index 2dbf3720142b22464a567e35b49bdcb8bda91170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEr!3HEZELe9NNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00pOex;Tbd_$Q|{G##*%{_i|9;^14(s|mN_ z`Z;|bGX+nNWt!a?FUr~=_$)|~S8oG@-iIYS*?rur9)y?w`Vwp4Yc2kJ%NmB=5qBIV zbQWl-aV@)eaPPd#1gk3#)n~Y|`^VQYT{d1O$8>p1x#4OS^#}%W1+&mOwqHejE}uIZ zFpKe7QOtuYOKc3*9{DZ~v`_uro~5Z)X$cGrA`>+4v21+g1#}{Vr>mdKI;Vst08k`a AmH+?% diff --git a/icons/ui_icons/pills/pill7.png b/icons/ui_icons/pills/pill7.png deleted file mode 100644 index 7c1ff90c43f7ed8b6873f784cade1b42074b1a1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*bKn;gMnDKc2iWHz=nWu|mh=qT0N<$Ot=g0q?XC{1j@y^*mcexJ# zvP1>NLcs`r;Ti612`x95tkdHZYiOKpKEF9L=26OR3n7zD2Oe>=ty#Nvp$>+R^Kh7Be%$9v_w3`oe%+ QKo>B0y85}Sb4q9e0216v82|tP diff --git a/icons/ui_icons/pills/pill8.png b/icons/ui_icons/pills/pill8.png deleted file mode 100644 index 88280ecd045c821b08c260b876dda3cc4351b266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*bKn;gMnDKc2iWHz=rKgKyh=qT0N<-6wf42V@`WXDEd#pU;*_8+E zmkl;-yTH1po%4(`v%#U9M}be+xDOnd{yYAliC*ERTp3QO$b^rq%yM?S5`J+Uwl&CI zyq0BIdCpFrWr?p&Zku>fyH?k$t8uBwmnqHfj6UVIT;h3Q_L%8*8e8zBFi8o9$^&W# U6kk}F03E^L>FVdQ&MBb@01dcN2mk;8 diff --git a/icons/ui_icons/pills/pill9.png b/icons/ui_icons/pills/pill9.png deleted file mode 100644 index 732cd4ef4c8e3577f7ebeef44ac436f90b790a28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*bKn;gMnDKc2iWHz=nWu|mh=qT0N<-7r)6@UA8y$Rbs5Ls_)&U1z zpTiC*DJl{C!ZY025?XGiWMpuNH8g&He!e*~=26OR3n7zD2Oe>=#l*xMFwrq-ZEZdH zWu9&I0TUnFpJq;(J3I{<<`rFddUBiKys*=!r2{W%>0P)P>F*hpn!vzt@Qli_y|uT} QfG%M0boFyt=akR{0F3KT!2kdN diff --git a/tgstation.dme b/tgstation.dme index 2088ec277f7..9bbff47609b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -511,6 +511,7 @@ #include "code\_globalvars\lists\mobs.dm" #include "code\_globalvars\lists\names.dm" #include "code\_globalvars\lists\objects.dm" +#include "code\_globalvars\lists\plumbing.dm" #include "code\_globalvars\lists\poll_ignore.dm" #include "code\_globalvars\lists\quirks.dm" #include "code\_globalvars\lists\rcd.dm" @@ -3144,10 +3145,8 @@ #include "code\modules\asset_cache\assets\orbit.dm" #include "code\modules\asset_cache\assets\paper.dm" #include "code\modules\asset_cache\assets\particle_editor.dm" -#include "code\modules\asset_cache\assets\patches.dm" #include "code\modules\asset_cache\assets\pda.dm" #include "code\modules\asset_cache\assets\permissions.dm" -#include "code\modules\asset_cache\assets\pills.dm" #include "code\modules\asset_cache\assets\pipes.dm" #include "code\modules\asset_cache\assets\plane_debug.dm" #include "code\modules\asset_cache\assets\plumbing.dm" diff --git a/tgui/packages/tgui/interfaces/ChemPress.js b/tgui/packages/tgui/interfaces/ChemPress.js deleted file mode 100644 index 93b69d904a5..00000000000 --- a/tgui/packages/tgui/interfaces/ChemPress.js +++ /dev/null @@ -1,122 +0,0 @@ -import { useBackend } from '../backend'; -import { Box, Button, Input, LabeledList, NumberInput, Section } from '../components'; -import { Window } from '../layouts'; - -export const ChemPress = (props, context) => { - const { act, data } = useBackend(context); - const { - current_volume, - product_name, - pill_style, - pill_styles = [], - product, - min_volume, - max_volume, - patch_style, - patch_styles = [], - } = data; - return ( - - -
- - - - act('change_product', { - product: 'pill', - }) - } - /> - - act('change_product', { - product: 'patch', - }) - } - /> - - act('change_product', { - product: 'bottle', - }) - } - /> - - - - act('change_current_volume', { - volume: value, - }) - } - /> - - - - act('change_product_name', { - name: value, - }) - } - /> - {product} - - {product === 'pill' && ( - - {pill_styles.map((pill) => ( - - ))} - - )} - {product === 'patch' && ( - - {patch_styles.map((patch) => ( - - ))} - - )} - -
-
-
- ); -}; diff --git a/tgui/packages/tgui/interfaces/ChemPress.tsx b/tgui/packages/tgui/interfaces/ChemPress.tsx new file mode 100644 index 00000000000..d2a7f0ef885 --- /dev/null +++ b/tgui/packages/tgui/interfaces/ChemPress.tsx @@ -0,0 +1,112 @@ +import { useBackend, useLocalState } from '../backend'; +import { Box, Button, Input, LabeledList, NumberInput, Section } from '../components'; +import { capitalizeAll } from 'common/string'; +import { Window } from '../layouts'; + +type Product = { + ref: string; + class_name: string; +}; + +type Category = { + cat_name: string; + products: Product[]; +}; + +type Data = { + current_volume: Number; + product_name: string; + min_volume: Number; + max_volume: Number; + packaging_category: string; + packaging_types: Category[]; + packaging_type: string; +}; + +export const ChemPress = (props, context) => { + const { act, data } = useBackend(context); + const { + current_volume, + product_name, + min_volume, + max_volume, + packaging_category, + packaging_types, + packaging_type, + } = data; + const [categoryName, setCategoryName] = useLocalState( + context, + 'categoryName', + packaging_category + ); + const shownCategory = + packaging_types.find((category) => category.cat_name === categoryName) || + packaging_types[0]; + return ( + + +
+ + + {packaging_types.map((category, i) => ( + setCategoryName(category.cat_name)} + /> + ))} + + + + act('change_current_volume', { + volume: value, + }) + } + /> + + + + act('change_product_name', { + name: value, + }) + } + /> + + + {shownCategory.products.map((design, j) => ( + + ))} + + +
+
+
+ ); +};