diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
index 64f4ee35f6076..53fef07eb194a 100644
--- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
@@ -666,6 +666,10 @@
/obj/machinery/vending/wardrobe/science_wardrobe = "SciDrobe",
/obj/machinery/vending/wardrobe/sec_wardrobe = "SecDrobe",
/obj/machinery/vending/wardrobe/viro_wardrobe = "ViroDrobe",
+ /obj/machinery/vending/imported/nt = "NT Sustenance Supplier", //DOPPLER ADDITION
+ /obj/machinery/vending/imported/yangyu = "Fudobenda", //DOPPLER ADDITION
+ /obj/machinery/vending/imported/mothic = "Nomad Fleet Ration Chit Exchange", //DOPPLER ADDITION
+ /obj/machinery/vending/imported/tiziran = "Tiziran Imported Delicacies", //DOPPLER ADDITION
)
/obj/item/circuitboard/machine/vendor/screwdriver_act(mob/living/user, obj/item/tool)
diff --git a/modular_doppler/clutter objects/icons/janitor.dmi b/modular_doppler/clutter objects/icons/janitor.dmi
new file mode 100644
index 0000000000000..fb41f7464c829
Binary files /dev/null and b/modular_doppler/clutter objects/icons/janitor.dmi differ
diff --git a/modular_doppler/modular_food_drinks_and_chems/chemistry_reagents.dm b/modular_doppler/modular_food_drinks_and_chems/chemistry_reagents.dm
new file mode 100644
index 0000000000000..99b6fc2339b82
--- /dev/null
+++ b/modular_doppler/modular_food_drinks_and_chems/chemistry_reagents.dm
@@ -0,0 +1,101 @@
+/*
+/datum/reagent/fuel
+ process_flags = REAGENT_ORGANIC | REAGENT_SYNTHETIC
+
+/datum/reagent/fuel/oil
+ process_flags = REAGENT_ORGANIC | REAGENT_SYNTHETIC
+
+/datum/reagent/stable_plasma
+ process_flags = REAGENT_ORGANIC | REAGENT_SYNTHETIC
+
+/datum/reagent/pax
+ process_flags = REAGENT_ORGANIC | REAGENT_SYNTHETIC
+
+/datum/reagent/water
+ process_flags = REAGENT_ORGANIC | REAGENT_SYNTHETIC
+
+/datum/reagent/hellwater
+ process_flags = REAGENT_ORGANIC | REAGENT_SYNTHETIC
+
+/datum/reagent/carbondioxide
+ process_flags = REAGENT_ORGANIC | REAGENT_SYNTHETIC
+
+/datum/reagent/iron
+ chemical_flags_nova = REAGENT_BLOOD_REGENERATING
+
+/datum/reagent/blood
+ chemical_flags_nova = REAGENT_BLOOD_REGENERATING // For Hemophages to be able to drink it without any issue.
+
+/datum/reagent/blood/on_new(list/data)
+ . = ..()
+
+ if(!src.data["blood_type"])
+ src.data["blood_type"] = random_blood_type() // This is so we don't get blood without a blood type spawned from something that doesn't explicitly set the blood type.
+
+
+
+/datum/reagent/stable_plasma/on_mob_life(mob/living/carbon/C)
+ if(C.mob_biotypes & MOB_ROBOTIC)
+ C.nutrition = min(C.nutrition + 5, NUTRITION_LEVEL_FULL-1)
+ ..()
+
+/datum/reagent/fuel/on_mob_life(mob/living/carbon/C)
+ if(C.mob_biotypes & MOB_ROBOTIC)
+ C.nutrition = min(C.nutrition + 5, NUTRITION_LEVEL_FULL-1)
+ ..()
+
+/datum/reagent/fuel/oil/on_mob_life(mob/living/carbon/C)
+ if(C.mob_biotypes & MOB_ROBOTIC && C.blood_volume < BLOOD_VOLUME_NORMAL)
+ C.blood_volume += 0.5
+ ..()
+
+/datum/reagent/carbondioxide/on_mob_life(mob/living/carbon/C)
+ if(C.mob_biotypes & MOB_ROBOTIC)
+ C.nutrition = min(C.nutrition + 5, NUTRITION_LEVEL_FULL-1)
+ ..()
+*/
+// Catnip
+/datum/reagent/pax/catnip
+ name = "Catnip"
+ taste_description = "grass"
+ description = "A colourless liquid that makes people more peaceful and felines happier."
+ metabolization_rate = 1.75 * REAGENTS_METABOLISM
+
+/datum/reagent/pax/catnip/on_mob_life(mob/living/carbon/M)
+ if(isfelinid(M))
+ if(prob(20))
+ M.emote("nya")
+ if(prob(20))
+ to_chat(M, span_notice("[pick("Headpats feel nice.", "Backrubs would be nice.", "Mew")]"))
+ else
+ to_chat(M, span_notice("[pick("I feel oddly calm.", "I feel relaxed.", "Mew?")]"))
+ ..()
+
+/*
+#define DERMAGEN_SCAR_FIX_AMOUNT 10
+
+/datum/reagent/medicine/dermagen
+ name = "Dermagen"
+ description = "Heals scars formed by past physical trauma when applied. Minimum 10u needed, only works when applied topically."
+ reagent_state = LIQUID
+ color = "#FFEBEB"
+ ph = 6
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+
+/datum/reagent/medicine/dermagen/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE)
+ . = ..()
+ if(!iscarbon(exposed_mob))
+ return
+ if(!(methods & (PATCH|TOUCH|VAPOR)))
+ return
+ var/mob/living/carbon/scarred = exposed_mob
+ if(scarred.stat == DEAD)
+ show_message = FALSE
+ if(show_message)
+ to_chat(scarred, span_danger("The scars on your body start to fade and disappear."))
+ if(reac_volume >= DERMAGEN_SCAR_FIX_AMOUNT)
+ for(var/i in scarred.all_scars)
+ qdel(i)
+
+#undef DERMAGEN_SCAR_FIX_AMOUNT
+*/
diff --git a/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/alcohol reagents.dm b/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/alcohol reagents.dm
new file mode 100644
index 0000000000000..8e639ef8f63b5
--- /dev/null
+++ b/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/alcohol reagents.dm
@@ -0,0 +1,900 @@
+/*STUFF WE CAN'T USE YET BECAUSE WE HAVEN'T PORTED THEIR PRECURSORS
+
+// Modular Booze REAGENTS, see the following file for the mixes: modular_nova\modules\customization\modules\food_and_drinks\recipes\drinks_recipes.dm
+
+/datum/reagent/consumable/ethanol/whiskey
+ process_flags = REAGENT_ORGANIC | REAGENT_SYNTHETIC //let's not force the detective to change his alcohol brand
+
+
+/datum/reagent/consumable/ethanol/bloody_mary
+ chemical_flags_nova = REAGENT_BLOOD_REGENERATING
+*/
+
+/*SYNTHETIC DRINKS
+/datum/reagent/consumable/ethanol/synthanol
+ name = "Synthanol"
+ description = "A runny liquid with conductive capacities. Its effects on synthetics are similar to those of alcohol on organics."
+ color = "#1BB1FF"
+ process_flags = REAGENT_ORGANIC | REAGENT_SYNTHETIC
+ boozepwr = 50
+ quality = DRINK_NICE
+ taste_description = "motor oil"
+
+/datum/glass_style/drinking_glass/synthanol
+ required_drink_type = /datum/reagent/consumable/ethanol/synthanol
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "synthanolglass"
+ name = "glass of synthanol"
+ desc = "The equivalent of alcohol for synthetic crewmembers. They'd find it awful if they had tastebuds too."
+
+/datum/reagent/consumable/ethanol/synthanol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
+ if(!(affected_mob.mob_biotypes & MOB_ROBOTIC))
+ affected_mob.reagents.remove_reagent(type, 3.6 * REM * seconds_per_tick) //gets removed from organics very fast
+ if(prob(25))
+ affected_mob.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 5)
+ return ..()
+
+/datum/reagent/consumable/ethanol/synthanol/expose_mob(mob/living/carbon/C, method=TOUCH, volume)
+ . = ..()
+ if(C.mob_biotypes & MOB_ROBOTIC)
+ return
+ if(method == INGEST)
+ to_chat(C, pick(span_danger("That was awful!"), span_danger("That was disgusting!")))
+
+/datum/reagent/consumable/ethanol/synthanol/robottears
+ name = "Robot Tears"
+ description = "An oily substance that an IPC could technically consider a 'drink'."
+ color = "#363636"
+ quality = DRINK_GOOD
+ boozepwr = 25
+ taste_description = "existential angst"
+
+/datum/glass_style/drinking_glass/synthanol/robottears
+ required_drink_type = /datum/reagent/consumable/ethanol/synthanol/robottears
+ icon_state = "robottearsglass"
+ name = "glass of robot tears"
+ desc = "No robots were hurt in the making of this drink."
+
+/datum/reagent/consumable/ethanol/synthanol/trinary
+ name = "Trinary"
+ description = "A fruit drink meant only for synthetics, however that works."
+ color = "#ADB21f"
+ quality = DRINK_GOOD
+ boozepwr = 20
+ taste_description = "modem static"
+
+/datum/glass_style/drinking_glass/synthanol/trinary
+ required_drink_type = /datum/reagent/consumable/ethanol/synthanol/trinary
+ icon_state = "trinaryglass"
+ name = "glass of trinary"
+ desc = "Colorful drink made for synthetic crewmembers. It doesn't seem like it would taste well."
+
+/datum/reagent/consumable/ethanol/synthanol/servo
+ name = "Servo"
+ description = "A drink containing some organic ingredients, but meant only for synthetics."
+ color = "#5B3210"
+ quality = DRINK_GOOD
+ boozepwr = 25
+ taste_description = "motor oil and cocoa"
+
+/datum/glass_style/drinking_glass/synthanol/servo
+ required_drink_type = /datum/reagent/consumable/ethanol/synthanol/servo
+ icon_state = "servoglass"
+ name = "glass of servo"
+ desc = "Chocolate - based drink made for IPCs. Not sure if anyone's actually tried out the recipe."
+
+/datum/reagent/consumable/ethanol/synthanol/uplink
+ name = "Uplink"
+ description = "A potent mix of alcohol and synthanol. Will only work on synthetics."
+ color = "#E7AE04"
+ quality = DRINK_GOOD
+ boozepwr = 15
+ taste_description = "a GUI in visual basic"
+
+/datum/glass_style/drinking_glass/synthanol/uplink
+ required_drink_type = /datum/reagent/consumable/ethanol/synthanol/uplink
+ icon_state = "uplinkglass"
+ name = "glass of uplink"
+ desc = "An exquisite mix of the finest liquoirs and synthanol. Meant only for synthetics."
+
+/datum/reagent/consumable/ethanol/synthanol/synthncoke
+ name = "Synth 'n Coke"
+ description = "The classic drink adjusted for a robot's tastes."
+ color = "#7204E7"
+ quality = DRINK_GOOD
+ boozepwr = 25
+ taste_description = "fizzy motor oil"
+
+/datum/glass_style/drinking_glass/synthanol/synthncoke
+ required_drink_type = /datum/reagent/consumable/ethanol/synthanol/synthncoke
+ icon_state = "synthncokeglass"
+ name = "glass of synth 'n coke"
+ desc = "Classic drink altered to fit the tastes of a robot, contains de-rustifying properties. Bad idea to drink if you're made of carbon."
+
+/datum/reagent/consumable/ethanol/synthanol/synthignon
+ name = "Synthignon"
+ description = "Someone mixed wine and alcohol for robots. Hope you're proud of yourself."
+ color = "#D004E7"
+ quality = DRINK_GOOD
+ boozepwr = 25
+ taste_description = "fancy motor oil"
+
+/datum/glass_style/drinking_glass/synthanol/synthignon
+ required_drink_type = /datum/reagent/consumable/ethanol/synthanol/synthignon
+ icon_state = "synthignonglass"
+ name = "glass of synthignon"
+ desc = "Someone mixed good wine and robot booze. Romantic, but atrocious."
+*/
+// Other Booze
+
+/datum/reagent/consumable/ethanol/hot_toddy
+ name = "Hot Toddy"
+ description = "An old fashioned cocktail made of honey, rum, and tea."
+ color = "#e4830d"
+ boozepwr = 40
+ quality = DRINK_GOOD
+ taste_description = "sweet spiced tea"
+
+/datum/glass_style/drinking_glass/hot_toddy
+ required_drink_type = /datum/reagent/consumable/ethanol/hot_toddy
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "hot_toddy"
+ name = "hot toddy glass"
+ desc = "An old fashioned cocktail made of honey, rum, and tea, it tastes like sweet holiday spices."
+
+/datum/reagent/consumable/ethanol/hellfire
+ name = "Hellfire"
+ description = "A nice drink that isn't quite as hot as it looks."
+ color = "#fb2203"
+ boozepwr = 60
+ quality = DRINK_VERYGOOD
+ taste_description = "cold flames that lick at the top of your mouth"
+
+/datum/glass_style/drinking_glass/hellfire
+ required_drink_type = /datum/reagent/consumable/ethanol/hellfire
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "hellfire"
+ name = "glass of hellfire"
+ desc = "An amber colored drink that isn't quite as hot as it looks."
+
+/datum/reagent/consumable/ethanol/hellfire/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
+ . = ..()
+ affected_mob.adjust_bodytemperature(30 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, 0, BODYTEMP_NORMAL + 30)
+
+/datum/reagent/consumable/ethanol/sins_delight
+ name = "Sin's Delight"
+ description = "The drink smells like the seven sins."
+ color = "#330000"
+ boozepwr = 66
+ quality = DRINK_FANTASTIC
+ taste_description = "overpowering sweetness with a touch of sourness, followed by iron and the sensation of a warm summer breeze"
+// chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING //component drink is demon's blood, thus this drink is made with blood so hemophages can comfortably drink it
+
+/datum/glass_style/drinking_glass/sins_delight
+ required_drink_type = /datum/reagent/consumable/ethanol/sins_delight
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "sins_delight"
+ name = "glass of sin's delight"
+ desc = "You can smell the seven sins rolling off the top of the glass."
+
+/datum/reagent/consumable/ethanol/strawberry_daiquiri
+ name = "Strawberry Daiquiri"
+ description = "Pink looking alcoholic drink."
+ boozepwr = 20
+ color = "#FF4A74"
+ quality = DRINK_NICE
+ taste_description = "sweet strawberry, lime and the ocean breeze"
+
+/datum/glass_style/drinking_glass/strawberry_daiquiri
+ required_drink_type = /datum/reagent/consumable/ethanol/strawberry_daiquiri
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "strawberry_daiquiri"
+ name = "glass of strawberry daiquiri"
+ desc = "Pink looking drink with flowers and a big straw to sip it. Looks sweet and refreshing, perfect for warm days."
+
+/datum/reagent/consumable/ethanol/liz_fizz
+ name = "Liz Fizz"
+ description = "Triple citrus layered with some ice and cream."
+ boozepwr = 0
+ color = "#D8FF59"
+ quality = DRINK_NICE
+ taste_description = "brain freezing sourness"
+
+/datum/glass_style/drinking_glass/liz_fizz
+ required_drink_type = /datum/reagent/consumable/ethanol/liz_fizz
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "liz_fizz"
+ name = "glass of liz fizz"
+ desc = "Looks like a citrus sherbet seperated in layers? Why would anyone want that is beyond you."
+
+/datum/reagent/consumable/ethanol/miami_vice
+ name = "Miami Vice"
+ description = "A drink layering Pina Colada and Strawberry Daiquiri"
+ boozepwr = 30
+ color = "#D8FF59"
+ quality = DRINK_FANTASTIC
+ taste_description = "sweet and refreshing flavor, complemented with strawberries and coconut, and hints of citrus"
+
+/datum/glass_style/drinking_glass/miami_vice
+ required_drink_type = /datum/reagent/consumable/ethanol/miami_vice
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "miami_vice"
+ name = "glass of miami vice"
+ desc = "Strawberries and coconut, like yin and yang."
+
+/datum/reagent/consumable/ethanol/malibu_sunset
+ name = "Malibu Sunset"
+ description = "A drink consisting of creme de coconut and tropical juices"
+ boozepwr = 20
+ color = "#FF9473"
+ quality = DRINK_VERYGOOD
+ taste_description = "coconut, with orange and grenadine accents"
+
+/datum/glass_style/drinking_glass/malibu_sunset
+ required_drink_type = /datum/reagent/consumable/ethanol/malibu_sunset
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "malibu_sunset"
+ name = "glass of malibu sunset"
+ desc = "Tropical looking drinks, with ice cubes hovering on the surface and grenadine coloring the bottom."
+
+/datum/reagent/consumable/ethanol/hotlime_miami
+ name = "Hotlime Miami"
+ description = "The essence of the 90's, if they were a bloody mess that is."
+ boozepwr = 40
+ color = "#A7FAE8"
+ quality = DRINK_FANTASTIC
+ taste_description = "coconut and aesthetic violence"
+
+/datum/glass_style/drinking_glass/hotlime_miami
+ required_drink_type = /datum/reagent/consumable/ethanol/hotlime_miami
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "hotlime_miami"
+ name = "glass of hotlime miami"
+ desc = "This looks very aesthetically pleasing."
+
+/datum/reagent/consumable/ethanol/hotlime_miami/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
+ . = ..()
+ affected_mob.set_drugginess(1.5 MINUTES * REM * seconds_per_tick)
+ if(affected_mob.adjustStaminaLoss(-2 * REM * seconds_per_tick, updating_stamina = FALSE))
+ return UPDATE_MOB_HEALTH
+
+/datum/reagent/consumable/ethanol/coggrog
+ name = "Cog Grog"
+ description = "Now you can fill yourself with the power of Ratvar!"
+ color = rgb(255, 201, 49)
+ boozepwr = 10
+ quality = DRINK_FANTASTIC
+ taste_description = "a brass taste with a hint of oil"
+
+/datum/glass_style/drinking_glass/coggrog
+ required_drink_type = /datum/reagent/consumable/ethanol/coggrog
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "coggrog"
+ name = "glass of cog grog"
+ desc = "Not even Ratvar's Four Generals could withstand this! Qevax Jryy!"
+
+/datum/reagent/consumable/ethanol/badtouch
+ name = "Bad Touch"
+ description = "A sour and vintage drink. Some say the inventor gets slapped a lot."
+ color = rgb(31, 181, 99)
+ boozepwr = 35
+ quality = DRINK_GOOD
+ taste_description = "a slap to the face"
+
+/datum/glass_style/drinking_glass/badtouch
+ required_drink_type = /datum/reagent/consumable/ethanol/badtouch
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "badtouch"
+ name = "glass of bad touch"
+ desc = "We're nothing but mammals after all."
+
+/datum/reagent/consumable/ethanol/marsblast
+ name = "Marsblast"
+ description = "A spicy and manly drink in honor of the first colonists on Mars."
+ color = rgb(246, 143, 55)
+ boozepwr = 70
+ quality = DRINK_FANTASTIC
+ taste_description = "hot red sand"
+
+/datum/glass_style/drinking_glass/marsblast
+ required_drink_type = /datum/reagent/consumable/ethanol/marsblast
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "marsblast"
+ name = "glass of marsblast"
+ desc = "One of these is enough to leave your face as red as the planet."
+
+/datum/reagent/consumable/ethanol/mercuryblast
+ name = "Mercuryblast"
+ description = "A sour burningly cold drink that's sure to chill the drinker."
+ color = rgb(29, 148, 213)
+ boozepwr = 40
+ quality = DRINK_VERYGOOD
+ taste_description = "chills down your spine"
+
+/datum/glass_style/drinking_glass/mercuryblast
+ required_drink_type = /datum/reagent/consumable/ethanol/mercuryblast
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "mercuryblast"
+ name = "glass of mercuryblast"
+ desc = "No thermometers were harmed in the creation of this drink"
+
+/datum/reagent/consumable/ethanol/mercuryblast/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
+ . = ..()
+ affected_mob.adjust_bodytemperature(-30 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, T0C)
+
+/datum/reagent/consumable/ethanol/piledriver
+ name = "Piledriver"
+ description = "A bright drink that leaves you with a burning sensation."
+ color = rgb(241, 146, 59)
+ boozepwr = 45
+ quality = DRINK_NICE
+ taste_description = "a fire in your throat"
+
+/datum/glass_style/drinking_glass/piledriver
+ required_drink_type = /datum/reagent/consumable/ethanol/piledriver
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "piledriver"
+ name = "glass of piledriver"
+ desc = "Not the only thing to leave your throat sore."
+
+/datum/reagent/consumable/ethanol/zenstar
+ name = "Zen Star"
+ description = "A sour and bland drink, rather disappointing."
+ color = rgb(51, 87, 203)
+ boozepwr = 35
+ quality = DRINK_NICE
+ taste_description = "disappointment"
+
+/datum/glass_style/drinking_glass/zenstar
+ required_drink_type = /datum/reagent/consumable/ethanol/zenstar
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "zenstar"
+ name = "glass of zen star"
+ desc = "You'd think something so balanced would actually taste nice... you'd be dead wrong."
+
+
+/* MORE RACE SPECIFIC STUFF WE DON'T HAVE SUPPORT FOR YET
+// RACE SPECIFIC DRINKS
+
+/datum/reagent/consumable/ethanol/coldscales
+ name = "Coldscales"
+ color = "#5AEB52" //(90, 235, 82)
+ description = "A cold looking drink made for people with scales."
+ boozepwr = 50 //strong!
+ taste_description = "dead flies"
+
+/datum/glass_style/drinking_glass/coldscales
+ required_drink_type = /datum/reagent/consumable/ethanol/coldscales
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "coldscales"
+ name = "glass of coldscales"
+ desc = "A soft green drink that looks inviting!"
+
+/datum/reagent/consumable/ethanol/coldscales/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(islizard(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()
+
+/datum/reagent/consumable/ethanol/oil_drum
+ name = "Oil Drum"
+ color = "#000000" //(0, 0, 0)
+ description = "Industrial grade oil mixed with some ethanol to make it a drink. Somehow not known to be toxic."
+ boozepwr = 45
+ taste_description = "oil spill"
+
+/datum/glass_style/drinking_glass/oil_drum
+ required_drink_type = /datum/reagent/consumable/ethanol/oil_drum
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "oil_drum"
+ name = "drum of oil"
+ desc = "A gray can of booze and oil..."
+
+/datum/reagent/consumable/ethanol/oil_drum/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(MOB_ROBOTIC)
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()
+
+/datum/reagent/consumable/ethanol/nord_king
+ name = "Nord King"
+ color = "#EB1010" //(235, 16, 16)
+ description = "Strong mead mixed with more honey and ethanol. Beloved by its human patrons."
+ boozepwr = 50 //strong!
+ taste_description = "honey and red wine"
+ chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
+
+/datum/glass_style/drinking_glass/nord_king
+ required_drink_type = /datum/reagent/consumable/ethanol/nord_king
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "nord_king"
+ name = "keg of nord king"
+ desc = "A dripping keg of red mead."
+
+/datum/reagent/consumable/ethanol/nord_king/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(ishumanbasic(exposed_mob) || isdwarf(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()
+
+/datum/reagent/consumable/ethanol/velvet_kiss
+ name = "Velvet Kiss"
+ color = "#EB1010" //(235, 16, 16)
+ description = "A bloody drink mixed with wine."
+ boozepwr = 10 //weak
+ taste_description = "iron with grapejuice"
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+ chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
+
+/datum/glass_style/drinking_glass/velvet_kiss
+ required_drink_type = /datum/reagent/consumable/ethanol/velvet_kiss
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "velvet_kiss"
+ name = "glass of velvet kiss"
+ desc = "Red and white drink for the upper classes or undead."
+
+/datum/reagent/consumable/ethanol/velvet_kiss/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(iszombie(exposed_mob) || isvampire(exposed_mob) || isdullahan(exposed_mob) || ishemophage(exposed_mob)) //Rare races!
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()
+
+/datum/reagent/consumable/ethanol/velvet_kiss/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
+ . = ..()
+ if(drinker.blood_volume < BLOOD_VOLUME_NORMAL)
+ drinker.blood_volume = min(drinker.blood_volume + (1 * REM * seconds_per_tick), BLOOD_VOLUME_NORMAL) //Same as Bloody Mary, as it is roughly the same difficulty to make. Gives hemophages a bit more choices to supplant their blood levels.
+
+/datum/reagent/consumable/ethanol/abduction_fruit
+ name = "Abduction Fruit"
+ color = "#DEFACD" //(222, 250, 205)
+ description = "Mixing of juices to make an alien taste."
+ boozepwr = 80 //Strong
+ taste_description = "grass and lime"
+
+/datum/glass_style/drinking_glass/abduction_fruit
+ required_drink_type = /datum/reagent/consumable/ethanol/abduction_fruit
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "abduction_fruit"
+ name = "glass of abduction fruit"
+ desc = "Mixed fruits that were never meant to be mixed..."
+
+/datum/reagent/consumable/ethanol/abduction_fruit/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isabductor(exposed_mob) || isxenohybrid(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()
+
+/datum/reagent/consumable/ethanol/bug_zapper
+ name = "Bug Zapper"
+ color = "#F5882A" //(222, 250, 205)
+ description = "Copper and lemon juice. Hardly even a drink."
+ boozepwr = 5 //No booze really
+ taste_description = "copper and AC power"
+
+/datum/glass_style/drinking_glass/bug_zapper
+ required_drink_type = /datum/reagent/consumable/ethanol/bug_zapper
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "bug_zapper"
+ name = "glass of bug zapper"
+ desc = "An odd mix of copper, lemon juice and power meant for non-human consumption."
+
+/datum/reagent/consumable/ethanol/bug_zapper/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isinsect(exposed_mob) || isflyperson(exposed_mob) || ismoth(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()
+
+/datum/reagent/consumable/ethanol/mush_crush
+ name = "Mush Crush"
+ color = "#F5882A" //(222, 250, 205)
+ description = "Soil in a glass."
+ boozepwr = 5 //No booze really
+ taste_description = "dirt and iron"
+
+/datum/glass_style/drinking_glass/mush_crush
+ required_drink_type = /datum/reagent/consumable/ethanol/mush_crush
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "mush_crush"
+ name = "glass of mush crush"
+ desc = "Popular among people that want to grow their own food rather than drink the soil."
+
+/datum/reagent/consumable/ethanol/mush_crush/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(ispodperson(exposed_mob) || issnail(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()
+
+/datum/reagent/consumable/ethanol/hollow_bone
+ name = "Hollow Bone"
+ color = "#FCF7D4" //(252, 247, 212)
+ description = "Shockingly none-harmful mix of toxins and milk."
+ boozepwr = 15
+ taste_description = "Milk and salt"
+
+/datum/glass_style/drinking_glass/hollow_bone
+ required_drink_type = /datum/reagent/consumable/ethanol/hollow_bone
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "hollow_bone"
+ name = "skull of hollow bone"
+ desc = "Mixing of milk and bone hurting juice for enjoyment for rather skinny people."
+
+/datum/reagent/consumable/ethanol/hollow_bone/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isplasmaman(exposed_mob) || isskeleton(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()
+
+/datum/reagent/consumable/ethanol/jell_wyrm
+ name = "Jell Wyrm"
+ color = "#FF6200" //(255, 98, 0)
+ description = "Horrible mix of CO2, toxins, and heat. Meant for slime based life."
+ boozepwr = 40
+ taste_description = "tropical sea"
+
+/datum/glass_style/drinking_glass/jell_wyrm
+ required_drink_type = /datum/reagent/consumable/ethanol/jell_wyrm
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "jell_wyrm"
+ name = "glass of jell wyrm"
+ desc = "A bubbly drink that is rather inviting to those that don't know who it's meant for."
+
+/datum/reagent/consumable/ethanol/jell_wyrm/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
+ . = ..()
+ if(prob(20))
+ if(affected_mob.adjustToxLoss(0.5 * REM * seconds_per_tick, updating_health = FALSE))
+ return UPDATE_MOB_HEALTH
+
+#define JELLWYRM_DISGUST 25
+
+/datum/reagent/consumable/ethanol/jell_wyrm/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isjellyperson(exposed_mob) || isslimeperson(exposed_mob) || isluminescent(exposed_mob))
+ quality = RACE_DRINK
+ else //if youre not a slime, jell wyrm should be GROSS
+ exposed_mob.adjust_disgust(JELLWYRM_DISGUST)
+ return ..()
+
+#undef JELLWYRM_DISGUST
+
+/datum/reagent/consumable/ethanol/laval_spit //Yes Laval
+ name = "Laval Spit"
+ color = "#DE3009" //(222, 48, 9)
+ description = "Heat minerals and some mauna loa. Meant for rock based life."
+ boozepwr = 30
+ taste_description = "tropical island"
+
+/datum/glass_style/drinking_glass/laval_spit
+ required_drink_type = /datum/reagent/consumable/ethanol/laval_spit
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "laval_spit"
+ name = "glass of laval spit"
+ desc = "Piping hot drink for those who can stomach the heat of lava."
+
+/datum/reagent/consumable/ethanol/laval_spit/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isgolem(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()
+*/
+
+/datum/reagent/consumable/ethanol/frisky_kitty
+ name = "Frisky Kitty"
+ color = "#FCF7D4" //(252, 247, 212)
+ description = "Warm milk mixed with catnip."
+ boozepwr = 0
+ taste_description = "Warm milk and catnip"
+
+/datum/glass_style/drinking_glass/frisky_kitty
+ required_drink_type = /datum/reagent/consumable/ethanol/frisky_kitty
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "frisky_kitty"
+ name = "cup of frisky kitty"
+ desc = "Warm milk and some catnip."
+
+/*/datum/reagent/consumable/ethanol/frisky_kitty/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isfelinid(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()*/
+
+/*
+/datum/reagent/consumable/ethanol/bloodshot_base
+ name = "Bloodshot Base"
+ description = "The bootleg blend of nutrients and alcohol that goes into making Bloodshots. Doesn't taste too great on its own, for Hemophages at least."
+ color = "#c29ca1"
+ boozepwr = 25 // Still more concentrated than in Bloodshot.
+ taste_description = "nutritious mix with an alcoholic kick to it"
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+
+
+/datum/reagent/consumable/ethanol/bloodshot
+ name = "Bloodshot"
+ description = "The history of the 'Bloodshot' is based in a mix of flavor-neutral chems devised to help deliver nutrients to a Hemophage's tumorous organs. Due to the expense of the real thing and the clinical nature of it, this liquor has been designed as a 'improvised' alternative; though, still tasting like a hangover cure. It smells like iron, giving a clue to the key ingredient."
+ color = "#a30000"
+ boozepwr = 20 // The only booze in it is Bloody Mary
+ taste_description = "blood filled to the brim with nutrients of all kinds"
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+ chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
+
+
+/datum/glass_style/drinking_glass/bloodshot
+ required_drink_type = /datum/reagent/consumable/ethanol/bloodshot
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "bloodshot"
+ name = "glass of bloodshot"
+ desc = "The history of the 'Bloodshot' is based in a mix of flavor-neutral chems devised to help deliver nutrients to a Hemophage's tumorous organs. Due to the expense of the real thing and the clinical nature of it, this liquor has been designed as a 'improvised' alternative; though, still tasting like a hangover cure. It smells like iron, giving a clue to the key ingredient."
+
+
+#define BLOODSHOT_DISGUST 25
+
+/datum/reagent/consumable/ethanol/bloodshot/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(ishemophage(exposed_mob))
+ quality = RACE_DRINK
+
+ else if(exposed_mob.blood_volume < exposed_mob.blood_volume_normal)
+ quality = DRINK_GOOD
+
+ if(!quality) // Basically, you don't have a reason to want to have this in your system, it doesn't taste good to you!
+ exposed_mob.adjust_disgust(BLOODSHOT_DISGUST)
+
+ return ..()
+
+#undef BLOODSHOT_DISGUST
+
+/datum/reagent/consumable/ethanol/bloodshot/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
+ . = ..()
+ if(drinker.blood_volume < drinker.blood_volume_normal)
+ drinker.blood_volume = max(drinker.blood_volume, min(drinker.blood_volume + (3 * REM * seconds_per_tick), BLOOD_VOLUME_NORMAL)) //Bloodshot quickly restores blood loss.
+
+/datum/reagent/consumable/ethanol/blizzard_brew
+ name = "Blizzard Brew"
+ description = "An ancient recipe. Served best chilled as much as dwarvenly possible."
+ color = rgb(180, 231, 216)
+ boozepwr = 25
+ metabolization_rate = 1.25 * REAGENTS_METABOLISM
+ taste_description = "ancient icicles"
+ overdose_threshold = 25
+ var/obj/structure/ice_stasis/cube
+ var/atom/movable/screen/alert/status_effect/freon/cryostylane_alert
+
+/datum/glass_style/drinking_glass/blizzard_brew
+ required_drink_type = /datum/reagent/consumable/ethanol/blizzard_brew
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "blizzard_brew"
+ name = "glass of Blizzard Brew"
+ desc = "An ancient recipe. Served best chilled as much as dwarvenly possible."
+
+/datum/reagent/consumable/ethanol/blizzard_brew/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isdwarf(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_NICE
+ return ..()
+
+/datum/reagent/consumable/ethanol/blizzard_brew/overdose_start(mob/living/carbon/drinker)
+ . = ..()
+ cube = new /obj/structure/ice_stasis(get_turf(drinker))
+ cube.color = COLOR_CYAN
+ cube.set_anchored(TRUE)
+ drinker.forceMove(cube)
+ cryostylane_alert = drinker.throw_alert("cryostylane_alert", /atom/movable/screen/alert/status_effect/freon/cryostylane)
+ cryostylane_alert.attached_effect = src //so the alert can reference us, if it needs to
+
+/datum/reagent/consumable/ethanol/blizzard_brew/on_mob_delete(mob/living/carbon/drinker, amount)
+ QDEL_NULL(cube)
+ drinker.clear_alert("cryostylane_alert")
+ return ..()
+
+/datum/reagent/consumable/ethanol/molten_mead
+ name = "Molten Mead"
+ description = "Famously known to set beards aflame. Ingest at your own risk!"
+ color = rgb(224, 78, 16)
+ boozepwr = 35
+ metabolization_rate = 1.25 * REAGENTS_METABOLISM
+ taste_description = "burning wasps"
+ overdose_threshold = 25
+
+/datum/glass_style/drinking_glass/molten_mead
+ required_drink_type = /datum/reagent/consumable/ethanol/molten_mead
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "molten_mead"
+ name = "glass of Molten Mead"
+ desc = "Famously known to set beards aflame. Ingest at your own risk!"
+
+/datum/reagent/consumable/ethanol/molten_mead/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isdwarf(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_VERYGOOD
+ return ..()
+
+/datum/reagent/consumable/ethanol/molten_mead/overdose_start(mob/living/carbon/drinker)
+ drinker.adjust_fire_stacks(2)
+ drinker.ignite_mob()
+ ..()
+*/
+/datum/reagent/consumable/ethanol/hippie_hooch
+ name = "Hippie Hooch"
+ description = "Peace and love! Under request of the HR department, this drink is sure to sober you up quickly."
+ color = rgb(77, 138, 34)
+ boozepwr = -20
+ taste_description = "eggy hemp"
+ var/static/list/status_effects_to_clear = list(
+ /datum/status_effect/confusion,
+ /datum/status_effect/dizziness,
+ /datum/status_effect/drowsiness,
+ /datum/status_effect/speech/slurring/drunk,
+ )
+
+/datum/glass_style/drinking_glass/hippie_hooch
+ required_drink_type = /datum/reagent/consumable/ethanol/hippie_hooch
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "hippie_hooch"
+ name = "glass of Hippie Hooch"
+ desc = "Peace and love! Under request of the HR department, this drink is sure to sober you up quickly."
+
+/*/datum/reagent/consumable/ethanol/hippie_hooch/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isdwarf(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_FANTASTIC
+ return ..()*/
+
+/datum/reagent/consumable/ethanol/hippie_hooch/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
+ for(var/effect in status_effects_to_clear)
+ affected_mob.remove_status_effect(effect)
+ affected_mob.reagents.remove_reagent(/datum/reagent/consumable/ethanol, 3 * REM * seconds_per_tick, include_subtypes = TRUE)
+ . = ..()
+ if(affected_mob.adjustToxLoss(-0.2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
+ . = UPDATE_MOB_HEALTH
+ affected_mob.adjust_drunk_effect(-10 * REM * seconds_per_tick)
+
+/datum/reagent/consumable/ethanol/research_rum
+ name = "Research Rum"
+ description = "Cooked up by dwarven scientists, this glowing pink brew is sure to supercharge your thinking. How? Science!"
+ color = rgb(169, 69, 169)
+ boozepwr = 50
+ taste_description = "slippery grey matter"
+
+/datum/glass_style/drinking_glass/research_rum
+ required_drink_type = /datum/reagent/consumable/ethanol/research_rum
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "research_rum"
+ name = "glass of Research Rum"
+ desc = "Cooked up by dwarven scientists, this glowing pink brew is sure to supercharge your thinking. How? Science!"
+
+/*/datum/reagent/consumable/ethanol/research_rum/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isdwarf(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_GOOD
+ return ..()*/
+
+/datum/reagent/consumable/ethanol/research_rum/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
+ . = ..()
+ if(prob(5))
+ drinker.say(pick_list_replacements(VISTA_FILE, "ballmer_good_msg"), forced = "ballmer")
+
+/datum/reagent/consumable/ethanol/golden_grog
+ name = "Golden Grog"
+ description = "A drink concocted by a dwarven Quartermaster who had too much time and money on his hands. Commonly ordered by influencers looking to flaunt their wealth."
+ color = rgb(247, 230, 141)
+ boozepwr = 70
+ taste_description = "sweet credit holochips"
+
+/datum/glass_style/drinking_glass/golden_grog
+ required_drink_type = /datum/reagent/consumable/ethanol/golden_grog
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "golden_grog"
+ name = "glass of Golden Grog"
+ desc = "A drink concocted by a dwarven Quartermaster who had too much time and money on his hands. Commonly ordered by influencers looking to flaunt their wealth."
+
+/*/datum/reagent/consumable/ethanol/golden_grog/expose_mob(mob/living/exposed_mob, methods, reac_volume)
+ if(isdwarf(exposed_mob))
+ quality = RACE_DRINK
+ else
+ quality = DRINK_FANTASTIC
+ return ..()*/
+
+// RACIAL DRINKS END
+
+/datum/reagent/consumable/ethanol/appletini
+ name = "Appletini"
+ color = "#9bd1a9" //(155, 209, 169)
+ description = "The electric-green appley beverage nobody can turn down!"
+ boozepwr = 50
+ taste_description = "Sweet and green"
+ quality = DRINK_GOOD
+
+/datum/glass_style/drinking_glass/appletini
+ required_drink_type = /datum/reagent/consumable/ethanol/appletini
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "appletini"
+ name = "glass of appletini"
+ desc = "An appley beverage in a martini glass"
+
+/datum/reagent/consumable/ethanol/quadruple_sec/cityofsin //making this a subtype was some REAL JANK, but it saves me a headache, and it looks good!
+ name = "City of Sin"
+ color = "#eb9378" //(235, 147, 120)
+ description = "A smooth, fancy drink for people of ill repute"
+ boozepwr = 70
+ taste_description = "Your own sins"
+ quality = DRINK_VERYGOOD //takes extra effort
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+
+/datum/glass_style/drinking_glass/cityofsin
+ required_drink_type = /datum/reagent/consumable/ethanol/quadruple_sec/cityofsin
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "cityofsin"
+ name = "glass of city of sin"
+ desc = "Looking at it makes you recall every mistake you've made."
+
+/datum/reagent/consumable/ethanol/shakiri
+ name = "Shakiri"
+ description = "A sweet, fragrant red drink made from fermented kiri fruits. It seems to gently sparkle when exposed to light."
+ boozepwr = 45
+ color = "#cf3c3c"
+ quality = DRINK_GOOD
+ taste_description = "delicious liquified jelly"
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+
+/datum/glass_style/drinking_glass/shakiri
+ required_drink_type = /datum/reagent/consumable/ethanol/shakiri
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "shakiri"
+ name = "glass of shakiri"
+ desc = "A sweet, fragrant red drink made from fermented kiri fruits. It seems to gently sparkle when exposed to light."
+
+/datum/reagent/consumable/ethanol/shakiri_spritz
+ name = "Shakiri Spritz"
+ description = "A carbonated cocktail made from shakiri and orange juice with soda water."
+ color = "#cf863c"
+ quality = DRINK_GOOD
+ boozepwr = 45
+ taste_description = "tangy, carbonated sweetness"
+
+/datum/glass_style/drinking_glass/shakiri_spritz
+ required_drink_type = /datum/reagent/consumable/ethanol/shakiri_spritz
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "shakiri_spritz"
+ name = "glass of shakiri spritz"
+ desc = "A carbonated cocktail made from shakiri and orange juice with soda water."
+
+/datum/reagent/consumable/ethanol/crimson_hurricane
+ name = "Crimson Hurricane"
+ description = "A strong, citrusy cocktail of human origin, now made with shakiri and kiri jelly for a delightfully sweet drink."
+ color = "#b86637"
+ quality = DRINK_VERYGOOD
+ boozepwr = 60
+ taste_description = "thick, fruity sweetness with a punch"
+
+/datum/glass_style/drinking_glass/crimson_hurricane
+ required_drink_type = /datum/reagent/consumable/ethanol/crimson_hurricane
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "crimson_hurricane"
+ name = "glass of crimson hurricane"
+ desc = "A strong, citrusy cocktail of human origin, now with shakiri and kiri jelly for a delightfully sweet drink."
+
+/datum/reagent/consumable/ethanol/shakiri_rogers
+ name = "Shakiri Rogers"
+ description = "A take on the classic Roy Rogers, with shakiri instead of grenadine. Sweet and refreshing."
+ color = "#6F2B1A"
+ quality = DRINK_GOOD
+ boozepwr = 45
+ taste_description = "fruity, carbonated soda with a slight kick"
+
+/datum/glass_style/drinking_glass/shakiri_rogers
+ required_drink_type = /datum/reagent/consumable/ethanol/shakiri_rogers
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "shakiri_rogers"
+ name = "glass of shakiri rogers"
+ desc = "A take on the classic Roy Rogers, with shakiri instead of grenadine. Sweet and refreshing."
diff --git a/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drink_reagents.dm b/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drink_reagents.dm
new file mode 100644
index 0000000000000..062854fc73b3d
--- /dev/null
+++ b/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drink_reagents.dm
@@ -0,0 +1,79 @@
+/datum/reagent/consumable/pinkmilk
+ name = "Strawberry Milk"
+ description = "A drink of a bygone era of milk and artificial sweetener back on a rock."
+ color = "#f76aeb"//rgb(247, 106, 235)
+ quality = DRINK_VERYGOOD
+ taste_description = "sweet strawberry and milk cream"
+
+/datum/glass_style/drinking_glass/pinkmilk
+ required_drink_type = /datum/reagent/consumable/pinkmilk
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "pinkmilk"
+ name = "tall glass of strawberry milk"
+ desc = "Delicious flavored strawberry syrup mixed with milk."
+
+/datum/reagent/consumable/pinkmilk/on_mob_life(mob/living/carbon/M)
+ if(prob(15))
+ to_chat(M, span_notice("[pick("You cant help to smile.","You feel nostalgia all of sudden.","You remember to relax.")]"))
+ ..()
+ . = 1
+
+/datum/reagent/consumable/pinktea
+ name = "Strawberry Tea"
+ description = "A timeless classic!"
+ color = "#f76aeb"//rgb(247, 106, 235)
+ quality = DRINK_VERYGOOD
+ taste_description = "sweet tea with a hint of strawberry"
+
+/datum/glass_style/drinking_glass/pinktea
+ required_drink_type = /datum/reagent/consumable/pinktea
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "pinktea"
+ name = "mug of strawberry tea"
+ desc = "Delicious traditional tea flavored with strawberries."
+
+/datum/reagent/consumable/pinktea/on_mob_life(mob/living/carbon/M)
+ if(prob(10))
+ to_chat(M, span_notice("[pick("Diamond skies where white deer fly.","Sipping strawberry tea.","Silver raindrops drift through timeless, Neverending June.","Crystal ... pearls free, with love!","Beaming love into me.")]"))
+ ..()
+ . = TRUE
+
+/datum/reagent/consumable/catnip_tea
+ name = "Catnip Tea"
+ description = "A sleepy and tasty catnip tea!"
+ color = "#101000" // rgb: 16, 16, 0
+ taste_description = "sugar and catnip"
+
+/datum/glass_style/drinking_glass/catnip_tea
+ required_drink_type = /datum/reagent/consumable/catnip_tea
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = "catnip_tea"
+ name = "glass of catnip tea"
+ desc = "A purrfect drink for a cat."
+
+/datum/reagent/consumable/catnip_tea/on_mob_life(mob/living/carbon/M)
+ M.adjustStaminaLoss(min(50 - M.getStaminaLoss(), 3))
+ if(isfelinid(M))
+ if(prob(20))
+ M.emote("nya")
+ if(prob(20))
+ to_chat(M, span_notice("[pick("Headpats feel nice.", "Backrubs would be nice.", "Mew")]"))
+ else
+ to_chat(M, span_notice("[pick("I feel oddly calm.", "I feel relaxed.", "Mew?")]"))
+ ..()
+
+/datum/reagent/consumable/ethanol/beerbatter
+ name = "Beer Batter"
+ description = "Probably not the greatest idea to drink...sludge."
+ color = "#f5f4e9"
+ nutriment_factor = 2 * REAGENTS_METABOLISM
+ taste_description = "flour and cheap booze"
+ boozepwr = 8 // beer diluted at about a 1:3 ratio
+ ph = 6
+
+/datum/glass_style/drinking_glass/beerbatter
+ required_drink_type = /datum/reagent/consumable/ethanol/beerbatter
+ icon = 'icons/obj/drinks/shakes.dmi'
+ icon_state = "chocolatepudding"
+ name = "glass of beer batter"
+ desc = "Used in cooking, pure cholesterol, Scottish people eat it."
diff --git a/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drinks.dm b/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drinks.dm
new file mode 100644
index 0000000000000..882f440c220c7
--- /dev/null
+++ b/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drinks.dm
@@ -0,0 +1,87 @@
+/// How much fizziness is added to the can of soda by throwing it, in percentage points
+#define SODA_FIZZINESS_THROWN 15
+/// How much fizziness is added to the can of soda by shaking it, in percentage points
+#define SODA_FIZZINESS_SHAKE 5
+
+/obj/item/reagent_containers/cup/soda_cans/doppler
+ icon = 'modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi'
+ icon_state = null
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/attack(mob/M, mob/living/user)
+ if(istype(M, /mob/living/carbon) && !reagents.total_volume && user.combat_mode && user.zone_selected == BODY_ZONE_HEAD)
+ if(M == user)
+ user.visible_message(span_warning("[user] crushes the can of [src] on [user.p_their()] forehead!"), span_notice("You crush the can of [src] on your forehead."))
+ else
+ user.visible_message(span_warning("[user] crushes the can of [src] on [M]'s forehead!"), span_notice("You crush the can of [src] on [M]'s forehead."))
+ playsound(M,'sound/weapons/pierce.ogg', rand(10,50), TRUE)
+ var/obj/item/trash/can/doppler/crushed_can = new /obj/item/trash/can/doppler(M.loc)
+ crushed_can.icon_state = icon_state
+ qdel(src)
+ return TRUE
+ . = ..()
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit = FALSE)
+ . = ..()
+
+ if(. != BULLET_ACT_HIT)
+ return
+
+ if(hitting_projectile.damage > 0 && hitting_projectile.damage_type == BRUTE && !QDELETED(src))
+ var/obj/item/trash/can/doppler/crushed_can = new /obj/item/trash/can/doppler(src.loc)
+ crushed_can.icon_state = icon_state
+ var/atom/throw_target = get_edge_target_turf(crushed_can, pick(GLOB.alldirs))
+ crushed_can.throw_at(throw_target, rand(1,2), 7)
+ qdel(src)
+ return
+
+/**
+ * Burst the soda open on someone. Fun! Opens and empties the soda can, but does not crush it.
+ *
+ * Arguments:
+ * * target - Who's getting covered in soda
+ * * hide_message - Stops the generic fizzing message, so you can do your own
+ */
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
+ . = ..()
+ if(. || spillable || !reagents.total_volume) // if it was caught, already opened, or has nothing in it
+ return
+
+ fizziness += SODA_FIZZINESS_THROWN
+ if(!prob(fizziness))
+ return
+
+ burst_soda(hit_atom, hide_message = TRUE)
+ visible_message(span_danger("[src]'s impact with [hit_atom] causes it to rupture, spilling everywhere!"))
+ var/obj/item/trash/can/doppler/crushed_can = new /obj/item/trash/can/doppler(src.loc)
+ crushed_can.icon_state = icon_state
+ moveToNullspace()
+ QDEL_IN(src, 1 SECONDS) // give it a second so it can still be logged for the throw impact
+
+/obj/item/trash/can/doppler
+ icon = 'modular_doppler/clutter objects/icons/janitor.dmi'
+ icon_state = "lemonade"
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/lubricola
+ name = "LubriCola"
+ desc = "The perfect lubricant for your weary gears."
+ icon_state = "lubricola"
+ list_reagents = list(/datum/reagent/fuel/oil = 30)
+ custom_price = PAYCHECK_LOWER * 1.2
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/welding_fizz
+ name = "Welding Fizz"
+ desc = "More energy than in an IED! Now carbonated. WARNING: Contains toxic and flammable fuels."
+ icon_state = "welding_fizz"
+ list_reagents = list(/datum/reagent/fuel = 25, /datum/reagent/carbondioxide = 5)
+ custom_price = PAYCHECK_LOWER * 1.2
+
+/*/obj/item/reagent_containers/cup/soda_cans/doppler/synthanolcan
+ name = "Silly Cone's Synthanol"
+ desc = "A recompiling can of synthanol."
+ icon_state = "synthanolcan"
+ list_reagents = list(/datum/reagent/consumable/ethanol/synthanol = 30)
+ custom_price = PAYCHECK_CREW*/
+
+#undef SODA_FIZZINESS_THROWN
+#undef SODA_FIZZINESS_SHAKE
diff --git a/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drinks_recipes.dm b/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drinks_recipes.dm
new file mode 100644
index 0000000000000..420fea48fb751
--- /dev/null
+++ b/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drinks_recipes.dm
@@ -0,0 +1,421 @@
+/*STUFF WE CAN'T USE YET
+
+/datum/chemical_reaction/drink/synthanol
+ results = list(/datum/reagent/consumable/ethanol/synthanol = 3)
+ required_reagents = list(
+ /datum/reagent/lube = 1,
+ /datum/reagent/toxin/plasma = 1,
+ /datum/reagent/fuel = 1,
+ )
+ mix_message = "The chemicals mix to create shiny, blue substance."
+
+/datum/chemical_reaction/drink/robottears
+ results = list(/datum/reagent/consumable/ethanol/synthanol/robottears = 3)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/synthanol = 1,
+ /datum/reagent/fuel/oil = 1,
+ /datum/reagent/consumable/sodawater = 1,
+ )
+ mix_message = "The ingredients combine into a stiff, dark goo."
+
+/datum/chemical_reaction/drink/trinary
+ results = list(/datum/reagent/consumable/ethanol/synthanol/trinary = 3)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/synthanol = 1,
+ /datum/reagent/consumable/limejuice = 1,
+ /datum/reagent/consumable/orangejuice = 1,
+ )
+ mix_message = "The ingredients mix into a colorful substance."
+
+/datum/chemical_reaction/drink/servo
+ results = list(/datum/reagent/consumable/ethanol/synthanol/servo = 4)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/synthanol = 2,
+ /datum/reagent/consumable/cream = 1,
+ /datum/reagent/consumable/hot_coco = 1,
+ )
+ mix_message = "The ingredients mix into a dark brown substance."
+
+/datum/chemical_reaction/drink/uplink
+ results = list(/datum/reagent/consumable/ethanol/synthanol/uplink = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/synthanol = 1,
+ /datum/reagent/consumable/ethanol/rum = 1,
+ /datum/reagent/consumable/ethanol/vodka = 1,
+ /datum/reagent/consumable/ethanol/tequila = 1,
+ /datum/reagent/consumable/ethanol/whiskey = 1,
+ )
+ mix_message = "The chemicals mix to create a shiny, orange substance."
+
+/datum/chemical_reaction/drink/synthncoke
+ results = list(/datum/reagent/consumable/ethanol/synthanol/synthncoke = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/synthanol = 1,
+ /datum/reagent/consumable/space_cola = 1,
+ )
+ mix_message = "The chemicals mix to create a smooth, fizzy substance."
+
+/datum/chemical_reaction/drink/synthignon
+ results = list(/datum/reagent/consumable/ethanol/synthanol/synthignon = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/synthanol = 1,
+ /datum/reagent/consumable/ethanol/wine = 1,
+ )
+ mix_message = "The chemicals mix to create a fine, red substance."
+*/
+// Other Booze
+
+/datum/chemical_reaction/drink/hot_toddy
+ results = list(/datum/reagent/consumable/ethanol/hot_toddy = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/rum = 1,
+ /datum/reagent/consumable/tea = 3,
+ /datum/reagent/consumable/honey = 1,
+ )
+ mix_message = "A loud popping begins to fill the air as the drink is mixed."
+
+/datum/chemical_reaction/drink/hellfire
+ results = list(/datum/reagent/consumable/ethanol/hellfire = 4)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/rum = 2,
+ /datum/reagent/consumable/ice = 1,
+ /datum/reagent/consumable/ethanol/crevice_spike = 1,
+ )
+ mix_message = "The liquid begins to churn as it changes to an amber orange and catches on fire."
+
+/datum/chemical_reaction/drink/sins_delight
+ results = list(/datum/reagent/consumable/ethanol/sins_delight = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/demonsblood = 2,
+ /datum/reagent/consumable/ethanol/triple_sec = 1,
+ /datum/reagent/consumable/ethanol/martini = 1,
+ /datum/reagent/consumable/ethanol/changelingsting = 1,
+ )
+ mix_message = "The liquid starts swirling, before forming a pink cloud that dissipates in the air."
+
+/datum/chemical_reaction/drink/strawberry_daiquiri
+ results = list(/datum/reagent/consumable/ethanol/strawberry_daiquiri = 7)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/rum = 2,
+ /datum/reagent/consumable/limejuice = 1,
+ /datum/reagent/consumable/sugar = 1,
+ /datum/reagent/consumable/berryjuice = 2,
+ /datum/reagent/consumable/ice = 1,
+ )
+
+/datum/chemical_reaction/drink/miami_vice
+ results = list(/datum/reagent/consumable/ethanol/miami_vice = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/pina_colada = 1,
+ /datum/reagent/consumable/ethanol/strawberry_daiquiri = 1,
+ )
+
+/datum/chemical_reaction/drink/malibu_sunset
+ results = list(/datum/reagent/consumable/ethanol/malibu_sunset = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/painkiller = 2,
+ /datum/reagent/consumable/grenadine = 1,
+ /datum/reagent/consumable/orangejuice = 1,
+ /datum/reagent/consumable/ice = 1,
+ )
+
+/datum/chemical_reaction/drink/liz_fizz
+ results = list(/datum/reagent/consumable/ethanol/liz_fizz = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/triple_citrus = 3,
+ /datum/reagent/consumable/ice = 1,
+ /datum/reagent/consumable/cream = 1,)
+
+/datum/chemical_reaction/drink/hotlime_miami
+ results = list(/datum/reagent/consumable/ethanol/hotlime_miami = 2)
+ required_reagents = list(
+ /datum/reagent/medicine/ephedrine = 1,
+ /datum/reagent/consumable/ethanol/pina_colada = 1,
+ )
+
+/datum/chemical_reaction/drink/coggrog
+ results = list(/datum/reagent/consumable/ethanol/coggrog = 3)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/cognac = 1,
+ /datum/reagent/fuel = 1,
+ /datum/reagent/consumable/ethanol/screwdrivercocktail = 1,
+ )
+ mix_message = "You hear faint sounds of gears turning as it mixes."
+ mix_sound = 'sound/machines/clockcult/steam_whoosh.ogg'
+
+/datum/chemical_reaction/drink/badtouch
+ results = list(/datum/reagent/consumable/ethanol/badtouch = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/cognac = 2,
+ /datum/reagent/consumable/limejuice = 2,
+ /datum/reagent/consumable/orangejuice=1,
+ )
+
+/datum/chemical_reaction/drink/marsblast
+ results = list(/datum/reagent/consumable/ethanol/marsblast = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/whiskey = 3,
+ /datum/reagent/consumable/dr_gibb = 2,
+ )
+
+/datum/chemical_reaction/drink/mercuryblast
+ results = list(/datum/reagent/consumable/ethanol/mercuryblast = 4)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/vodka = 2,
+ /datum/reagent/consumable/spacemountainwind = 1,
+ /datum/reagent/consumable/ice = 1,
+ )
+
+/datum/chemical_reaction/drink/piledriver
+ results = list(/datum/reagent/consumable/ethanol/piledriver = 6)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/screwdrivercocktail = 1,
+ /datum/reagent/consumable/ethanol/rum_coke = 1,
+ )
+
+/datum/chemical_reaction/drink/zenstar
+ results = list(/datum/reagent/consumable/ethanol/zenstar = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/triple_sec = 2,
+ /datum/reagent/consumable/lemonjuice = 2,
+ /datum/reagent/consumable/grenadine = 1,
+ )
+
+/datum/chemical_reaction/drink/appletini
+ results = list(/datum/reagent/consumable/ethanol/appletini = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/vodka = 3,
+ /datum/reagent/consumable/ethanol/hcider = 1,
+ /datum/reagent/consumable/lemonjuice = 1,
+ )
+
+/datum/chemical_reaction/drink/quadruple_sec/cityofsin
+ results = list(/datum/reagent/consumable/ethanol/quadruple_sec/cityofsin = 4)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/vodka = 2,
+ /datum/reagent/consumable/ethanol/champagne = 1,
+ /datum/reagent/consumable/berryjuice = 1,
+ )
+
+/*/datum/chemical_reaction/drink/blizzard_brew
+ results = list(/datum/reagent/consumable/ethanol/blizzard_brew = 3)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/iced_beer = 1,
+ /datum/reagent/consumable/ice = 1,
+ /datum/reagent/inverse/cryostylane = 1,
+ )
+ mix_message = "You hear crackling ice as it mixes."
+ mix_sound = 'sound/effects/ice_shovel.ogg'
+
+/datum/chemical_reaction/drink/molten_mead
+ results = list(/datum/reagent/consumable/ethanol/molten_mead = 3)
+ required_reagents = list(
+ /datum/reagent/consumable/condensedcapsaicin = 2,
+ /datum/reagent/consumable/ethanol/mead = 2,
+ /datum/reagent/consumable/ethanol/mauna_loa = 1,
+ )
+ mix_message = "You hear sizzling flesh and angry wasps buzzing as it mixes."
+ mix_sound = 'sound/effects/wounds/sizzle2.ogg'*/
+
+/datum/chemical_reaction/drink/hippie_hooch
+ results = list(/datum/reagent/consumable/ethanol/hippie_hooch = 5)
+ required_reagents = list(
+ /datum/reagent/medicine/antihol = 1,
+ /datum/reagent/consumable/ethanol/crevice_spike = 3,
+ /datum/reagent/medicine/earthsblood = 1,
+ )
+ mix_message = "You hear wood flutes and nature as it mixes."
+ mix_sound = 'modular_doppler/emotes/sound/hoot.ogg'
+
+/datum/chemical_reaction/drink/research_rum
+ results = list(/datum/reagent/consumable/ethanol/research_rum = 4)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/bananahonk = 2,
+ /datum/reagent/inverse/neurine = 1,
+ /datum/reagent/consumable/ethanol/grog = 1,
+ )
+ mix_message = "You hear gurgling and dinging as it mixes."
+ mix_sound = 'sound/machines/microwave/microwave-end.ogg'
+
+/datum/chemical_reaction/drink/golden_grog
+ results = list(/datum/reagent/consumable/ethanol/golden_grog = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/goldschlager = 10,
+ /datum/reagent/gold = 1,
+ /datum/reagent/silver = 1,
+ /datum/reagent/cellulose = 1,
+ /datum/reagent/spraytan = 1,
+ )
+ mix_message = "You hear golden coins and snobby rich laughing as it mixes."
+ mix_sound = 'sound/items/coinflip.ogg'
+
+/* MORE STUFF WE CAN'T USE YET
+// RACE SPECIFIC DRINKS
+
+/datum/chemical_reaction/drink/coldscales
+ results = list(/datum/reagent/consumable/ethanol/coldscales = 3)
+ required_reagents = list(
+ /datum/reagent/consumable/tea = 1,
+ /datum/reagent/toxin/slimejelly = 1,
+ /datum/reagent/consumable/menthol = 1,
+ )
+
+/datum/chemical_reaction/drink/oil_drum
+ results = list(/datum/reagent/consumable/ethanol/oil_drum = 3)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol = 1,
+ /datum/reagent/fuel/oil = 1,
+ /datum/reagent/consumable/ethanol/champagne = 12,
+ )
+
+/datum/chemical_reaction/drink/nord_king
+ results = list(/datum/reagent/consumable/ethanol/nord_king = 10)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol = 5,
+ /datum/reagent/consumable/honey = 1,
+ /datum/reagent/consumable/ethanol/red_mead = 10,
+ )
+
+/datum/chemical_reaction/drink/velvet_kiss
+ results = list(/datum/reagent/consumable/ethanol/velvet_kiss = 15) //Limited races use this
+ required_reagents = list(
+ /datum/reagent/blood = 5,
+ /datum/reagent/consumable/tea = 1,
+ /datum/reagent/consumable/ethanol/wine = 10,
+ )
+
+/datum/chemical_reaction/drink/abduction_fruit
+ results = list(/datum/reagent/consumable/ethanol/abduction_fruit = 3)
+ required_reagents = list(
+ /datum/reagent/consumable/limejuice = 10,
+ /datum/reagent/consumable/berryjuice = 5,
+ /datum/reagent/consumable/watermelonjuice = 10,
+ )
+
+/datum/chemical_reaction/drink/bug_zapper
+ results = list(/datum/reagent/consumable/ethanol/bug_zapper = 20) //Harder to make
+ required_reagents = list(
+ /datum/reagent/consumable/lemonjuice = 10,
+ /datum/reagent/teslium = 1,
+ /datum/reagent/copper = 10,
+ )
+
+/datum/chemical_reaction/drink/mush_crush
+ results = list(/datum/reagent/consumable/ethanol/mush_crush = 10)
+ required_reagents = list(
+ /datum/reagent/iron = 5,
+ /datum/reagent/ash = 5,
+ /datum/reagent/toxin/coffeepowder = 10,
+ )
+
+/datum/chemical_reaction/drink/hollow_bone
+ results = list(/datum/reagent/consumable/ethanol/hollow_bone = 10)
+ required_reagents = list(
+ /datum/reagent/toxin/bonehurtingjuice = 10,
+ /datum/reagent/consumable/soymilk = 15,
+ )
+
+/datum/chemical_reaction/drink/jell_wyrm
+ results = list(/datum/reagent/consumable/ethanol/jell_wyrm = 2)
+ required_reagents = list(
+ /datum/reagent/toxin/slimejelly = 1,
+ /datum/reagent/toxin/carpotoxin = 1,
+ /datum/reagent/carbondioxide = 5,
+ )
+ required_temp = 333 // (59.85'C)
+
+/datum/chemical_reaction/drink/laval_spit
+ results = list(/datum/reagent/consumable/ethanol/laval_spit = 20) //Limited use
+ required_reagents = list(
+ /datum/reagent/iron = 5,
+ /datum/reagent/consumable/ethanol/mauna_loa = 10,
+ /datum/reagent/sulfur = 5,
+ )
+ required_temp = 900 // (626.85'C)
+*/
+/datum/chemical_reaction/drink/frisky_kitty
+ results = list(/datum/reagent/consumable/ethanol/frisky_kitty = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/catnip_tea = 1,
+ /datum/reagent/consumable/milk = 1,
+ )
+ required_temp = 296 //Just above room temp (22.85'C)
+/*
+/datum/chemical_reaction/drink/bloodshot_base
+ results = list(/datum/reagent/consumable/ethanol/bloodshot_base = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/bloody_mary = 1,
+ /datum/reagent/consumable/sugar = 1,
+ )
+ reaction_tags = REACTION_TAG_DRINK | REACTION_TAG_EASY | REACTION_TAG_OTHER
+
+/datum/chemical_reaction/drink/bloodshot
+ results = list(/datum/reagent/consumable/ethanol/bloodshot = 5)
+ required_reagents = list(
+ /datum/reagent/blood = 3,
+ /datum/reagent/consumable/ethanol/bloodshot_base = 2,
+ )
+ reaction_tags = REACTION_TAG_DRINK | REACTION_TAG_EASY | REACTION_TAG_OTHER
+*/
+
+// Non-Booze
+
+/datum/chemical_reaction/drink/pinkmilk
+ results = list(/datum/reagent/consumable/pinkmilk = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/berryjuice = 1,
+ /datum/reagent/consumable/milk = 1,
+ /datum/reagent/consumable/sugar = 1,
+ )
+
+/datum/chemical_reaction/drink/pinktea
+ results = list(/datum/reagent/consumable/pinktea = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/berryjuice = 1,
+ /datum/reagent/consumable/tea/arnold_palmer = 1,
+ /datum/reagent/consumable/sugar = 1,
+ )
+
+/datum/chemical_reaction/drink/catnip_tea
+ results = list(/datum/reagent/consumable/catnip_tea = 10)
+ required_reagents = list(
+ /datum/reagent/consumable/tea = 5,
+ /datum/reagent/pax/catnip = 2,
+ )
+
+/datum/chemical_reaction/drink/beerbatter
+ results = list(/datum/reagent/consumable/ethanol/beerbatter = 4)
+ required_reagents = list(
+ /datum/reagent/consumable/nutriment/fat/oil = 1,
+ /datum/reagent/consumable/ethanol/beer = 1,
+ /datum/reagent/consumable/flour = 1,
+ )
+ mix_message = "Sizzling and cracking is heard as you beat the mixture into submission."
+
+/datum/chemical_reaction/drink/shakiri_spritz
+ results = list(/datum/reagent/consumable/ethanol/shakiri_spritz = 3)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/shakiri = 1,
+ /datum/reagent/consumable/sodawater = 1,
+ /datum/reagent/consumable/orangejuice = 1,
+ )
+ mix_message = "The liquids combine to create a pleasant orange mixture."
+
+/datum/chemical_reaction/drink/crimson_hurricane
+ results = list(/datum/reagent/consumable/ethanol/crimson_hurricane = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/shakiri = 1,
+ /datum/reagent/consumable/ethanol/rum = 2,
+ /datum/reagent/consumable/grenadine = 1,
+ /datum/reagent/consumable/limejuice = 1,
+ )
+ mix_message = "The mixture develops into a rich red color."
+
+/datum/chemical_reaction/drink/shakiri_rogers
+ results = list(/datum/reagent/consumable/ethanol/shakiri_rogers = 10)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/shakiri = 1,
+ /datum/reagent/consumable/space_cola = 5,
+ /datum/reagent/consumable/ice = 2,
+ )
+ mix_message = "Bubbles of carbonation rise and pop at the surface of the dark mixture."
diff --git a/modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi b/modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi
new file mode 100644
index 0000000000000..0b1eaf31cf571
Binary files /dev/null and b/modular_doppler/modular_food_drinks_and_chems/icons/drinks.dmi differ
diff --git a/modular_doppler/vending_machines/code/vendor_containers.dm b/modular_doppler/vending_machines/code/vendor_containers.dm
new file mode 100644
index 0000000000000..7feb74dfbcfd6
--- /dev/null
+++ b/modular_doppler/vending_machines/code/vendor_containers.dm
@@ -0,0 +1,89 @@
+/obj/item/storage/box/foodpack
+ name = "wrapped meal container"
+ desc = "A generic brown paper food package, you aren't quite sure where this comes from."
+ icon = 'modular_doppler/vending_machines/icons/imported_quick_foods.dmi'
+ icon_state = "foodpack_generic_big"
+ illustration = null
+ custom_price = PAYCHECK_CREW * 1.8
+ ///What the main course of this package is
+ var/main_course = /obj/item/trash/empty_food_tray
+ ///What the side of this package should be
+ var/side_item = /obj/item/food/vendor_snacks
+ ///What kind of condiment pack should we give the package
+ var/condiment_pack = /obj/item/reagent_containers/condiment/pack/ketchup
+
+/obj/item/storage/box/foodpack/PopulateContents()
+ . = ..()
+ new main_course(src)
+ new side_item(src)
+ new condiment_pack(src)
+
+/obj/item/storage/box/foodpack/nt
+ name = "\improper NT-Combo Meal - Salisbury Steak"
+ desc = "A relatively bland package made of reflective metal foil, it has a blue sprite and the letters 'NT' printed on the top."
+ icon_state = "foodpack_nt_big"
+ main_course = /obj/item/food/vendor_tray_meal
+ side_item = /obj/effect/spawner/random/vendor_meal_sides/nt
+ condiment_pack = /obj/item/reagent_containers/condiment/pack/ketchup
+
+/obj/item/storage/box/foodpack/nt/burger
+ name = "\improper NT-Combo Meal - Cheeseburger"
+ main_course = /obj/item/food/vendor_tray_meal/burger
+
+/obj/item/storage/box/foodpack/nt/chicken_sammy
+ name = "\improper NT-Combo Meal - Spicy Chicken Sandwich"
+ main_course = /obj/item/food/vendor_tray_meal/chicken_sandwich
+
+/obj/item/storage/box/foodpack/yangyu
+ name = "\improper Atatakai shokuji - Homestyle Noodles"
+ desc = "A well decorated red and white plastic package, covered in nearly incomprehensible yangyu text."
+ icon_state = "foodpack_yangyu_big"
+ main_course = /obj/item/food/vendor_tray_meal/ramen
+ side_item = /obj/effect/spawner/random/vendor_meal_sides/yangyu
+ condiment_pack = /obj/item/reagent_containers/condiment/pack/hotsauce
+
+/obj/item/storage/box/foodpack/yangyu/sushi
+ name = "\improper Atatakai shokuji - Carp Sushi Rolls"
+ main_course = /obj/item/food/vendor_tray_meal/sushi
+
+/obj/item/storage/box/foodpack/yangyu/beef_rice
+ name = "\improper Atatakai shokuji - Beef and Rice"
+ main_course = /obj/item/food/vendor_tray_meal/beef_rice
+
+/obj/item/storage/box/foodpack/moth
+ name = "\improper Ration Type M - Pesto Pizza"
+ desc = "A cardboard-colored paper package with the symbol of the nomad fleet stamped upon it."
+ icon_state = "foodpack_moth_big"
+ main_course = /obj/item/food/vendor_tray_meal/pesto_pizza
+ side_item = /obj/effect/spawner/random/vendor_meal_sides/moth
+ condiment_pack = /obj/item/reagent_containers/condiment/pack/astrotame
+
+/obj/item/storage/box/foodpack/moth/baked_rice
+ name = "\improper Ration Type M - Baked Rice and Grilled Cheese"
+ main_course = /obj/item/food/vendor_tray_meal/baked_rice
+
+/obj/item/storage/box/foodpack/moth/fuel_jack
+ name = "\improper Ration Type M - Fueljack's Feast"
+ main_course = /obj/item/food/vendor_tray_meal/fueljack
+
+/obj/item/storage/box/foodpack/tizira
+ name = "\improper Tizira Imports Pack - Moonfish Nizaya"
+ desc = "A dull, metal foil package with the colors of the Tiziran flag striped across it, as well as a stamp of legitimate origin from the Tiziran exports office."
+ icon_state = "foodpack_tizira_big"
+ main_course = /obj/item/food/vendor_tray_meal/moonfish_nizaya
+ side_item = /obj/effect/spawner/random/vendor_meal_sides/tizira
+ condiment_pack = /obj/item/reagent_containers/condiment/pack/bbqsauce
+ custom_price = PAYCHECK_CREW * 2 //Tiziran imports are a bit more expensive
+
+/obj/item/storage/box/foodpack/tizira/examine_more(mob/user)
+ . = ..()
+ . += span_notice("Now that you look at it, the origin stamp appears to be a poor imitation of the real thing!")
+ return .
+
+/obj/item/storage/box/foodpack/tizira/roll
+ name = "\improper Tizira Imports Pack - Emperor Roll"
+ main_course = /obj/item/food/vendor_tray_meal/emperor_roll
+
+/obj/item/storage/box/foodpack/tizira/stir_fry
+ name = "\improper Tizira Imports Pack - Mushroom Stirfry"
+ main_course = /obj/item/food/vendor_tray_meal/mushroom_fry
diff --git a/modular_doppler/vending_machines/code/vendor_food.dm b/modular_doppler/vending_machines/code/vendor_food.dm
new file mode 100644
index 0000000000000..2e036b9ec31a2
--- /dev/null
+++ b/modular_doppler/vending_machines/code/vendor_food.dm
@@ -0,0 +1,318 @@
+// Packaged whole meals and sides for the 'meals' tab of vendors
+
+/* TRASH */
+
+/obj/item/trash/empty_food_tray
+ name = "empty plastic food tray"
+ desc = "The condensation and what you can only hope are the leftovers of food make this a bit hard to reuse."
+ icon = 'modular_doppler/vending_machines/icons/imported_quick_foods.dmi'
+ icon_state = "foodtray_empty"
+ custom_materials = list(
+ /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+/obj/item/trash/empty_side_pack
+ name = "empty side wrapper"
+ desc = "Unfortunately, this no longer holds any sides to distract you from the other 'food'."
+ icon = 'modular_doppler/vending_machines/icons/imported_quick_foods.dmi'
+ icon_state = "foodpack_generic_trash"
+ custom_materials = list(
+ /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+/obj/item/trash/empty_side_pack/nt
+ icon_state = "foodpack_nt_trash"
+
+/obj/item/trash/empty_side_pack/yangyu
+ icon_state = "foodpack_yangyu_trash"
+
+/obj/item/trash/empty_side_pack/moth
+ icon_state = "foodpack_moth_trash"
+
+/obj/item/trash/empty_side_pack/tizira
+ icon_state = "foodpack_tizira_trash"
+
+/* MEALS */
+
+/*
+* NT Meals
+*/
+
+/obj/item/food/vendor_tray_meal
+ name = "\improper NT-Meal: Steak and Macaroni"
+ desc = "A 'salisbury steak' drowning in something similar to a gravy, with a macaroni and cheese substitute mix sitting right beside it."
+ icon = 'modular_doppler/vending_machines/icons/imported_quick_foods.dmi'
+ icon_state = "foodtray_sad_steak"
+ trash_type = /obj/item/trash/empty_food_tray
+ food_reagents = list(/datum/reagent/consumable/nutriment = 8)
+ tastes = list("meat?" = 2, "cheese?" = 2, "laziness" = 1)
+ foodtypes = MEAT | GRAIN | DAIRY
+ food_flags = FOOD_FINGER_FOOD
+ w_class = WEIGHT_CLASS_SMALL
+ ///Does this food have the steam effect on it when initialized
+ var/hot_and_steamy = TRUE
+
+/obj/item/food/vendor_tray_meal/Initialize(mapload)
+ . = ..()
+ if(hot_and_steamy)
+ overlays += mutable_appearance('icons/effects/steam.dmi', "steam_triple", ABOVE_OBJ_LAYER)
+
+/obj/item/food/vendor_tray_meal/examine_more(mob/user)
+ . = ..()
+ . += span_notice("You browse the back of the box...")
+ . += "\t[span_warning("Warning: Packaged in a factory where every allergen known is present.")]"
+ . += "\t[span_warning("Warning: Contents might be hot.")]"
+ . += "\t[span_info("Per 200g serving contains: 8g Sodium; 25g Fat, of which 22g are saturated; 2g Sugar.")]"
+ return .
+
+/obj/item/food/vendor_tray_meal/burger
+ name = "\improper NT-Meal: Cheeseburger"
+ desc = "A pretty sad looking burger with a kinda soggy bottom bun and highlighter yellow cheese."
+ icon_state = "foodtray_burg"
+ tastes = list("bread" = 2, "meat?" = 2, "cheese?" = 2, "laziness" = 1)
+ foodtypes = MEAT | GRAIN | DAIRY
+
+/obj/item/food/vendor_tray_meal/chicken_sandwich
+ name = "\improper NT-Meal: Spicy Chicken Sandwich"
+ desc = "A pretty sad looking chicken sandwich, the 'meat' patty is covered in so many manufactured spices that it has become an eerie red color."
+ icon_state = "foodtray_chickie_sandwich"
+ food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/capsaicin = 10)
+ tastes = list("bread" = 2, "chicken?" = 2, "overwhelming spice" = 2, "laziness" = 1)
+ foodtypes = MEAT | GRAIN | DAIRY
+
+/*
+* Yangyu Meals
+*/
+
+/obj/item/food/vendor_tray_meal/ramen
+ name = "\improper Meinkosu: Homestyle Noodles"
+ desc = "A brick of the finest factory made ramen, with a small amount of rehydrated vegetables and herbs floating around."
+ icon_state = "foodtray_noodle"
+ tastes = list("cheap noodles" = 2, "laziness" = 1)
+ foodtypes = GRAIN | VEGETABLES
+
+/obj/item/food/vendor_tray_meal/sushi
+ name = "\improper Meinkosu: Fresh Carp Rolls"
+ desc = "A pair of sushi rolls, the appearance of which would suggest that the label is lying to you."
+ icon_state = "foodtray_gas_station_sushi"
+ tastes = list("imitation space carp" = 2, "stale rice" = 2, "laziness" = 1)
+ foodtypes = GRAIN | SEAFOOD
+
+/obj/item/food/vendor_tray_meal/beef_rice
+ name = "\improper Meinkosu: Beef and Fried Rice"
+ desc = "A few slices of seemingly grilled beef, paired with a disproportionately large amount of rice."
+ icon_state = "foodtray_beef_n_rice"
+ tastes = list("cheap beef" = 1, "rice" = 3, "laziness" = 1)
+ foodtypes = GRAIN | MEAT
+
+/*
+* Mothic Meals
+*/
+
+/obj/item/food/vendor_tray_meal/pesto_pizza
+ name = "\improper Main Course - Type M: Pesto Pizza"
+ desc = "A rectangular pizza with a suspiciously bright green pesto in place of the standard tomato sauce."
+ icon_state = "foodtray_pesto_pizza"
+ tastes = list("tomato?" = 2, "cheese?" = 2, "herbs" = 1, "laziness" = 1)
+ foodtypes = GRAIN | DAIRY | VEGETABLES
+
+/obj/item/food/vendor_tray_meal/baked_rice
+ name = "\improper Main Course - Type M: Baked Rice and Grilled Cheese"
+ desc = "Some sub-par looking fleet style rice, with a very grilled chunk of cheese."
+ icon_state = "foodtray_rice_n_grilled_cheese"
+ tastes = list("rice" = 2, "peppers" = 2, "charred cheese" = 2, "laziness" = 1)
+ foodtypes = GRAIN | DAIRY | VEGETABLES
+
+/obj/item/food/vendor_tray_meal/fueljack
+ name = "\improper Main Course - Type M: Fueljack's Tray"
+ desc = "A flat chunk of fueljack's lunch, seemingly missing most of the usual variety in ingredients."
+ icon_state = "foodtray_fuel_jacks_meal"
+ tastes = list("potato" = 2, "cabbage" = 2, "cheese?" = 2, "laziness" = 1)
+ foodtypes = DAIRY | VEGETABLES
+
+/*
+* Tiziran Meals
+*/
+
+/obj/item/food/vendor_tray_meal/moonfish_nizaya
+ name = "\improper Tizira Imports: Moonfish and Nizaya"
+ desc = "An almost synthetic looking cut of moonfish, paired with an equal helping of nizaya pasta."
+ icon_state = "foodtray_moonfish_nizaya"
+ tastes = list("fish?" = 2, "cheap noodles" = 2, "laziness" = 1)
+ foodtypes = VEGETABLES | NUTS | SEAFOOD
+
+/obj/item/food/vendor_tray_meal/emperor_roll
+ name = "\improper Tizira Imports: Emperor Roll"
+ desc = "A pretty sad looking emperor roll, if you can even call it that; it seems caviar wasn't in the budget."
+ icon_state = "foodtray_emperor_roll"
+ tastes = list("bread" = 2, "cheese?" = 2, "liver?" = 2, "laziness" = 1)
+ foodtypes = VEGETABLES | NUTS | MEAT | GORE
+
+/obj/item/food/vendor_tray_meal/mushroom_fry
+ name = "\improper Tizira Imports: Mushroom Stirfry"
+ desc = "A mix of what was likely mushrooms too low quality to be used in making actual food, lightly fried and tossed in a plastic container together."
+ icon_state = "foodtray_shroom_fry"
+ tastes = list("mushroom" = 4, "becoming rich" = 1, "laziness" = 1)
+ foodtypes = VEGETABLES
+
+/* SIDES */
+
+/obj/effect/spawner/random/vendor_meal_sides
+ name = "random side spawner"
+ desc = "I hope I get one that actually matches my meal."
+ icon_state = "loot"
+
+/*
+* NT Sides
+*/
+
+/obj/effect/spawner/random/vendor_meal_sides/nt
+ name = "random nt side spawner"
+
+/obj/effect/spawner/random/vendor_meal_sides/nt/Initialize(mapload)
+ loot = list(
+ /obj/item/food/vendor_tray_meal/side,
+ /obj/item/food/vendor_tray_meal/side/crackers_and_jam,
+ /obj/item/food/vendor_tray_meal/side/crackers_and_cheese,
+ )
+ . = ..()
+
+/obj/item/food/vendor_tray_meal/side
+ name = "\improper NT-Side: Flatbread and Peanut Butter"
+ desc = "A small stack of tough flatbread, and a small spread of peanut butter for each."
+ icon_state = "foodpack_nt"
+ trash_type = /obj/item/trash/empty_side_pack/nt
+ food_reagents = list(/datum/reagent/consumable/nutriment = 5)
+ tastes = list("tough bread" = 2, "peanut butter" = 2)
+ foodtypes = GRAIN
+ hot_and_steamy = FALSE
+ custom_price = PAYCHECK_LOWER * 2.5
+
+/obj/item/food/vendor_tray_meal/side/crackers_and_jam
+ name = "\improper NT-Side: Flatbread and Berry Jelly"
+ desc = "A small stack of tough flatbread, and a small spread of nondescript berry jelly for each."
+ tastes = list("tough bread" = 2, "berries" = 2)
+ foodtypes = GRAIN | FRUIT
+
+/obj/item/food/vendor_tray_meal/side/crackers_and_cheese
+ name = "\improper NT-Side: Flatbread and Cheese Spread"
+ desc = "A small stack of tough flatbread, and a small spread of cheese for each."
+ tastes = list("tough bread" = 2, "cheese" = 2)
+ foodtypes = GRAIN | DAIRY
+
+/*
+* Yangyu Sides
+*/
+
+/obj/effect/spawner/random/vendor_meal_sides/yangyu
+ name = "random yangyu side spawner"
+
+/obj/effect/spawner/random/vendor_meal_sides/yangyu/Initialize(mapload)
+ loot = list(
+ /obj/item/food/vendor_tray_meal/side/miso,
+ /obj/item/food/vendor_tray_meal/side/rice,
+ /obj/item/food/vendor_tray_meal/side/pickled_vegetables,
+ )
+ . = ..()
+
+/obj/item/food/vendor_tray_meal/side/miso
+ name = "\improper Fukusai: Miso Soup"
+ desc = "This is quite literally just a plastic bag full of miso soup, opening it on any side other than the one indicated may result in spilled soup."
+ icon_state = "foodpack_yangyu"
+ trash_type = /obj/item/trash/empty_side_pack/yangyu
+ tastes = list("miso" = 2)
+ foodtypes = VEGETABLES
+
+/obj/item/food/vendor_tray_meal/side/rice
+ name = "\improper Fukusai: White Rice"
+ desc = "A bag stuffed full of white rice, in case your meal didn't come with enough to sate your needs."
+ icon_state = "foodpack_yangyu"
+ trash_type = /obj/item/trash/empty_side_pack/yangyu
+ tastes = list("old rice" = 2)
+ foodtypes = GRAIN
+
+/obj/item/food/vendor_tray_meal/side/pickled_vegetables
+ name = "\improper Fukusai: Pickled Vegetables"
+ desc = "Contains a small assortment of vegetables pickled in a vinegar-like solution."
+ icon_state = "foodpack_yangyu"
+ trash_type = /obj/item/trash/empty_side_pack/yangyu
+ tastes = list("vinegar" = 4)
+ foodtypes = VEGETABLES
+
+/*
+* Mothic Sides
+*/
+
+/obj/effect/spawner/random/vendor_meal_sides/moth
+ name = "random mothic side spawner"
+
+/obj/effect/spawner/random/vendor_meal_sides/moth/Initialize(mapload)
+ loot = list(
+ /obj/item/food/vendor_tray_meal/side/moffin,
+ /obj/item/food/vendor_tray_meal/side/cornbread,
+ /obj/item/food/vendor_tray_meal/side/roasted_seeds,
+ )
+ . = ..()
+
+/obj/item/food/vendor_tray_meal/side/moffin
+ name = "\improper Side Course - Type M: Moffin"
+ desc = "The result of taking a perfectly fine moffin, and flattening it into a more wafer-like form."
+ icon_state = "foodpack_moth"
+ trash_type = /obj/item/trash/empty_side_pack/moth
+ tastes = list("fabric?" = 2, "sugar" = 2)
+ foodtypes = CLOTH | GRAIN | SUGAR
+
+/obj/item/food/vendor_tray_meal/side/cornbread
+ name = "\improper Side Course - Type M: Cornbread"
+ desc = "A flattened cut of sweetened cornbread, goes well with butter."
+ icon_state = "foodpack_moth"
+ trash_type = /obj/item/trash/empty_side_pack/moth
+ tastes = list("cornbread" = 2, "sweetness" = 2)
+ foodtypes = GRAIN | SUGAR
+
+/obj/item/food/vendor_tray_meal/side/roasted_seeds
+ name = "\improper Side Course - Type M: Roasted Seeds"
+ desc = "A packet full of various oven roasted seeds."
+ icon_state = "foodpack_moth"
+ trash_type = /obj/item/trash/empty_side_pack/moth
+ tastes = list("seeds" = 2, "char" = 2)
+ foodtypes = NUTS
+
+/*
+* Tiziran Sides
+*/
+
+/obj/effect/spawner/random/vendor_meal_sides/tizira
+ name = "random tiziran side spawner"
+
+/obj/effect/spawner/random/vendor_meal_sides/tizira/Initialize(mapload)
+ loot = list(
+ /obj/item/food/vendor_tray_meal/side/root_crackers,
+ /obj/item/food/vendor_tray_meal/side/korta_brittle,
+ /obj/item/food/vendor_tray_meal/side/crispy_headcheese,
+ )
+ . = ..()
+
+/obj/item/food/vendor_tray_meal/side/root_crackers
+ name = "\improper Tizira Imports: Rootbread Crackers and Pate"
+ desc = "A small stack of rootbread crackers, with a small spread of meat pate for each."
+ icon_state = "foodpack_tizira"
+ trash_type = /obj/item/trash/empty_side_pack/tizira
+ tastes = list("tough rootbread" = 2, "pate" = 2)
+ foodtypes = VEGETABLES | NUTS | MEAT
+
+/obj/item/food/vendor_tray_meal/side/korta_brittle
+ name = "\improper Tizira Imports: Korta Brittle"
+ desc = "A perfectly rectangular portion of unsweetened korta brittle."
+ icon_state = "foodpack_tizira"
+ trash_type = /obj/item/trash/empty_side_pack/tizira
+ tastes = list("peppery heat" = 2)
+ foodtypes = NUTS
+
+/obj/item/food/vendor_tray_meal/side/crispy_headcheese
+ name = "\improper Tizira Imports: Crisped Headcheese"
+ desc = "A processed looking block of breaded headcheese."
+ icon_state = "foodpack_tizira"
+ trash_type = /obj/item/trash/empty_side_pack/tizira
+ tastes = list("cheese" = 1, "oil" = 1)
+ foodtypes = MEAT | VEGETABLES | NUTS | GORE
diff --git a/modular_doppler/vending_machines/code/vendor_snacks.dm b/modular_doppler/vending_machines/code/vendor_snacks.dm
new file mode 100644
index 0000000000000..0b5fd481f2b4d
--- /dev/null
+++ b/modular_doppler/vending_machines/code/vendor_snacks.dm
@@ -0,0 +1,302 @@
+// Snacks and drinks for the 'snacks' tab of vendors
+
+/obj/item/food/vendor_snacks
+ name = "\improper God's Strongest Snacks"
+ desc = "You best hope you aren't a sinner. (You should never see this item please report it)"
+ icon = 'modular_doppler/vending_machines/icons/imported_quick_foods.dmi'
+ icon_state = "foodpack_generic"
+ trash_type = /obj/item/trash/vendor_trash
+ bite_consumption = 10
+ food_reagents = list(/datum/reagent/consumable/nutriment = INFINITY)
+ junkiness = 10
+ custom_price = PAYCHECK_LOWER * INFINITY
+ tastes = list("the unmatched power of the sun" = 10)
+ foodtypes = JUNKFOOD | CLOTH | GORE | NUTS | FRIED | FRUIT
+ w_class = WEIGHT_CLASS_SMALL
+
+/obj/item/trash/vendor_trash
+ name = "\improper God's Weakest Snacks"
+ desc = "The leftovers of what was likely a great snack in a past time."
+ icon = 'modular_doppler/vending_machines/icons/imported_quick_foods.dmi'
+ icon_state = "foodpack_generic_trash"
+ custom_materials = list(
+ /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+/*
+* Yangyu Snacks
+*/
+
+/obj/item/reagent_containers/cup/glass/dry_ramen/prepared
+ name = "cup ramen"
+ desc = "This one even comes with water, amazing!"
+ list_reagents = list(/datum/reagent/consumable/hot_ramen = 15, /datum/reagent/consumable/salt = 3)
+
+/obj/item/reagent_containers/cup/glass/dry_ramen/prepared/hell
+ name = "spicy cup ramen"
+ desc = "This one comes with water, AND a security checkpoint's worth of capsaicin!"
+ list_reagents = list(/datum/reagent/consumable/hell_ramen = 15, /datum/reagent/consumable/salt = 3)
+
+/obj/item/food/vendor_snacks/rice_crackers
+ name = "rice crackers"
+ desc = "Despite most of the package being clear, you will never truly know what flavor these are until you eat them."
+ icon_state = "rice_cracka"
+ trash_type = /obj/item/trash/vendor_trash/rice_crackers
+ food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/rice = 2)
+ tastes = list("incomprehensible flavoring" = 1, "rice cracker" = 2)
+ foodtypes = JUNKFOOD | GRAIN
+ custom_price = PAYCHECK_LOWER * 0.8
+
+/obj/item/food/vendor_snacks/rice_crackers/make_leave_trash()
+ AddElement(/datum/element/food_trash, trash_type, FOOD_TRASH_POPABLE)
+
+/obj/item/trash/vendor_trash/rice_crackers
+ name = "empty rice crackers bag"
+ desc = "You never did find out what flavor that was supposed to be, did you?"
+ icon_state = "rice_cracka_trash"
+
+/obj/item/food/vendor_snacks/mochi_ice_cream
+ name = "mochi ice cream balls - vanilla"
+ desc = "A six pack of mochi ice cream, which is to say vanilla icecream surrounded by mochi. Comes with small plastic skewer for consumption."
+ icon_state = "mochi_ice"
+ trash_type = /obj/item/trash/vendor_trash/mochi_ice_cream
+ food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/ice = 3)
+ tastes = list("rice cake" = 2, "vanilla" = 2)
+ foodtypes = JUNKFOOD | DAIRY | GRAIN
+ custom_price = PAYCHECK_LOWER
+
+/obj/item/food/vendor_snacks/mochi_ice_cream/matcha
+ name = "mochi ice cream balls - matcha"
+ desc = "A six pack of mochi ice cream - or, more specifically, matcha icecream surrounded by mochi. Comes with small plastic skewer for consumption."
+ icon_state = "mochi_ice_green"
+ food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/ice = 1, /datum/reagent/consumable/tea = 2)
+ tastes = list("rice cake" = 1, "bitter matcha" = 2)
+ custom_price = PAYCHECK_LOWER * 1.2
+
+/obj/item/food/vendor_snacks/mochi_ice_cream/matcha/examine_more(mob/user)
+ . = ..()
+ . += span_notice("A small label on the container specifies that this icecream is made using only culinary grade matcha grown outside of the Sol system.")
+ return .
+
+/obj/item/trash/vendor_trash/mochi_ice_cream
+ name = "empty mochi ice cream tray"
+ desc = "Somehow, that tiny plastic skewer it came with has gone missing."
+ icon_state = "mochi_ice_trash"
+
+/obj/item/reagent_containers/cup/glass/waterbottle/tea
+ name = "bottle of tea"
+ desc = "A bottle of tea brought to you in a convenient plastic bottle."
+ icon = 'modular_doppler/vending_machines/icons/imported_quick_foods.dmi'
+ icon_state = "tea_bottle"
+ list_reagents = list(/datum/reagent/consumable/tea = 40)
+ cap_icon_state = "bottle_cap_tea"
+ flip_chance = 5
+ custom_price = PAYCHECK_LOWER * 1.2
+ fill_icon_state = null
+
+/obj/item/reagent_containers/cup/glass/waterbottle/tea/astra
+ name = "bottle of tea astra"
+ desc = "A bottle of tea astra, known for the rather unusual tastes the leaf is known to give when brewed."
+ icon_state = "tea_bottle_blue"
+ list_reagents = list(
+ /datum/reagent/consumable/tea = 25,
+ /datum/reagent/medicine/salglu_solution = 10,
+ /datum/reagent/consumable/nutriment/vitamin = 5,
+ )
+ custom_price = PAYCHECK_LOWER * 2
+
+/obj/item/reagent_containers/cup/glass/waterbottle/tea/strawberry
+ name = "bottle of strawberry tea"
+ desc = "A bottle of strawberry flavored tea; does not contain any actual strawberries."
+ icon_state = "tea_bottle_pink"
+ list_reagents = list(/datum/reagent/consumable/pinktea = 40)
+ custom_price = PAYCHECK_LOWER * 2
+
+/obj/item/reagent_containers/cup/glass/waterbottle/tea/nip
+ name = "bottle of catnip tea"
+ desc = "A bottle of catnip tea, required to be at or under a 50% concentration by the SFDA for safety purposes."
+ icon_state = "tea_bottle_pink"
+ list_reagents = list(
+ /datum/reagent/consumable/catnip_tea = 20,
+ /datum/reagent/consumable/pinkmilk = 20,
+ )
+ custom_price = PAYCHECK_LOWER * 2.5
+
+/*
+* Mothic Snacks
+*/
+
+/obj/item/food/vendor_snacks/mothmallow
+ name = "mothmallow"
+ desc = "A vacuum sealed bag containing a pretty crushed looking mothmallow, someone save him!"
+ icon_state = "mothmallow"
+ trash_type = /obj/item/trash/vendor_trash/mothmallow
+ food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 4)
+ tastes = list("vanilla" = 1, "cotton" = 1, "chocolate" = 1)
+ foodtypes = VEGETABLES | SUGAR
+ custom_price = PAYCHECK_LOWER
+
+/obj/item/food/vendor_snacks/mothmallow/make_leave_trash()
+ AddElement(/datum/element/food_trash, trash_type, FOOD_TRASH_POPABLE)
+
+/obj/item/trash/vendor_trash/mothmallow
+ name = "empty mothmallow bag"
+ desc = "Finally he is free."
+ icon_state = "mothmallow_trash"
+
+/obj/item/food/vendor_snacks/moth_bag
+ name = "engine fodder"
+ desc = "A vacuum sealed bag containing a small portion of colorful engine fodder."
+ icon_state = "fodder"
+ trash_type = /obj/item/trash/vendor_trash/moth_bag
+ food_reagents = list(/datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/salt = 2)
+ tastes = list("seeds" = 1, "nuts" = 1, "chocolate" = 1, "salt" = 1, "popcorn" = 1, "potato" = 1)
+ foodtypes = GRAIN | NUTS | VEGETABLES | SUGAR
+ custom_price = PAYCHECK_LOWER * 1.2
+
+/obj/item/food/vendor_snacks/moth_bag/fuel_jack
+ name = "fueljack's snack"
+ desc = "A vacuum sealed bag containing a smaller than usual brick of fueljack's lunch, ultimately downgrading it to a fueljack's snack."
+ icon_state = "fuel_jack_snack"
+ food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 1)
+ tastes = list("cabbage" = 1, "potato" = 1, "onion" = 1, "chili" = 1, "cheese" = 1)
+ foodtypes = DAIRY | VEGETABLES
+ custom_price = PAYCHECK_LOWER * 1.2
+
+/obj/item/food/vendor_snacks/moth_bag/cheesecake
+ name = "chocolate cheesecake cube"
+ desc = "A vacuum sealed bag containing a small cube of a mothic style cheesecake, this one is covered in chocolate."
+ icon_state = "choco_cheese_cake"
+ food_reagents = list(/datum/reagent/consumable/nutriment/protein = 2, /datum/reagent/consumable/sugar = 4)
+ tastes = list("cheesecake" = 1, "chocolate" = 1)
+ foodtypes = SUGAR | FRIED | DAIRY | GRAIN
+ custom_price = PAYCHECK_LOWER * 1.4
+
+/obj/item/food/vendor_snacks/moth_bag/cheesecake/honey
+ name = "honey cheesecake cube"
+ desc = "A vacuum sealed bag containing a small cube of a mothic style cheesecake, this one is covered in honey."
+ icon_state = "honey_cheese_cake"
+ tastes = list("cheesecake" = 1, "honey" = 1)
+ foodtypes = SUGAR | FRIED | DAIRY | GRAIN
+
+/obj/item/trash/vendor_trash/moth_bag
+ name = "empty mothic snack bag"
+ desc = "The clear plastic reveals that this no longer holds tasty treats for your winged friends."
+ icon_state = "moth_bag_trash"
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/lemonade
+ name = "\improper Gyárhajó 1023: Lemonade"
+ desc = "A can of lemonade, for those who are into that kind of thing, or just have no choice."
+ icon_state = "lemonade"
+ list_reagents = list(/datum/reagent/consumable/lemonade = 30)
+ drink_type = FRUIT
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/lemonade/examine_more(mob/user)
+ . = ..()
+ . += span_notice("Markings on the can indicate this one was made on factory ship 1023 of the Grand Nomad Fleet.")
+ return .
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/navy_rum
+ name = "\improper Gyárhajó 1506: Navy Rum"
+ desc = "A can of navy rum brewed up and imported from a detachment of the nomad fleet, or so the can says."
+ icon_state = "navy_rum"
+ list_reagents = list(/datum/reagent/consumable/ethanol/navy_rum = 30)
+ drink_type = ALCOHOL
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/navy_rum/examine_more(mob/user)
+ . = ..()
+ . += span_notice("Markings on the can indicate this one was made on factory ship 1506 of the Grand Nomad Fleet.")
+ return .
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/soda_water_moth
+ name = "\improper Gyárhajó 1023: Soda Water"
+ desc = "A can of soda water. Why not make a rum and soda? Now that you think of it, maybe not."
+ icon_state = "soda_water"
+ list_reagents = list(/datum/reagent/consumable/sodawater = 30)
+ drink_type = SUGAR
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/soda_water_moth/examine_more(mob/user)
+ . = ..()
+ . += span_notice("Markings on the can indicate this one was made on factory ship 1023 of the Grand Nomad Fleet.")
+ return .
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/ginger_beer
+ name = "\improper Gyárhajó 1023: Ginger Beer"
+ desc = "A can of ginger beer, don't let the beer part mislead you, this is entirely non-alcoholic."
+ icon_state = "gingie_beer"
+ list_reagents = list(/datum/reagent/consumable/sol_dry = 30)
+ drink_type = SUGAR
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/ginger_beer/examine_more(mob/user)
+ . = ..()
+ . += span_notice("Markings on the can indicate this one was made on factory ship 1023 of the Grand Nomad Fleet.")
+ return .
+
+/*
+* Tiziran Snacks
+*/
+
+/obj/item/food/vendor_snacks/lizard_bag
+ name = "candied mushroom"
+ desc = "An odd treat of the lizard empire, a mushroom dipped in caramel; unfortunately, it seems to have been bagged before the caramel fully hardened."
+ icon_state = "candied_shroom"
+ trash_type = /obj/item/trash/vendor_trash/lizard_bag
+ food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/caramel = 2)
+ tastes = list("savouriness" = 1, "sweetness" = 1)
+ foodtypes = SUGAR | VEGETABLES
+ custom_price = PAYCHECK_LOWER * 1.4 //Tiziran imports are a bit more expensive overall
+
+/obj/item/food/vendor_snacks/lizard_bag/make_leave_trash()
+ AddElement(/datum/element/food_trash, trash_type, FOOD_TRASH_POPABLE)
+
+/obj/item/food/vendor_snacks/lizard_bag/moon_jerky
+ name = "moonfish jerky"
+ desc = "A fish jerky, made from what you can only hope is moonfish. It also seems to taste subtly of barbecue"
+ icon_state = "moon_jerky"
+ food_reagents = list(/datum/reagent/consumable/nutriment/protein = 2, /datum/reagent/consumable/bbqsauce = 2)
+ tastes = list("fish" = 1, "smokey sauce" = 1)
+ foodtypes = MEAT
+ custom_price = PAYCHECK_LOWER * 1.6
+
+/obj/item/trash/vendor_trash/lizard_bag
+ name = "empty tiziran snack bag"
+ desc = "All that money importing tiziran snacks just to end at this?"
+ icon_state = "tizira_bag_trash"
+
+/obj/item/food/vendor_snacks/lizard_box
+ name = "tiziran dumplings"
+ desc = "A three pack of tiziran style dumplings, not actually stuffed with anything."
+ icon_state = "dumpling"
+ trash_type = /obj/item/trash/vendor_trash/lizard_box
+ food_reagents = list(/datum/reagent/consumable/nutriment = 3)
+ tastes = list("potato" = 1, "earthy heat" = 1)
+ foodtypes = VEGETABLES | NUTS
+ custom_price = PAYCHECK_LOWER * 1.6
+
+/obj/item/food/vendor_snacks/lizard_box/sweet_roll
+ name = "honey roll"
+ desc = "Definitely don't let the guards find out that someone stole your last one."
+ icon_state = "sweet_roll"
+ food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/honey = 2)
+ tastes = list("bread" = 1, "honey" = 1, "fruit" = 1)
+ foodtypes = VEGETABLES | NUTS | FRUIT
+ custom_price = PAYCHECK_LOWER *1.8
+
+/obj/item/trash/vendor_trash/lizard_box
+ name = "empty tiziran snack box"
+ desc = "Tizira, contributing to the space plastic crisis since 2530."
+ icon_state = "tizira_box_trash"
+
+/obj/item/reagent_containers/cup/glass/waterbottle/tea/mushroom
+ name = "bottle of mushroom tea"
+ desc = "A bottle of somewhat bitter mushroom tea, a favorite of the Tiziran empire."
+ icon_state = "tea_bottle_grey"
+ list_reagents = list(/datum/reagent/consumable/mushroom_tea = 40)
+ custom_price = PAYCHECK_LOWER * 2
+
+/obj/item/reagent_containers/cup/soda_cans/doppler/kortara
+ name = "kortara"
+ desc = "A can of kortara, alcohol brewed from korta seeds, which gives it a unique peppery spice flavor."
+ icon_state = "kortara"
+ list_reagents = list(/datum/reagent/consumable/ethanol/kortara = 30)
+ drink_type = ALCOHOL
diff --git a/modular_doppler/vending_machines/code/vendors.dm b/modular_doppler/vending_machines/code/vendors.dm
new file mode 100644
index 0000000000000..f5a4085f79a4c
--- /dev/null
+++ b/modular_doppler/vending_machines/code/vendors.dm
@@ -0,0 +1,229 @@
+/obj/effect/spawner/random/vending/snackvend
+ loot = list(
+ /obj/machinery/vending/imported/nt,
+ /obj/machinery/vending/imported/yangyu,
+ /obj/machinery/vending/imported/mothic,
+ /obj/machinery/vending/imported/tiziran,
+// /obj/machinery/vending/deforest_medvend,
+ )
+
+/obj/effect/spawner/random/vending/colavend //These can serve both snacks AND drinks so it's kinda both of them?
+ loot = list(
+ /obj/machinery/vending/imported/nt,
+ /obj/machinery/vending/imported/yangyu,
+ /obj/machinery/vending/imported/mothic,
+ /obj/machinery/vending/imported/tiziran,
+// /obj/machinery/vending/deforest_medvend,
+ )
+
+/datum/supply_pack/vending/imported/fill(obj/structure/closet/crate/target_crate)
+ . = ..()
+ for(var/obj/vendor_refill as anything in subtypesof(/obj/item/vending_refill/snack/imported))
+ new vendor_refill(target_crate)
+
+/obj/machinery/vending/imported
+ icon = 'modular_doppler/vending_machines/icons/imported_vendors.dmi'
+ icon_state = null
+ panel_type = "panel15"
+ default_price = PAYCHECK_CREW * 0.5
+ extra_price = PAYCHECK_COMMAND
+ payment_department = NO_FREEBIES
+
+/obj/machinery/vending/imported/nt
+ name = "NT Sustenance Supplier"
+ desc = "A vending machine serving up only the finest of human college student food."
+ icon_state = "nt_food"
+ light_mask = "nt_food-light-mask"
+ light_color = LIGHT_COLOR_LIGHT_CYAN
+ product_slogans = "Caution, contents may be selling hot!;Look at these low prices!;Hungry? Me too- Wait, no, you didn't hear that!"
+ product_categories = list(
+ list(
+ "name" = "Snacks",
+ "icon" = "cookie",
+ "products" = list(
+ /obj/item/food/peanuts/random = 6,
+ /obj/item/food/cnds/random = 6,
+ /obj/item/food/pistachios = 6,
+ /obj/item/food/cornchips/random = 6,
+ /obj/item/food/sosjerky = 6,
+ /obj/item/reagent_containers/cup/soda_cans/cola = 6,
+ /obj/item/reagent_containers/cup/soda_cans/lemon_lime = 6,
+ /obj/item/reagent_containers/cup/soda_cans/starkist = 6,
+ /obj/item/reagent_containers/cup/soda_cans/pwr_game = 6,
+ ),
+ ),
+ list(
+ "name" = "Meals",
+ "icon" = "pizza-slice",
+ "products" = list(
+ /obj/item/storage/box/foodpack/nt = 6,
+ /obj/item/storage/box/foodpack/nt/burger = 6,
+ /obj/item/storage/box/foodpack/nt/chicken_sammy = 6,
+ /obj/item/food/vendor_tray_meal/side = 6,
+ /obj/item/food/vendor_tray_meal/side/crackers_and_jam = 6,
+ /obj/item/food/vendor_tray_meal/side/crackers_and_cheese = 6,
+ ),
+ ),
+ )
+
+ refill_canister = /obj/item/vending_refill/snack/imported/nt
+
+/obj/item/vending_refill/snack/imported/nt
+ machine_name = "NT Sustenance Supplier"
+
+/obj/machinery/vending/imported/yangyu
+ name = "Fudobenda"
+ desc = "A vendor selling traditional Sol eastern foods of dubious quality."
+ icon_state = "yangyu_food"
+ light_mask = "yangyu_food-light-mask"
+ light_color = LIGHT_COLOR_FLARE
+ product_slogans = "Fresh farmed space carp from local space!;Imitation lobstrocity sushi choices availible!;Made with traditional recipes and care!"
+ product_categories = list(
+ list(
+ "name" = "Snacks",
+ "icon" = "cookie",
+ "products" = list(
+ /obj/item/reagent_containers/cup/glass/dry_ramen/prepared = 6,
+ /obj/item/reagent_containers/cup/glass/dry_ramen/prepared/hell = 6,
+ /obj/item/food/vendor_snacks/rice_crackers = 6,
+ /obj/item/food/vendor_snacks/mochi_ice_cream = 6,
+ /obj/item/food/vendor_snacks/mochi_ice_cream/matcha = 6,
+ /obj/item/reagent_containers/cup/glass/waterbottle/tea = 6,
+ /obj/item/reagent_containers/cup/glass/waterbottle/tea/astra = 6,
+ /obj/item/reagent_containers/cup/glass/waterbottle/tea/strawberry = 6,
+ /obj/item/reagent_containers/cup/glass/waterbottle/tea/nip = 6,
+ ),
+ ),
+ list(
+ "name" = "Meals",
+ "icon" = "pizza-slice",
+ "products" = list(
+ /obj/item/storage/box/foodpack/yangyu = 6,
+ /obj/item/storage/box/foodpack/yangyu/sushi = 6,
+ /obj/item/storage/box/foodpack/yangyu/beef_rice = 6,
+ /obj/item/food/vendor_tray_meal/side/miso = 6,
+ /obj/item/food/vendor_tray_meal/side/rice = 6,
+ /obj/item/food/vendor_tray_meal/side/pickled_vegetables = 6,
+ ),
+ ),
+ )
+
+ refill_canister = /obj/item/vending_refill/snack/imported/yangyu
+ initial_language_holder = /datum/language_holder/yangyu_vendor
+
+/datum/language_holder/yangyu_vendor
+ understood_languages = list(
+ /datum/language/yangyu = list(LANGUAGE_ATOM),
+ )
+ spoken_languages = list(
+ /datum/language/yangyu = list(LANGUAGE_ATOM),
+ )
+
+/obj/machinery/vending/imported/yangyu/examine_more(mob/user)
+ . = ..()
+ . += span_notice("Someone appears to have written \"Don't trust the sushi!\" in marker on the side of the vendor.")
+ return .
+
+/obj/item/vending_refill/snack/imported/yangyu
+ machine_name = "Fudobenda"
+
+/obj/machinery/vending/imported/mothic
+ name = "Nomad Fleet Ration Chit Exchange"
+ desc = "One of the Nomad Fleet's own ration vendors; in spite of the name engraved into it, it's been fitted to accept credits."
+ icon_state = "moth_food"
+ light_mask = "moth_food-light-mask"
+ light_color = LIGHT_COLOR_HALOGEN
+ product_slogans = "Support the fleet, conserve rations today!;Some options in reduced portion and cost!;Do your part to keep the fleet flying!"
+ product_categories = list(
+ list(
+ "name" = "Snacks",
+ "icon" = "cookie",
+ "products" = list(
+ /obj/item/food/vendor_snacks/mothmallow = 6,
+ /obj/item/food/vendor_snacks/moth_bag = 6,
+ /obj/item/food/vendor_snacks/moth_bag/fuel_jack = 6,
+ /obj/item/food/vendor_snacks/moth_bag/cheesecake = 6,
+ /obj/item/food/vendor_snacks/moth_bag/cheesecake/honey = 6,
+ /obj/item/reagent_containers/cup/soda_cans/doppler/lemonade = 6,
+ /obj/item/reagent_containers/cup/soda_cans/doppler/navy_rum = 6,
+ /obj/item/reagent_containers/cup/soda_cans/doppler/soda_water_moth = 6,
+ /obj/item/reagent_containers/cup/soda_cans/doppler/ginger_beer = 6,
+ ),
+ ),
+ list(
+ "name" = "Meals",
+ "icon" = "pizza-slice",
+ "products" = list(
+ /obj/item/storage/box/foodpack/moth = 6,
+ /obj/item/storage/box/foodpack/moth/baked_rice = 6,
+ /obj/item/storage/box/foodpack/moth/fuel_jack = 6,
+ /obj/item/food/vendor_tray_meal/side/moffin = 6,
+ /obj/item/food/vendor_tray_meal/side/cornbread = 6,
+ /obj/item/food/vendor_tray_meal/side/roasted_seeds = 6,
+ ),
+ ),
+ )
+
+ refill_canister = /obj/item/vending_refill/snack/imported/mothic
+ initial_language_holder = /datum/language_holder/moffic_vendor
+
+/datum/language_holder/moffic_vendor
+ understood_languages = list(
+ /datum/language/moffic = list(LANGUAGE_ATOM),
+ )
+ spoken_languages = list(
+ /datum/language/moffic = list(LANGUAGE_ATOM),
+ )
+
+/obj/item/vending_refill/snack/imported/mothic
+ machine_name = "Nomad Fleet Ration Chit Exchange"
+
+/obj/machinery/vending/imported/tiziran
+ name = "Tiziran Imported Delicacies"
+ desc = "A vendor serving a fine collection of what is very likely knock-offs of popular Tiziran brands."
+ icon_state = "tizira_food"
+ light_mask = "tizira_food-light-mask"
+ light_color = LIGHT_COLOR_FIRE
+ product_slogans = "Real imports from the capital itself, we promise!;Rare selections of salt water catch!;Moonfish glaze included with all meat options!"
+ product_categories = list(
+ list(
+ "name" = "Snacks",
+ "icon" = "cookie",
+ "products" = list(
+ /obj/item/food/chips/shrimp = 6,
+ /obj/item/food/vendor_snacks/lizard_bag = 6,
+ /obj/item/food/vendor_snacks/lizard_bag/moon_jerky = 6,
+ /obj/item/food/vendor_snacks/lizard_box = 6,
+ /obj/item/food/vendor_snacks/lizard_box/sweet_roll = 6,
+ /obj/item/reagent_containers/cup/glass/bottle/mushi_kombucha = 6,
+ /obj/item/reagent_containers/cup/glass/waterbottle/tea/mushroom = 6,
+ /obj/item/reagent_containers/cup/soda_cans/doppler/kortara = 6,
+ ),
+ ),
+ list(
+ "name" = "Meals",
+ "icon" = "pizza-slice",
+ "products" = list(
+ /obj/item/storage/box/foodpack/tizira = 6,
+ /obj/item/storage/box/foodpack/tizira/roll = 6,
+ /obj/item/storage/box/foodpack/tizira/stir_fry = 6,
+ /obj/item/food/vendor_tray_meal/side/root_crackers = 6,
+ /obj/item/food/vendor_tray_meal/side/korta_brittle = 6,
+ /obj/item/food/vendor_tray_meal/side/crispy_headcheese = 6,
+ ),
+ ),
+ )
+
+ refill_canister = /obj/item/vending_refill/snack/imported/tiziran
+ initial_language_holder = /datum/language_holder/draconic_vendor
+
+/datum/language_holder/draconic_vendor
+ understood_languages = list(
+ /datum/language/draconic = list(LANGUAGE_ATOM),
+ )
+ spoken_languages = list(
+ /datum/language/draconic = list(LANGUAGE_ATOM),
+ )
+
+/obj/item/vending_refill/snack/imported/tiziran
+ machine_name = "Tiziran Imported Delicacies"
diff --git a/modular_doppler/vending_machines/icons/imported_quick_foods.dmi b/modular_doppler/vending_machines/icons/imported_quick_foods.dmi
new file mode 100644
index 0000000000000..4249a5f4f0a48
Binary files /dev/null and b/modular_doppler/vending_machines/icons/imported_quick_foods.dmi differ
diff --git a/modular_doppler/vending_machines/icons/imported_vendors.dmi b/modular_doppler/vending_machines/icons/imported_vendors.dmi
new file mode 100644
index 0000000000000..d26e14e5a38ed
Binary files /dev/null and b/modular_doppler/vending_machines/icons/imported_vendors.dmi differ
diff --git a/modular_doppler/vending_machines/readme.md b/modular_doppler/vending_machines/readme.md
new file mode 100644
index 0000000000000..b9f0bff08d00c
--- /dev/null
+++ b/modular_doppler/vending_machines/readme.md
@@ -0,0 +1,26 @@
+## Title: ImportedVendors
+
+MODULE ID: CulturalVendors
+
+### Description:
+
+Adds random, imported food and drink vendors to the pool of snack vendors that can spawn across the maps
+
+### TG Proc Changes:
+
+- N/A
+
+### Defines:
+
+- N/A
+
+### Master file additions
+
+- N/A
+
+### Included files that are not contained in this module:
+
+- N/A
+
+### Credits:
+Paxilmaniac
diff --git a/tgstation.dme b/tgstation.dme
index 13158af3bf479..7dc16af00805f 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -6389,6 +6389,11 @@
#include "modular_doppler\modular_cosmetics\code\neck\collar.dm"
#include "modular_doppler\modular_cosmetics\code\suits\jacket.dm"
#include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_neck.dm"
+#include "modular_doppler\modular_food_drinks_and_chems\chemistry_reagents.dm"
+#include "modular_doppler\modular_food_drinks_and_chems\food_and_drinks\alcohol reagents.dm"
+#include "modular_doppler\modular_food_drinks_and_chems\food_and_drinks\drink_reagents.dm"
+#include "modular_doppler\modular_food_drinks_and_chems\food_and_drinks\drinks.dm"
+#include "modular_doppler\modular_food_drinks_and_chems\food_and_drinks\drinks_recipes.dm"
#include "modular_doppler\pixel_shift\living.dm"
#include "modular_doppler\pixel_shift\living_movement.dm"
#include "modular_doppler\pixel_shift\code\pixel_shift_component.dm"
@@ -6396,6 +6401,10 @@
#include "modular_doppler\pixel_shift\code\pixel_shift_mob.dm"
#include "modular_doppler\sprite_accessories\code\hair.dm"
#include "modular_doppler\tableflip\tableflip.dm"
+#include "modular_doppler\vending_machines\code\vendor_containers.dm"
+#include "modular_doppler\vending_machines\code\vendor_food.dm"
+#include "modular_doppler\vending_machines\code\vendor_snacks.dm"
+#include "modular_doppler\vending_machines\code\vendors.dm"
#include "modular_doppler\wargaming\code\game_kit.dm"
#include "modular_doppler\wargaming\code\holograms.dm"
#include "modular_doppler\wargaming\code\projectors.dm"