diff --git a/code/__HELPERS/reagents.dm b/code/__HELPERS/reagents.dm
index f1208abdd3..49d6b5825e 100644
--- a/code/__HELPERS/reagents.dm
+++ b/code/__HELPERS/reagents.dm
@@ -72,3 +72,24 @@
if(!GLOB.chemical_reactions_list[primary_reagent])
GLOB.chemical_reactions_list[primary_reagent] = list()
GLOB.chemical_reactions_list[primary_reagent] += R
+
+/proc/choose_reagent_id(mob/user)
+ var/chosen_id
+ switch(alert(user, "Choose a method.", "Add Reagents", "Search", "Choose from a list"))
+ if("Search")
+ var/valid_id
+ while(!valid_id)
+ chosen_id = input(user, "Enter the ID of the reagent you want to add.", "Search reagents") as null|text
+ if(isnull(chosen_id)) //Get me out of here!
+ break
+ if(!ispath(text2path(chosen_id)))
+ chosen_id = pick_closest_path(chosen_id, make_types_fancy(subtypesof(/datum/reagent)))
+ if(ispath(chosen_id))
+ valid_id = TRUE
+ else
+ valid_id = TRUE
+ if(!valid_id)
+ to_chat(user, "A reagent with that ID doesn't exist!")
+ if("Choose from a list")
+ chosen_id = input(user, "Choose a reagent to add.", "Choose a reagent.") as null|anything in subtypesof(/datum/reagent)
+ return chosen_id
\ No newline at end of file
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index 5caa491e4c..26a0ba71b3 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -946,26 +946,7 @@
A.create_reagents(amount)
if(A.reagents)
- var/chosen_id
- switch(alert(usr, "Choose a method.", "Add Reagents", "Search", "Choose from a list", "I'm feeling lucky"))
- if("Search")
- var/valid_id
- while(!valid_id)
- chosen_id = input(usr, "Enter the ID of the reagent you want to add.", "Search reagents") as null|text
- if(isnull(chosen_id)) //Get me out of here!
- break
- if(!ispath(text2path(chosen_id)))
- chosen_id = pick_closest_path(chosen_id, make_types_fancy(subtypesof(/datum/reagent)))
- if(ispath(chosen_id))
- valid_id = TRUE
- else
- valid_id = TRUE
- if(!valid_id)
- to_chat(usr, "A reagent with that ID doesn't exist!")
- if("Choose from a list")
- chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in subtypesof(/datum/reagent)
- if("I'm feeling lucky")
- chosen_id = pick(subtypesof(/datum/reagent))
+ var/chosen_id = choose_reagent_id(usr)
if(chosen_id)
var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", A.reagents.maximum_volume) as num
if(amount)
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index e05f4ee255..8b20eabb1b 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -1321,24 +1321,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
if(amount)
A.create_reagents(amount)
if(A.reagents)
- var/chosen_id
- switch(alert(usr, "Choose a method.", "Add Reagents", "Search", "Choose from a list"))
- if("Search")
- var/valid_id
- while(!valid_id)
- chosen_id = input(usr, "Enter the ID of the reagent you want to add.", "Search reagents") as null|text
- if(isnull(chosen_id)) //Get me out of here!
- break
- if(!ispath(text2path(chosen_id)))
- chosen_id = pick_closest_path(chosen_id, make_types_fancy(subtypesof(/datum/reagent)))
- if(ispath(chosen_id))
- valid_id = TRUE
- else
- valid_id = TRUE
- if(!valid_id)
- to_chat(usr, "A reagent with that ID doesn't exist!")
- if("Choose from a list")
- chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in subtypesof(/datum/reagent)
+ var/chosen_id = choose_reagent_id(usr)
if(chosen_id)
var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", A.reagents.maximum_volume) as num
if(amount)