diff --git a/code/modules/vore/eating/belly_obj_ch.dm b/code/modules/vore/eating/belly_obj_ch.dm index 9228ac448d..682e065ed2 100644 --- a/code/modules/vore/eating/belly_obj_ch.dm +++ b/code/modules/vore/eating/belly_obj_ch.dm @@ -15,6 +15,7 @@ var/show_liquids = FALSE //Moved from vorepanel_ch to be a belly var var/show_fullness_messages = FALSE //Moved from vorepanel_ch to be a belly var var/liquid_overlay = TRUE //Belly-specific liquid overlay toggle + var/max_liquid_level = 100 //Custom max level for liquid overlay var/mush_overlay = FALSE //Toggle for nutrition mush overlay var/mush_color = "#664330" //Nutrition mush overlay color var/mush_alpha = 255 //Mush overlay transparency. diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 1c0ec86cb2..879b2103b8 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -262,6 +262,7 @@ "reagentid", "reagentcolor", "liquid_overlay", + "max_liquid_level", "mush_overlay", "mush_color", "mush_alpha", @@ -551,7 +552,7 @@ I.alpha = custom_reagentalpha else I.alpha = max(150, min(custom_max_volume, 255)) - (255 - belly_fullscreen_alpha) - I.pixel_y = -450 + (450 / custom_max_volume * reagents.total_volume) + I.pixel_y = -450 + min((450 / custom_max_volume * reagents.total_volume), 450 / 100 * max_liquid_level) F.add_overlay(I) F.update_for_view(L.client.view) else @@ -585,7 +586,7 @@ I.alpha = custom_reagentalpha else I.alpha = max(150, min(custom_max_volume, 255)) - (255 - belly_fullscreen_alpha) - I.pixel_y = -450 + (450 / custom_max_volume * reagents.total_volume) + I.pixel_y = -450 + min((450 / custom_max_volume * reagents.total_volume), 450 / 100 * max_liquid_level) F.add_overlay(I) F.update_for_view(L.client.view) //CHOMPEdit End @@ -664,7 +665,7 @@ I.alpha = custom_reagentalpha else I.alpha = max(150, min(custom_max_volume, 255)) - (255 - belly_fullscreen_alpha) - I.pixel_y = -450 + (450 / custom_max_volume * reagents.total_volume) + I.pixel_y = -450 + min((450 / custom_max_volume * reagents.total_volume), 450 / 100 * max_liquid_level) F.add_overlay(I) F.update_for_view(L.client.view) else @@ -697,7 +698,7 @@ I.alpha = custom_reagentalpha else I.alpha = max(150, min(custom_max_volume, 255)) - (255 - belly_fullscreen_alpha) - I.pixel_y = -450 + (450 / custom_max_volume * reagents.total_volume) + I.pixel_y = -450 + min((450 / custom_max_volume * reagents.total_volume), 450 / 100 * max_liquid_level) F.add_overlay(I) F.update_for_view(L.client.view) //CHOMPEdit End @@ -1652,6 +1653,7 @@ dupe.reagentid = reagentid dupe.reagentcolor = reagentcolor dupe.liquid_overlay = liquid_overlay + dupe.max_liquid_level = max_liquid_level dupe.mush_overlay = mush_overlay dupe.mush_color = mush_color dupe.mush_alpha = mush_alpha diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 45a4e6480d..23b8bae8b0 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -238,6 +238,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", "custom_reagentcolor" = selected.custom_reagentcolor, "custom_reagentalpha" = selected.custom_reagentalpha, "liquid_overlay" = selected.liquid_overlay, + "max_liquid_level" = selected.max_liquid_level, "mush_overlay" = selected.mush_overlay, "mush_color" = selected.mush_color, "mush_alpha" = selected.mush_alpha, @@ -378,6 +379,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", selected_list["liq_interacts"]["custom_reagentcolor"] = selected.custom_reagentcolor ? selected.custom_reagentcolor : selected.reagentcolor selected_list["liq_interacts"]["custom_reagentalpha"] = selected.custom_reagentalpha ? selected.custom_reagentalpha : "Default" selected_list["liq_interacts"]["liquid_overlay"] = selected.liquid_overlay + selected_list["liq_interacts"]["max_liquid_level"] = selected.max_liquid_level selected_list["liq_interacts"]["mush_overlay"] = selected.mush_overlay selected_list["liq_interacts"]["mush_color"] = selected.mush_color selected_list["liq_interacts"]["mush_alpha"] = selected.mush_alpha @@ -1283,6 +1285,10 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", if(new_liquid_overlay == 1) new_belly.liquid_overlay = TRUE + if(isnum(belly_data["max_liquid_level"])) + var/max_liquid_level = belly_data["max_liquid_level"] + new_belly.max_liquid_level = CLAMP(max_liquid_level, 0, 100) + if(isnum(belly_data["mush_overlay"])) var/new_mush_overlay = belly_data["mush_overlay"] if(new_mush_overlay == 0) @@ -2987,6 +2993,14 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", host.vore_selected.liquid_overlay = 0 to_chat(usr,"Your [lowertext(host.vore_selected.name)] no longer has liquid overlay enabled.") . = TRUE + if("b_max_liquid_level") + var/new_max_liquid_level = input(user, "Set custom maximum liquid level. 0-100%", "Set Custom Max Level.", host.vore_selected.max_liquid_level) as num|null + if(new_max_liquid_level == null) + return FALSE + var/new_new_max_liquid_level = CLAMP(new_max_liquid_level, 0, 100) + host.vore_selected.max_liquid_level = new_new_max_liquid_level + host.vore_selected.update_internal_overlay() + . = TRUE if("b_custom_reagentcolor") var/newcolor = input(usr, "Choose custom color for liquid overlay. Cancel for normal reagent color.", "", host.vore_selected.custom_reagentcolor) as color|null if(newcolor) diff --git a/tgui/packages/tgui_ch/interfaces/VorePanel.js b/tgui/packages/tgui_ch/interfaces/VorePanel.js index 054a8135c4..3f4127e1d3 100644 --- a/tgui/packages/tgui_ch/interfaces/VorePanel.js +++ b/tgui/packages/tgui_ch/interfaces/VorePanel.js @@ -1707,6 +1707,7 @@ const VoreSelectedBellyLiquidOptions = (props, context) => { custom_reagentcolor, custom_reagentalpha, liquid_overlay, + max_liquid_level, mush_overlay, mush_color, mush_alpha, @@ -1840,6 +1841,16 @@ const VoreSelectedBellyLiquidOptions = (props, context) => { content={liq_interacts.liquid_overlay ? 'On' : 'Off'} /> + + ",$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,"
",'