diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index 27d71f9e55..820c95f324 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -111,3 +111,34 @@ var/datum/gear_tweak/color/gear_tweak_free_color_choice = new() else path = contents[metadata[i]] new path(I) + +/* +* Ragent adjustment +*/ + +/datum/gear_tweak/reagents + var/list/valid_reagents + +/datum/gear_tweak/reagents/New(var/list/reagents) + valid_reagents = reagents.Copy() + ..() + +/datum/gear_tweak/reagents/get_contents(var/metadata) + return "Reagents: [metadata]" + +/datum/gear_tweak/reagents/get_default() + return "Random" + +/datum/gear_tweak/reagents/get_metadata(var/user, var/list/metadata) + . = input(user, "Choose an entry.", "Character Preference", metadata) as null|anything in (valid_reagents + list("Random", "None")) + if(!.) + return metadata + +/datum/gear_tweak/reagents/tweak_item(var/obj/item/I, var/list/metadata) + if(metadata == "None") + return + if(metadata == "Random") + . = valid_reagents[pick(valid_reagents)] + else + . = valid_reagents[metadata] + I.reagents.add_reagent(., I.reagents.get_free_space()) diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm index 89aaa0a8d1..2b1c4bbb6b 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general.dm @@ -30,10 +30,18 @@ display_name = "flask" path = /obj/item/weapon/reagent_containers/food/drinks/flask/barflask +/datum/gear/flask/New() + ..() + gear_tweaks += new/datum/gear_tweak/reagents(lunchables_ethanol_reagents()) + /datum/gear/vacflask display_name = "vacuum-flask" path = /obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask +/datum/gear/vacflask/New() + ..() + gear_tweaks += new/datum/gear_tweak/reagents(lunchables_drink_reagents()) + /datum/gear/comb display_name = "purple comb" path = /obj/item/weapon/haircomb diff --git a/code/modules/reagents/reagent_containers/food/lunch.dm b/code/modules/reagents/reagent_containers/food/lunch.dm index f2b114d62c..edb4e3b890 100644 --- a/code/modules/reagents/reagent_containers/food/lunch.dm +++ b/code/modules/reagents/reagent_containers/food/lunch.dm @@ -51,6 +51,28 @@ var/list/lunchables_drinks_ = list(/obj/item/weapon/reagent_containers/food/drin /obj/item/weapon/reagent_containers/food/drinks/cans/tonic, /obj/item/weapon/reagent_containers/food/drinks/cans/sodawater) +// This default list is a bit different, it contains items we don't want +var/list/lunchables_drink_reagents_ = list(/datum/reagent/drink/nothing, + /datum/reagent/drink/doctor_delight, + /datum/reagent/drink/dry_ramen, + /datum/reagent/drink/hell_ramen, + /datum/reagent/drink/hot_ramen, + /datum/reagent/drink/nuka_cola,) + +// This default list is a bit different, it contains items we don't want +var/list/lunchables_ethanol_reagents_ = list(/datum/reagent/ethanol/acid_spit, + /datum/reagent/ethanol/atomicbomb, + /datum/reagent/ethanol/beepsky_smash, + /datum/reagent/ethanol/coffee, + /datum/reagent/ethanol/hippies_delight, + /datum/reagent/ethanol/hooch, + /datum/reagent/ethanol/thirteenloko, + /datum/reagent/ethanol/manhattan_proj, + /datum/reagent/ethanol/neurotoxin, + /datum/reagent/ethanol/pwine, + /datum/reagent/ethanol/threemileisland, + /datum/reagent/ethanol/toxins_special) + /proc/lunchables_lunches() if(!(lunchables_lunches_[lunchables_lunches_[1]])) lunchables_lunches_ = init_lunchable_list(lunchables_lunches_) @@ -66,9 +88,28 @@ var/list/lunchables_drinks_ = list(/obj/item/weapon/reagent_containers/food/drin lunchables_drinks_ = init_lunchable_list(lunchables_drinks_) return lunchables_drinks_ +/proc/lunchables_drink_reagents() + if(!(lunchables_drink_reagents_[lunchables_drink_reagents_[1]])) + lunchables_drink_reagents_ = init_lunchable_reagent_list(lunchables_drink_reagents_, /datum/reagent/drink) + return lunchables_drink_reagents_ + +/proc/lunchables_ethanol_reagents() + if(!(lunchables_ethanol_reagents_[lunchables_ethanol_reagents_[1]])) + lunchables_ethanol_reagents_ = init_lunchable_reagent_list(lunchables_ethanol_reagents_, /datum/reagent/ethanol) + return lunchables_ethanol_reagents_ + /proc/init_lunchable_list(var/list/lunches) - var/list/unsorted_lunches = list() + . = list() for(var/lunch in lunches) var/obj/O = lunch - unsorted_lunches[initial(O.name)] = lunch - return sortAssoc(unsorted_lunches) + .[initial(O.name)] = lunch + return sortAssoc(.) + +/proc/init_lunchable_reagent_list(var/list/banned_reagents, var/reagent_types) + . = list() + for(var/reagent_type in subtypes(reagent_types)) + if(reagent_type in banned_reagents) + continue + var/datum/reagent/reagent = reagent_type + .[initial(reagent.name)] = initial(reagent.id) + return sortAssoc(.) diff --git a/html/changelogs/PsiOmegaDelta-LoadoutDrinks.yml b/html/changelogs/PsiOmegaDelta-LoadoutDrinks.yml new file mode 100644 index 0000000000..50927ecb26 --- /dev/null +++ b/html/changelogs/PsiOmegaDelta-LoadoutDrinks.yml @@ -0,0 +1,4 @@ +author: PsiOmegaDelta +delete-after: True +changes: + - rscadd: "Can now prefill the loadout flask and vacuum-flask with a relevant liquid of your choice."