diff --git a/code/modules/vore/eating/belly_obj_ch.dm b/code/modules/vore/eating/belly_obj_ch.dm index 36e98aae40..3804334767 100644 --- a/code/modules/vore/eating/belly_obj_ch.dm +++ b/code/modules/vore/eating/belly_obj_ch.dm @@ -21,6 +21,7 @@ var/mush_alpha = 255 //Mush overlay transparency. var/max_mush = 500 //How much nutrition for full mush overlay var/min_mush = 0 //Manual setting for lowest mush level + var/item_mush_val = 0 //How much solid belly contents raise mush level per item var/nutri_reagent_gen = FALSE //if belly produces reagent over time using nutrition, needs to be optimized to use subsystem - Jack var/list/generated_reagents = list("water" = 1) //Any number of reagents, the associated value is how many units are generated per process() diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index c2e11af396..3003d45060 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -268,6 +268,7 @@ "mush_alpha", "max_mush", "min_mush", + "item_mush_val", "custom_reagentcolor", "custom_reagentalpha", "gen_cost", @@ -535,7 +536,8 @@ I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "mush") I.color = mush_color I.alpha = mush_alpha - I.pixel_y = -450 + (450 / max(max_mush, 1) * max(min(max_mush, owner.nutrition), 1)) + var/total_mush_content = owner.nutrition + LAZYLEN(contents) * item_mush_val + I.pixel_y = -450 + (450 / max(max_mush, 1) * max(min(max_mush, total_mush_content), 1)) if(I.pixel_y < -450 + (450 / 100 * min_mush)) I.pixel_y = -450 + (450 / 100 * min_mush) F.add_overlay(I) @@ -568,7 +570,8 @@ I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "mush") I.color = mush_color I.alpha = mush_alpha - I.pixel_y = -450 + (450 / max(max_mush, 1) * max(min(max_mush, owner.nutrition), 1)) + var/total_mush_content = owner.nutrition + LAZYLEN(contents) * item_mush_val + I.pixel_y = -450 + (450 / max(max_mush, 1) * max(min(max_mush, total_mush_content), 1)) if(I.pixel_y < -450 + (450 / 100 * min_mush)) I.pixel_y = -450 + (450 / 100 * min_mush) F.add_overlay(I) @@ -648,7 +651,8 @@ I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "mush") I.color = mush_color I.alpha = mush_alpha - I.pixel_y = -450 + (450 / max(max_mush, 1) * max(min(max_mush, owner.nutrition), 1)) + var/total_mush_content = owner.nutrition + LAZYLEN(contents) * item_mush_val + I.pixel_y = -450 + (450 / max(max_mush, 1) * max(min(max_mush, total_mush_content), 1)) if(I.pixel_y < -450 + (450 / 100 * min_mush)) I.pixel_y = -450 + (450 / 100 * min_mush) F.add_overlay(I) @@ -680,7 +684,8 @@ I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "mush") I.color = mush_color I.alpha = mush_alpha - I.pixel_y = -450 + (450 / max(max_mush, 1) * max(min(max_mush, owner.nutrition), 1)) + var/total_mush_content = owner.nutrition + LAZYLEN(contents) * item_mush_val + I.pixel_y = -450 + (450 / max(max_mush, 1) * max(min(max_mush, total_mush_content), 1)) if(I.pixel_y < -450 + (450 / 100 * min_mush)) I.pixel_y = -450 + (450 / 100 * min_mush) F.add_overlay(I) @@ -1659,6 +1664,7 @@ dupe.mush_alpha = mush_alpha dupe.max_mush = max_mush dupe.min_mush = min_mush + dupe.item_mush_val = item_mush_val dupe.custom_reagentcolor = custom_reagentcolor dupe.custom_reagentalpha = custom_reagentalpha dupe.gen_cost = gen_cost diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 23b8bae8b0..f13a316dd0 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -244,6 +244,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", "mush_alpha" = selected.mush_alpha, "max_mush" = selected.max_mush, "min_mush" = selected.min_mush, + "item_mush_val" = selected.item_mush_val, "vorespawn_blacklist" = selected.vorespawn_blacklist, "sound_volume" = selected.sound_volume, "affects_voresprite" = selected.affects_vore_sprites, @@ -385,6 +386,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", selected_list["liq_interacts"]["mush_alpha"] = selected.mush_alpha selected_list["liq_interacts"]["max_mush"] = selected.max_mush selected_list["liq_interacts"]["min_mush"] = selected.min_mush + selected_list["liq_interacts"]["item_mush_val"] = selected.item_mush_val selected_list["show_liq_fullness"] = selected.show_fullness_messages selected_list["liq_messages"] = list() @@ -1278,6 +1280,10 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", var/min_mush = belly_data["min_mush"] new_belly.min_mush = CLAMP(min_mush, 0, 100) + if(isnum(belly_data["item_mush_val"])) + var/item_mush_val = belly_data["item_mush_val"] + new_belly.item_mush_val = CLAMP(item_mush_val, 0, 1000) + if(isnum(belly_data["liquid_overlay"])) var/new_liquid_overlay = belly_data["liquid_overlay"] if(new_liquid_overlay == 0) @@ -3054,6 +3060,14 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", host.vore_selected.min_mush = new_new_min_mush host.vore_selected.update_internal_overlay() . = TRUE + if("b_item_mush_val") + var/new_item_mush_val = input(user, "Set how much solid belly contents affect mush level. 0-1000 fullness per item.", "Set Item Mush Value.", host.vore_selected.item_mush_val) as num|null + if(new_item_mush_val == null) + return FALSE + var/new_new_item_mush_val = CLAMP(new_item_mush_val, 0, 1000) + host.vore_selected.item_mush_val = new_new_item_mush_val + host.vore_selected.update_internal_overlay() + . = TRUE if("b_liq_purge") var/alert = alert("Are you sure you want to delete the liquids in your [lowertext(host.vore_selected.name)]?","Confirmation","Delete","Cancel") if(!(alert == "Delete")) diff --git a/tgui/packages/tgui_ch/interfaces/VorePanel.js b/tgui/packages/tgui_ch/interfaces/VorePanel.js index 3f4127e1d3..b7fa0e1f82 100644 --- a/tgui/packages/tgui_ch/interfaces/VorePanel.js +++ b/tgui/packages/tgui_ch/interfaces/VorePanel.js @@ -1713,6 +1713,7 @@ const VoreSelectedBellyLiquidOptions = (props, context) => { mush_alpha, max_mush, min_mush, + item_mush_val, } = belly; return ( @@ -1909,6 +1910,16 @@ const VoreSelectedBellyLiquidOptions = (props, context) => { content={liq_interacts.min_mush + '%'} /> + + ",$e+='
',$e+='
',$e+="Addons:
"+function(e){var t=[];return null==e||e.forEach((function(e){t.push(''+e+"")})),0===t.length&&t.push("No Addons Set"),t}(m)+"

",$e+="== Descriptions ==
",$e+="Vore Verb:
"+i+"

",$e+="Release Verb:
"+a+"

",$e+='Description:
"'+o+'"

',$e+='Absorbed Description:
"'+r+'"

',$e+="
",$e+="== Messages ==
",$e+='
',$e+='
",$e+='
',$e+='
',$e+='
',null==A||A.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==M||M.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==E||E.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==O||O.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==P||P.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==F||F.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==D||D.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==R||R.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==j||j.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==W||W.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==z||z.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==U||U.forEach((function(e){$e+=e+"
"})),$e+="
",$e+="
",$e+="
",$e+="
",$e+="
= Idle Messages =

",$e+="

Idle Messages (Hold):

",null==G||G.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="
Idle Messages (Hold Absorbed):

",null==q||q.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="
Idle Messages (Digest):

",null==H||H.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="
Idle Messages (Absorb):

",null==K||K.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="
Idle Messages (Unabsorb):

",null==ee||ee.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="
Idle Messages (Drain):

",null==$||$.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="
Idle Messages (Heal):

",null==Y||Y.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="
Idle Messages (Size Steal):

",null==X||X.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="
Idle Messages (Shrink):

",null==J||J.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="
Idle Messages (Grow):

",null==Z||Z.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="
Idle Messages (Encase In Egg):

",null==Q||Q.forEach((function(e){$e+=e+"
"})),$e+="


",$e+="


",$e+="
",$e+='
',$e+='
',$e+='

',$e+='

",$e+='
',$e+='
',$e+='
    ',$e+='
  • Can Taste: '+(b?'Yes':'No')+"
  • ",$e+='
  • Feedable: '+(N?'Yes':'No')+"
  • ",$e+='
  • Contaminates: '+(g?'Yes':'No')+"
  • ",$e+='
  • Contamination Flavor: '+V+"
  • ",$e+='
  • Contamination Color: '+v+"
  • ",$e+='
  • Nutritional Gain: '+_+"%
  • ",$e+='
  • Required Examine Size: '+100*y+"%
  • ",$e+='
  • Display Absorbed Examines: '+(k?'True':'False')+"
  • ",$e+='
  • Save Digest Mode: '+(x?'True':'False')+"
  • ",$e+='
  • Idle Emotes: '+(w?'Active':'Inactive')+"
  • ",$e+='
  • Idle Emote Delay: '+L+" seconds
  • ",$e+='
  • Shrink/Grow Size: '+100*B+"%
  • ",$e+='
  • Vore Spawn Blacklist: '+(S?'Yes':'No')+"
  • ",$e+='
  • Egg Type: '+I+"
  • ",$e+='
  • Selective Mode Preference: '+T+"
  • ",$e+="
",$e+="
",$e+='
',$e+='

',$e+='

",$e+='
',$e+='
',$e+='
    ',$e+='
  • Fleshy Belly: '+(te?'Yes':'No')+"
  • ",$e+='
  • Internal Loop: '+(ne?'Yes':'No')+"
  • ",$e+='
  • Use Fancy Sounds: '+(oe?'Yes':'No')+"
  • ",$e+='
  • Vore Sound: '+re+"
  • ",$e+='
  • Release Sound: '+ie+"
  • ",$e+="
",$e+="
",$e+='
',$e+='

',$e+='

",$e+='
",$e+='
',$e+="Vore Sprites",$e+='
    ',$e+='
  • Affect Vore Sprites: '+(ae?'Yes':'No')+"
  • ",$e+='
  • Count Absorbed prey for vore sprites: '+(ce?'Yes':'No')+"
  • ",$e+='
  • Animation when prey resist: '+(le?'Yes':'No')+"
  • ",$e+='
  • Vore Sprite Size Factor: '+de+"
  • ",$e+='
  • Belly Sprite to affect: '+se+"
  • ",$e+="
",$e+="Belly Fullscreens Preview and Coloring",$e+='
    ',$e+='
  • Color: '+ue+"",$e+="
",$e+="Vore FX",$e+='
    ',$e+='
  • Disable Prey HUD: '+(me?'Yes':'No')+"
  • ",$e+="
",$e+="
",$e+='
',$e+='

',$e+='

",$e+='
',$e+='
',$e+="Belly Interactions ("+(pe?'Enabled':'Disabled')+")",$e+='
    ',$e+='
  • Escape Chance: '+fe+"%
  • ",$e+='
  • Escape Time: '+he/10+"s
  • ",$e+='
  • Transfer Chance: '+Ce+"%
  • ",$e+='
  • Transfer Location: '+be+"
  • ",$e+='
  • Secondary Transfer Chance: '+Ne+"%
  • ",$e+='
  • Secondary Transfer Location: '+ge+"
  • ",$e+='
  • Absorb Chance: '+Ve+"%
  • ",$e+='
  • Digest Chance: '+ve+"%
  • ",$e+="
",$e+="
",$e+="Auto-Transfer Options ("+(Le?'Enabled':'Disabled')+")",$e+='
    ',$e+='
  • Auto-Transfer Time: '+_e/10+"s
  • ",$e+='
  • Auto-Transfer Chance: '+ye+"%
  • ",$e+='
  • Auto-Transfer Location: '+ke+"
  • ",$e+='
  • Auto-Transfer Chance: '+xe+"%
  • ",$e+='
  • Auto-Transfer Location: '+we+"
  • ",$e+='
  • Auto-Transfer Min Amount: '+Be+"
  • ",$e+='
  • Auto-Transfer Max Amount: '+Se+"
  • ",$e+="
",$e+="
",$e+='
',$e+='

',$e+='

",$e+='
',$e+='
',$e+='
    ',$e+='
  • Generate Liquids: '+(Te?'On':'Off')+"
  • ",$e+='
  • Liquid Type: '+Ae+"
  • ",$e+='
  • Liquid Name: '+Me+"
  • ",$e+='
  • Transfer Verb: '+Ee+"
  • ",$e+='
  • Generation Time: '+Oe+"
  • ",$e+='
  • Liquid Capacity: '+Pe+"
  • ",$e+='
  • Slosh Sounds: '+(Fe?'On':'Off')+"
  • ",$e+='
  • Liquid Addons: '+function(e){var t=[];return null==e||e.forEach((function(e){t.push(''+e+"")})),0===t.length&&t.push("No Addons Set"),t}(De)+"
  • ",$e+="
",$e+="
",$e+='
',$e+='

',$e+='

",$e+='
',$e+='
',$e+='
',$e+='
",$e+='
',$e+='
',$e+='
',null==He||He.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==Ge||Ge.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==qe||qe.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==Ke||Ke.forEach((function(e){$e+=e+"
"})),$e+="
",$e+='
',null==Ye||Ye.forEach((function(e){$e+=e+"
"})),$e+="
",$e+="
",$e+="
",$e+="
",$e+="
",$e+="
"},m=function(e,t){var n,o=(0,r.useBackend)(e),i=(o.act,o.data),a=i.db_version,c=i.db_repo,l=i.mob_name,d=i.bellies,s=function(){var e=new Date,t=String(e.getHours());t.length<2&&(t="0"+t);var n=String(e.getMinutes());n.length<2&&(n="0"+n);var o=String(e.getDate());o.length<2&&(o="0"+o);var r=String(e.getMonth()+1);return r.length<2&&(r="0"+r)," "+String(e.getFullYear())+"-"+r+"-"+o+" ("+t+" "+n+")"}(),m=l+s+t;if(".html"===t){n=new Blob([''+d.length+" Exported Bellies (DB_VER: "+c+"-"+a+')

Bellies of '+l+'

Generated on: '+s+'

'],{type:"text/html;charset=utf8"}),d.forEach((function(e,t){n=new Blob([n,u(e,t)],{type:"text/html;charset=utf8"})})),n=new Blob([n,"
",'