arousal.qsrc 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763
  1. # arousal
  2. !!{For checking arousal and when applicable triggering orgasms.
  3. $ARGS[0] the action causing arousal can be when receiving any of the following:
  4. 'masturbate' 'porn' 'voyeur' 'kiss' 'breasts' 'massage' 'foreplay' 'cuni' 'rimming' 'trib' 'anal' 'anal_finger' 'anal_fist' 'anal_dildo' 'anal_strap' 'anal_vibe' 'vaginal' 'vaginal_finger' 'vaginal_fist' 'vaginal_dildo' 'vaginal_strap' 'vaginal_vibe'
  5. also when giving any of the following:
  6. 'flashlite' 'flash' 'kiss_give' 'breasts_give' 'massage_give' 'foreplay_give' 'cuni_give' 'rimming_give' 'anal_finger_give' 'anal_fist_give' 'anal_dildo_give' 'anal_vibe_give' 'anal_strap_give'
  7. 'vaginal_finger_give' 'vaginal_fist_give' 'vaginal_dildo_give' 'vaginal_strap_give' 'vaginal_vibe_give' 'hj' 'bj' 'footjob'
  8. All acts are from Sveta''s perspective and in cases of both giving and receiving, receiving should be used.
  9. ARGS[1] for time taken in minutes - it is use partly for arousal calculation and partly for moving time ahead. If you want to calculate just the arousal and do not move time (simultaneous stimulation), use negative value.
  10. $ARGS[2] can be used for passing the name of boys dick variable .. 'dick' is default, which belong to $boy, else can be passed 'dick1' .. 'dick4' or 'dick[i]' along the boys parameters activation
  11. $ARGS[2] - [8] Are optional but can be upto 7 fetishes involved in the act and can be any of the following:
  12. 'maso' 'bound' 'beast' 'exhibitionism' 'rough' 'prostitution' 'dom' 'sub' 'incest' 'feet' 'lesbian' 'group' 'gangbang' 'humiliation' 'deepthroat' 'unknown' 'gloryhole' 'rape' 'futa'
  13. Format to use: gs 'arousal', 'act', 'duration', 'fetish', 'fetish', 'fetish', 'fetish', 'fetish', 'fetish', 'fetish'
  14. eg: gs 'arousal', 'trib', 10, 'bound', 'sub'
  15. In this case lesbianism is automatically added, much as feet would be applied to 'footjob'
  16. Lubrication - if one of the arguments $ARGS[2] - [8] is set to 'lube', it supposes that it is used some kind of lubricant - preferably from PCs supply of lube.
  17. Unaware - if one of the arguments $ARGS[2] - [8] is set to 'unaware', Sveta is not aware of this Sexact. Sveta will never know she had Sex!
  18. The lubrication is binded with anal or vaginal action. I think that the best combo is with 'anal_finger' and 'vaginal_finger'
  19. Only call one at a time, if more required, use multiple calls
  20. You can override the orgasm to force or prevent, to do so use:
  21. $orgasm_or = 'yes' to force orgasm, it will reset in orgasm call so if you want to force it again, you have to enter it again
  22. *$orgasm_or = 'custom' to force orgasm and use custom text set as $orgasm_txt - *you can just add the text and call with 'yes' this is old method
  23. $orgasm_or = 'no' to prevent orgasm, it will remain in place until manually changed, or if end is called.
  24. $orgasm_txt is used to add custom text that will be called if Sveta orgasms in the next arousal call. It will remain until cleared or orgasm so you must clear it if not forcing orgasm and don''t want it to be used on next orgasm.
  25. }
  26. temp_anal = 0
  27. temp_unaware = 0
  28. !!orgasms restricted to direct stimulation using this flag
  29. orgasm_flag = 0
  30. if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0] ! 'count2':
  31. if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'unaware') > 0:
  32. temp_unaware = 1
  33. end
  34. if mid($ARGS[2],1,4) = 'dick':
  35. temp_dick = dyneval('result='+$ARGS[2])
  36. temp_silavag = dyneval('result=silavag'+mid($ARGS[2],5,len($ARGS[2])-4))
  37. $temp_dick_girth = dyneval('$result=$dick_girth'+mid($ARGS[2],5,len($ARGS[2])-4))
  38. else
  39. temp_dick = dick
  40. temp_silavag = silavag
  41. $temp_dick_girth = $dick_girth
  42. end
  43. if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'rough')+strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'beast') > 0: temp_silavag = 0
  44. grange = dyneval('result=strpos(''skinny slimx well pr thicker thickx massive monstrous'',$ARGS[0])',mid($temp_dick_girth+'x',1,6))/2
  45. !! first let us determine how slippery are pc''s holes
  46. if vaginal_slip < pcs_horny / 10: vaginal_slip = pcs_horny / 10
  47. if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'lube') > 0:
  48. if mid($ARGS[0],1,4) = 'anal':
  49. anal_slip += iif(lubri = 0,2,8)
  50. if anal_slip > 10: anal_slip=10
  51. if lubri > 0: lubri -= 1
  52. end
  53. if mid($ARGS[0],1,4) = 'vagi':
  54. vaginal_slip += iif(lubri = 0,2,8)
  55. if vaginal_slip > 12: vaginal_slip=12
  56. if lubri > 0: lubri -= 1
  57. end
  58. end
  59. !! This is to allow a Succubus with the right skill level to handle any size then go back to original size
  60. if succubusflag = 1 and sucskill >= 4:
  61. if mid($ARGS[0],1,4) = 'vagi' and temp_dick ! pcs_vag:
  62. if temp_dick < pcs_vag - 5 or temp_dick > pcs_vag + 5: pcs_mood -= 10
  63. if sucvagorg = 0: sucvagorg = pcs_vag
  64. pcs_vag = temp_dick
  65. end
  66. if mid($ARGS[0],1,4) = 'anal' and temp_dick ! pcs_ass:
  67. if temp_dick < pcs_ass - 5 or temp_dick > pcs_ass + 5: pcs_mood -= 10
  68. if sucanusorg = 0: sucanusorg = pcs_ass
  69. pcs_ass = temp_dick
  70. end
  71. end
  72. !!set a magnitude as a random
  73. stim['mag'] = rand(0,3) + rand(0,3) + rand(0,3)
  74. !!add count and effects due to action
  75. if $ARGS[0] = 'masturbate':
  76. orgasm_flag = 1
  77. count['mast'] = 1
  78. stim['mag'] += 6
  79. stim['act'] = 100
  80. elseif $ARGS[0] = 'porn':
  81. count['porn'] = 1
  82. stim['act'] = 20
  83. elseif $ARGS[0] = 'voyeur':
  84. count['voyeur'] = 1
  85. stim['act'] = 30
  86. elseif $ARGS[0] = 'kiss':
  87. stim['act'] = 10
  88. elseif $ARGS[0] = 'breasts':
  89. stim['act'] = 30
  90. !! No idea where else to put this. This is used for breast stimulation which will eventually cause lactation in sveta without her knowledge. If anyone knows a better place for this, please let me know. - milky_boobs.
  91. milkedvolume += func('lact_lib','$get_breastmilk', 8, ARGS[1])
  92. elseif $ARGS[0] = 'massage':
  93. stim['act'] = 25
  94. elseif $ARGS[0] = 'foreplay':
  95. stim['act'] = 20
  96. elseif $ARGS[0] = 'cuni':
  97. orgasm_flag = 1
  98. count['cuni'] = 1
  99. stim['mag'] += 4
  100. stim['act'] = 80
  101. elseif $ARGS[0] = 'rimming':
  102. orgasm_flag = 1
  103. count['rimming'] = 1
  104. stim['act'] = 30
  105. elseif $ARGS[0] = 'trib':
  106. orgasm_flag = 1
  107. count['trib'] = 1
  108. stim['mag'] += 3
  109. stim['act'] = 70
  110. stim_les = 1
  111. elseif $ARGS[0] = 'anal':
  112. orgasm_flag = 1
  113. temp_anal = 1
  114. if temp_unaware = 1:
  115. count['hidden_anal'] = 1
  116. else
  117. count['anal'] = 1
  118. end
  119. if pcs_ass < dick:pcs_ass += 1
  120. if pcs_ass*2 < dick:pcs_ass += 1
  121. !! length and girth abilities of anus are not also separated , but I suppose that they are related although it is not propable
  122. !! we can estimate difference in girth and length anal_girth_difference and anal_lenght_difference - names are shortened
  123. altdif = temp_dick - pcs_ass
  124. agrdif = grange - pcs_ass
  125. !! negative influence of the difference can be reduced by sex skill and also by lubricant
  126. !! I made it as simply as posible so you do not complain about reality, feel free to modify the algorithm
  127. !! when the boy is skilled, he can compensate the difference partly
  128. altdif = altdif / (temp_silavag+1)
  129. agrdif = agrdif *(5/4 - 1/(4 - temp_silavag))
  130. !! when the boy is skilled, he does not harm PC with his long dick
  131. if (temp_silavag = 2) and (altdif > 0): altdif = 0
  132. !! lube can compensate the difference a bit
  133. if -agrdif > anal_slip: agrdif = agrdif + anal_slip else if agrdif < 0: agrdif = 0
  134. if agrdif > anal_slip: agrdif = agrdif - anal_slip else if agrdif > 0: agrdif = 0
  135. stim['act'] = 80 - (iif(altdif>0,altdif,-altdif) + iif(agrdif >0,agrdif,-agrdif)) + temp_silavag*8
  136. !! if the dick is smaller, it cannot harm PC
  137. if agrdif < 0: agrdif = 0
  138. if altdif < 0: altdif = 0
  139. !! calculate the harm
  140. agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
  141. !! the pain lover the pleasure
  142. gs 'pain', (agrdif + altdif)/5 , 'asshole', 'stretch'
  143. stim['act'] = stim['act'] - (agrdif + altdif)
  144. elseif $ARGS[0] = 'anal_finger':
  145. orgasm_flag = 1
  146. temp_anal = 1
  147. count['anal_finger'] = 1
  148. stim['act'] = 40
  149. elseif $ARGS[0] = 'anal_fist':
  150. orgasm_flag = 1
  151. temp_anal = 1
  152. count['anal_fist'] = 1
  153. gs 'pain', 4-agape, 'asshole', 'stretch'
  154. stim['act'] = 30
  155. if pcs_ass > 30:
  156. pcs_ass += 30
  157. if agape < 3:agape = 3
  158. end
  159. elseif $ARGS[0] = 'anal_dildo':
  160. orgasm_flag = 1
  161. temp_anal = 1
  162. count['anal_dildo'] = 1
  163. !! the same as for 'anal'
  164. altdif = temp_dick - pcs_ass
  165. agrdif = grange - pcs_ass
  166. altdif = altdif / (temp_silavag+1)
  167. agrdif = agrdif *(5/4 - 1/(4 - temp_silavag))
  168. if (temp_silavag = 2) and (altdif > 0): altdif = 0
  169. if agrdif > anal_slip: agrdif = agrdif - anal_slip else if agrdif > 0: agrdif = 0
  170. if -agrdif > anal_slip: agrdif = agrdif + anal_slip else if agrdif < 0: agrdif = 0
  171. stim['act'] = 80 - (iif(altdif>0,altdif,-altdif) + iif(agrdif >0,agrdif,-agrdif)) + temp_silavag*8
  172. if agrdif < 0: agrdif = 0
  173. if altdif < 0: altdif = 0
  174. agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
  175. gs 'pain', (agrdif + altdif)/5 , 'asshole', 'stretch'
  176. stim['act'] = stim['act'] - (agrdif + altdif)
  177. elseif $ARGS[0] = 'anal_strap':
  178. orgasm_flag = 1
  179. temp_anal = 1
  180. count['anal_strap'] = 1
  181. !! the same as for 'anal'
  182. altdif = temp_dick - pcs_ass
  183. agrdif = grange - pcs_ass
  184. altdif = altdif / (temp_silavag+1)
  185. agrdif = agrdif *(5/4 - 1/(4 - temp_silavag))
  186. if (temp_silavag = 2) and (altdif > 0): altdif = 0
  187. if agrdif > anal_slip: agrdif = agrdif - anal_slip else if agrdif > 0: agrdif = 0
  188. if -agrdif > anal_slip: agrdif = agrdif + anal_slip else if agrdif < 0: agrdif = 0
  189. stim['act'] = 80 - (iif(altdif>0,altdif,-altdif) + iif(agrdif >0,agrdif,-agrdif)) + temp_silavag*8
  190. if agrdif < 0: agrdif = 0
  191. if altdif < 0: altdif = 0
  192. agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
  193. gs 'pain', (agrdif + altdif)/5 , 'asshole', 'stretch'
  194. stim['act'] = stim['act'] - (agrdif + altdif)
  195. elseif $ARGS[0] = 'anal_vibe':
  196. orgasm_flag = 1
  197. temp_anal = 1
  198. count['anal_vibe'] = 1
  199. stim['mag'] += 1
  200. stim['act'] = 60
  201. elseif $ARGS[0] = 'vaginal':
  202. orgasm_flag = 1
  203. !! pre-cum check
  204. if rand(0,120) < ARGS[1]: cumprecheck = 1 & gs 'cum_manage'
  205. if temp_unaware = 1:
  206. count['hidden_vaginal'] = 1
  207. else
  208. count['vaginal'] = 1
  209. end
  210. stim['mag'] += 3
  211. !! This section deals with pcs_vag if she still thinks she is virgin. There are many instances where virginity is
  212. !! checked via pcs_vag = 0, so for the time being i will not adjust pcs_vag if she believes.
  213. if temp_unaware = 0 or count['vaginal'] > 0:
  214. if pcs_vag < dick:pcs_vag += 1
  215. if pcs_vag*2 < dick:pcs_vag += 1
  216. end
  217. !! length and girth abilities of vagina are not separated , but I suppose that they are related
  218. !! we can estimate difference in girth and length vaginal_girth_difference and vaginal_lenght_difference - names are shortened
  219. vgrdif = grange - pcs_vag
  220. vltdif = temp_dick - pcs_vag
  221. !! negative influence of the difference can be reduced by sex skill and also by PCs horniness, using of a lubricant is not established yet
  222. !! I made it as simply as posible so you do not complain about reality, feel free to modify the algorithm
  223. !! when the boy is skilled, he can compensate the difference partly
  224. vltdif = vltdif / (temp_silavag+1)
  225. vgrdif = vgrdif *(5/4 - 1/(4 - temp_silavag))
  226. !! when the boy is skilled, he does not harm PC with his long dick
  227. if (temp_silavag = 2) and (vltdif > 0): vltdif = 0
  228. !! even PC horniness can compensate the difference
  229. if vgrdif > vaginal_slip: vgrdif = vgrdif - vaginal_slip else if (vgrdif > 0): vgrdif = 0
  230. if -1*vgrdif > vaginal_slip: vgrdif = vgrdif + vaginal_slip else if (vgrdif < 0): vgrdif = 0
  231. stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
  232. !! if the dick is smaller, it cannot harm PC
  233. if vgrdif < 0: vgrdif = 0
  234. if vltdif < 0: vltdif = 0
  235. !! calculate the harm
  236. vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
  237. !! the pain lover the pleasure
  238. gs 'pain', (vgrdif + vltdif)/5 , 'vaginal', 'stretch'
  239. stim['act'] = stim['act'] - (vgrdif + vltdif)
  240. elseif $ARGS[0] = 'vaginal_finger':
  241. orgasm_flag = 1
  242. count['vaginal_finger'] = 1
  243. stim['mag'] += 1
  244. stim['act'] = 80
  245. elseif $ARGS[0] = 'vaginal_fist':
  246. orgasm_flag = 1
  247. count['vaginal_fist'] = 1
  248. stim['act'] = 70
  249. gs 'pain', 3 - vgape, 'vaginal', 'stretch'
  250. if pcs_vag + vaginal_slip < 30:
  251. !! same as for 'vaginal'
  252. if temp_unaware = 0 or count['vaginal'] > 0:pcs_vag += 3
  253. if vgape < 3:vgape = 3
  254. end
  255. elseif $ARGS[0] = 'vaginal_dildo':
  256. orgasm_flag = 1
  257. count['vaginal_dildo'] = 1
  258. stim['mag'] += 1
  259. !! the same as for 'vaginal'
  260. vgrdif = grange - pcs_vag
  261. vltdif = temp_dick - pcs_vag
  262. vltdif = vltdif / (temp_silavag+1)
  263. vgrdif = vgrdif *(5/4 - 1/(4 - temp_silavag))
  264. if (temp_silavag = 2) and (vltdif > 0): vltdif = 0
  265. if vgrdif > vaginal_slip: vgrdif = vgrdif - vaginal_slip else if (vgrdif > 0): vgrdif = 0
  266. if -1*vgrdif > vaginal_slip: vgrdif = vgrdif + vaginal_slip else if (vgrdif < 0): vgrdif = 0
  267. stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
  268. if vgrdif < 0: vgrdif = 0
  269. if vltdif < 0: vltdif = 0
  270. vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
  271. gs 'pain', (vgrdif + vltdif)/5 , 'vaginal', 'stretch'
  272. stim['act'] = stim['act'] - (vgrdif + vltdif)
  273. elseif $ARGS[0] = 'vaginal_strap':
  274. orgasm_flag = 1
  275. count['vaginal_strap'] = 1
  276. stim['mag'] += 1
  277. !! virginal capacity increase
  278. if pcs_vag < dick:pcs_vag += 1
  279. if pcs_vag*2 < dick:pcs_vag += 1
  280. !! the same as for 'vaginal'
  281. vgrdif = grange - pcs_vag
  282. vltdif = temp_dick - pcs_vag
  283. vltdif = vltdif / (temp_silavag+1)
  284. vgrdif = vgrdif *(5/4 - 1/(4 - temp_silavag))
  285. if (temp_silavag = 2) and (vltdif > 0): vltdif = 0
  286. if vgrdif > vaginal_slip: vgrdif = vgrdif - vaginal_slip else if (vgrdif > 0): vgrdif = 0
  287. if -1*vgrdif > vaginal_slip: vgrdif = vgrdif + vaginal_slip else if (vgrdif < 0): vgrdif = 0
  288. stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
  289. if vgrdif < 0: vgrdif = 0
  290. if vltdif < 0: vltdif = 0
  291. vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
  292. gs 'pain', (vgrdif + vltdif)/5 , 'vaginal', 'stretch'
  293. stim['act'] = stim['act'] - (vgrdif + vltdif)
  294. elseif $ARGS[0] = 'vaginal_vibe':
  295. orgasm_flag = 1
  296. count['vaginal_vibe'] = 1
  297. stim['mag'] += 2
  298. stim['act'] = 90
  299. elseif $ARGS[0] = 'flashlite':
  300. count['flashlite'] = 1
  301. stim['act'] = 10
  302. elseif $ARGS[0] = 'flash':
  303. count['flash'] = 1
  304. stim['act'] = 30
  305. elseif $ARGS[0] = 'kiss_give':
  306. stim['act'] = 20
  307. elseif $ARGS[0] = 'breasts_give':
  308. stim['act'] = 20
  309. elseif $ARGS[0] = 'massage_give':
  310. stim['act'] = 10
  311. elseif $ARGS[0] = 'foreplay_give':
  312. stim['act'] = 20
  313. elseif $ARGS[0] = 'cuni_give':
  314. count['cuni_give'] = 1
  315. stim['act'] = 30
  316. stim_les = 1
  317. elseif $ARGS[0] = 'rimming_give':
  318. count['rimming_give'] = 1
  319. stim['act'] = 25
  320. elseif $ARGS[0] = 'anal_finger_give':
  321. count['anal_finger_give'] = 1
  322. stim['act'] = 40
  323. elseif $ARGS[0] = 'anal_fist_give':
  324. count['anal_fist_give'] = 1
  325. stim['act'] = 30
  326. elseif $ARGS[0] = 'anal_dildo_give':
  327. count['anal_dildo_give'] = 1
  328. stim['act'] = 40
  329. elseif $ARGS[0] = 'anal_vibe_give':
  330. count['anal_vibe_give'] = 1
  331. stim['act'] = 40
  332. elseif $ARGS[0] = 'anal_strap_give':
  333. count['anal_strap_give'] = 1
  334. stim['act'] = 40
  335. elseif $ARGS[0] = 'vaginal_finger_give':
  336. count['vaginal_finger_give'] = 1
  337. stim['act'] = 60
  338. stim_les = 1
  339. elseif $ARGS[0] = 'vaginal_fist_give':
  340. count['vaginal_fist_give'] = 1
  341. stim['act'] = 50
  342. stim_les = 1
  343. elseif $ARGS[0] = 'vaginal_dildo_give':
  344. count['vaginal_dildo_give'] = 1
  345. stim['act'] = 60
  346. stim_les = 1
  347. elseif $ARGS[0] = 'vaginal_strap_give':
  348. count['vaginal_strap_give'] = 1
  349. stim['act'] = 70
  350. stim_les = 1
  351. elseif $ARGS[0] = 'vaginal_vibe_give':
  352. count['vaginal_vibe_give'] = 1
  353. stim['act'] = 60
  354. stim_les = 1
  355. elseif $ARGS[0] = 'hj':
  356. if temp_unaware = 1:
  357. count['hidden_hj'] = 1
  358. else
  359. count['hj'] = 1
  360. end
  361. stim['act'] = 25
  362. elseif $ARGS[0] = 'bj':
  363. if temp_unaware = 1:
  364. count['hidden_bj'] = 1
  365. else
  366. count['bj'] = 1
  367. end
  368. stim['act'] = 45
  369. if temp_dick > pcs_throat: pcs_throat += 1
  370. elseif $ARGS[0] = 'footjob':
  371. if temp_unaware = 1:
  372. count['hidden_footjob'] = 1
  373. else
  374. count['footjob'] = 1
  375. end
  376. stim['act'] = 25
  377. stim_foot = 1
  378. end
  379. if stim['mag'] > 9: stim['mag'] = 9
  380. if ARGS[1] > 0: minut += ARGS[1]
  381. stim['time'] = iif(ARGS[1]>0,ARGS[1],-ARGS[1])
  382. !!Adds effects due to sexual perversions
  383. stim['kinkno'] = 0
  384. stim['kink'] = 0
  385. !! Auto adding of lesbian and foot fetishes for acts that must involve them
  386. if stim_les = 1:
  387. stim['kink'] += lesbian['exp']
  388. stim['pref'] += lesbian['pref']
  389. stim['kinkno'] += 1
  390. if temp_unaware = 1:
  391. stim['hidden_lesbian'] = 1
  392. else
  393. stim['lesbian'] = 1
  394. end
  395. end
  396. if stim_foot = 1:
  397. stim['kink'] += feet['exp']
  398. stim['pref'] += feet['pref']
  399. stim['kinkno'] += 1
  400. stim['feet'] = 1
  401. end
  402. if $ARGS[1] ! 'porn' and $ARGS[1] ! 'voyeur':
  403. i = 2
  404. :stimloop
  405. if $ARGS[i] ! '':
  406. !!Skipping lesbian and foot where auto added to avoid duplication
  407. if stim_les = 1 and $ARGS[i] = 'lesbian':i += 1 & jump 'stimloop'
  408. if stim_foot = 1 and $ARGS[i] = 'feet':i += 1 & jump 'stimloop'
  409. if $ARGS[i] = 'bound':
  410. stim['kink'] += bondage['exp']
  411. stim['pref'] += bondage['pref']
  412. stim['kinkno'] += 1
  413. stim['bound'] = 1
  414. elseif $ARGS[i] = 'beast':
  415. stim['kink'] += bestiality['exp']
  416. stim['pref'] += bestiality['pref']
  417. stim['kinkno'] += 1
  418. stim['beast'] = 1
  419. elseif $ARGS[i] = 'exhibitionism':
  420. stim['kink'] += exhibitionism['exp']
  421. stim['pref'] += exhibitionism['pref']
  422. inhib_exp += rand(2,6)
  423. stim['kinkno'] += 1
  424. stim['exhibitionism'] = 1
  425. elseif $ARGS[i] = 'rough':
  426. stim['kink'] += rough['exp']
  427. stim['pref'] += rough['pref']
  428. stim['kinkno'] += 1
  429. stim['rough'] = 1
  430. elseif $ARGS[i] = 'prostitution':
  431. stim['kink'] += prostitution['exp']
  432. stim['pref'] += prostitution['pref']
  433. stim['kinkno'] += 1
  434. if temp_unaware = 1:
  435. stim['hidden_prostitution'] = 1
  436. else
  437. stim['prostitution'] = 1
  438. end
  439. elseif $ARGS[i] = 'dom':
  440. stim['kink'] += dom['exp']
  441. stim['pref'] += pcs_dom
  442. stim['kinkno'] += 1
  443. stim['dom'] = 1
  444. elseif $ARGS[i] = 'sub':
  445. stim['kink'] += sub['exp']
  446. stim['pref'] += sub
  447. stim['kinkno'] += 1
  448. stim['sub'] = 1
  449. elseif $ARGS[i] = 'incest':
  450. stim['kink'] += incest['exp']
  451. stim['pref'] += incest['pref']
  452. stim['kinkno'] += 1
  453. stim['incest'] = 1
  454. elseif $ARGS[i] = 'feet':
  455. stim['kink'] += feet['exp']
  456. stim['pref'] += feet['pref']
  457. stim['kinkno'] += 1
  458. stim['feet'] = 1
  459. elseif $ARGS[i] = 'lesbian':
  460. stim['kink'] += lesbian['exp']
  461. stim['pref'] += lesbian['pref']
  462. stim['kinkno'] += 1
  463. if temp_unaware = 1:
  464. stim['hidden_lesbian'] = 1
  465. else
  466. stim['lesbian'] = 1
  467. end
  468. elseif $ARGS[i] = 'group':
  469. stim['kink'] += group['exp']
  470. stim['pref'] += group['pref']
  471. stim['kinkno'] += 1
  472. if temp_unaware = 1:
  473. stim['hidden_group'] = 1
  474. else
  475. stim['group'] = 1
  476. end
  477. elseif $ARGS[i] = 'gangbang':
  478. stim['kink'] += gang['exp']
  479. stim['pref'] += gang['pref']
  480. stim['kinkno'] += 1
  481. if temp_unaware = 1:
  482. stim['hidden_gang'] = 1
  483. else
  484. stim['gang'] = 1
  485. end
  486. elseif $ARGS[i] = 'humiliation':
  487. stim['kink'] += humiliation['exp']
  488. stim['pref'] += humiliation['pref']
  489. stim['kinkno'] += 1
  490. stim['humiliation'] = 1
  491. elseif $ARGS[i] = 'maso':
  492. stim['kink'] += maso['exp']
  493. stim['pref'] += maso['pref']
  494. stim['kinkno'] += 1
  495. stim['maso'] = 1
  496. elseif $ARGS[i] = 'deepthroat':
  497. stim['kink'] += deepthroat['exp']
  498. stim['pref'] += deepthroat['pref']
  499. stim['kinkno'] += 1
  500. stim['deepthroat'] = 1
  501. !!unknown is for sex with an unknown partner, this could be a gloryhole or unconscious
  502. elseif $ARGS[i] = 'unknown':
  503. stim['kink'] += unknown['exp']
  504. stim['pref'] += unknown['pref']
  505. stim['kinkno'] += 1
  506. stim['unknown'] = 1
  507. elseif $ARGS[i] = 'gloryhole':
  508. stim['kink'] += gloryhole['exp']
  509. stim['pref'] += gloryhole['pref']
  510. stim['kinkno'] += 1
  511. if temp_unaware = 1:
  512. stim['hidden_gloryhole'] = 1
  513. else
  514. stim['gloryhole'] = 1
  515. end
  516. elseif $ARGS[i] = 'rape':
  517. stim['kink'] += rape['exp']
  518. stim['pref'] += rape['pref']
  519. stim['kinkno'] += 1
  520. if temp_unaware = 1:
  521. stim['hidden_rape'] = 1
  522. else
  523. stim['rape'] = 1
  524. end
  525. elseif $ARGS[i] = 'futa':
  526. stim['kink'] += futa['exp']
  527. stim['pref'] += futa['pref']
  528. stim['kinkno'] += 1
  529. if temp_unaware = 1:
  530. stim['hidden_futa'] = 1
  531. else
  532. stim['futa'] = 1
  533. end
  534. end
  535. i += 1
  536. jump 'stimloop'
  537. end
  538. end
  539. !!Fetishes are divided by total number of fetishes
  540. if stim['kinkno'] ! 0:
  541. stim['kink'] = stim['kink']/stim['kinkno']
  542. stim['pref'] = (stim['pref']/stim['kinkno'])
  543. stim['kinkno'] = 0
  544. end
  545. !!Bonus from fetishes, randomised chance for each level of bonus
  546. if rand(0,100) < stim['kink']:
  547. stim['kink'] = 120
  548. elseif rand(0,80) < stim['kink']:
  549. stim['kink'] = 110
  550. elseif rand(0,60) < stim['kink']:
  551. stim['kink'] = 100
  552. elseif rand(0,40) < stim['kink']:
  553. stim['kink'] = 90
  554. else
  555. stim['kink'] = 80
  556. end
  557. !!arousal calculation
  558. stim['total'] = ((stim['mag']*stim['act']*stim['kink']/100) + stim['pref'])*stim['time'] / 120
  559. !!Reduction in arousal linked to pain, masochism helps to deal with this
  560. if pain['total'] > 0:
  561. if maso['pref'] <= 0 and pain['total'] < 50:
  562. if pain['total'] - (maso['exp'] + 1 / 6) > 0:stim['total'] -= (pain['total'] - (maso['exp'] / 6))
  563. elseif maso['pref'] < 25 and pain['total'] < 55:
  564. stim['total'] += (pain['total'] * maso['exp'] +1 / 400)/60*stim['time']
  565. elseif maso['pref'] < 50 and pain['total'] < 70:
  566. stim['total'] += (pain['total'] * maso['exp'] + 1 / 300)/60*stim['time']
  567. elseif maso['pref'] < 75 and pain['total'] < 85:
  568. stim['total'] += (pain['total'] * maso['exp'] + 1 / 200)/60*stim['time']
  569. elseif maso['pref'] >= 75:
  570. stim['total'] += (pain['total'] * maso['exp'] + 1 / 100)/60*stim['time']
  571. else
  572. stim['total'] = 0
  573. end
  574. end
  575. stim['event'] += stim['total']
  576. pcs_horny += stim['total']
  577. !! This is to allow a Succubus with the right skill level to handle any size then go back to original size
  578. if sucvagorg ! 0 and sucvagorg ! pcs_vag: pcs_vag = sucvagorg & killvar 'sucvagorg'
  579. if sucanusorg ! 0 and sucanusorg ! pcs_ass: pcs_ass = sucanusorg & killvar 'sucanusorg'
  580. !!-------------------Orgasm-------------------
  581. !!This is intended to be hidden and the stats and calculations should not appear in game.
  582. orgasm_buildup += stim['total']
  583. if $orgasm_or ! 'no' and $ARGS[0] ! 'flashlite' and $ARGS[0] ! 'flash' and orgasm_flag ! 0:
  584. if $orgasm_or = 'yes' or $orgasm_or = 'custom':
  585. gs 'orgasm', $ARGS[0]
  586. elseif orgasm_buildup >= 100 and stim['total'] > 10 and rand(1,100) <= 20:
  587. gs 'orgasm', $ARGS[0]
  588. elseif orgasm_buildup >= 150 and stim['total'] > 6 and rand(1,100) <= 50:
  589. gs 'orgasm', $ARGS[0]
  590. elseif orgasm_buildup >= 200 and stim['total'] > 4:
  591. gs 'orgasm', $ARGS[0]
  592. end
  593. end
  594. if $orgasm_or ! 'no' and orgasm_buildup >= 300 and pcs_horny >= 60: gs 'orgasm', $ARGS[0]
  595. killvar 'temp_dick'
  596. killvar 'temp_unaware'
  597. killvar '$orgasm_txt'
  598. killvar '$stim_les'
  599. killvar '$stim_foot'
  600. gs 'nichUtil','onArouse',$ARGS[0]
  601. end
  602. !!-----------------------------------------------
  603. if $ARGS[0] = 'end':
  604. if orgasm_buildup > 350: orgasm_buildup = 350
  605. if orgasm_buildup > 300: orgasm_buildup -= 10
  606. if orgasm_buildup > 200: orgasm_buildup -= 10
  607. if orgasm_buildup > 100: orgasm_buildup -= 10
  608. if stim['lesbian'] = 1: lesbian += 1
  609. if stim['hidden_lesbian'] = 1: hidden_lesbian += 1
  610. if stim['gang'] = 1 or stim['group'] = 1: gang += 1
  611. if stim['hidden_gang'] = 1 or stim['hidden_group'] = 1: hidden_gang += 1
  612. if stim['gloryhole'] = 1: gloryhole += 1
  613. if stim['hidden_gloryhole'] = 1: hidden_gloryhole += 1
  614. if stim['rape'] = 1: rape += 1
  615. if stim['hidden_rape'] = 1: hidden_rape += 1
  616. if stim['futa'] = 1: futa += 1
  617. if stim['hidden_futa'] = 1: hidden_futa += 1
  618. if stim['prostitution'] = 1: slutty += 1
  619. if stim['hidden_prostitution'] = 1: hidden_slutty += 1
  620. killvar '$orgasm_or'
  621. anal_slip = 0
  622. vaginal_slip = 0
  623. !!Updating fetish exp for acts carried out and clearing data
  624. gs 'arousal', 'checks', 'maso'
  625. gs 'arousal', 'checks', 'bound'
  626. gs 'arousal', 'checks', 'beast'
  627. gs 'arousal', 'checks', 'exhibitionism'
  628. gs 'arousal', 'checks', 'rough'
  629. gs 'arousal', 'checks', 'prostitution'
  630. gs 'arousal', 'checks', 'hidden_prostitution'
  631. gs 'arousal', 'checks', 'dom'
  632. gs 'arousal', 'checks', 'sub'
  633. gs 'arousal', 'checks', 'incest'
  634. gs 'arousal', 'checks', 'feet'
  635. gs 'arousal', 'checks', 'lesbian'
  636. gs 'arousal', 'checks', 'hidden_lesbian'
  637. gs 'arousal', 'checks', 'group'
  638. gs 'arousal', 'checks', 'hidden_group'
  639. gs 'arousal', 'checks', 'gang'
  640. gs 'arousal', 'checks', 'hidden_gang'
  641. gs 'arousal', 'checks', 'humiliation'
  642. gs 'arousal', 'checks', 'deepthroat'
  643. gs 'arousal', 'checks', 'unknown'
  644. gs 'arousal', 'checks', 'gloryhole'
  645. gs 'arousal', 'checks', 'hidden_gloryhole'
  646. gs 'arousal', 'checks', 'rape'
  647. gs 'arousal', 'checks', 'hidden_rape'
  648. gs 'arousal', 'checks', 'futa'
  649. gs 'arousal', 'checks', 'hidden_futa'
  650. stim['event'] = 0
  651. !!Adding to counts for character stats
  652. gs 'arousal', 'count', 'mast'
  653. gs 'arousal', 'count', 'porn'
  654. gs 'arousal', 'count', 'cuni'
  655. gs 'arousal', 'count', 'rimming'
  656. gs 'arousal', 'count', 'trib'
  657. gs 'arousal', 'count', 'anal'
  658. gs 'arousal', 'count', 'hidden_anal'
  659. gs 'arousal', 'count', 'anal_finger'
  660. gs 'arousal', 'count', 'anal_fist'
  661. gs 'arousal', 'count', 'anal_dildo'
  662. gs 'arousal', 'count', 'anal_strap'
  663. gs 'arousal', 'count', 'anal_vibe'
  664. gs 'arousal', 'count', 'vaginal'
  665. gs 'arousal', 'count', 'hidden_vaginal'
  666. gs 'arousal', 'count', 'vaginal_finger'
  667. gs 'arousal', 'count', 'vaginal_fist'
  668. gs 'arousal', 'count', 'vaginal_dildo'
  669. gs 'arousal', 'count', 'vaginal_strap'
  670. gs 'arousal', 'count', 'vaginal_vibe'
  671. gs 'arousal', 'count', 'cuni_give'
  672. gs 'arousal', 'count', 'rimming_give'
  673. gs 'arousal', 'count', 'anal_finger_give'
  674. gs 'arousal', 'count', 'anal_fist_give'
  675. gs 'arousal', 'count', 'anal_dildo_give'
  676. gs 'arousal', 'count', 'anal_vibe_give'
  677. gs 'arousal', 'count', 'anal_strap_give'
  678. gs 'arousal', 'count', 'vaginal_finger_give'
  679. gs 'arousal', 'count', 'vaginal_fist_give'
  680. gs 'arousal', 'count', 'vaginal_dildo_give'
  681. gs 'arousal', 'count', 'vaginal_strap_give'
  682. gs 'arousal', 'count', 'vaginal_vibe_give'
  683. gs 'arousal', 'count', 'hj'
  684. gs 'arousal', 'count', 'bj'
  685. gs 'arousal', 'count', 'hidden_hj'
  686. gs 'arousal', 'count', 'hidden_bj'
  687. gs 'arousal', 'count', 'footjob'
  688. gs 'arousal', 'count', 'hidden_footjob'
  689. gs 'arousal', 'count2', 'flashlite'
  690. gs 'arousal', 'count2', 'flash'
  691. gs 'arousal', 'count2', 'voyeur'
  692. !! Thats here because there is currently a variable zoo.
  693. if zoo > stat['beast']: stat['beast'] = zoo
  694. if stat['beast'] > zoo: zoo = stat['beast']
  695. !!
  696. end
  697. if $ARGS[0] = 'count':
  698. if dyneval('RESULT = count[''<<$ARGS[1]>>'']') = 1:
  699. dynamic 'count[''<<$ARGS[1]>>''] = 0'
  700. dynamic 'stat[''<<$ARGS[1]>>''] += 1'
  701. count['flashlite'] = 0
  702. count['flash'] = 0
  703. count['voyeur'] = 0
  704. end
  705. end
  706. if $ARGS[0] = 'count2':
  707. if dyneval('RESULT = count[''<<$ARGS[1]>>'']') = 1:
  708. dynamic 'count[''<<$ARGS[1]>>''] = 0'
  709. dynamic 'stat[''<<$ARGS[1]>>''] += 1'
  710. end
  711. end
  712. if $ARGS[0] = 'checks':
  713. if dyneval('RESULT = stim[''<<$ARGS[1]>>'']') = 1:
  714. dynamic 'stim[''<<$ARGS[1]>>''] = 0'
  715. dynamic '<<$ARGS[1]>>[''exp''] += 1'
  716. end
  717. end
  718. --- arousal ---------------------------------