From 8f28a70be7366fbc2a721b1abbf089eea35b8a3d Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 12 Jan 2026 13:05:16 -0500 Subject: [PATCH] fixes food nutriment taste (#7471) --- code/modules/food/food/snacks.dm | 10 +++++++++- code/modules/mob/living/carbon/taste.dm | 17 ++++++----------- .../chemistry/reagents/nutrition/nutriment.dm | 2 ++ 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index a35f1c9e5a9..f5cbb885622 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -33,7 +33,15 @@ /obj/item/reagent_containers/food/snacks/Initialize(mapload) . = ..() if(nutriment_amt) - reagents.add_reagent("nutriment",nutriment_amt,nutriment_desc) + var/datum/nutriment_data/nutriment_data = new + for(var/taste in nutriment_desc) + var/amount = nutriment_desc[taste] + nutriment_data.add_taste(taste, amount, TRUE) + reagents.add_reagent( + /datum/reagent/nutriment::id, + nutriment_amt, + nutriment_data, + ) //Placeholder for effect that trigger on eating that aren't tied to reagents. /obj/item/reagent_containers/food/snacks/proc/On_Consume(mob/M) diff --git a/code/modules/mob/living/carbon/taste.dm b/code/modules/mob/living/carbon/taste.dm index 5cb2687d734..ab895e66780 100644 --- a/code/modules/mob/living/carbon/taste.dm +++ b/code/modules/mob/living/carbon/taste.dm @@ -28,20 +28,15 @@ calculate text size per text. var/datum/reagent/R = SSchemistry.fetch_reagent(id) if(!R.taste_mult) continue - if(R.id == "nutriment") //this is ugly but apparently only nutriment (not subtypes) has taste data TODO figure out why - var/list/taste_data = reagent_datas?[id] - for(var/taste in taste_data) - if(taste in tastes) - tastes[taste] += taste_data[taste] - else - tastes[taste] = taste_data[taste] + if(istype(R, /datum/reagent/nutriment)) + var/datum/nutriment_data/nutriment_data = reagent_datas?[id] + var/list/nutriment_tastes = nutriment_data.taste + for(var/taste in nutriment_tastes) + tastes[taste] = tastes[taste] + nutriment_tastes[taste] else var/taste_desc = R.taste_description var/taste_amount = get_reagent_amount(R.id) * R.taste_mult - if(R.taste_description in tastes) - tastes[taste_desc] += taste_amount - else - tastes[taste_desc] = taste_amount + tastes[taste_desc] = tastes[taste_desc] + taste_amount //deal with percentages var/total_taste = 0 diff --git a/code/modules/reagents/chemistry/reagents/nutrition/nutriment.dm b/code/modules/reagents/chemistry/reagents/nutrition/nutriment.dm index f9c5f0290bd..a3ff19f2ada 100644 --- a/code/modules/reagents/chemistry/reagents/nutrition/nutriment.dm +++ b/code/modules/reagents/chemistry/reagents/nutrition/nutriment.dm @@ -75,6 +75,8 @@ return data_initializer /datum/reagent/nutriment/mix_data(datum/nutriment_data/old_data, old_volume, datum/nutriment_data/new_data, new_volume, datum/reagent_holder/holder) + if(!old_data) + old_data = new /datum/nutriment_data if(!istype(new_data)) return old_data old_data.merge_from(new_data)