From fd997e16153f29f28ba890673e796b0c3d82aef4 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Tue, 22 Feb 2022 21:59:28 +0000 Subject: [PATCH 1/5] initial test changes --- code/_globalvars/lists/objects.dm | 1 + code/game/objects/items/devices/PDA/PDA.dm | 26 +++++++++++++++++++++ code/game/objects/items/devices/PDA/cart.dm | 7 ++++++ code/modules/reagents/chemistry/holder.dm | 6 +++++ 4 files changed, 40 insertions(+) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 14969e6c92..d29bdfae23 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -16,6 +16,7 @@ GLOBAL_LIST_EMPTY(singularities) //list of all singularities on the stati GLOBAL_LIST_EMPTY(grounding_rods) //list of all grounding rods on the station GLOBAL_LIST(chemical_reactions_list) //list of all /datum/chemical_reaction datums. Used during chemical reactions +GLOBAL_LIST(drink_reactions_list) //list of all /datum/chemical_reaction datums where the output is of type /datum/reagent/consumable GLOBAL_LIST(chemical_reagents_list) //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff GLOBAL_LIST_EMPTY(tech_list) //list of all /datum/tech datums indexed by id. GLOBAL_LIST_EMPTY(surgeries_list) //list of all surgeries by name, associated with their path. diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 2339e88a76..9a873fb561 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -369,6 +369,8 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "
  • [PDAIMG(rdoor)]Toggle Remote Door
  • " if (cartridge.access & CART_DRONEPHONE) dat += "
  • [PDAIMG(dronephone)]Drone Phone
  • " + if (cartridge.access & CART_BARTENDER) + dat += "
  • [PDAIMG(bucket)]Drink Recipe Browser
  • " dat += "
  • [PDAIMG(atmos)]Atmospheric Scan
  • " dat += "
  • [PDAIMG(flashlight)][fon ? "Disable" : "Enable"] Flashlight
  • " if (pai) @@ -705,6 +707,30 @@ GLOBAL_LIST_EMPTY(PDAs) if(T) pai.forceMove(T) +//DRINK RECIPE BROWSER============================= + if("Drink Recipe Browser") + if(cartridge && cartridge.access & CART_BARTENDER) + var/option = input(U, "Enter keyword to return a recipe.") + if(option) + option = lowertext(option) + var/list/reagents_required + var/found_reagent_name + for(var/reagent_name in GLOB.drink_reactions_list) + message_admins(reagent_name) + if(findtext(reagent_name, option)) + found_reagent_name = reagent_name + reagents_required = GLOB.drink_reactions_list[reagent_name].required_reagents + break + if(length(reagents_required)) + to_chat(U, "Reagent found: [found_reagent_name]
    Required Reagents:
    ") + var/reagents_required_string = "" + for(var/datum/reagent/r in reagents_required) + reagents_required_string += "[initial(r.name)]: [reagents_required[r]]
    " + to_chat(U, reagents_required_string) + return + else + to_chat(U, "Reagent with term: [option] could not be located!") + //LINK FUNCTIONS=================================== else//Cartridge menu linking diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 4ca0b86bc0..9d02207375 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -13,6 +13,7 @@ #define CART_QUARTERMASTER (1<<12) #define CART_HYDROPONICS (1<<13) #define CART_DRONEPHONE (1<<14) +#define CART_BARTENDER (1<<15) /obj/item/cartridge @@ -190,6 +191,12 @@ bot_access_flags = SEC_BOT | MULE_BOT | FLOOR_BOT | CLEAN_BOT | MED_BOT | FIRE_BOT spam_enabled = 1 +/obj/item/cartridge/bartender + name = "\improper B.O.O.Z.E cartridge" + desc = "Now with 12% alcohol!" + icon_state = "cart-bar" + access = CART_BARTENDER + /obj/item/cartridge/captain/New() ..() radio = new(src) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 2899f0ca11..6de8efd1db 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -32,6 +32,12 @@ var/datum/chemical_reaction/D = new path() var/list/reaction_ids = list() + // store drinks separately for bartender cartridge + if(D.id) + if(istype(D.id, /datum/reagent/consumable)) + var/datum/reagent/consumable/r = D.id + GLOB.drink_reactions_list[lowertext(initial(r.name))] = D + if(D.required_reagents && D.required_reagents.len) for(var/reaction in D.required_reagents) reaction_ids += reaction From b578c65d7430d5d008e51832cfd842a489886492 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 23 Feb 2022 00:52:17 +0000 Subject: [PATCH 2/5] fixes --- code/game/objects/items/devices/PDA/PDA.dm | 12 +++++++----- .../objects/items/devices/PDA/PDA_types.dm | 1 + code/modules/reagents/chemistry/holder.dm | 7 ++++--- icons/obj/pda.dmi | Bin 16000 -> 16140 bytes 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 9a873fb561..8a97cc9f80 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -715,17 +715,19 @@ GLOBAL_LIST_EMPTY(PDAs) option = lowertext(option) var/list/reagents_required var/found_reagent_name + var/required_temp for(var/reagent_name in GLOB.drink_reactions_list) - message_admins(reagent_name) - if(findtext(reagent_name, option)) + if(findtext(lowertext(reagent_name), option)) found_reagent_name = reagent_name reagents_required = GLOB.drink_reactions_list[reagent_name].required_reagents + required_temp = GLOB.drink_reactions_list[reagent_name].required_temp break if(length(reagents_required)) - to_chat(U, "Reagent found: [found_reagent_name]
    Required Reagents:
    ") + to_chat(U, "Recipe found: [found_reagent_name][required_temp ? "
    Required Temperature: [required_temp]K" : ""]
    Required Reagents:") var/reagents_required_string = "" - for(var/datum/reagent/r in reagents_required) - reagents_required_string += "[initial(r.name)]: [reagents_required[r]]
    " + for(var/r in reagents_required) + var/datum/reagent/reagent = r + reagents_required_string += "
    [initial(reagent.name)]: [reagents_required[r]]" to_chat(U, reagents_required_string) return else diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm index 23ebaec3c2..8fcd97c261 100644 --- a/code/game/objects/items/devices/PDA/PDA_types.dm +++ b/code/game/objects/items/devices/PDA/PDA_types.dm @@ -222,6 +222,7 @@ /obj/item/pda/bar name = "bartender PDA" icon_state = "pda-bartender" + default_cartridge = /obj/item/cartridge/bartender inserted_item = /obj/item/pen/fountain /obj/item/pda/atmos diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 6de8efd1db..89ff24d2f3 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -14,6 +14,7 @@ GLOB.chemical_reagents_list[path] = D /proc/build_chemical_reactions_list() + message_admins("STARTY START START!") //Chemical Reactions - Initialises all /datum/chemical_reaction into a list // It is filtered into multiple lists within a list. // For example: @@ -26,17 +27,17 @@ //Randomized need to go last since they need to check against conflicts with normal recipes var/paths = subtypesof(/datum/chemical_reaction) - typesof(/datum/chemical_reaction/randomized) + subtypesof(/datum/chemical_reaction/randomized) GLOB.chemical_reactions_list = list() + GLOB.drink_reactions_list = list() for(var/path in paths) var/datum/chemical_reaction/D = new path() var/list/reaction_ids = list() - // store drinks separately for bartender cartridge if(D.id) - if(istype(D.id, /datum/reagent/consumable)) + if(ispath(D.id, /datum/reagent/consumable)) var/datum/reagent/consumable/r = D.id - GLOB.drink_reactions_list[lowertext(initial(r.name))] = D + GLOB.drink_reactions_list[initial(r.name)] = D if(D.required_reagents && D.required_reagents.len) for(var/reaction in D.required_reagents) diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi index 8992f4a4a104de0e727b17623492a60598ea59f3..f968d158601eab3e41261e216f8f6877f43f00ad 100644 GIT binary patch literal 16140 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 literal 16000 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 Date: Wed, 23 Feb 2022 00:57:39 +0000 Subject: [PATCH 3/5] improves formatting of the couldn't find reagent text --- code/game/objects/items/devices/PDA/PDA.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 8a97cc9f80..c339b0024c 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -731,7 +731,7 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(U, reagents_required_string) return else - to_chat(U, "Reagent with term: [option] could not be located!") + to_chat(U, "Reagent with term: [option] could not be located!") //LINK FUNCTIONS=================================== From 56547a2556e6ac516c03a85b05efa25ce466e61f Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 23 Feb 2022 11:38:04 +0000 Subject: [PATCH 4/5] generalizes recipe searching, adds chemistry functionality --- code/_globalvars/lists/objects.dm | 3 +- code/game/objects/items/devices/PDA/PDA.dm | 30 ++++++------------- code/game/objects/items/devices/PDA/cart.dm | 3 +- code/modules/reagents/chemistry/holder.dm | 32 +++++++++++++++++++-- 4 files changed, 42 insertions(+), 26 deletions(-) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index d29bdfae23..921b512d32 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -16,7 +16,8 @@ GLOBAL_LIST_EMPTY(singularities) //list of all singularities on the stati GLOBAL_LIST_EMPTY(grounding_rods) //list of all grounding rods on the station GLOBAL_LIST(chemical_reactions_list) //list of all /datum/chemical_reaction datums. Used during chemical reactions -GLOBAL_LIST(drink_reactions_list) //list of all /datum/chemical_reaction datums where the output is of type /datum/reagent/consumable +GLOBAL_LIST(drink_reactions_list) //list of all /datum/chemical_reaction datums where the output is of type /datum/reagent/consumable for bartender PDA +GLOBAL_LIST(normalized_chemical_reactions_list) //list of all /datum/chemical_reaction datums with actual sane indexing for chemistry PDA GLOBAL_LIST(chemical_reagents_list) //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff GLOBAL_LIST_EMPTY(tech_list) //list of all /datum/tech datums indexed by id. GLOBAL_LIST_EMPTY(surgeries_list) //list of all surgeries by name, associated with their path. diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index c339b0024c..1a130998b6 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -371,6 +371,8 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "
  • [PDAIMG(dronephone)]Drone Phone
  • " if (cartridge.access & CART_BARTENDER) dat += "
  • [PDAIMG(bucket)]Drink Recipe Browser
  • " + if (cartridge.access & CART_CHEMISTRY) + dat += "
  • [PDAIMG(bucket)]Chemistry Recipe Browser
  • " dat += "
  • [PDAIMG(atmos)]Atmospheric Scan
  • " dat += "
  • [PDAIMG(flashlight)][fon ? "Disable" : "Enable"] Flashlight
  • " if (pai) @@ -710,28 +712,12 @@ GLOBAL_LIST_EMPTY(PDAs) //DRINK RECIPE BROWSER============================= if("Drink Recipe Browser") if(cartridge && cartridge.access & CART_BARTENDER) - var/option = input(U, "Enter keyword to return a recipe.") - if(option) - option = lowertext(option) - var/list/reagents_required - var/found_reagent_name - var/required_temp - for(var/reagent_name in GLOB.drink_reactions_list) - if(findtext(lowertext(reagent_name), option)) - found_reagent_name = reagent_name - reagents_required = GLOB.drink_reactions_list[reagent_name].required_reagents - required_temp = GLOB.drink_reactions_list[reagent_name].required_temp - break - if(length(reagents_required)) - to_chat(U, "Recipe found: [found_reagent_name][required_temp ? "
    Required Temperature: [required_temp]K" : ""]
    Required Reagents:") - var/reagents_required_string = "" - for(var/r in reagents_required) - var/datum/reagent/reagent = r - reagents_required_string += "
    [initial(reagent.name)]: [reagents_required[r]]" - to_chat(U, reagents_required_string) - return - else - to_chat(U, "Reagent with term: [option] could not be located!") + recipe_search(U, GLOB.drink_reactions_list) + +//CHEMISTRY RECIPE BROWSER + if("Chemistry Recipe Browser") + if(cartridge && cartridge.access & CART_CHEMISTRY) + recipe_search(U, GLOB.normalized_chemical_reactions_list) //LINK FUNCTIONS=================================== diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 9d02207375..ca72e3371b 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -14,6 +14,7 @@ #define CART_HYDROPONICS (1<<13) #define CART_DRONEPHONE (1<<14) #define CART_BARTENDER (1<<15) +#define CART_CHEMISTRY (1<<16) /obj/item/cartridge @@ -78,7 +79,7 @@ /obj/item/cartridge/chemistry name = "\improper ChemWhiz cartridge" icon_state = "cart-chem" - access = CART_REAGENT_SCANNER + access = CART_REAGENT_SCANNER | CART_CHEMISTRY bot_access_flags = MED_BOT /obj/item/cartridge/security diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 89ff24d2f3..e1602fab4a 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -27,7 +27,8 @@ //Randomized need to go last since they need to check against conflicts with normal recipes var/paths = subtypesof(/datum/chemical_reaction) - typesof(/datum/chemical_reaction/randomized) + subtypesof(/datum/chemical_reaction/randomized) GLOB.chemical_reactions_list = list() - GLOB.drink_reactions_list = list() + GLOB.normalized_chemical_reactions_list = list() // chemistry pda + GLOB.drink_reactions_list = list() // bartender pda for(var/path in paths) @@ -35,9 +36,11 @@ var/list/reaction_ids = list() // store drinks separately for bartender cartridge if(D.id) + var/datum/reagent/r = D.id if(ispath(D.id, /datum/reagent/consumable)) - var/datum/reagent/consumable/r = D.id GLOB.drink_reactions_list[initial(r.name)] = D + if(ispath(D.id, /datum/reagent)) + GLOB.normalized_chemical_reactions_list[initial(r.name)] = D if(D.required_reagents && D.required_reagents.len) for(var/reaction in D.required_reagents) @@ -50,6 +53,31 @@ GLOB.chemical_reactions_list[id] += D break // Don't bother adding ourselves to other reagent ids, it is redundant +/proc/recipe_search(mob/M, list/reaction_list) + var/option = input(M, "Enter keyword to return a recipe.") + if(option) + option = lowertext(option) + var/list/reagents_required + var/found_reagent_name + var/required_temp + for(var/reagent_name in reaction_list) + if(findtext(lowertext(reagent_name), option)) + var/datum/chemical_reaction/reaction = reaction_list[reagent_name] + found_reagent_name = reagent_name + reagents_required = reaction.required_reagents + required_temp = reaction.required_temp + break + if(length(reagents_required)) + to_chat(M, "Recipe found: [found_reagent_name][required_temp ? "
    Required Temperature: [required_temp]K" : ""]
    Required Reagents:") + var/reagents_required_string = "" + for(var/r in reagents_required) + var/datum/reagent/reagent = r + reagents_required_string += "
    [initial(reagent.name)]: [reagents_required[r]]" + to_chat(M, reagents_required_string) + return + else + to_chat(M, "Reagent with term: [option] could not be located!") + /////////////////////////////////////////////////////////////////////////////////// /datum/reagents From 027002f92884d0819b8004bb542a3d677e67e091 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 23 Feb 2022 12:07:03 +0000 Subject: [PATCH 5/5] haha what if we didn't show secretcatchem --- code/modules/reagents/chemistry/holder.dm | 4 ++-- code/modules/reagents/chemistry/recipes.dm | 2 ++ code/modules/reagents/chemistry/recipes/special.dm | 2 ++ .../code/modules/reagents/chemistry/recipes/fermi.dm | 2 ++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index e1602fab4a..cdad332def 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -34,8 +34,8 @@ var/datum/chemical_reaction/D = new path() var/list/reaction_ids = list() - // store drinks separately for bartender cartridge - if(D.id) + // store recipes separately for bartender/chemistry cartridges + if(D.id && !D.is_secret) // don't show things like secretcatchem or secret sauce var/datum/reagent/r = D.id if(ispath(D.id, /datum/reagent/consumable)) GLOB.drink_reactions_list[initial(r.name)] = D diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 41c0ed717e..aab46bc3e4 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -38,6 +38,8 @@ var/clear_conversion //bitflags for clear conversions; REACTION_CLEAR_IMPURE or REACTION_CLEAR_INVERSE var/PurityMin = 0.15 //If purity is below 0.15, it explodes too. Set to 0 to disable this. + var/is_secret = FALSE // If it should show in recipe searchers such as the bartender/chemistry PDA functions + /datum/chemical_reaction/proc/on_reaction(datum/reagents/holder, multiplier, specialreact) set waitfor = FALSE diff --git a/code/modules/reagents/chemistry/recipes/special.dm b/code/modules/reagents/chemistry/recipes/special.dm index ad277ef4ff..4aab8e4046 100644 --- a/code/modules/reagents/chemistry/recipes/special.dm +++ b/code/modules/reagents/chemistry/recipes/special.dm @@ -54,6 +54,8 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related var/max_result_reagents = 1 var/list/possible_results = list() + is_secret = TRUE + /datum/chemical_reaction/randomized/proc/GenerateRecipe() created = world.time if(randomize_container) diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index a78092988e..ce27433c07 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -548,6 +548,8 @@ FermiExplode = FALSE PurityMin = 0.2 + is_secret = TRUE + /datum/chemical_reaction/fermi/secretcatchem/New() //rand doesn't seem to work with n^-e OptimalTempMin += rand(-100, 100)