From 333f410476a82f35b5d76a008c09f1d373913a9c Mon Sep 17 00:00:00 2001
From: QuoteFox <49098813+quotefox@users.noreply.github.com>
Date: Sat, 2 Jan 2021 13:39:17 +0000
Subject: [PATCH 1/4] New Arousal Hud
New Arousal Hud, much more user accessable with contextal options.
---
code/datums/elements/cleaning.dm | 1 +
code/game/atoms.dm | 4 +-
code/game/objects/items/clown_items.dm | 1 +
code/game/objects/structures/watercloset.dm | 3 +
code/modules/mob/living/carbon/human/human.dm | 3 -
code/modules/mob/living/living_defines.dm | 6 +-
.../chemistry/reagents/other_reagents.dm | 7 +-
.../reagents/reagent_containers/rags.dm | 1 +
.../code/datums/mood_events/events.dm | 7 +-
.../code/modules/arousal/arousalhud.dm | 409 ++++++++++++++++++
hyperstation/code/obj/condom.dm | 2 +-
hyperstation/icons/effects/cumoverlay.dmi | Bin 5880 -> 7099 bytes
.../code/modules/arousal/arousal.dm | 56 ++-
.../code/modules/arousal/organs/genitals.dm | 4 +
.../living/silicon/robot/dogborg_equipment.dm | 1 +
tgstation.dme | 1 +
16 files changed, 470 insertions(+), 36 deletions(-)
create mode 100644 hyperstation/code/modules/arousal/arousalhud.dm
diff --git a/code/datums/elements/cleaning.dm b/code/datums/elements/cleaning.dm
index e4fb3edd4..8c5147821 100644
--- a/code/datums/elements/cleaning.dm
+++ b/code/datums/elements/cleaning.dm
@@ -43,6 +43,7 @@
cleaned_human.update_inv_shoes()
SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
cleaned_human.clean_blood()
+ cleaned_human.wash_cum()
cleaned_human.wash_cream()
cleaned_human.regenerate_icons()
to_chat(cleaned_human, "[src] cleans your face!")
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index b9fe56887..9be3c1f41 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -44,6 +44,7 @@
var/rad_insulation = RAD_NO_INSULATION
var/icon/blood_splatter_icon
+ var/icon/cum_splatter_icon
var/list/fingerprints
var/list/fingerprintshidden
var/list/blood_DNA
@@ -514,9 +515,6 @@
/atom/proc/wash_cream()
return TRUE
-/atom/proc/wash_cum()
- return TRUE
-
/atom/proc/isinspace()
if(isspaceturf(get_turf(src)))
return TRUE
diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm
index 5d3cdaa61..c37781571 100644
--- a/code/game/objects/items/clown_items.dm
+++ b/code/game/objects/items/clown_items.dm
@@ -90,6 +90,7 @@
target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
SEND_SIGNAL(target, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM)
target.wash_cream()
+ target.wash_cum()
return
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 9036d8dc7..7f2308574 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -378,6 +378,7 @@
/obj/machinery/shower/proc/wash_obj(obj/O)
. = SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
. = O.clean_blood()
+ . = O.wash_cum()
O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
if(isitem(O))
var/obj/item/I = O
@@ -581,6 +582,7 @@
H.lip_style = null //Washes off lipstick
H.lip_color = initial(H.lip_color)
H.wash_cream()
+ H.wash_cum()
H.regenerate_icons()
user.drowsyness = max(user.drowsyness - rand(2,3), 0) //Washing your face wakes you up if you're falling asleep
else
@@ -652,6 +654,7 @@
busy = FALSE
SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
O.clean_blood()
+ O.wash_cum()
O.acid_level = 0
create_reagents(5)
reagents.add_reagent(dispensedreagent, 5)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index ad8960dba..d7e93a924 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -719,9 +719,6 @@
cut_overlay(mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi', "cum_large"))
creamed = FALSE
-/mob/living/carbon/human/wash_cum()
- cut_overlay(mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi', "cum_normal"))
- cut_overlay(mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi', "cum_large"))
//Turns a mob black, flashes a skeleton overlay
//Just like a cartoon!
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 7a6ea95e7..62ba828a5 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -59,7 +59,9 @@
var/custom_body_size = 100
var/breedable = 0
var/impregchance = 0
-
+//h13 noncon settings
+ var/Noncon = 0
+ var/ERP = 0
var/list/mob_biotypes = list(MOB_ORGANIC)
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
@@ -109,7 +111,7 @@
var/last_words //used for database logging
var/list/obj/effect/proc_holder/abilities = list()
-
+
var/can_be_held = FALSE
var/radiation = 0 //If the mob is irradiated.
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 58edb11e8..243df5c65 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -380,7 +380,7 @@
M.IgniteMob()
else
M.adjustToxLoss(1, 0)
- M.adjustFireLoss(1, 0)
+ M.adjustFireLoss(1, 0)
if(data >= 60) // 30 units, 135 seconds
if(iscultist(M, FALSE, TRUE) || is_servant_of_ratvar(M, FALSE, TRUE))
if(iscultist(M))
@@ -1206,12 +1206,14 @@
O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
O.clean_blood()
+ O.wash_cum()
/datum/reagent/space_cleaner/reaction_turf(turf/T, reac_volume)
if(reac_volume >= 1)
T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
T.clean_blood()
+ T.wash_cum()
for(var/obj/effect/decal/cleanable/C in T)
qdel(C)
@@ -1254,6 +1256,7 @@
if(H.shoes.clean_blood())
H.update_inv_shoes()
H.wash_cream()
+ H.wash_cum()
SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
M.clean_blood()
@@ -2243,7 +2246,7 @@
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/insect
mutationtext = "The pain subsides. You feel... oddly attracted to light."
-
+
/datum/reagent/mutationtoxin/ipc
name = "IPC Mutation Toxin"
description = "A robotic toxin." //NANOMACHINES SON.
diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm
index 88a134eea..15026312c 100644
--- a/code/modules/reagents/reagent_containers/rags.dm
+++ b/code/modules/reagents/reagent_containers/rags.dm
@@ -79,6 +79,7 @@
reagents.add_reagent(r_id, amount * 0.3)
M.adjust_fire_stacks(minus_plus * amount)
M.wash_cream()
+ M.wash_cum()
return TRUE
return ..()
diff --git a/hyperstation/code/datums/mood_events/events.dm b/hyperstation/code/datums/mood_events/events.dm
index 057c8fe5d..ae5b08a9a 100644
--- a/hyperstation/code/datums/mood_events/events.dm
+++ b/hyperstation/code/datums/mood_events/events.dm
@@ -6,4 +6,9 @@
/datum/mood_event/heat
description = "I have satisfied my heat, and I'm filled with happiness!\n"
mood_change = 3
- timeout = 5 MINUTES
\ No newline at end of file
+ timeout = 5 MINUTES
+
+/datum/mood_event/kiss
+ description = "Someone kissed me, I feel happy!\n"
+ mood_change = 2
+ timeout = 3 MINUTES
\ No newline at end of file
diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm
new file mode 100644
index 000000000..99afef1f1
--- /dev/null
+++ b/hyperstation/code/modules/arousal/arousalhud.dm
@@ -0,0 +1,409 @@
+//Hyperstation Arousal hud
+//This needs alot of attention, im a bad coder. a shitty attempt at making a more user friendly/modern hud
+//if you wanna use this on your own server go ahead, but alittle credit would always be nice! -quotefox
+//This still uses alot of cits arousal system!
+
+/obj/screen/arousal/ui_interact(mob/user)
+ . = ..()
+ var/dat = {"Genitals
R6PKsC=;FeRzwq%??7kG8Kwk{X|H{)~wUqSW10WsheK#J*^ zDSQ#6p%Gj)FMcvEeU}iYOd{vVM}j%6(V=3a*JS6B3z3Q)4(56)o-F&c4H(q zhjT1oCvgezH4pNbmmQcq?eF2w#spaQ_klg-iYS9U!1pmG0PwQ8GjzBa=P}THsFkOI zzFImLOWpw7OHe$B9q&-pXSVhajJoSqSt>Gyu@07N^TOW% Rc065n zALN1o@cMJp!0kxvN*dx#ZpK-D_BrnAZXr+$bjI7A({e@3mC&}%5UAy@?v`_OWSr$R z#G8=VmB8(h_8KDhfqb56z%NaC+1yqDH@(zS4TdVQIJahKQS-o)z>UD0&iT8Yw6N?; z5mW!+2r-AT>`SqevuS@5p~fd8%{66fe{Kx;F!6?)h&8mII_?b&o2~tOMk=v6rvP|Q z4=Bh4@MGX7=bRAZa^Pd$Q$uy{g+@L;7Wq7zp8!7wnFux4fubG-eE|3-fSXCL1#s6p zF*lQbf4S!7@)8EX%RW;C{^0he 5kW`8Bhm-##^xGSZU+9b9D7pDoUohevBCO2@E$LlD^_f% zBHvB}a6g!Ld)dLdkAOZOTQbfEP+cz~^A&UB*6d(ePl2k&O`;3`?F)VLL*Kb#== (*Dn_!TZ!Wuk&QGg05-W9XFljXUUp!--j3Zq=S?d5*w*a83{dgl zUs(YF`JX^5@D~8y&ixAfyi(`Y;$?F`2XHe^4#)v_g8T{aZ|m+{*eviiw=ex^Ro!;s zf0&(eA3^^B44^t14g>$+ftSr4Ms*YzAk_E*px*|0or=6;YyZG)m0GD}O7c$;>8#XY z-3T@PDKEg3BmjYVMwQ %!%6tjyZ$Pfa1c$0|S{F=k2+O_}bl`<>Colnw zsB*j-J7opH%MKKP9o0Cj7v7E`!wacR%~8bqkO=##F;mr0#7k7qOX=wsnU?}^k$F)E z!0m2pcDv_av} =)esiVmAn@m;9i<94;Y zyiz+a$^f`s^Ik)KaumPt_rw#u1jVb|o~19?wYWV?ErQ}z#1p;vg}*01IqG)Jdrc*_ zY9hK;x$<+tUDbI5#}7Tt^kkl~quYtavm~3oM1HL7yv&Npk8L2?^d(~PEMrHvGd-E- z_@SrWRh>7KYpUu1xV=uZh_%hlI7_OvbwOW=$#*h52S5or5M83il&ZBg2NIyk=;CeEK)5F05QXWw zCj>l4=<5(L6=|?TO_~ff&YkKXL1JxIm2nZN`?RE2X!#CsDXNzO^MMAYPYw|T_feV& zyh2OehseD`%VA100YPvd( ~|N)t>xG&I{*T&-jZ?t{Io;2h*%l1>N7dNC9@{(ZdkLyZSfc2m+qjsZ5(6vAu>QB z^(*XH50;gYWaE{RY+Sy%Jyy55ip}k@4oNmHmt^CWSXKr*) nhZ@OkPQkKdkVuBAMvfJB#EWon9gPMC0`Lf%y=rR_q=+RVj zhb9_djYyK_wm16|$2TVyEnc*V@tXCHH!*G}7A;=nPaNM&bK9E{Nou0;)tYMVV9|;m zw`b91h h+7H@rMv zoY}1KWq O=l^YN2AKGrs^Q)1t(M-gex|gpM zi}i(*lSh*AhKW2noQTH;{3H8EjL4x_B9RgJt5RV0$ngHHc3a0%eE$km9%ujV96bML zp`w0(YB1!c!?71Ho7;+CnqnG2J|E`L*9KFVI;kc|D$;GuYcp!cHc6`Ky{Zh0U%D?Q z@=Gfg`-xhyLn^jyjOMq;+HV~j8aj?`_ZlTxwFV`LZTF514ISSeYroYP&8yh9TCqb` zEcTO_$S=h&-KWa1q?+EVc5IV1ugxgZttLpC!qj;iClv)?YyX}RZ(#V3*#NPIcH#{; z0UwTX=xc&eHJIRGg)U7rO Y+7W`mw;0FZ&zfjnoYHfXUERmd4u|o|oCFob})`h)RWAl48(KM~lg$W)u zs^`s`sH7wIes{eSi+)}k9sVZh17Yrb4KWs0X=+#k|MAku@D0Wfrp(E)2h`{cRxByD zt;AvpX=u1f<}KXf7mEYyrba# WtqsbS3dZ*c`LVYwNbXf1%8S_C($ zSR-NXeC@CoFYPqO^!ekX+X^#N-zZH@{cw7E#w!_Zl4R; Kp#}=r&_apS^hLd6U@6?+J_P1FqcCm%dG-1=?OVcm3AvGh nGd}t@6PQot zX9|OjEiIl2f+N9+6U~9|+kQS@(3bY|_Rh-=z}D>Gj4C&Z$fT&byW%UG1Hah4=ZV76 zqg|!r$GW%2+lK?+_pt1}sivlV1wR1W?kNR^RC9B?TCsVm#B(i+zEC`{-_IX-cH1sV zeWqFsyCn6Q{DEh;6%Xw9b1jR$ph{e=*t}G8b9*T;VB0+fKOoiAv=7VP8~DDrJ>EWC zI)1FXaP(-`FLv*F;(YeYZiWJE?a$4)8K)=8jjt=eqvhMDem2T*p%es-jj6X!9Y68* z89VkXCdZd0I+sq*lu9jX$Kn9bG|c-#Ej8?x)Te0(i?XO4OU(FwDVb`TEQ|~ km70VhuGCDdEPo`d$Xl<)!oeBUFt! -866!F%NiZqxkD#MMjt+M zZ2ZAgW8$HfWy@Y!j=hQlpsL&4zI3y||3Ij^ZqA$#`7ZMpZ?coAHz>3Yv@E)P?C{ag z8L=d8N=y8yeBI{*{HgrmxG60$V#(Oyqn{gSS#-NXtDQ`}f%%I!A@bdF>{T3qt^EVH zsmMD(UKi%d*Pjyy4tp_tut1`nt0s49H1~c zIejueH7tJVq49lt_LgI>ssM _Jw7ph zXJExA17qqwFC7?D46OL%_{8{~c0 mnARgMdcM7i>H zW!bTVm$r0vEL1!GhxzRt%ZwoflxC);ADY+RIojOXiYhD|-e2|j&-1Zxc>hvWXl`v~ zUVG>0%+&NlK*< U?sU81AOJ~QzWycQAxiwZ%Kj0KmZv2N(Q`<41v*;Q<_}1lb zdh2m4=^V>Xjqf{fU}ZuzhU(#yCnlaaymw#ws#U9!&Y!&}4#ari{>IUz%WL{RSU9}D z(fPCY#DMtZ @7ZTp(%n7Y`m$Gcwi<2FpZ@5r2N!l-u&i@c z0r0XpANXxGHs*pcS{!=hVNo=pN=t)k!YFt{BmP3)FQjt23WsyM5{Ds9xK^xYBeJIv z%RO*^2cZv5K_P&GH#FieG%5`PPbUr!K7$CpAc!!h$Kgv0G%hkP%H-Vtm#A+40B6~y z?&|J~R=?j}-QD6k%j!P-;AWh=-Sz3zxyRE^wYDoO*0FYF!d<)a3hdbTu 1~dY11m1<}#VFhz z68e5uq@`9V@~;QE;;dsnBI^O%zVsg_oiw-^__3RDelb_$QDv9sCTS`PfVX?^31aqt z_jd1n%6ocW-MjzKtK;c?Q{L{qPeod)-bBKES+4-=fwSw){R{9HTQW}j>BYgl{-L83 zr~Vee?MuIIj&3@DYflxGt+Zay62$t2+v}V$_~ou!wb5O-s(!Vj*R5LYu3L3RF;=(N zX+o@D)MR}^Q0xXA;Oz07-vLQceZEd!10uh5`<$i=R_hgg95@dAdpG0ET6yros1|{x zh &&x;+am;;AOW z8Wo!n`hZ*AjPvi@4e41^61}GeN~pOX_?nl^%~bdfkP q+1Tz_sYP z8G>%c+2CfJOT7NUz{}=NK&9`1{@etr_oDg >Zd+mfaoaMk@an=f&%H9Ee&LyZ`PndHz3H)#1Er|4<|37O$=;JMs&q=^W z^?J9@Id2l|9N0)$Yv_!66K=+N2;|*v##unj{)C%x-r;7P4!1Ae>}7L `VT*akcXBmp-nrREXd zbli-y0{9T{`*SX*Y_S<<8R4>|BdFR~(u`&Q9?Mz;e7#(I74UT|Yf @na{6*Z(#f( zEXzh%gYpI7gTU7#jb#y)!T%!Y_nte}KQIXF2iXkVgZf2;W=`#&5ElzOZbkbi>~k~e zCg5`5{>a21fFr;s319Aad9#$ZEN?hkcq8yn1f{*i8tw<$y=-pOUAM{xCJ4%}pI
&? zs$~_=o(*?{b81tf3?gH|e}#tYNhao>Rx$XG=Q~R+jM$)g@9CUzGfpeY#|eAYhk>^~ zpRc)ZW3@gVBaG-r5cwCvdEix%jd@;nsG|D$l@R%w7x`WVOhlSK0(>;mS~<$8RW<5m zbJNT)2K+1VUx0I~#M_NFmi-3A47nL64g6=qCh{ABzX3|oOZ^ z%lpaju`cy~=Pi&h_qkCr-F`nE_dkZ9j`;-2`k7HEP58ty~B_HTItb z@NzkW%2D89!v4pZ#O0m92T^+?@E?K4K<|v&{3F0*^in^Ex$hsab8yP-?Rg7u2xJoU zC~8WGbpX{zvAG(!8MtTe7g`ZFV>3mdk0SCq)Re$F3NiwG4S3MoS#6rUyxYw HplA)JgqP_+vU?nUf_2# iaz1?T++@ZP~k>}lCtok`&HU9uipxo$XhibfO z&bfHmp=p#GL!YKDb)vogp(%>_9|6VZdv-_Xm4H27|G+fBIX535EMl?_&Um>$N5uhf z*Z0Ii5rYBHGg~L4UPQinBHzzxsVNczcy_jDx0`X+xEbfv9yaIw(0SS1G@$PK9t-81 z%_b@vjO*=rIYPhN*K=yqgu3sdIt$GJZeLFqLciPFQ*qt4S&1i>0WEIEd9L1rn@M-N z8Ru_+cL1I4nxz(V+dm`fUb@- zRh=Xj-f&f*hj8cE4q!O^t9*rUIQioM-qXVdIB$s>x35P~zK!rI;A3va@lo--{$~tS z{s<}%HUl>yaQXm#cZp8IrCt8u7q!lCJ%giXlN(>iAJ zfY)Hj>T->G{e#BK=DtWcSFq8|q;04;0D1rjfJ->Fne)X#BMm{MsTMo{Jc(c0N7$!1 z;$?HE`W1bIV>@e~@1N&@54;Sd9V!lh>;>*d#D?nX=U2&sNW xg%aSH-l{} z%2&N??(~++ Mvtb2IQtsIGo~l^h3#v8 p(me{|g!SbP60NDIy!{;2&qt)H`uSBMvJcg|uTMCImmSDMRa@ki l2 Ts8Oxdo~3qb6MOHK)QoCt6<@n(V$}+2w004D)~GGS z-n+IMzx4OV^W4{cpZ9s+=Xt%(z2}}2sjaC(bBpyB005wQrK+e)94-Dm6y(JB;%CHj z;t=8wGxSlk^|tnM^zd vn07%UARyS-<>->Bq0BOyH9m)y^*$&K=Cj;CZy)z(~Ij7I4+#vaZ1X#|&c zzt$1GE0AUslt8U~Xkt(neVHL%Kioz75-en6QQngj>>^9l<{{E}U5^$?}b3$a-jLq9=C zdaDP&)^qC<`|!Vnj|uW_BMC`1YW7~BrxuSpRAbR4keeu5lN8%h{f6JWm_zB)I4Pdy zPo-D3OX|`grLp>hrvU@G-UM&L>DxK3LFvB`caQUO!J1GwVp9#3@jy+iw>x<|`@!Z* z(&d^NpUpW|>pXwH=|3i^>dg!=Gyq}q_)j#)=u6Vev (?UN^FoJfqxFSj!Z&&> zQ9+ZNzHWkDvkHJ*0;dXhNZ}X|HV(de_c4PiN?R29wOwp7wV-+00%Iagqd>5S+i_yw z!kKFkh9EB_$34s`V?O Lv#u^fG0sa1M>iP8PR~<>~1C`QAUsh+@@K_K9KinP4l%f{;s0>bN$XJs_fEiNX~Z zw<)emDkJZ}#S#}T6GD!Bel!VF{Q8y8sD0YVy<~G5Rr-W#lJ3z=JdBQyJpw=tti?YY z3sN&5ZR=xIh(M`@LlZWEjJWF|YrTU`-qp~*O3Qj>e^MSy>${fNX84X2`MCsh7}5k% z`w-arz8rOmP@zb&rg!u8G@L)p`Z$SW*BG-1hITDPBM4oFv=V>TyqCY#{0tsp)>b4Z zJc7gV*YJC(S5>4W10>L_AnEWw8Ws#=FH=@(Cra)hkc|NL1p_>4XDq$&-A*>SY&i6% z`Hb^8Rmw_MdKq#l1GgqWs38YoQ7jSLKljG_<>@u^?vFcJn~4G4B*$nj#j!V39w-S? zPnOhMXPm0){Jp#TTa7sJe|paHG}?Y#0;Ol15J6@Xa{U)& *6sTq3oO269 zPFTwi&mkaJsX19v%nmqJ*9FK!;RiF5As@}!6i6cijgkkccm!KZDPqa5zhZ-#$FT0o zUu*-rNHDydz@}BXrnMN2W%Gl-z4q25kiRClY$pv^%YXAGcbNc4>okLNkCCFi&{cl( zx4^rOUuzBj(9Scw`|Y`{T7zwRE-C$V$?aY_%!byQz3ka)#~@%O0LPxhtQI`X*0(LQ zck1#~79(;vmTvegdGcI)%a^Elm2}BzOIFKuL=c9F->O%!N}{ji{KF1#zxj{LVHkfZ zKQ{RAjs{8sV+7h&`I6xn`J--Q^kO2oYj#u! `@o@s<8v zbo@hcntsi0{(2~YG+srn3CB5~N<|EW+c
0wX4%!iMxnUv!2K2aP(c9kEKA^S=zOqw>38K*(#O72mU ze_ulC2t4-DM3ajeC2?X!d6ou!dE2wb%r$$JXWnn#--5ayjAbrk_l6p3)ozSVpw>{~ z3|n)Q@AL>wk*VoLC9$1242w^GrIIp=bTSZ-+z{Ga#)BCZ<=M^$yOuYR1x~W{B{|W; z68*4bNb3HO!%o^~jo_oy3V!s(U95?c%?GR9`|MD|u{T-Yf)hQuZVq)hE~EVNVZ%*< zU=G>Qmk`buZ?Mv5+SVj9KG;Exf{$$+cbp=JAF{~Hv=IXv@q(Io+Rz9;m&6nmU77f? z0p|0=6CTz8y>XU^Eq`FA6N4MQb#{0%j#dI~47?C`cj3glSRx+zCPoFj`?y$97S zVL_-%j)#<&bb!6{+*_9_rHjXlF}ByFIE?}kS#l)(vIOde;NxjofD4$3&z8{{o4s=r zcBr?*y}pN{gxT}W;+k2B0hCxc0APZ>G$%RYkaL5@pT@;%&6qeR8Gn2f0*=QRlVvD( zjO=+(etZO^=#R!;CiRj!{eoqnfLU}7NC|h+_54NGc`LXJ$jPV} 95aeO=J?*Yjqr*ri`km9pI2j6#N8yv==iC32`tA}DI$Lo#zc z;8zpUVT%XXgnU>zL5#l%^XcHh?WmhZZ%#Z;m0osRuNJDi{^*wBwV_ZL{EKKXasI+D z0(66S;k(!D_M=18A4$H}_RoaYo+Ru gSt6?UJm@{O&3tm}^0gQ}bL++m1vwW1n(Nu0 zo&xm}F>Jqr%F~g)yt0(_3}(5VNn0^h)Hzud9&4_nvbLHy%BW}!A&N6H=29lv|BfsS zUOJX6dY+GlP%=6fU~QDXZnPzsKRuwafMW5X%(7I`REeOL+@w^Jvd<3wcj^pYfBE|J zHa#e=vR3$&?Z@7zp^=lJrOKk<1cI~Ed>iZe-?sGg{3T{4c!3CqCEHL(>zDE$ Bck%e01lN>JWi#TT4yUx1m1m^-?~pCho1%JQ(-dz-cujx Q^NhZTAnI`gOlw* z{Z*orXo!OD+)vR3cZce5G-XH|&8wjAJ(#pEA#R2#)jYaQN5tXB++DT0f^_5?UfKE5 zhTlbV0Uh~+(T0u{>7vh@`Gb7hXZ?kyKe=ebPYtuC(FQG*8! zJASYF0i>gx*^H%jB@h#ae6pz15pbT$awo8Dvd-Et;>VHo>!bk!#LW5PGkUW?rmEG% z$>8!gq*~N +TV4N%I+E!el5(um=QnNv9XZQ0 zaxXI5&?>d?!)AUH5Ar#&d&;BsH7{f>c41 DM`p-+k>je9SCL?aJnR)+oZoq!s(fZ!8T z8}8PxA0R&`J7W^RH8t~r<#^@xh4Sjs8s*%YM1}p)STP6?YXw#=qw+dL|HDBo%}HTd zdi59AQOVAHdGVdg{DgO9@I4!)G1CHJlIgeElW$@pLTmQOmh!`+2-gbaS-M gSmRc5uyv3l9H~9 zn$L$FjORmANWE3_V`Hb$v(5)sHMxK8tI*lZr``yS9^KDkeO<4R+;qnsA{qr3ET?z~ zFB~0`AlHLH3Ms9kj!f9m%C7d|?Re>&-lVe?74~=z!`Q=5#sieh_-D$80qAc5t315+ z6+4!>?VBfA?d3ZQbv->(jhYiuoet(5)ni_o|M*;gNDunrup- ;|a5kz|H>X9gS(P;!Q=?NK-J{K@kG~OkVW*8rm0OdLfx9HspVs$n7VT_lt;x(Y5 zx{$a<=3??@`yErv%3{wl^vcRpNOm6Fk;75)ti0NduDp63TudtSnB=Tuk$@CA*W_jG zE1G1c)22Ui-(JRA7FS(y5%pl}Z6K|CV^sPYqkkTrfOp4}n1TuS-LCo8my)N?$*mwI zUY2SkH+6rGMt3^tZrNGxdWzS-UukczX6}kqQ|~kTUE!1p=hJX`^7_Vd=sS6zpRS>w zhE!5nYvr8XlqTQ0QCmvu5ywT|@Ap0>)7%0Ah=u1m6|Nm#R!%-WkbWt*%PegSrrwO? z=0&mT=T_4*`iUWmzS+t5-oWLVN457l(!Y%kNYDlxPd~8kkH|z%nVIsvgbChmYOJkY zPL8R51-UjGsdDSt+=XVBKM7czbXBehBUJrpU;OfGrBcpflkXmog5>)j7r|85$PP;X z39H-Cf2>;>CA&>b`OdQm?Td2)Y_2Azrhj@rwAMtce+a+a?sp?D*66=O7Cng#VPp{{ znfd8#vu;kq>kwd_hF9(~|H3wlDA!&J#=!Z9t6B!vqC@xaEmPljcqlZhco@xti;zR0 z)wu3~pW)m6gsHk24qm81=cnIAdR+olF1*8p-Kd?C!iliSfhfg*hT@c+^-<5h$LOAc z MXka7YrI?}3ZPqnAvef_LBT@uYJ#SAk81k>9AK(FSPLa7CCpcIFA^ z3!OucUjfzBO(F9`n8l5epp_}ns{k%Dz0kb?!;=N12|hlD1LaDWLaOkyu~A*1Kp|O` zXE*@9F{vXHvYj{km;1Wl*nd*!K;{=mfFt4`oVebol^kKLsX}xpzJIrTrzMAj-rX7c z&X$8Va1PJ5k ewjqT~Vxj!$OrATeclosr@*(?Xe!k VM3*93fpMiPnw0j=Jmm==%WM?PI7~T9NecNSKk{O_wh{khOoMmYK>VF+=`>S87 zS<8DwR0}Pc7{p0n4HEe$gN-!sCV~0ZKt)Cc_nR3u%_Z!OA}*Qu_4mrH4-k(Z@iI1^ z4x(RPttmqyKmTEE{-65=5(V$h{6w5^rS$)^FhvsnGAH;!u4(m42%+6FZ 1?u@2n>%z0t~tr))TvPTabmA5GM4~~xrB9(obYGT@b zC!d(N)1 pK#;(O4O2@2!< 42XCT}&v8G5nI#j{ z+er@}9&6MjdNNAQ7XMS)Zm3AdkPa}6cg}^Tcb)(nKQ^T;?U{#+G}u>swHJhUKX~Ei zVhtOUJ6>*`I+x<5 Tz9-#;-OK5doJa<^LzYNyjI=(jSbR$1 z$qZJz9fM79(1~FsbN8Btul(&m+Jzk0*o7QDQY`Feb~cRL=JybZlNr}gQdrWa&RW;d z{9F7 Z>8Twh3TSHyqS3~{N>8U>A`PfIpx#ru4OzCp2sSn2(%UPZ_-`(@6p*95v zrmhN^UCwG3%XhR*4~;OZ#JHl8LLuF}v!w>;2C8#F@^MDU@4L=xE4 cK&1YX2 z!8i^&MN@5p<#UTlY3{x<`>^Q>bK3R7-H;JJbnkz-sRY8r2+U5a0JbswO#CQWv_;69 zq6!+}31C>n%g{=Ov&Wq9&dT&=!vx!VicQpkw{5vNwE$t+1^ltBd`r4pg|F2mKVW0H zcMMNLER7m*2CVJ}zJX+Yo23qFQ0z00Tk%@NGQD0sYfc**5Z 6!GG{#$3I z%O{yvD=TEFi?-4-BoA885)D&gJj8p0a9yEg?;n)i#X?En&yin;W(D5G`%_n3PqFp& zXMu1p<&L-33^bIiA8_w?iik!W4^EC-gI3ybGXL)s6pt5{D<`X%qe>^k_=SUI!flU3 zSsK@h;WEv}e5}Upl@~J$ErUR j!F7Xt_}nWBpiaNU=L7DAQ74`${P2cf86{& zIYTlt`zW()+0DgG?szJy`Uz=)f)<>F!0g}1S?D&_9t4IPIR&v1JA<=yrc{sqs|Bfd zg7CO&&T2H-?&%3T1al~FD|~HuC?ytq(e-}pl06yU3T>?DA#WC2J4RY3Mn6XAi~Zs@ z=B xG;eYDnL W-f&Ii0VbGf5Q8jTG_F zD_SC@$SE>Kc|OK=S8kbw4{WZWWpKZWXWle(@U} k--qVrNaakz@ZLLl8^bWPP{X?fa-=DHWER7I)FRr$XWtuhZLZ3jk z+}!6{;00I;iZ#$osHz#!K}o4$gScCJ*j6@D>qK^MfO;ANVXX+$3}P!A@JdNj@teHG GyZ-}-d5TH^ diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index bc9896d91..b5a01bcf0 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -208,14 +208,11 @@ /obj/screen/arousal/Click() if(!isliving(usr)) return FALSE + if(isobserver(usr)) + return var/mob/living/M = usr if(M.canbearoused) - M.mob_climax() - return TRUE - else - to_chat(M, "Arousal is disabled. Feature is unavailable.") - - + src.ui_interact(usr) /mob/living/proc/mob_climax()//This is just so I can test this shit without being forced to add actual content to get rid of arousal. Will be a very basic proc for a while. set name = "Masturbate" @@ -340,30 +337,36 @@ if(mb_time) //Skip warning if this is an instant climax. src.visible_message("[src] is about to climax with [L]!", \ "You're about to climax with [L]!", \ - "You're preparing to climax with someone!") + "You're preparing to climax with something!") if(cover)//covering the partner in cum, this overrides other options. if(do_after(src, mb_time, target = src) && in_range(src, L)) fluid_source.trans_to(L, total_fluids*G.fluid_transfer_factor) total_fluids -= total_fluids*G.fluid_transfer_factor if(total_fluids > 80) // now thats a big cum! - var/mutable_appearance/cumoverlaylarge = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi') - cumoverlaylarge.icon_state = "cum_large" - L.add_overlay(cumoverlaylarge) + if(isliving(L)) + var/mutable_appearance/cumoverlaylarge = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi') + cumoverlaylarge.icon_state = "cum_large" + L.add_overlay(cumoverlaylarge) + if(total_fluids > 5) fluid_source.reaction(L.loc, TOUCH, 1, 0) fluid_source.clear_reagents() - src.visible_message("[src] climaxes over [L][cover ? ", coating them":""], using [p_their()] [G.name]!", \ - "You orgasm over [L][cover ? ", drenching them":""], using your [G.name].", \ - "You have climaxed over someone[cover ? ", coating them":""], using your [G.name].") + src.visible_message("[src] climaxes over [L], using [p_their()] [G.name]!", \ + "You orgasm over [L], using your [G.name].", \ + "You have climaxed over something, using your [G.name].") SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - var/mutable_appearance/cumoverlay = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi') - cumoverlay.icon_state = "cum_normal" - L.add_overlay(cumoverlay) - var/mob/living/carbon/human/H = L - H.creamed = 1 - if(G.can_climax) - setArousalLoss(min_arousal) + + if(isliving(L)) + var/mutable_appearance/cumoverlay = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi') + cumoverlay.icon_state = "cum_normal" + L.add_overlay(cumoverlay) + else + L.add_cum_overlay() + + setArousalLoss(min_arousal) + if(G.can_climax) + setArousalLoss(min_arousal) if(spillage && !cover) if(do_after(src, mb_time, target = src) && in_range(src, L)) @@ -384,7 +387,11 @@ else //knots and other non-spilling orgasms if(!cover) if(do_after(src, mb_time, target = src) && in_range(src, L)) - fluid_source.trans_to(L, total_fluids) + var/obj/item/organ/genital/penis/P = G + if (P.condom)//condomed. + src.condomclimax() + else + fluid_source.trans_to(L, total_fluids) total_fluids = 0 src.visible_message("[src] climaxes with [L], [p_their()] [G.name] spilling nothing!", \ "You ejaculate with [L], your [G.name] spilling nothing.", \ @@ -441,9 +448,9 @@ fluid_source = G.linked_organ.reagents total_fluids = fluid_source.total_volume - //if(!container) //Something weird happened - // to_chat(src, "You need a container to do this!") - // return + if(!container) //Something weird happened + to_chat(src, "You need a container to do this!") + return src.visible_message("[src] starts to [G.masturbation_verb] their [G.name] over [container].", \ "You start to [G.masturbation_verb] your [G.name] over [container].", \ @@ -763,3 +770,4 @@ return else //Somehow another option was taken, maybe something interrupted the selection or it was cancelled return //Just end it in that case. + diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index 4ac28ea04..35d3675ba 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -22,6 +22,7 @@ var/internal = FALSE var/hidden = FALSE var/colourtint = "" + var/mode = "clothes" /obj/item/organ/genital/Initialize() . = ..() @@ -70,16 +71,19 @@ if("Always visible") through_clothes = TRUE hidden = FALSE + mode = "visible" if(!(src in owner.exposed_genitals)) owner.exposed_genitals += src if("Hidden by clothes") through_clothes = FALSE hidden = TRUE + mode = "clothes" if(src in owner.exposed_genitals) owner.exposed_genitals -= src if("Always hidden") through_clothes = FALSE hidden = TRUE + mode = "hidden" if(src in owner.exposed_genitals) owner.exposed_genitals -= src diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index 66c43f2b8..6918308dd 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -270,6 +270,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) SEND_SIGNAL(target, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) target.wash_cream() + target.wash_cum() return //Dogfood diff --git a/tgstation.dme b/tgstation.dme index 54126afee..0c4aed70b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3021,6 +3021,7 @@ #include "hyperstation\code\mobs\werewolf.dm" #include "hyperstation\code\modules\traits.dm" #include "hyperstation\code\modules\antagonists\werewolf\werewolf.dm" +#include "hyperstation\code\modules\arousal\arousalhud.dm" #include "hyperstation\code\modules\client\loadout\glasses.dm" #include "hyperstation\code\modules\client\loadout\tablet.dm" #include "hyperstation\code\modules\clothing\head.dm" From 91e749d7e31e16265d5bb1d8d3726adb675a1387 Mon Sep 17 00:00:00 2001 From: QuoteFox <49098813+quotefox@users.noreply.github.com> Date: Sat, 2 Jan 2021 13:53:34 +0000 Subject: [PATCH 2/4] comments comments clean up. --- hyperstation/code/modules/arousal/arousalhud.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm index 99afef1f1..cb0c61041 100644 --- a/hyperstation/code/modules/arousal/arousalhud.dm +++ b/hyperstation/code/modules/arousal/arousalhud.dm @@ -5,7 +5,7 @@ /obj/screen/arousal/ui_interact(mob/user) . = ..() - var/dat = {"Genitals
"} //for noncon toggling and erp toggling on the fly. + var/dat = {"Genitals
"} //List genitals var/obj/item/organ/genital/penis/P = user.getorganslot("penis") @@ -46,12 +46,12 @@ if(isliving(user.pulling)) if(iscarbon(user.pulling)) - dat += "Climax with [user.pulling]" //you can cum "with" living people. + dat += "Climax with [user.pulling]" dat += {"(Orgasm with another person.)
"} var/mob/living/carbon/human/H = user.pulling if(H.breedable && P && H) - dat += "Impregnate [user.pulling]" //you can cum "with" living people. + dat += "Impregnate [user.pulling]" dat += "(Climax inside another person, knocking them up.)
" From dc3d5c32d51c75a9abb9543b782958138b3d4b2e Mon Sep 17 00:00:00 2001 From: QuoteFox <49098813+quotefox@users.noreply.github.com> Date: Sat, 2 Jan 2021 14:06:45 +0000 Subject: [PATCH 3/4] Toggle Undergarments button Toggle Undergarments button, forgot to put it in! --- hyperstation/code/modules/arousal/arousalhud.dm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm index cb0c61041..90d057a4e 100644 --- a/hyperstation/code/modules/arousal/arousalhud.dm +++ b/hyperstation/code/modules/arousal/arousalhud.dm @@ -61,8 +61,11 @@ if(P.sounding == 1) dat += "Remove Sounding Rod
" + //bottom options dat += "Refresh" - dat += "Old Menu
" + dat += "Old Menu" + dat += "Toggle Undergarments " + dat += "
" var/datum/browser/popup = new(user, "arousal", "Arousal Panel") popup.set_content(dat) @@ -170,8 +173,12 @@ H.menuremovesounding() if(href_list["omenu"]) - H.mob_climax() usr << browse(null, "window=arousal") //closes the window + H.mob_climax() + return + + if(href_list["underwear"]) + H.underwear_toggle() return src.ui_interact(usr) From eabc280da421202d38e06761fe514f6d89dd437c Mon Sep 17 00:00:00 2001 From: QuoteFox <49098813+quotefox@users.noreply.github.com> Date: Sat, 2 Jan 2021 14:19:02 +0000 Subject: [PATCH 4/4] Moved items into contextal Moved items into contextal --- hyperstation/code/modules/arousal/arousalhud.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm index 90d057a4e..50b3c9c97 100644 --- a/hyperstation/code/modules/arousal/arousalhud.dm +++ b/hyperstation/code/modules/arousal/arousalhud.dm @@ -55,12 +55,12 @@ dat += "(Climax inside another person, knocking them up.)
" - dat += {"
"}//Newline for the objects + if(P.condom == 1) dat += "Remove Condom
" if(P.sounding == 1) dat += "Remove Sounding Rod
" - + dat += {"
"}//Newline for the objects //bottom options dat += "Refresh" dat += "Old Menu"