From f76937228a2e616bc67bca3ff398629225714978 Mon Sep 17 00:00:00 2001 From: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Date: Tue, 9 Jul 2024 11:14:41 +0100 Subject: [PATCH] Stripping Underclothing (#16098) * Stripping Underclothing Added "Remove or Replace Underwear" as an option to the stripping menu. Works exactly like the Toggle Underwear verb, but done to another person. * Added a socks icon and fixed the visible message formatting --- code/modules/mob/living/carbon/human/stripping.dm | 13 ++++++++++++- .../tgui/interfaces/InventoryPanelHuman.tsx | 7 +++++++ tgui/public/tgui.bundle.css | 4 ++-- tgui/public/tgui.bundle.js | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/stripping.dm b/code/modules/mob/living/carbon/human/stripping.dm index ee6422464f3..e1e06d42293 100644 --- a/code/modules/mob/living/carbon/human/stripping.dm +++ b/code/modules/mob/living/carbon/human/stripping.dm @@ -53,6 +53,17 @@ suit.accessories -= A update_inv_w_uniform() return + if("underwear") + var/datum/category_group/underwear/UWC = tgui_input_list(user, "Choose underwear. (Do not do this without OOC permission from the other player)", "Show/hide underwear", global_underwear.categories) + if(!UWC) return + var/datum/category_item/underwear/UWI = all_underwear[UWC.name] + if(!UWI || UWI.name == "None") + to_chat(user, "\The [src] does not have [UWC.gender==PLURAL ? "[UWC.display_name]" : "a [UWC.display_name]"].") + return + hide_underwear[UWC.name] = !hide_underwear[UWC.name] + update_underwear(1) + visible_message("\The [user] [hide_underwear[UWC.name] ? "takes off" : "puts on"] \the [src]'s [UWC.display_name].") + return // Are we placing or stripping? var/stripping @@ -67,7 +78,7 @@ var/obj/item/weapon/grab/grab = held if(istype(grab) && grab.affecting == src) stripping = TRUE - + if(stripping) if(!istype(target_slot)) // They aren't holding anything valid and there's nothing to remove, why are we even here? return diff --git a/tgui/packages/tgui/interfaces/InventoryPanelHuman.tsx b/tgui/packages/tgui/interfaces/InventoryPanelHuman.tsx index 0d139706389..a1946e47afc 100644 --- a/tgui/packages/tgui/interfaces/InventoryPanelHuman.tsx +++ b/tgui/packages/tgui/interfaces/InventoryPanelHuman.tsx @@ -88,6 +88,13 @@ export const InventoryPanelHuman = (props) => { > Empty Pockets + {(internalsValid && ( ",ie+='
',ie+='
',ie+="Addons:
"+x(S)+"

",ie+="== Descriptions ==
",ie+="Vore Verb:
"+_+"

",ie+="Release Verb:
"+b+"

",ie+='Description:
"'+E+'"

',ie+='Absorbed Description:
"'+O+'"

',ie+="
",ie+="== Messages ==
",ie+="Show All Interactive Messages: "+(C?'Yes':'No')+"
",ie+='
',ie+='
",ie+='
',ie+='
',ie+='
',_e==null||_e.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',We==null||We.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Ve==null||Ve.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',ye==null||ye.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Pe==null||Pe.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',nn==null||nn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',dn==null||dn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',mn==null||mn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',fn==null||fn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',un==null||un.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',He==null||He.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Ke==null||Ke.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Me==null||Me.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Le==null||Le.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',De==null||De.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Fe==null||Fe.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Ne==null||Ne.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Be==null||Be.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Cn==null||Cn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Ln==null||Ln.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Mn==null||Mn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Rn==null||Rn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',gn==null||gn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Ge==null||Ge.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Xe==null||Xe.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',ue==null||ue.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',ge==null||ge.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',xe==null||xe.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',me==null||me.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',on==null||on.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',pn==null||pn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',bn==null||bn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',$n==null||$n.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',tt==null||tt.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Fn==null||Fn.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',dt==null||dt.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+='
',Rt==null||Rt.forEach(function(Re){ie+=Re+"
"}),ie+="
",ie+="
",ie+="
",ie+="
",ie+="
= Idle Messages =

",ie+="

Idle Messages (Hold):

",Xt==null||Xt.forEach(function(Re){ie+=Re+"
"}),ie+="


",ie+="
Idle Messages (Hold Absorbed):

",Co==null||Co.forEach(function(Re){ie+=Re+"
"}),ie+="


",ie+="
Idle Messages (Digest):

",Vt==null||Vt.forEach(function(Re){ie+=Re+"
"}),ie+="


",ie+="
Idle Messages (Absorb):

",yo==null||yo.forEach(function(Re){ie+=Re+"
"}),ie+="


",ie+="
Idle Messages (Unabsorb):

",Hr==null||Hr.forEach(function(Re){ie+=Re+"
"}),ie+="


",ie+="
Idle Messages (Drain):

",Vr==null||Vr.forEach(function(Re){ie+=Re+"
"}),ie+="


",ie+="
Idle Messages (Heal):

",Oo==null||Oo.forEach(function(Re){ie+=Re+"
"}),ie+="


",ie+="
Idle Messages (Size Steal):

",Xr==null||Xr.forEach(function(Re){ie+=Re+"
"}),ie+="


",ie+="
Idle Messages (Shrink):

",ni==null||ni.forEach(function(Re){ie+=Re+"
"}),ie+="


",ie+="
Idle Messages (Grow):

",_t==null||_t.forEach(function(Re){ie+=Re+"
"}),ie+="


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

",Gr==null||Gr.forEach(function(Re){ie+=Re+"
"}),ie+="


",ie+="


",ie+="
",ie+='
',ie+='
',ie+='

',ie+='

",ie+='
',ie+='
',ie+='
    ',ie+='
  • Can Taste: '+(G?'Yes':'No')+"
  • ",ie+='
  • Contaminates: '+(Y?'Yes':'No')+"
  • ",ie+='
  • Contamination Flavor: '+q+"
  • ",ie+='
  • Contamination Color: '+Z+"
  • ",ie+='
  • Nutritional Gain: '+V+"%
  • ",ie+='
  • Required Examine Size: '+$*100+"%
  • ",ie+='
  • Display Absorbed Examines: '+(X?'True':'False')+"
  • ",ie+='
  • Save Digest Mode: '+(U?'True':'False')+"
  • ",ie+='
  • Idle Emotes: '+(Q?'Active':'Inactive')+"
  • ",ie+='
  • Idle Emote Delay: '+ee+" seconds
  • ",ie+='
  • Shrink/Grow Size: '+ne*100+"%
  • ",ie+='
  • Egg Type: '+oe+"
  • ",ie+='
  • Selective Mode Preference: '+le+"
  • ",ie+="
",ie+="
",ie+='
',ie+='

',ie+='

",ie+='
',ie+='
',ie+='
    ',ie+='
  • Fleshy Belly: '+(Ir?'Yes':'No')+"
  • ",ie+='
  • Internal Loop: '+(vt?'Yes':'No')+"
  • ",ie+='
  • Use Fancy Sounds: '+(xt?'Yes':'No')+"
  • ",ie+='
  • Vore Sound: '+cr+"
  • ",ie+='
  • Release Sound: '+_r+"
  • ",ie+="
",ie+="
",ie+='
',ie+='

',ie+='

",ie+='
",ie+='
',ie+="Vore FX",ie+='
    ',ie+='
  • Disable Prey HUD: '+(Io?'Yes':'No')+"
  • ",ie+="
",ie+="
",ie+='
',ie+='

',ie+='

",ie+='
',ie+='
',ie+="Belly Interactions ("+(na?'Enabled':'Disabled')+")",ie+='
    ',ie+='
  • Escape Chance: '+ta+"%
  • ",ie+='
  • Escape Chance: '+ra+"%
  • ",ie+='
  • Escape Time: '+Bt/10+"s
  • ",ie+='
  • Transfer Chance: '+ti+"%
  • ",ie+='
  • Transfer Location: '+ri+"
  • ",ie+='
  • Secondary Transfer Chance: '+oa+"%
  • ",ie+='
  • Secondary Transfer Location: '+oi+"
  • ",ie+='
  • Absorb Chance: '+ii+"%
  • ",ie+='
  • Digest Chance: '+ai+"%
  • ",ie+="
",ie+="
",ie+="
",ie},m=function(){var c=new Date,h=String(c.getHours());h.length<2&&(h="0"+h);var j=String(c.getMinutes());j.length<2&&(j="0"+j);var E=String(c.getDate());E.length<2&&(E="0"+E);var C=String(c.getMonth()+1);C.length<2&&(C="0"+C);var O=String(c.getFullYear());return" "+O+"-"+C+"-"+E+" ("+h+" "+j+")"},u=function(c){var h=(0,i.Oc)(),j=h.act,E=h.data,C=E.db_version,O=E.db_repo,_=E.mob_name,b=E.bellies,D=m(),S=_+D+c,A;if(c===".html"){var R="";A=new Blob([''+b.length+" Exported Bellies (DB_VER: "+O+"-"+C+')'+R+'

Bellies of '+_+'

Generated on: '+D+'

'],{type:"text/html;charset=utf8"}),b.forEach(function(L,W){A=new Blob([A,a(L,W)],{type:"text/html;charset=utf8"})}),A=new Blob([A,"
",'