Cum_Manage.qsrc 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306
  1. # Cum_Manage
  2. !!
  3. !! THIS IS A CORE FILE TO GAME MECHANICS. Please edit CAREFULLY, and leave as many comments as possible!!
  4. !!
  5. !! The comments in this file serve as tutorial to managing cum/sperm during scene writing and game-play. Please read them.
  6. !!
  7. !! spafinloc and cum array naming takes precident over other naming schemes. Always import and export variables by their cum array names
  8. !!
  9. !!------------------------------------------------------------------------------------------------------------
  10. !!
  11. !! Cum Array indices:
  12. !!
  13. !! $cumarrnam : Sperm Owner
  14. !! cumarrppt : Sperm Potential Potency (max sperm delivery)
  15. !! cumarrcpt : Sperm Current Potency (current amount of sperm)
  16. !! cumarrdel : Sperm "Delivery" (method of *VAGINAL ONLY* acquisition)
  17. !! cumarrcon : Contraception type used
  18. !! cumarrage : Sperm age in hours
  19. !! cumarrkno : Did you know/realize who did it?
  20. !! cumarrcnt : Unique identifier of the exact which time the MC has had this sperm incident occur.
  21. !!
  22. !!
  23. !!
  24. !! Spatter Array indices:
  25. !!
  26. !! sparrloc : Location of the sperm, as per cumarrdel
  27. !! $sparrnam : Spatter Owner
  28. !! sparrppt : Spatter Potential Potency (Used to increase potency if you don't clean yourself out)
  29. !! sparridt : Did you know/realize who did it?
  30. !! sparrvol : Volume of the spatter. 40 is average.
  31. !! sparrslc : Spread status of the spatter. High volume can spread the contaminant from it's starting place.
  32. !! sparrcnt : Unique identifier of the exact which time the MC has had this spatter incident occur.
  33. !!
  34. !!
  35. !!
  36. !! Values of 'cumarrdel' as defined by the cum_arr:
  37. !!
  38. !! cumarrdel = 0 : 'Vaginal intercourse'
  39. !! cumarrdel = 1 : 'From spatter on labia'
  40. !! cumarrdel = 2 : 'From the anal area'
  41. !! cumarrdel = 3 : 'From sperm on clothing'
  42. !! cumarrdel = 4 : 'From sperm on fingers'
  43. !! cumarrdel = 5 : 'From sperm on wipes'
  44. !! cumarrdel = 6 : 'Unknown'
  45. !!
  46. !!
  47. !!
  48. !! Values of 'cumarrcon' as defined by the cum_arr:
  49. !!
  50. !! cumarrcon = 0: 'No contraception used'
  51. !! cumarrcon = 1: 'You lied about being on the pill'
  52. !! cumarrcon = 2: 'You were on the pill'
  53. !! cumarrcon = 3: 'You used a condom'
  54. !! cumarrcon = 4: 'The condom broke'
  55. !! cumarrcon = 5: 'The condom slipped off inside you'
  56. !! cumarrcon = 6: 'The condom was sabotaged by someone else'
  57. !! cumarrcon = 7: 'You sabotaged the condom'
  58. !! cumarrcon = 8: 'Precum had sperm in it'
  59. !! cumarrcon = 9: 'You believe are sterile'
  60. !!
  61. !!
  62. !!
  63. !! Values of 'cumarrkno' as defined by the cum_arr:
  64. !!
  65. !! cumarrkno = -2 : 'You were unaware there was sperm in you'
  66. !! cumarrkno = -1 : 'You do not think that any sperm has gotten into you'
  67. !! cumarrkno = 0 : 'You know somebody got sperm in you, but you don''t know that person'
  68. !! cumarrkno = 1 : 'You know who got sperm in you'
  69. !!
  70. !! Setting for no STD checks
  71. !!
  72. !! cumnostd = 1 : No risk of STD, resets at end of file so must be used for all related cum_management calls
  73. !!
  74. !! Locations to be defined by 'spafinloc'
  75. !!
  76. !! 0 = 'In your Vagina'
  77. !! 1 = 'On your labia'
  78. !! 2 = 'On your panties over your vagina'
  79. !! 3 = 'In your anus'
  80. !! 4 = 'On your butt'
  81. !! 5 = 'On your panties over your butt'
  82. !! 6 = 'On your clothes in your groin area'
  83. !! 7 = 'On your clothes'
  84. !! 8 = 'On your back'
  85. !! 9 = 'On your legs'
  86. !! 10 = 'On your arms'
  87. !! 11 = 'On your face'
  88. !! 12 = 'Inside your mouth'
  89. !! 13 = 'On your hands'
  90. !! 14 = 'On your stomach'
  91. !! 15 = 'On your breasts'
  92. !! 16 = 'In your hair'
  93. !! 17 = 'In a condom in your vagina'
  94. !!
  95. !!------------------------------------------------------------------------------------------------------------
  96. if $ARGS[0] = '':
  97. !!{ Debug information, comment out in release versions. }
  98. !! '<br><b><font color="red">Cum_Manage</font> called with: spafinloc=<<spafinloc>> cumarrkno=<<cumarrkno>> cummarrcon=<<cumarrcon>> cumarrdel=<<cumarrdel>></b>'
  99. !!{ We count every time somebody cum on or inside the MC. It is used for spatter and cum matching in femcyc}
  100. stat['cum_count'] += 1
  101. condom_break = 0
  102. !!{ no STDs from NPC you know }
  103. if (mid($boy,1,1) = 'A' or mid($boy,1,1) = 'B') and isnum(mid($boy,2,1)) ! 0: cumnostd = 1
  104. cumnostd = min(1, max(cumnostd, sexpartkno))
  105. !!{ Here we define our important variables.}
  106. dick = npc_dick[$boy]
  107. if sexvolume <= 0: sexvolume = 40
  108. if sexspecpot = 0: sexspecpot = npc_spermpot[$boy]
  109. if sexspecpot = 0: sexspecpot = sexvolume * rand(250, 300)
  110. if sexspecpot < 0: sexspecpot = 0
  111. if vibratorIN = 1 and spafinloc = 0: vibratorIN = 0
  112. if isprok = 1 and spafinloc = 0: isprok = 0
  113. if analplugIN = 1 and spafinloc = 3: analplugIN = 0
  114. !!{ Set the cum array temp to the current size of the cum array to add a new entry to the end of file. Then checks to see if you are on the pill. If you are and there is no contraception used, it flags this as a "done with pill" act, which means a pregnancy will be a pill failure.}
  115. cumarrtemp = arrsize('$cumarrnam')
  116. if sexcontra = 0 and pillcon2 > 1000: sexcontra = 2
  117. !!{Check for previous deposit, and if it was by the same guy and precum, it sets cumarrtemp back by one}
  118. !! if $cumarrnam[cumarrtemp-1] = $boy and cumarrkno[cumarrtemp-1] = -1:cumarrtemp -= 1 & sexspecpot = cumarrppt[cumarrtemp]
  119. if cumprecheck = 1 and cumnostd = 0:
  120. cumarrkno[cumarrtemp] = -1
  121. gs 'dinSex', 'std_trigger'
  122. elseif sexunaware > 0:
  123. cumarrkno[cumarrtemp] = -2
  124. elseif sexpartkno = 1:
  125. cumarrkno[cumarrtemp] = 1
  126. else
  127. cumarrkno[cumarrtemp] = 0
  128. end
  129. !!{ If a condom slipped in the vagina, it will pushed deeper inside the vagina during vaginal sex.}
  130. if spafinloc <= 0 and cumcondslip > 0:
  131. if dick > cumcondslip_deep:
  132. cumcondslip_deep = dick + rand (0,2)
  133. else
  134. cumcondslip_deep += rand (0,2)
  135. end
  136. end
  137. sparrtemp = arrsize('sparrvol')
  138. !!{ Check to see if this is flagged as a preejaculate emmission. All vaginal penetrations that flag this as cumprecheck contain preejaculate. Guidelines for calling it: If your boy is likely to have masterbated, had sex, or otherwise encouraged semen to leak out of their urethra in the last 48 hours, they probably have some fertile preejaculate. If in doubt, let it leak. The chances of pregnancy from it are low, and the MC should have been wearing protection.}
  139. if cumprecheck ! 1:
  140. !!{ Here it checks for anal deposit and increments anal creampie variable.}
  141. if spafinloc = 3:
  142. if sexunaware = 1 or sexcontra = 6:
  143. pcs_acp_unknown += 1
  144. else
  145. pcs_acp_known += 1
  146. end
  147. end
  148. !!{ Here it checks for vaginal deposit.}
  149. if spafinloc <= 0:
  150. !!{ Next it sets the variables in the array. The cumming boys name is first and cum age to 0.
  151. !! The cum delivery location is set to vaginally, and we check to see if this is an unknowing sex act.
  152. !! If it is, it makes it so the MC doesn''t know who did it.
  153. !! If the boy has a custom specified potency 'sexspecpot', it flags the potency. Otherwise it sets it to the default.
  154. !! Default potency potential is generated from a random multiplier of sexvolume.
  155. !! Sexvolume defaults to 40 (4 mL), but may be overwritten with 'sexvolume'.}
  156. $cumarrnam[cumarrtemp] = $boy
  157. cumarrage[cumarrtemp] = 0
  158. cumarrdel[cumarrtemp] = 0
  159. cumarrcnt[cumarrtemp] = stat['cum_count']
  160. cumarrppt[cumarrtemp] = sexspecpot
  161. !!{ Now it sets up the splatter and actual internal cum.
  162. !! First it sets the array to the spatter end of file. Then it checks for riding bareback.
  163. !! If theres a condom, it gives a chance for the condom to fail in general, slip off and remain in the vagina, or break.}
  164. if sexcontra > 2:
  165. if noprotect = 1: noprotect = 0 & sexcontra = 4
  166. if sexcontra = 3:
  167. temprand = rand(0,1000)
  168. dick_wid = 3
  169. if $dick_girth = 'skinny': dick_wid = 2
  170. if $dick_girth = 'slim': dick_wid = 3
  171. if $dick_girth = 'well proportioned': dick_wid = 3
  172. if $dick_girth = 'thicker than average': dick_wid = 4
  173. if $dick_girth = 'thick': dick_wid = 4
  174. if $dick_girth = 'massive': dick_wid = 5
  175. if $dick_girth = 'monstrous': dick_wid = 6
  176. break_thresh = dick_wid * 2
  177. break_thresh -= pcs_vag / 4
  178. break_thresh += dick / 4
  179. slip_thresh = 36 - (dick_wid * 2)
  180. slip_thresh -= (pcs_vag / 2)
  181. slip_thresh -= dick / 2
  182. if break_thresh < 1: break_thresh = 1
  183. if slip_thresh < 4: slip_thresh = 4
  184. break_thresh += slip_thresh
  185. slip_thresh = 0
  186. if temprand = 0:
  187. cumarrcpt[cumarrtemp] += cumarrppt[cumarrtemp]/4
  188. cumarrcon[cumarrtemp] = 3
  189. elseif temprand <= break_thresh:
  190. cumarrcpt[cumarrtemp] += cumarrppt[cumarrtemp]/2
  191. cumarrcon[cumarrtemp] = 4
  192. sexcontra = 4
  193. sparrage[sparrtemp] = 0
  194. sparrloc[sparrtemp] = 0
  195. $sparrnam[sparrtemp] = $boy
  196. sparrcnt[sparrtemp] = stat['cum_count']
  197. sparrppt[sparrtemp] = sexspecpot
  198. sparrvol[sparrtemp] += sexvolume
  199. cumsumbod += sexvolume
  200. cumsumvag += sexvolume
  201. cumloc[0] = 1
  202. condom_break = 1
  203. stat['broken_condoms'] += 1
  204. stat['last_broken_condom'] = daystart
  205. sparridt[sparrtemp] = cumarrkno[cumarrtemp]
  206. sparrslc[sparrtemp] = 0
  207. dynamic $ferteggfather
  208. else
  209. cumarrcpt[cumarrtemp] += 5
  210. cumarrcon[cumarrtemp] = 3
  211. end
  212. !!{ Next it checks to see if the event is calling specifically for a burst or slipped off condom.
  213. !! It treats them the same as if the condom above had a failure.}
  214. elseif sexcontra = 4:
  215. cumarrcpt[cumarrtemp] += cumarrppt[cumarrtemp]/2
  216. cumarrcon[cumarrtemp] = 4
  217. sparrage[sparrtemp] = 0
  218. sparrloc[sparrtemp] = 0
  219. $sparrnam[sparrtemp] = $boy
  220. sparrcnt[sparrtemp] = stat['cum_count']
  221. sparrppt[sparrtemp] = sexspecpot
  222. sparrvol[sparrtemp] += sexvolume
  223. cumsumbod += sexvolume
  224. cumsumvag += sexvolume
  225. cumloc[0] = 1
  226. condom_break = 1
  227. sparridt[sparrtemp] = cumarrkno[cumarrtemp]
  228. sparrslc[sparrtemp] = 0
  229. dynamic $ferteggfather
  230. elseif sexcontra = 5:
  231. cumarrcpt[cumarrtemp] += cumarrppt[cumarrtemp]/200
  232. cumarrcon[cumarrtemp] = 5
  233. cumcondslip = 1
  234. cumcondsanb = cumarrtemp
  235. sparrage[sparrtemp] = 0
  236. sparrloc[sparrtemp] = 17
  237. $sparrnam[sparrtemp] = $boy
  238. sparrcnt[sparrtemp] = stat['cum_count']
  239. sparrppt[sparrtemp] = sexspecpot
  240. sparrvol[sparrtemp] += sexvolume
  241. cumsumbod += sexvolume
  242. cumsumvag += sexvolume
  243. cumloc[0] = 1
  244. sparridt[sparrtemp] = cumarrkno[cumarrtemp]
  245. sparrslc[sparrtemp] = 0
  246. cumcondslip += 1
  247. if cumcondslip_deep <= 0:cumcondslip_deep = rand(1, dick)
  248. if sparridt[sparrtemp] >= 0:cumcondslip_aware = 1
  249. dynamic $ferteggfather
  250. !!{ Next, check for sabotaged condoms. First sabotaged by you, then sabotaged by the guy.
  251. !! If they were sabotaged, it acts similar to a condom failure, but worse.}
  252. elseif sexcontra = 6:
  253. cumarrcpt[cumarrtemp] += cumarrppt[cumarrtemp]/3
  254. cumarrcon[cumarrtemp] = 6
  255. elseif sexcontra = 7:
  256. cumarrcpt[cumarrtemp] += cumarrppt[cumarrtemp]/3
  257. cumarrcon[cumarrtemp] = 7
  258. dynamic $ferteggfather
  259. end
  260. !!{ If you have no protection, you get a nice, full load of semen.}
  261. else
  262. sparrage[sparrtemp] = 0
  263. sparrloc[sparrtemp] = 0
  264. $sparrnam[sparrtemp] = $boy
  265. sparrcnt[sparrtemp] = stat['cum_count']
  266. sparrppt[sparrtemp] = sexspecpot
  267. sparrvol[sparrtemp] += sexvolume
  268. cumsumbod += sexvolume
  269. cumsumvag += sexvolume
  270. cumloc[0] = 1
  271. sparridt[sparrtemp] = cumarrkno[cumarrtemp]
  272. sparrslc[sparrtemp] = 0
  273. cumarrcpt[cumarrtemp] += cumarrppt[cumarrtemp]/5*4
  274. cumarrcon[cumarrtemp] = sexcontra
  275. dynamic $ferteggfather
  276. end
  277. !! creampie vaginal statistics:
  278. if spafinloc = 0:
  279. stat['last_creampie'] = daystart
  280. !!STD checks
  281. if cumnostd = 0: gs 'dinSex', 'std_trigger'
  282. !! safe creampie (if cycle > 3 or on pill or succubus):
  283. if cycle > 3 or birth_control['safe'] = 1 or succubusflag = 1:
  284. if sexunaware = 1 or sexcontra = 6:
  285. pcs_cp_safe_unknown += 1
  286. else
  287. pcs_cp_safe_known += 1
  288. end
  289. !! pretty safe creampie (if cycle = 3 or cycle = 0):
  290. elseif cycle = 0 or cycle = 3:
  291. if sexunaware = 1 or sexcontra = 6:
  292. pcs_cp_notsafe_unknown += 1
  293. else
  294. pcs_cp_notsafe_known += 1
  295. end
  296. !! risky creampie (not on pill, fertile part of the cycle):
  297. else
  298. if sexunaware = 1 or sexcontra = 6:
  299. pcs_cp_risky_unknown += 1
  300. else
  301. pcs_cp_risky_known += 1
  302. end
  303. end
  304. end
  305. !!{ If you arent getting it in the vagina, and the boy isnt pumping it into a condom, a spatter is made and applied.
  306. !! If you arent wearing any panties and it was called to hit your panties, it goes directly to your groin.
  307. !! If you are naked and it calls for a clothing strike, it will go to your body instead.}
  308. elseif spafinloc > 0 and sexcontra < 3:
  309. sparrage[sparrtemp] = 0
  310. sparrcnt[sparrtemp] = stat['cum_count']
  311. !! if no panties cum goes to labia or butt
  312. if ($pantyworntype = 'none' or $clothingworntype = 'nude') and (spafinloc = 2 or spafinloc = 5): spafinloc -= 1
  313. !! if no clothes but cum loc is on clothes
  314. if $clothingworntype = 'nude':
  315. !! clothes in groin area
  316. if spafinloc = 6:
  317. spafinloc = 4
  318. if rand(0,1) = 0: spafinloc = 1
  319. !! clothes
  320. elseif spafinloc = 7:
  321. spafinloc = 15
  322. if rand(0,1) = 0: spafinloc = 8
  323. if rand(0,1) = 0: spafinloc = 14
  324. end
  325. end
  326. sparrloc[sparrtemp] = spafinloc
  327. if spafinloc = 12 and pcs_breath = 1: pcs_breath = 0
  328. if spafinloc = 12 and swallow >= 10 and rand(0,3) = 0: pcs_energy += 2 & pcs_hydra += 1
  329. $sparrnam[sparrtemp] = $boy
  330. sparrppt[sparrtemp] = sexspecpot
  331. sparrvol[sparrtemp] += sexvolume
  332. cumsumbod += sexvolume
  333. if spafinloc = 3: cumsumass += sexvolume
  334. sparridt[sparrtemp] = cumarrkno[cumarrtemp]
  335. sparrslc[sparrtemp] = 0
  336. cumloc[spafinloc] = 1
  337. end
  338. if cumarrppt[cumarrtemp] < cumarrcpt[cumarrtemp]:cumarrcpt[cumarrtemp] = cumarrppt[cumarrtemp]
  339. sexpartkno = 0
  340. sexunaware = 0
  341. !!{ And this is the pre ejaculate release talked about above.}
  342. elseif sexcontra < 3 and spafinloc = 0:
  343. $cumarrnam[cumarrtemp] = $boy
  344. cumarrcnt[cumarrtemp] = stat['cum_count']
  345. cumarrppt[cumarrtemp] = sexspecpot
  346. cumarrage[cumarrtemp] = 0
  347. cumarrdel[cumarrtemp] = 0
  348. cumarrcon[cumarrtemp] = sexcontra
  349. cumarrcpt[cumarrtemp] += cumarrppt[cumarrtemp]/12
  350. if cumarrppt[cumarrtemp] < cumarrcpt[cumarrtemp]:cumarrcpt[cumarrtemp] = cumarrppt[cumarrtemp]
  351. end
  352. !!STD from anal check
  353. if spafinloc = 3 and cumnostd = 0: gs 'dinSex', 'std_trigger'
  354. !!STD from oral check
  355. if spafinloc = 12 and cumnostd = 0: gs 'dinSex', 'std_trigger_oral'
  356. cumprecheck = 0
  357. spafinloc = 0
  358. sexvolume = 0
  359. dynamic $din_Update_Condom_Counts
  360. if cumsumass >= 60:
  361. arrmodtmp = arrpos('sparrloc',3)
  362. if sparrslc[arrmodtmp] <= 0: sparrslc[arrmodtmp] += 1
  363. end
  364. if cumsumvag >= 60:
  365. arrmodtmp = arrpos('sparrloc',0)
  366. if sparrslc[arrmodtmp] <= 0: sparrslc[arrmodtmp] += 1
  367. end
  368. killvar 'sexspecpot'
  369. killvar 'cumnostd'
  370. killvar 'arrmodtmp'
  371. killvar 'sparrtemp'
  372. killvar 'cumarrtemp'
  373. if $cumboy ! '': $boy = $cumboy & killvar '$cumboy'
  374. end
  375. if $ARGS[0] = 'cumgather':
  376. cloc = ARGS[1]
  377. i = arrpos('sparrloc', cloc)
  378. if i ! -1 and i < arrsize('sparrloc'):
  379. if cloc = 0:
  380. $part = 'pussy'
  381. elseif cloc = 1:
  382. $part = 'pussylips'
  383. elseif cloc = 2 or cloc = 5:
  384. $part = 'your panties'
  385. elseif cloc = 3:
  386. $part = 'anus'
  387. elseif cloc = 4:
  388. $part = 'buttocks'
  389. elseif cloc = 6 or cloc = 7:
  390. $part = 'clothes'
  391. elseif cloc = 8:
  392. $part = 'back'
  393. elseif cloc = 9:
  394. $part = 'legs'
  395. elseif cloc = 10:
  396. $part = 'arms'
  397. elseif cloc = 11:
  398. stat['cum_facial'] += 1
  399. $part = 'face'
  400. elseif cloc = 14:
  401. $part = 'stomach'
  402. elseif cloc = 15:
  403. $part = 'breasts'
  404. elseif cloc = 16:
  405. $part = 'hair'
  406. else
  407. $part = 'unknown'
  408. end
  409. if mc_inventory['makeup_wipes'] > 0:
  410. mc_inventory['makeup_wipes'] -= 1
  411. minut += 5
  412. 'You use a wipe to clean the sperm from your <<$part>>.'
  413. gs 'cum_cleanup', 'cleanloc', cloc
  414. gs 'stat'
  415. end
  416. end
  417. end
  418. if $ARGS[0] = 'cumeater_icon':
  419. *nl
  420. j = 0
  421. :cumeater_icon_jump
  422. if cumloc[j] > 0 and j <> 12 and ((j <> 0 and j <> 3) or FUNC('Cum_Manage', 'check_innards', j) = 1 or cheatKlisma = 0): gs 'cum_manage', 'cumeater', j
  423. if j < 17: j += 1 & jump 'cumeater_icon_jump'
  424. end
  425. if $ARGS[0] = 'cumeater':
  426. cloc = ARGS[1]
  427. i = arrpos('sparrloc', cloc)
  428. if i ! -1 and i < arrsize('sparrloc'):
  429. cumloc[12] = 1
  430. spafinloc = 12 & sexvolume = sparrvol[i] & sexunaware = 0 & sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[i] & cumnostd = 0 & gs 'Cum_Manage'
  431. $part = ''
  432. if cloc = 13:
  433. gs 'cum_cleanup', 'cleanloc', cloc
  434. 'You carefully lick the sperm residue from your hands, enjoying the tart taste.'
  435. else
  436. if cloc = 0:
  437. $part = 'pussy'
  438. elseif cloc = 1:
  439. $part = 'pussylips'
  440. elseif cloc = 2 or cloc = 5:
  441. $part = 'your panties'
  442. gs 'cum_cleanup', 'cleanloc', 2
  443. gs 'cum_cleanup', 'cleanloc', 5
  444. elseif cloc = 3:
  445. $part = 'anus'
  446. elseif cloc = 4:
  447. $part = 'buttocks'
  448. elseif cloc = 6 or cloc = 7:
  449. $part = 'clothes'
  450. gs 'cum_cleanup', 'cleanloc', 6
  451. gs 'cum_cleanup', 'cleanloc', 7
  452. elseif cloc = 8:
  453. $part = 'back'
  454. elseif cloc = 9:
  455. $part = 'legs'
  456. elseif cloc = 10:
  457. $part = 'arms'
  458. elseif cloc = 11:
  459. $part = 'face'
  460. elseif cloc = 14:
  461. $part = 'stomach'
  462. elseif cloc = 15:
  463. $part = 'breasts'
  464. elseif cloc = 16:
  465. $part = 'hair'
  466. else
  467. $part = 'unknown'
  468. end
  469. if rand(0, 1) = 0:
  470. 'You collect a handful of sperm from your <<$part>> in your hand and lick it up, enjoying the tart taste.'
  471. else
  472. 'You collect the sperm from your <<$part>> with your fingers and lick them, enjoying the tart taste.'
  473. end
  474. if FUNC('Cum_Manage', 'check_innards', cloc) = 1 and cheatKlisma = 1:
  475. cumspclnt = 15 & gs 'cum_cleanup'
  476. elseif (cloc <> 0 and cloc <> 3) or cheatKlisma = 0:
  477. gs 'cum_cleanup', 'cleanloc', cloc
  478. end
  479. end
  480. minut += 2
  481. gs 'stat'
  482. end
  483. end
  484. if $ARGS[0] = 'cum_stat_display':
  485. if Enable_clearcum > 0: gs 'cum_cleanup', 'reset'
  486. killvar 'cumvolume'
  487. killvar 'i'
  488. killvar 'knownguy'
  489. killvar 'cumcount'
  490. killvar 'cumowner'
  491. if arrsize('sparrvol') > 0:
  492. !!go through every location
  493. :locationloop
  494. !!start from the freshest load
  495. idx = arrsize('sparrloc')-1
  496. :spermitemloop
  497. !!if the currently examined load loaction is the location of the current cycle, execute
  498. if sparrloc[idx] = i:
  499. !!setting the age of the current load
  500. !! 0: mouth
  501. !! 1: in this hour
  502. !! 2: in four hours
  503. !! 3: at least five hours ago
  504. !! 4: in body (pussy or ass)
  505. !! 5: no more than 12 hours in condom
  506. !! 6: no more than 48 hours in condom
  507. !! 7: more than two days old, in condom
  508. if i = 12:
  509. j = 0
  510. elseif i = 17:
  511. if sparrage[idx] <= 12:
  512. j = 5
  513. elseif sparrage[idx] <= 48:
  514. j = 6
  515. else
  516. j = 7
  517. end
  518. elseif i = 0 or i = 3:
  519. j = 4
  520. else
  521. if sparrage[idx] <= 1:
  522. j = 1
  523. elseif sparrage[idx] <= 5:
  524. j = 2
  525. else
  526. j = 3
  527. end
  528. end
  529. cumvolume['<<i>>:<<j>>'] += sparrvol[idx]
  530. if sparrvol[idx] > 0:
  531. if sparridt[idx] = 0:
  532. !!unknown partner
  533. cumcount['<<i>>:<<j>>'] += 1
  534. elseif sparridt[idx] = 1:
  535. !!known partner
  536. !!storing the name of the cum owner (format: $cumowner[<cum location>:<age of cum>:<index of cum owner>])
  537. if knownguy['<<i>>:<<j>>'] > 0:
  538. gchk = 0
  539. :sameguycheck
  540. if $cumowner['<<i>>:<<j>>:<<gchk>>'] ! $sparrnam[idx] and gchk <= knownguy['<<i>>:<<j>>']:gchk += 1 & jump 'sameguycheck'
  541. if gchk > knownguy['<<i>>:<<j>>']:
  542. $cumowner['<<i>>:<<j>>:<<knownguy[''<<i>>:<<j>>'']>>'] = $sparrnam[idx]
  543. knownguy['<<i>>:<<j>>'] += 1
  544. cumcount['<<i>>:<<j>>'] += 1
  545. end
  546. else
  547. $cumowner['<<i>>:<<j>>:<<knownguy[''<<i>>:<<j>>'']>>'] = $sparrnam[idx]
  548. knownguy['<<i>>:<<j>>'] += 1
  549. cumcount['<<i>>:<<j>>'] += 1
  550. end
  551. end
  552. end
  553. end
  554. if idx > 0:idx -= 1 & jump 'spermitemloop'
  555. if i < 18:i += 1 & jump 'locationloop'
  556. killvar 'i'
  557. killvar 'idx'
  558. killvar 'j'
  559. end
  560. !!Clearing cum location array before positive entries are applied below in the icon and the text message codes
  561. killvar 'cumloc'
  562. $stat_cum_msg = ''
  563. $stat_cum_text = ''
  564. stat_visible_cum = 0
  565. stat_cumloc_check = 0
  566. cumsumbod = 0
  567. cumsumvag = 0
  568. cumsumass = 0
  569. i = 0
  570. :cumlocloop
  571. if i = 0:
  572. $icon_txtloc = 'your pussy'
  573. $txtloc = 'your <a href="exec:view''images/pc/body/cum/creampie/cumpussy'+rand(1,14)+'.jpg''">pussy</a>'
  574. elseif i = 1:
  575. $txtloc_adj = 'all over '
  576. $icon_txtloc = 'your labia'
  577. $txtloc = 'your <a href="exec:view''images/pc/body/cum/cumpussy/cumpus'+rand(1,4)+'.jpg''">labia</a>'
  578. elseif i = 2 and PCloPanties > 0:
  579. $txtloc_adj = 'across '
  580. $txtloc = 'the front of your panties'
  581. $icon_txtloc = $txtloc
  582. elseif i = 3:
  583. $txtloc_adj = 'across '
  584. $icon_txtloc = 'your ass'
  585. $txtloc = 'your <a href="exec:view''images/pc/body/cum/cumanal/cumanal'+rand(1,11)+'.jpg''">ass</a>'
  586. elseif i = 4:
  587. $txtloc_adj = 'all over '
  588. $icon_txtloc = 'your butt'
  589. $txtloc = 'your <a href="exec:view''images/pc/body/cum/cumass/cumass'+rand(1,6)+'.jpg''">butt</a>'
  590. elseif i = 5 and PCloPanties > 0:
  591. $txtloc_adj = 'painting '
  592. $txtloc = 'the back of your panties'
  593. $icon_txtloc = $txtloc
  594. elseif i = 6 and PCloPants > 0:
  595. $txtloc_adj = 'on '
  596. $icon_txtloc = 'your clothes near your groin'
  597. $txtloc = 'your <a href="exec:view''images/pc/body/cum/cumclothes/'+rand(1,3)+'.jpg''">clothes near your groin</a>'
  598. elseif i = 7 and $clothingworntype <> 'nude':
  599. $txtloc_adj = 'on '
  600. $icon_txtloc = 'your clothes'
  601. $txtloc = 'your <a href="exec:view''images/pc/body/cum/cumclothes/cumclothes'+rand(1,21)+'.jpg''">clothes</a>'
  602. elseif i = 8:
  603. $txtloc_adj = 'down '
  604. $txtloc = 'your back'
  605. $icon_txtloc = $txtloc
  606. elseif i = 9:
  607. $txtloc_adj = 'on '
  608. $txtloc = 'your legs'
  609. $icon_txtloc = $txtloc
  610. elseif i = 10:
  611. $txtloc_adj = 'on '
  612. $txtloc = 'your arms'
  613. $icon_txtloc = $txtloc
  614. elseif i = 11:
  615. if pcs_haircol = 0:
  616. $cum_face_image = 'brown/'
  617. $cum_face_image += rand(1,31)
  618. elseif pcs_haircol = 1:
  619. $cum_face_image = 'black/'
  620. $cum_face_image += rand(1,23)
  621. elseif pcs_haircol = 2:
  622. $cum_face_image = 'red/'
  623. $cum_face_image += rand(1,19)
  624. elseif pcs_haircol = 3:
  625. $cum_face_image = 'blonde/'
  626. $cum_face_image += rand(1,25)
  627. elseif pcs_haircol > 3:
  628. $cum_face_image = 'custom/'
  629. $cum_face_image += rand(1,20)
  630. end
  631. $txtloc_adj = 'across '
  632. $icon_txtloc = 'your face'
  633. $txtloc = 'your <a href="exec:view''images/pc/body/cum/cumface/<<$cum_face_image>>.jpg''">face</a>'
  634. killvar 'cum_face_image'
  635. elseif i = 13:
  636. $txtloc_adj = 'over '
  637. $txtloc = 'your hands'
  638. $icon_txtloc = $txtloc
  639. elseif i = 14:
  640. $txtloc_adj = 'across '
  641. $icon_txtloc = 'across your stomach'
  642. $txtloc = 'across your <a href="exec:view''images/pc/body/cum/cumbelly/cumbelly'+rand(1,12)+'.jpg''">stomach</a>'
  643. elseif i = 15:
  644. $txtloc_adj = 'on '
  645. $icon_txtloc = 'on your breasts'
  646. $txtloc = 'your <a href="exec:view''images/pc/body/cum/cumtits/cumtits'+rand(1,19)+'.jpg''">breasts</a>'
  647. elseif i = 16:
  648. $txtloc_adj = 'in '
  649. $icon_txtloc = 'your hair'
  650. $txtloc = 'your hair</a>'
  651. elseif i = 17:
  652. $txtloc = 'in your vagina in a slipped condom'
  653. $icon_txtloc = $txtloc
  654. else
  655. $txtloc_adj = 'on '
  656. $icon_txtloc = 'the gusset of your panties'
  657. $txtloc = 'the gusset of your panties</a>'
  658. end
  659. j = 0
  660. :ageloop
  661. if cumvolume['<<i>>:<<j>>'] > 0:
  662. !!Cum locations set for checking npc reactions
  663. cumloc[i] = 1
  664. cumvol[i] = cumvolume['<<i>>:<<j>>']
  665. if stat_cumloc_check ! 1 and i ! 12: stat_cumloc_check = 1
  666. !!amount setting
  667. if cumvolume['<<i>>:<<j>>'] > 250:
  668. !! 25 ml, about four-five load, gushing
  669. $txtamount = 'Enormous '
  670. elseif cumvolume['<<i>>:<<j>>'] > 100:
  671. !! 10 ml, about two load, flowing
  672. $txtamount = 'Huge '
  673. elseif cumvolume['<<i>>:<<j>>'] >= 20:
  674. !! 2 ml, seeping out
  675. $txtamount = 'Decent '
  676. else
  677. !! residue amount, no leakage
  678. $txtamount = 'Small '
  679. end
  680. !! if sperm age stage is 4, it means inside the body
  681. if j = 4:
  682. cumsumbod += cumvolume['<<i>>:<<j>>']
  683. cumsumvag += iif(i=0,cumvolume['<<i>>:<<j>>'],0)
  684. cumsumass += iif(i=3,cumvolume['<<i>>:<<j>>'],0)
  685. if ((vibratorIN = 1 or isprok = 1) and i = 0) or (analplugin = 1 and i = 3):
  686. $txtproxy = 'being plugged in '
  687. elseif i = 0 and cumvolume['<<i>>:<<j>>'] < FUNC('Cum_Manage', 'check_innards', 0, 1):
  688. $txtproxy = 'staying inside '
  689. elseif i = 3 and cumvolume['<<i>>:<<j>>'] < FUNC('Cum_Manage', 'check_innards', 3, 1):
  690. $txtproxy = 'staying inside '
  691. else
  692. if cumvolume['<<i>>:<<j>>'] > 250:
  693. $txtproxy = 'gushing out of '
  694. elseif cumvolume['<<i>>:<<j>>'] > 100:
  695. $txtproxy = 'flowing out of '
  696. elseif cumvolume['<<i>>:<<j>>'] >= 40:
  697. $txtproxy = 'seeping out of '
  698. else
  699. $txtproxy = 'staying inside '
  700. end
  701. end
  702. elseif j >= 5:
  703. !! if sperm age stage is over 4, meaning in condom
  704. if j = 5:
  705. $txtproxy = 'buried '
  706. elseif j = 6:
  707. $txtproxy = 'marinating '
  708. else
  709. $txtproxy = 'rotting '
  710. end
  711. if cumcondslip_deep > (vagina / 2): $txtproxy += 'deep '
  712. elseif j < 4 and j > 0:
  713. cumsumbod += cumvolume['<<i>>:<<j>>']
  714. !!amount setting
  715. if cumvolume['<<i>>:<<j>>'] > 160:
  716. !! 10 ml, about two load, flowing
  717. $txtproxy = 'coating '
  718. elseif cumvolume['<<i>>:<<j>>'] > 40:
  719. !! 2 ml, seeping out
  720. $txtproxy = 'covering '
  721. else
  722. !! residue amount, no leakage
  723. $txtproxy = 'spattered '
  724. end
  725. if j = 1:
  726. $txtproxy += 'wetly '
  727. elseif j = 2:
  728. $txtproxy += 'dryly '
  729. else
  730. $txtproxy += 'powderly '
  731. end
  732. if cumvolume['<<i>>:<<j>>'] < 40:
  733. $txtproxy += $txtloc_adj
  734. end
  735. end
  736. $txtperson = ''
  737. if cumcount['<<i>>:<<j>>'] = 0:
  738. !!ToDo: No idea how to do the icon here (julzor)
  739. $txtiscum = 'some whitish substance '
  740. else
  741. $txtiscum = 'cum'
  742. if cumcount['<<i>>:<<j>>'] = knownguy['<<i>>:<<j>>']:
  743. !! everyone is known (one or more)
  744. if knownguy['<<i>>:<<j>>'] = 1:
  745. if $npc_usedname[$cumowner['<<i>>:<<j>>:0']] = 'stranger':
  746. $txtperson = $npc_firstname[$cumowner['<<i>>:<<j>>:0']] + ' '
  747. else
  748. $txtperson = $npc_usedname[$cumowner['<<i>>:<<j>>:0']] + ' '
  749. end
  750. else
  751. kmax = 0
  752. :nullocator1
  753. if $cumowner['<<i>>:<<j>>:<<kmax>>'] ! '':kmax += 1 & jump 'nullocator1'
  754. kmax -= 1
  755. k = 0
  756. :knownloop
  757. $txtperson += $npc_usedname[$cumowner['<<i>>:<<j>>:<<k>>']]
  758. if k < kmax-1:$txtperson += ', ' & k += 1 & jump 'knownloop'
  759. k += 1
  760. if $npc_usedname[$cumowner['<<i>>:<<j>>:<<k>>']] = 'stranger':
  761. $txtperson += ' and ' + $npc_firstname[$cumowner['<<i>>:<<j>>:<<k>>']] + ' '
  762. else
  763. $txtperson += ' and ' + $npc_usedname[$cumowner['<<i>>:<<j>>:<<k>>']] + ' '
  764. end
  765. end
  766. elseif knownguy['<<i>>:<<j>>'] = 0:
  767. !! no one is known (one or more)
  768. if cumcount['<<i>>:<<j>>'] = 1:
  769. $txtperson += 'some guy '
  770. else
  771. $txtperson += 'some guys '
  772. end
  773. else
  774. !! there are known and unknown guys in the mix
  775. if knownguy['<<i>>:<<j>>'] = 1:
  776. if $npc_usedname[$cumowner['<<i>>:<<j>>:<<k>>']] = 'stranger':
  777. $txtperson = $npc_firstname[$cumowner['<<i>>:<<j>>:0']] + ' and some guy'
  778. else
  779. $txtperson = $npc_usedname[$cumowner['<<i>>:<<j>>:0']] + ' and some guy'
  780. end
  781. else
  782. kmax = 0
  783. :nullocator2
  784. if $cumowner['<<i>>:<<j>>:<<kmax>>'] ! '':kmax += 1 & jump 'nullocator2'
  785. kmax -= 1
  786. k = 0
  787. :mixloop
  788. if $npc_usedname[$cumowner['<<i>>:<<j>>:<<k>>']] = 'stranger':
  789. $txtperson += $npc_firstname[$cumowner['<<i>>:<<j>>:<<k>>']] + ', '
  790. else
  791. $txtperson += $npc_usedname[$cumowner['<<i>>:<<j>>:<<k>>']] + ', '
  792. end
  793. if k < kmax: k += 1 & jump 'mixloop'
  794. $txtperson += 'and some guy'
  795. end
  796. if cumcount['<<i>>:<<j>>'] - knownguy['<<i>>:<<j>>'] > 1:
  797. $txtperson += 's '
  798. else
  799. $txtperson += ' '
  800. end
  801. end
  802. end
  803. $icon_txtiscum = $txtiscum
  804. if j <= 4 and pcs_traits['cumeater'] = 1 and $txtiscum = 'cum' _
  805. and FUNC('Cum_Manage', 'check_private', i) = 1 and ((i <> 0 and i <> 3) or FUNC('Cum_Manage', 'check_innards', i) = 1 or cheatKlisma = 0):
  806. $txtiscum = '<a href="exec:gs ''cum_manage'', ''cumeater'', <<i>>"><font color=#0064FF>' + $txtiscum + '</font></a>'
  807. end
  808. if $txtperson ! '':
  809. $txtperson = ' from ' + $txtperson
  810. end
  811. if i = 0 and j = 4 and vibratorIN = 0 and pcs_vag*10 < cumvolume['<<i>>:<<j>>'] and cumvolume['<<i>>:<<j>>'] >= 20:
  812. $stat_cum_text += '<BR><b><font color="red">' + $txtamount + 'amounts of ' + $txtiscum + $txtperson + 'is ' + $txtproxy + $txtloc + iif($pantyworntype ! 'none', ' into your panties.', ' down your legs.')+'</font></b>'
  813. if $stat_cum_msg ! '': $stat_cum_msg += '<br>'
  814. $stat_cum_msg += $txtamount + 'amounts of ' + $icon_txtiscum + $txtperson + 'is ' + $txtproxy + $icon_txtloc + iif($pantyworntype ! 'none', ' into your panties.', ' down your legs.')
  815. elseif sparragestage >= 5:
  816. if cumcondslip_aware > 0: $stat_cum_text += '<BR><b><font color="red">' + $txtamount + 'amounts of ' + $txtiscum + $txtperson + 'is ' + $txtproxy + $txtloc + '.</font></b>'
  817. if $stat_cum_msg ! '': $stat_cum_msg += '<br>'
  818. $stat_cum_msg += $txtamount + 'amounts of ' + $icon_txtiscum + $txtperson + 'is ' + $txtproxy + $icon_txtloc + '.'
  819. elseif j ! 0:
  820. $stat_cum_text += '<BR><b><font color="red">' + $txtamount + 'amounts of ' + $txtiscum + $txtperson + 'is ' + $txtproxy + $txtloc + '.</font></b>'
  821. if $stat_cum_msg ! '': $stat_cum_msg += '<br>'
  822. $stat_cum_msg += $txtamount + 'amounts of ' + $icon_txtiscum + $txtperson + 'is ' + $txtproxy + $icon_txtloc + '.'
  823. else
  824. $stat_cum_text += '<BR><b><font color="red">Your mouth has the tangy aftertaste of sperm.</font></b>'
  825. if $stat_cum_msg ! '': $stat_cum_msg += '<br>'
  826. $stat_cum_msg += 'Your mouth has the tangy aftertaste of sperm.'
  827. end
  828. end
  829. if j < 7: j+=1 & jump 'ageloop'
  830. if stat_cumloc_check = 1 and (FUNC('Cum_Manage', 'check_private', i) = 0 _
  831. or (i <> 0 and cumsumass = 0 and cumsumvag > 0 and FUNC('Cum_Manage', 'check_innards', 0) = 0) _
  832. or (i <> 3 and cumsumvag = 0 and cumsumass > 0 and FUNC('Cum_Manage', 'check_innards', 3) = 0) _
  833. or (i > 3 and cumsumvag > 0 and FUNC('Cum_Manage', 'check_innards', 0) = 0 and cumsumass > 0 and FUNC('Cum_Manage', 'check_innards', 3) = 0)):
  834. stat_cumloc_check = 2
  835. end
  836. if i < 18: i+=1 & jump 'cumlocloop'
  837. killvar 'i'
  838. killvar 'j'
  839. killvar 'txtperson'
  840. killvar 'k'
  841. killvar 'kmax'
  842. killvar 'txtamount'
  843. killvar 'txtiscum'
  844. killvar '$icon_txtiscum'
  845. killvar 'txtperson'
  846. killvar 'txtproxy'
  847. killvar 'txtloc'
  848. killvar '$icon_txtloc'
  849. killvar 'cumvolume'
  850. killvar 'cumcount'
  851. killvar 'knownguy'
  852. killvar 'cumowner'
  853. $stat_visible_cum_temp = ''
  854. $stat_visible_cum_msg = ''
  855. if cumloc[6] = 1 or cumloc[7] = 1 or cumloc[11] = 1 or cumloc[13] = 1 or cumloc[16] = 1:
  856. if cumloc[6] = 1:
  857. stat_visible_cum = 1
  858. if $stat_visible_cum_temp ! '': $stat_visible_cum_temp += ', '
  859. $stat_visible_cum_temp += 'on your clothes near your groin'
  860. end
  861. if cumloc[7] = 1:
  862. stat_visible_cum = 1
  863. if $stat_visible_cum_temp ! '': $stat_visible_cum_temp += ', '
  864. $stat_visible_cum_temp += 'on your clothes'
  865. end
  866. if cumloc[11] = 1:
  867. stat_visible_cum = 1
  868. if $stat_visible_cum_temp ! '': $stat_visible_cum_temp += ', '
  869. $stat_visible_cum_temp += 'on your face'
  870. end
  871. if cumloc[13] = 1:
  872. stat_visible_cum = 1
  873. if $stat_visible_cum_temp ! '': $stat_visible_cum_temp += ', '
  874. $stat_visible_cum_temp += 'on your hands'
  875. end
  876. if cumloc[16] = 1:
  877. stat_visible_cum = 1
  878. if $stat_visible_cum_temp ! '': $stat_visible_cum_temp += ', '
  879. $stat_visible_cum_temp += 'in your hair'
  880. end
  881. $stat_visible_cum_msg = 'People can see the cum '+ $stat_visible_cum_temp + '.'
  882. end
  883. cum_loc['vagina'] = cumloc[0]
  884. cum_loc['labia'] = cumloc[1]
  885. cum_loc['panty_front'] = cumloc[2]
  886. cum_loc['anus'] = cumloc[3]
  887. cum_loc['butt'] = cumloc[4]
  888. cum_loc['panty_back'] = cumloc[5]
  889. cum_loc['clothes_groin'] = cumloc[6]
  890. cum_loc['clothes'] = cumloc[7]
  891. cum_loc['back'] = cumloc[8]
  892. cum_loc['legs'] = cumloc[9]
  893. cum_loc['arms'] = cumloc[10]
  894. cum_loc['face'] = cumloc[11]
  895. cum_loc['mouth'] = cumloc[12]
  896. cum_loc['hands'] = cumloc[13]
  897. cum_loc['stomach'] = cumloc[14]
  898. cum_loc['tits'] = cumloc[15]
  899. cum_loc['hair'] = cumloc[16]
  900. cum_loc['condom_in_pussy'] = cumloc[17]
  901. cum_vol['vagina'] = cumvol[0]
  902. cum_vol['labia'] = cumvol[1]
  903. cum_vol['panty_front'] = cumvol[2]
  904. cum_vol['anus'] = cumvol[3]
  905. cum_vol['butt'] = cumvol[4]
  906. cum_vol['panty_back'] = cumvol[5]
  907. cum_vol['clothes_groin'] = cumvol[6]
  908. cum_vol['clothes'] = cumvol[7]
  909. cum_vol['back'] = cumvol[8]
  910. cum_vol['legs'] = cumvol[9]
  911. cum_vol['arms'] = cumvol[10]
  912. cum_vol['face'] = cumvol[11]
  913. cum_vol['mouth'] = cumvol[12]
  914. cum_vol['hands'] = cumvol[13]
  915. cum_vol['stomach'] = cumvol[14]
  916. cum_vol['tits'] = cumvol[15]
  917. cum_vol['hair'] = cumvol[16]
  918. cum_vol['condom_in_pussy'] = cumvol[17]
  919. end
  920. if $ARGS[0] = 'check_private':
  921. !! Checks whether the current location is private for cleaning cum in intimate places
  922. !! ARGS[1] - cum location (see cum_cleanup)
  923. !! no ARGS[1] means 0, means vagina, means you must be in a private location to interact
  924. !! FUNC('Cum_Manage', 'check_private') = 1
  925. !! FUNC('Cum_Manage', 'check_private', 7) = 1
  926. RESULT = 0
  927. if $location_type = 'private' or $location_type = 'private_indoors' or $location_type = 'private_shared' or $location_type = 'bathroom': RESULT = 1
  928. if ARGS[1] > 5 and ARGS[1] <> 15 and ARGS[1] <> 17: RESULT = 1
  929. end
  930. if $ARGS[0] = 'check_innards':
  931. !! Cum overflow check inside vagina or anus
  932. !! ARGS[1] - 0 (vagina) or 3 (anus)
  933. !! ARGS[2] - return max capacity
  934. !! capvag - vagina max capacity
  935. !! capanus - anus max capacity
  936. !! FUNC('Cum_Manage', 'check_innards') = 1
  937. !! FUNC('Cum_Manage', 'check_innards', 3) = 1
  938. !! FUNC('Cum_Manage', 'check_innards', 0, 1) <= cumsumvag
  939. capvag = pcs_vag*3 - vgape*30 - min(100,pcs_horny)/10
  940. capanus = pcs_ass*6 - agape*40
  941. RESULT = 0
  942. if ARGS[1] = 0:
  943. if ARGS[2] > 0:
  944. RESULT = capvag
  945. elseif cumsumvag >= capvag and isprok = 0 and vibratorIN = 0:
  946. RESULT = 1
  947. end
  948. elseif ARGS[1] = 3:
  949. if ARGS[2] > 0:
  950. RESULT = capanus
  951. elseif cumsumass >= capanus and analplugin = 0:
  952. RESULT = 1
  953. end
  954. end
  955. killvar 'capvag'
  956. killvar 'capanus'
  957. end
  958. if $ARGS[0] = 'cum_decay':
  959. !! ARGS[1] forced cum leak (sex intercourse) in values like 20-100
  960. cumforced = ARGS[1]
  961. if ((menu_off = 1 or cumdectime+15 > totminut) and cumforced = 0) or no_cum_leak = 1: exit
  962. if arrsize('sparrvol') > 0:
  963. cumsumvag = 0
  964. cumsumass = 0
  965. killvar 'cumloc'
  966. killvar 'cumvol'
  967. i = 0
  968. !!go through every location
  969. :sparrvolloop
  970. !!start from the freshest load
  971. idx = arrsize('sparrloc')-1
  972. :sparrlocloop
  973. !!if the currently examined load loaction is the location of the current cycle, execute
  974. if sparrloc[idx] = i and sparrvol[idx] > 0:
  975. !! 0 = 'In your Vagina'
  976. if i = 0:
  977. !! passive absorption, succubus has its own
  978. !! InSleep - increase the amount during sleep, isprok - tampon absorption
  979. if succubusflag = 0:
  980. cumamount = (totminut-cumdectime)/15 * max(rand(0,1), rand(sparrvol[idx]/60, sparrvol[idx]/30) + rand(0, InSleep*rand(1,3)) + isprok*rand(5,10) + rand(0, iif(pcs_hydra<30,(30-pcs_hydra)/10,0)) + rand(0, iif(pcs_horny<100,(100-pcs_horny)/20,0)))
  981. sparrvol[idx] -= cumamount
  982. end
  983. if sparrvol[idx] > 0:
  984. cumsumvag += sparrvol[idx]
  985. !! seeping out
  986. if FUNC('Cum_Manage', 'check_innards', 0) = 1 or cumforced/rand(2,3) > sparrvol[idx]:
  987. cumamount = min(sparrvol[idx]*3/2, (totminut-cumdectime)/15 * max(rand(1,3), rand(sparrvol[idx]/max(1,pcs_vag), vgape*40) - InSleep*rand(2,5) + iif(pcs_horny>50, min(100,pcs_horny)/10 - 4,0)) + cumforced/rand(5,10))
  988. sparrvol[idx] -= cumamount & cumsumvag -= cumamount
  989. cumvol[0] -= cumamount
  990. !! 1 = 'On your labia'
  991. sexvolume = max(cumamount/10, cumamount/2 - iif(cumforced=0,isprokp*rand(10,20),0))
  992. if sexvolume > 0:
  993. spafinloc = 1
  994. sexunaware = iif(cumforced=0,iif(rand(0,4)=1 or sparridt[idx]=-2,1,0),0)
  995. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 1
  996. gs 'Cum_Manage'
  997. cumvol[1] += sexvolume & cumloc[1] = 1
  998. end
  999. if cumforced = 0:
  1000. !! 2 = 'On your panties over your vagina'
  1001. if $pantyworntype <> 'none' or PCloPanties > 0:
  1002. !! isprokp - sanitary pad absorption
  1003. if isprokp <> 1:
  1004. spafinloc = 2
  1005. sexvolume = max(1, cumamount/2)
  1006. sexunaware = iif(rand(0,3)=1 or sparridt[idx]=-2,1,0)
  1007. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 1
  1008. gs 'Cum_Manage'
  1009. cumvol[2] += sexvolume & cumloc[2] = 1
  1010. end
  1011. !! 9 = 'On your legs'
  1012. elseif ($clothingworntype = 'nude' or PCloSkirt > 0 or PCloDress > 0) and rand(1,10) > 6 + InSleep*2:
  1013. sexvolume = max(0, cumamount/4)
  1014. if sexvolume > 0:
  1015. spafinloc = 9
  1016. sexunaware = iif(rand(0,2)=1 or sparridt[idx]=-2,1,0)
  1017. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 1
  1018. gs 'Cum_Manage'
  1019. cumvol[9] += sexvolume & cumloc[9] = 1
  1020. end
  1021. end
  1022. !! 6 = 'On your clothes in your groin area'
  1023. if PCloPants > 0:
  1024. sexvolume = max(0, cumamount / (3 + iif($pantyworntype<>'none',12,0)))
  1025. if sexvolume > 0:
  1026. spafinloc = 6
  1027. sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
  1028. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 1
  1029. gs 'Cum_Manage'
  1030. cumvol[6] += sexvolume & cumloc[6] = 1
  1031. end
  1032. end
  1033. end
  1034. end
  1035. end
  1036. if sparrvol[idx] <= 0: gs 'cum_cleanup', 'cleandeposit', idx
  1037. !! 3 = 'In your anus'
  1038. elseif i = 3:
  1039. !! passive absorption, succubus has its own
  1040. if succubusflag = 0:
  1041. cumamount = (totminut-cumdectime)/15 * max(rand(0,2), rand(sparrvol[idx]/40, sparrvol[idx]/20) + rand(0, InSleep*rand(3,6)) + rand(0, iif(pcs_hydra<50,(50-pcs_hydra)/10,0)))
  1042. sparrvol[idx] -= cumamount
  1043. end
  1044. if sparrvol[idx] > 0:
  1045. cumsumass += sparrvol[idx]
  1046. !! seeping out
  1047. if FUNC('Cum_Manage', 'check_innards', 3) = 1 or cumforced/rand(2,4) > sparrvol[idx]:
  1048. cumamount = min(sparrvol[idx]*3/2, (totminut-cumdectime)/15 * max(rand(0,1), rand(sparrvol[idx]/max(1,(pcs_ass*3/2)), agape*20) - InSleep*rand(4,8)) + cumforced/rand(7,15))
  1049. sparrvol[idx] -= cumamount & cumsumass -= cumamount
  1050. cumvol[3] -= cumamount
  1051. !! 1 = 'On your labia'
  1052. sexvolume = max(cumamount/10, cumamount/4 - iif(cumforced=0,isprokp*rand(10,20),0))
  1053. if sexvolume > 0:
  1054. spafinloc = 1
  1055. sexunaware = iif(cumforced=0,iif(rand(0,4)=1 or sparridt[idx]=-2,1,0),0)
  1056. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 1
  1057. gs 'Cum_Manage'
  1058. cumvol[1] += sexvolume & cumloc[1] = 1
  1059. end
  1060. if cumforced > 0:
  1061. !! 4 = 'On your butt'
  1062. sexvolume = max(cumamount/15, cumamount/3)
  1063. if sexvolume > 0:
  1064. spafinloc = 4
  1065. sexvolume = max(0, cumamount/2)
  1066. sexunaware = 0
  1067. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 1
  1068. gs 'Cum_Manage'
  1069. cumvol[4] += sexvolume & cumloc[4] = 1
  1070. end
  1071. else
  1072. !! 5 = 'On your panties over your butt'
  1073. if $pantyworntype <> 'none' or PCloPanties > 0:
  1074. !! isprokp - sanitary pad absorption
  1075. if isprokp <> 1:
  1076. spafinloc = 5
  1077. sexvolume = max(1, cumamount/3)
  1078. sexunaware = iif(rand(0,3)=1 or sparridt[idx]=-2,1,0)
  1079. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 1
  1080. gs 'Cum_Manage'
  1081. cumvol[5] += sexvolume & cumloc[5] = 1
  1082. end
  1083. !! 9 = 'On your legs'
  1084. elseif ($clothingworntype = 'nude' or PCloSkirt > 0 or PCloDress > 0) and rand(1,10) > 4 + InSleep*3:
  1085. sexvolume = max(0, cumamount/5)
  1086. if sexvolume > 0:
  1087. spafinloc = 9
  1088. sexunaware = iif(rand(0,2)=1 or sparridt[idx]=-2,1,0)
  1089. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 1
  1090. gs 'Cum_Manage'
  1091. cumvol[9] += sexvolume & cumloc[9] = 1
  1092. end
  1093. end
  1094. !! 6 = 'On your clothes in your groin area'
  1095. if PCloPants > 0:
  1096. sexvolume = max(0, cumamount / (4 + iif($pantyworntype<>'none',16,0)))
  1097. if sexvolume > 0:
  1098. spafinloc = 6
  1099. sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
  1100. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 1
  1101. gs 'Cum_Manage'
  1102. cumvol[6] += sexvolume & cumloc[6] = 1
  1103. end
  1104. end
  1105. end
  1106. end
  1107. end
  1108. if sparrvol[idx] <= 0: gs 'cum_cleanup', 'cleandeposit', idx
  1109. !! 1 = 'On your labia' 4 = 'On your butt'
  1110. elseif (i = 1 and sparrvol[idx]*((totminut-cumdectime)/15) > rand(2,5)) _
  1111. or (i = 4 and sparrvol[idx]*((totminut-cumdectime)/15) > rand(4,8)):
  1112. if $pantyworntype <> 'none' or PCloPanties > 0:
  1113. !! 2 = 'On your panties over your vagina' 5 = 'On your panties over your butt'
  1114. sexvolume = rand(sparrvol[idx]/2, sparrvol[idx]) - iif(i=1,isprokp*rand(15,30),0)
  1115. if sexvolume > 0:
  1116. sparrvol[idx] -= sexvolume
  1117. spafinloc = iif(i=1,2,5)
  1118. sexunaware = 1
  1119. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 0
  1120. gs 'Cum_Manage'
  1121. cumvol[iif(i=1,2,5)] += sexvolume & cumloc[iif(i=1,2,5)] = 1
  1122. end
  1123. !! 6 = 'On your clothes in your groin area'
  1124. elseif PCloPants > 0:
  1125. sexvolume = rand(sparrvol[idx]/2, sparrvol[idx])
  1126. if sexvolume > 0:
  1127. spafinloc = 6
  1128. sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
  1129. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 0
  1130. gs 'Cum_Manage'
  1131. cumvol[6] += sexvolume & cumloc[6] = 1
  1132. end
  1133. end
  1134. if sparrvol[idx] <= 0: gs 'cum_cleanup', 'cleandeposit', idx
  1135. !! 17 = 'In a condom in your vagina'
  1136. elseif i = 17 and sparrvol[idx] > rand(10,15):
  1137. !! 0 = 'In your Vagina'
  1138. sexvolume = min(sparrvol[idx]/3, (totminut-cumdectime)/15 * max(0, cumamount/5 - isprokp*rand(2,5)) + cumforced/rand(5,10))
  1139. if sexvolume > 0:
  1140. !! condom in vagina is summed in cumsumvag and Cum_Manage call will added more, so subtract here
  1141. cumsumvag -= sexvolume
  1142. sparrvol[idx] -= sexvolume
  1143. spafinloc = 0
  1144. sexunaware = 1
  1145. sexspecpot = -1 & $cumboy = $boy & $boy = $sparrnam[idx] & cumnostd = 0
  1146. gs 'Cum_Manage'
  1147. cumvol[17] -= sexvolume & cumvol[0] += sexvolume & cumloc[0] = 1
  1148. end
  1149. !! 12 = 'Inside your mouth'
  1150. elseif i <> 12 and sparrvol[idx] > rand(0,3):
  1151. !! dry out
  1152. !! 1: in this hour
  1153. !! 2: in four hours
  1154. !! 3: at least five hours ago
  1155. if rand(min(-1+InSleep, sparrvol[idx]/-5), sparrage[idx] + (totminut-cumdectime)/30) >= 1:
  1156. !! 5 and 7 = not clothes
  1157. if i <> 6 and i <> 7: pcs_sweat += rand(0, max(1,sparrvol[idx]/10))
  1158. gs 'cum_cleanup', 'cleandeposit', idx
  1159. end
  1160. end
  1161. if sparrvol[idx] > 0: cumloc[i] = 1 & cumvol[inx] += sparrvol[idx] else cumloc[i] = 0 & cumvol[inx] = 0
  1162. elseif sparrvol[idx] <= 0 and ($sparrnam[idx] = '' or sparrloc[idx] ! 0 or (sparrloc[idx] = 0 and sparrage[idx] > 10)):
  1163. gs 'cum_cleanup', 'cleandeposit', idx
  1164. end
  1165. !! reset just in case
  1166. sexvolume = 0 & cumnostd = 0
  1167. if idx > 0:idx -= 1 & jump 'sparrlocloop'
  1168. if i < 18:i += 1 & jump 'sparrvolloop'
  1169. killvar 'i'
  1170. killvar 'idx'
  1171. killvar 'cumamount'
  1172. if cumsumvag <= 0: cumsumvag = 0 & cum_vol['vagina'] = 0 & cumvol[0] = 0 & cum_loc['vagina'] = 0 & cumloc[0] = 0
  1173. if cumsumass <= 0: cumsumass = 0 & cum_vol['anus'] = 0 & cumvol[3] = 0 & cum_loc['anus'] = 0 & cumloc[3] = 0
  1174. if cumsumbod < 0: cumsumbod = 0
  1175. end
  1176. killvar 'cumforced'
  1177. cumdectime = totminut
  1178. end
  1179. --- Cum_Manage ---------------------------------