[MIRROR] Allows to limit liquid generation on low nutri / power (#12324)

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
Co-authored-by: vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2026-01-24 20:04:00 -07:00
committed by GitHub
parent 3f125bf100
commit 4cefc154b2
19 changed files with 73 additions and 716 deletions
+4
View File
@@ -1003,6 +1003,10 @@
if(new_show_liquids == 1)
new_belly.show_liquids = TRUE
if(isnum(belly_data["reagent_gen_cost_limit"]))
var/new_reagent_gen_cost_limit = belly_data["reagent_gen_cost_limit"]
new_belly.reagent_gen_cost_limit = sanitize_integer(new_reagent_gen_cost_limit, 0, 100, initial(new_belly.reagent_gen_cost_limit))
if(isnum(belly_data["reagentbellymode"]))
var/new_reagentbellymode = belly_data["reagentbellymode"]
if(new_reagentbellymode == 0)
+3
View File
@@ -162,6 +162,7 @@
var/belly_fullscreen_alpha = 255
// Liquid belly vars
var/reagent_gen_cost_limit = 10 //Our lower percentage limit of nutrition / charge until which we produce liquids
var/reagentbellymode = FALSE // Belly has abilities to make liquids from digested/absorbed/drained prey and/or nutrition
var/reagent_mode_flags = 0
@@ -378,6 +379,7 @@
"colorization_enabled",
"show_liquids",
"reagentbellymode",
"reagent_gen_cost_limit",
"liquid_fullness1_messages",
"liquid_fullness2_messages",
"liquid_fullness3_messages",
@@ -1357,6 +1359,7 @@
dupe.belly_fullscreen_color4 = belly_fullscreen_color4
dupe.belly_fullscreen_alpha = belly_fullscreen_alpha
dupe.show_liquids = show_liquids
dupe.reagent_gen_cost_limit = reagent_gen_cost_limit
dupe.reagentbellymode = reagentbellymode
dupe.vorefootsteps_sounds = vorefootsteps_sounds
dupe.liquid_fullness1_messages = liquid_fullness1_messages
@@ -5,14 +5,16 @@
if(isrobot(owner))
var/mob/living/silicon/robot/R = owner
if(R.cell && R.cell.charge >= gen_cost*10 && gen_interval >= gen_time)
GenerateBellyReagents()
if(R.cell.percent() >= reagent_gen_cost_limit)
GenerateBellyReagents()
gen_interval = 0
return
gen_interval++
return
if(owner.nutrition >= gen_cost && gen_interval >= gen_time)
GenerateBellyReagents()
if(owner.nutrition_percent() >= reagent_gen_cost_limit)
GenerateBellyReagents()
gen_interval = 0
return
gen_interval++
@@ -439,6 +439,7 @@
// Liquid Options
belly_data["show_liquids"] = B.show_liquids
belly_data["reagentbellymode"] = B.reagentbellymode
belly_data["reagent_gen_cost_limit"] = B.reagent_gen_cost_limit
belly_data["reagent_chosen"] = B.reagent_chosen
belly_data["reagent_name"] = B.reagent_name
belly_data["reagent_transfer_verb"] = B.reagent_transfer_verb
@@ -14,6 +14,12 @@
host.vore_selected.show_liquids = 0
to_chat(user,span_warning("Your [lowertext(host.vore_selected.name)] no longer has liquid options."))
. = TRUE
if("b_liq_reagent_gen_cost_limit")
var/new_limit = text2num(params["val"])
if(!isnum(new_limit))
return FALSE
host.vore_selected.reagent_gen_cost_limit = CLAMP(new_limit, 0, 100)
. = TRUE
if("b_liq_reagent_gen")
if(!host.vore_selected.reagentbellymode) //liquid container adjustments and interactions.
host.vore_selected.reagentbellymode = 1
@@ -368,9 +368,18 @@
selected_list["contents"] = selected_contents
if(LIQUID_OPTIONS_TAB)
var/liq_gen_resources = 0
if(isrobot(owner))
var/mob/living/silicon/robot/robot_owner = owner
if(robot_owner.cell)
liq_gen_resources = robot_owner.cell.percent()
else if(isliving(owner))
var/mob/living/living_owner = owner
liq_gen_resources = living_owner.nutrition_percent()
// liquid belly options
var/list/belly_liquid_data = list(
"show_liq" = selected.show_liquids,
"liq_gen_resources" = liq_gen_resources,
"liq_interacts" = compile_liquid_interact_data(selected)
)
selected_list["belly_liquid_data"] = belly_liquid_data
@@ -717,6 +717,7 @@
"liq_reagent_transfer_verb" = selected.reagent_transfer_verb,
"liq_reagent_nutri_rate" = selected.gen_time,
"liq_reagent_capacity" = selected.custom_max_volume,
"liq_gen_cost_limit" = selected.reagent_gen_cost_limit,
"liq_sloshing" = selected.vorefootsteps_sounds,
"liq_reagent_addons" = liquid_addon_list,
"custom_reagentcolor" = (selected.custom_reagentcolor ? selected.custom_reagentcolor : selected.reagentcolor),