arousal.qsrc 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908
  1. # arousal
  2. !!{ For checking arousal and when applicable triggering orgasms.
  3. $ARGS[0] the action causing arousal:
  4. All acts are from Sveta''s perspective and in cases of both giving and receiving, receiving should be used.
  5. It can be when receiving any of the following
  6. 'masturbate' - self stimulation
  7. 'porn' - viewing pornographic material
  8. 'voyeur_sex' - watching, usually as in spying on, other people have sex
  9. 'voyeur' - watching, usually as in spying on, erotic acts of others
  10. 'erotic' - being aroused by eroticism
  11. 'erotic_nudity' - being aroused by nudity of others
  12. 'trib' - rubbing pussy against another pussy
  13. 'massage' - rubbing your body, back, feet, etc. with their hands/arms
  14. 'cuni' - stimulation of your pussy by someones toungue
  15. 'rimming' - stimulation of your anus by someones toungue
  16. 'vaginal' 'vaginal_finger' 'vaginal_fist' 'vaginal_dildo' 'vaginal_strap' 'vaginal_vibe' - stimulation of your vagina with a penis and various others
  17. 'anal' 'anal_finger' 'anal_fist' 'anal_dildo' 'anal_strap' 'anal_vibe' - stimulation of your anus with a penis and various others
  18. 'kiss' - snogging, tonsil tennis, lip locking, etc.
  19. 'BDSM' - receiving candle wax, flogging, leash play, bondage etc
  20. 'pee' - being peed upon
  21. also when giving any of the following:
  22. 'flashlite' - flashing underwear
  23. 'flash' - flashing naked breasts/arse/vagina
  24. 'massage_give' - rubbing their body, back, feet, etc. with your hands/arms
  25. 'cuni_give' - stimulating someones pussy with your toungue
  26. 'rimming_give' - stimulating someones anus with your toungue
  27. 'vaginal_finger_give' 'vaginal_fist_give' 'vaginal_dildo_give' 'vaginal_strap_give' 'vaginal_vibe_give' - stimulating someones vagina in various ways
  28. 'anal_finger_give' 'anal_fist_give' 'anal_dildo_give' 'anal_vibe_give' 'anal_strap_give' - stimulating someones anus in various ways
  29. 'hj' - jerking a guy off with your hand
  30. 'bj' - sucking a guy off
  31. 'titjob' - using boobs to jerk off a guy
  32. 'footjob' - using feet to jerk off a guy
  33. 'BDSM_give' - giving candle wax, flogging, leash play, bondage etc
  34. 'pee_give' - peeing on somone
  35. finally
  36. 'foreplay' - receiving other stuff
  37. 'foreplay_give' - giving other stuff
  38. 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.
  39. $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
  40. The variables used can be set by calling boyStat e.g. gs 'boyStat', 'A75', 'a' will set dick1 for NPC A75
  41. $ARGS[2] - [8] Are optional but can be upto 7 fetishes involved in the act and can be any of the following:
  42. 'maso' 'bound' 'beast' 'exhibitionism' 'rough' 'prostitution' 'dom' 'sub' 'incest' 'feet' 'lesbian' 'group' 'gangbang' 'humiliation' 'deepthroat' 'unknown' 'gloryhole' 'rape' 'futa'
  43. Format to use: gs 'arousal', 'act', 'duration', 'fetish', 'fetish', 'fetish', 'fetish', 'fetish', 'fetish', 'fetish'
  44. eg: gs 'arousal', 'trib', 10, 'bound', 'sub'
  45. In this case lesbianism is automatically added, much as feet would be applied to 'footjob'
  46. 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.
  47. The lube will remain applied to the orifice in question until 'end' is called. The usage of Svetas lube and checks for her having any must be done in the sex act.
  48. The lubrication is binded with anal or vaginal action. I think that the best combo is with 'anal_finger' and 'vaginal_finger'
  49. Only call one at a time, if more required, use multiple calls
  50. 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!
  51. no_orgasm_msg - if one of the arguments $ARGS[2] - [8] is set to 'no_orgasm_msg', the system will not generate a generic arousal message
  52. You can override the orgasm to force or prevent, to do so use:
  53. $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
  54. $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
  55. $orgasm_or = 'yes' and 'custom' require that the first arousal call is a call that can trigger an orgasm, the following arousal calls can trigger it: masturbate, 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 can trigger
  56. $orgasm_or = 'no' to prevent orgasm, it will remain in place until manually changed, or if end is called.
  57. $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.
  58. }
  59. temp_anal = 0
  60. temp_unaware = 0
  61. !!turns orgasm text off, there will be no confirmation that Sveta has orgasmed
  62. temp_text = 0
  63. !!orgasms restricted to direct stimulation using this flag
  64. orgasm_flag = 0
  65. if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0] ! 'count2':
  66. if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'unaware') > 0:
  67. temp_unaware = 1
  68. end
  69. if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'no_orgasm_msg') > 0:
  70. temp_text = 1
  71. end
  72. if mid($ARGS[2],1,4) = 'dick':
  73. temp_dick = dyneval('result='+$ARGS[2])
  74. temp_silavag = dyneval('result=silavag'+mid($ARGS[2],5,len($ARGS[2])-4))
  75. $temp_dick_girth = dyneval('$result=$dick_girth'+mid($ARGS[2],5,len($ARGS[2])-4))
  76. else
  77. temp_dick = dick
  78. temp_silavag = silavag
  79. $temp_dick_girth = $dick_girth
  80. end
  81. 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
  82. grange = dyneval('result=strpos(''skinny slimx well pr thicker thickx massive monstrous'',$ARGS[0])',mid($temp_dick_girth+'x',1,6))/2
  83. !! first let us determine how slippery are pc''s holes
  84. if vaginal_slip < pcs_horny / 10: vaginal_slip = pcs_horny / 10
  85. if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'lube') > 0:
  86. if ar_anal_lube = 0:
  87. if mid($ARGS[0],1,4) = 'anal':
  88. anal_slip = 8
  89. ar_anal_lube = 1
  90. end
  91. end
  92. if ar_vag_lube = 0:
  93. if mid($ARGS[0],1,4) = 'vagi':
  94. vaginal_slip = 8
  95. ar_vag_lube = 1
  96. end
  97. end
  98. end
  99. !! This is to allow a Succubus with the right skill level to handle any size then go back to original size
  100. if succubusflag = 1 and sucskill >= 4:
  101. if mid($ARGS[0],1,4) = 'vagi' and temp_dick ! pcs_vag:
  102. if temp_dick < pcs_vag - 5 or temp_dick > pcs_vag + 5: pcs_mood -= 10
  103. if sucvagorg = 0: sucvagorg = pcs_vag
  104. pcs_vag = temp_dick
  105. end
  106. if mid($ARGS[0],1,4) = 'anal' and temp_dick ! pcs_ass:
  107. if temp_dick < pcs_ass - 5 or temp_dick > pcs_ass + 5: pcs_mood -= 10
  108. if sucanusorg = 0: sucanusorg = pcs_ass
  109. pcs_ass = temp_dick
  110. end
  111. end
  112. !!set a magnitude as a random
  113. stim['mag'] = rand(0,3) + rand(0,3) + rand(0,3)
  114. !!add count and effects due to action
  115. if $ARGS[0] = 'masturbate':
  116. orgasm_flag = 1
  117. count['mast'] = 1
  118. stim['mag'] += 6
  119. stim['act'] = 100
  120. elseif $ARGS[0] = 'porn':
  121. count['porn'] = 1
  122. stim['act'] = 25
  123. elseif $ARGS[0] = 'voyeur':
  124. count['voyeur'] = 1
  125. stim['act'] = 20
  126. elseif $ARGS[0] = 'voyeur_sex':
  127. count['voyeur_sex'] = 1
  128. stim['act'] = 35
  129. elseif $ARGS[0] = 'erotic':
  130. stim['act'] = 5
  131. elseif $ARGS[0] = 'erotic_nudity':
  132. stim['act'] = 5
  133. count['erotic_nudity'] = 1
  134. elseif $ARGS[0] = 'kiss':
  135. count['kiss'] = 1
  136. stim['act'] = 10
  137. !! elseif $ARGS[0] = 'breasts':
  138. !! stim['act'] = 30
  139. !! !! 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.
  140. !! milkedvolume += func('lact_lib','$get_breastmilk', 8, ARGS[1])
  141. elseif $ARGS[0] = 'massage':
  142. count['massage'] = 1
  143. stim['act'] = 25
  144. elseif $ARGS[0] = 'foreplay':
  145. count['foreplay'] = 1
  146. stim['act'] = 20
  147. elseif $ARGS[0] = 'cuni':
  148. orgasm_flag = 1
  149. count['cuni'] = 1
  150. stim['mag'] += 4
  151. stim['act'] = 80
  152. elseif $ARGS[0] = 'rimming':
  153. orgasm_flag = 1
  154. count['rimming'] = 1
  155. stim['act'] = 30
  156. elseif $ARGS[0] = 'trib':
  157. orgasm_flag = 1
  158. count['trib'] = 1
  159. stim['mag'] += 3
  160. stim['act'] = 70
  161. stim_les = 1
  162. elseif $ARGS[0] = 'anal':
  163. orgasm_flag = 1
  164. temp_anal = 1
  165. if temp_unaware = 1:
  166. count['hidden_anal'] = 1
  167. else
  168. count['anal'] = 1
  169. end
  170. if pcs_ass < temp_dick:pcs_ass += 1
  171. if pcs_ass*2 < temp_dick:pcs_ass += 1
  172. !! length and girth abilities of anus are not also separated , but I suppose that they are related although it is not propable
  173. !! we can estimate difference in girth and length anal_girth_difference and anal_lenght_difference - names are shortened
  174. altdif = temp_dick - pcs_ass
  175. agrdif = grange - pcs_ass
  176. !! negative influence of the difference can be reduced by sex skill and also by lubricant
  177. !! I made it as simply as possible so you do not complain about reality, feel free to modify the algorithm
  178. !! when the boy is skilled, he can compensate the difference partly
  179. altdif = altdif / (temp_silavag+1)
  180. agrdif = agrdif *(5/4 - 1/(4 - temp_silavag))
  181. !! when the boy is skilled, he does not harm PC with his long dick
  182. if (temp_silavag = 2) and (altdif > 0): altdif = 0
  183. !! lube can compensate the difference a bit
  184. if -agrdif > anal_slip: agrdif = agrdif + anal_slip else if agrdif < 0: agrdif = 0
  185. if agrdif > anal_slip: agrdif = agrdif - anal_slip else if agrdif > 0: agrdif = 0
  186. stim['act'] = 80 - (iif(altdif>0,altdif,-altdif) + iif(agrdif >0,agrdif,-agrdif)) + temp_silavag*8
  187. !! if the dick is smaller, it cannot harm PC
  188. if agrdif < 0: agrdif = 0
  189. if altdif < 0: altdif = 0
  190. !! calculate the harm
  191. agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
  192. !! the pain lover the pleasure
  193. gs 'pain', (agrdif + altdif)/5 , 'asshole', 'stretch'
  194. stim['act'] = stim['act'] - (agrdif + altdif)
  195. elseif $ARGS[0] = 'anal_finger':
  196. orgasm_flag = 1
  197. temp_anal = 1
  198. count['anal_finger'] = 1
  199. stim['act'] = 40
  200. elseif $ARGS[0] = 'anal_fist':
  201. orgasm_flag = 1
  202. temp_anal = 1
  203. count['anal_fist'] = 1
  204. stim['act'] = 30
  205. if pcs_ass + anal_slip < 30:
  206. pcs_ass = 30
  207. gs 'pain', 4-agape, 'asshole', 'stretch'
  208. if agape < 3:agape = 3
  209. end
  210. elseif $ARGS[0] = 'anal_dildo':
  211. orgasm_flag = 1
  212. temp_anal = 1
  213. count['anal_dildo'] = 1
  214. !! the same as for 'anal'
  215. altdif = temp_dick - pcs_ass
  216. agrdif = grange - pcs_ass
  217. altdif = altdif / (temp_silavag+1)
  218. agrdif = agrdif *(5/4 - 1/(4 - temp_silavag))
  219. if (temp_silavag = 2) and (altdif > 0): altdif = 0
  220. if agrdif > anal_slip: agrdif = agrdif - anal_slip else if agrdif > 0: agrdif = 0
  221. if -agrdif > anal_slip: agrdif = agrdif + anal_slip else if agrdif < 0: agrdif = 0
  222. stim['act'] = 80 - (iif(altdif>0,altdif,-altdif) + iif(agrdif >0,agrdif,-agrdif)) + temp_silavag*8
  223. if agrdif < 0: agrdif = 0
  224. if altdif < 0: altdif = 0
  225. agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
  226. gs 'pain', (agrdif + altdif)/5 , 'asshole', 'stretch'
  227. stim['act'] = stim['act'] - (agrdif + altdif)
  228. elseif $ARGS[0] = 'anal_strap':
  229. orgasm_flag = 1
  230. temp_anal = 1
  231. count['anal_strap'] = 1
  232. !! the same as for 'anal'
  233. altdif = temp_dick - pcs_ass
  234. agrdif = grange - pcs_ass
  235. altdif = altdif / (temp_silavag+1)
  236. agrdif = agrdif *(5/4 - 1/(4 - temp_silavag))
  237. if (temp_silavag = 2) and (altdif > 0): altdif = 0
  238. if agrdif > anal_slip: agrdif = agrdif - anal_slip else if agrdif > 0: agrdif = 0
  239. if -agrdif > anal_slip: agrdif = agrdif + anal_slip else if agrdif < 0: agrdif = 0
  240. stim['act'] = 80 - (iif(altdif>0,altdif,-altdif) + iif(agrdif >0,agrdif,-agrdif)) + temp_silavag*8
  241. if agrdif < 0: agrdif = 0
  242. if altdif < 0: altdif = 0
  243. agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
  244. gs 'pain', (agrdif + altdif)/5 , 'asshole', 'stretch'
  245. stim['act'] = stim['act'] - (agrdif + altdif)
  246. elseif $ARGS[0] = 'anal_vibe':
  247. orgasm_flag = 1
  248. temp_anal = 1
  249. count['anal_vibe'] = 1
  250. stim['mag'] += 1
  251. stim['act'] = 60
  252. elseif $ARGS[0] = 'vaginal':
  253. orgasm_flag = 1
  254. !! pre-cum check
  255. if rand(0,120) < ARGS[1]: cumprecheck = 1 & gs 'cum_manage'
  256. if temp_unaware = 1:
  257. count['hidden_vaginal'] = 1
  258. else
  259. count['vaginal'] = 1
  260. end
  261. stim['mag'] += 3
  262. !! This section deals with pcs_vag if she still thinks she is virgin. There are many instances where virginity is
  263. !! checked via pcs_vag = 0, so for the time being i will not adjust pcs_vag if she believes.
  264. if temp_unaware = 0 or count['vaginal'] > 0:
  265. if pcs_vag < dick:pcs_vag += 1
  266. if pcs_vag*2 < dick:pcs_vag += 1
  267. end
  268. !! length and girth abilities of vagina are not separated , but I suppose that they are related
  269. !! we can estimate difference in girth and length vaginal_girth_difference and vaginal_lenght_difference - names are shortened
  270. vgrdif = grange - pcs_vag
  271. vltdif = temp_dick - pcs_vag
  272. !! negative influence of the difference can be reduced by sex skill and also by PCs horniness, using of a lubricant is not established yet
  273. !! I made it as simply as possible so you do not complain about reality, feel free to modify the algorithm
  274. !! when the boy is skilled, he can compensate the difference partly
  275. vltdif = vltdif / (temp_silavag+1)
  276. vgrdif = vgrdif *(5/4 - 1/(4 - temp_silavag))
  277. !! when the boy is skilled, he does not harm PC with his long dick
  278. if (temp_silavag = 2) and (vltdif > 0): vltdif = 0
  279. !! even PC horniness can compensate the difference
  280. if vgrdif > vaginal_slip: vgrdif = vgrdif - vaginal_slip else if (vgrdif > 0): vgrdif = 0
  281. if -1*vgrdif > vaginal_slip: vgrdif = vgrdif + vaginal_slip else if (vgrdif < 0): vgrdif = 0
  282. stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
  283. !! if the dick is smaller, it cannot harm PC
  284. if vgrdif < 0: vgrdif = 0
  285. if vltdif < 0: vltdif = 0
  286. !! calculate the harm
  287. vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
  288. !! the pain lover the pleasure
  289. gs 'pain', (vgrdif + vltdif)/5 , 'vaginal', 'stretch'
  290. stim['act'] = stim['act'] - (vgrdif + vltdif)
  291. elseif $ARGS[0] = 'vaginal_finger':
  292. orgasm_flag = 1
  293. count['vaginal_finger'] = 1
  294. stim['mag'] += 1
  295. stim['act'] = 80
  296. elseif $ARGS[0] = 'vaginal_fist':
  297. orgasm_flag = 1
  298. count['vaginal_fist'] = 1
  299. stim['act'] = 70
  300. if pcs_vag + vaginal_slip < 30:
  301. !! same as for 'vaginal'
  302. if temp_unaware = 0 or count['vaginal'] > 0:pcs_vag += 3
  303. gs 'pain', 3 - vgape, 'vaginal', 'stretch'
  304. if vgape < 3:vgape = 3
  305. end
  306. elseif $ARGS[0] = 'vaginal_dildo':
  307. orgasm_flag = 1
  308. count['vaginal_dildo'] = 1
  309. stim['mag'] += 1
  310. !! the same as for 'vaginal'
  311. if pcs_vag < temp_dick:pcs_vag += 1
  312. if pcs_vag*2 < temp_dick:pcs_vag += 1
  313. vgrdif = grange - pcs_vag
  314. vltdif = temp_dick - pcs_vag
  315. vltdif = vltdif / (temp_silavag+1)
  316. vgrdif = vgrdif *(5/4 - 1/(4 - temp_silavag))
  317. if (temp_silavag = 2) and (vltdif > 0): vltdif = 0
  318. if vgrdif > vaginal_slip: vgrdif = vgrdif - vaginal_slip else if (vgrdif > 0): vgrdif = 0
  319. if -1*vgrdif > vaginal_slip: vgrdif = vgrdif + vaginal_slip else if (vgrdif < 0): vgrdif = 0
  320. stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
  321. if vgrdif < 0: vgrdif = 0
  322. if vltdif < 0: vltdif = 0
  323. vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
  324. gs 'pain', (vgrdif + vltdif)/5 , 'vaginal', 'stretch'
  325. stim['act'] = stim['act'] - (vgrdif + vltdif)
  326. elseif $ARGS[0] = 'vaginal_strap':
  327. orgasm_flag = 1
  328. count['vaginal_strap'] = 1
  329. stim['mag'] += 1
  330. !! virginal capacity increase
  331. if pcs_vag < temp_dick:pcs_vag += 1
  332. if pcs_vag*2 < temp_dick:pcs_vag += 1
  333. !! the same as for 'vaginal'
  334. vgrdif = grange - pcs_vag
  335. vltdif = temp_dick - pcs_vag
  336. vltdif = vltdif / (temp_silavag+1)
  337. vgrdif = vgrdif *(5/4 - 1/(4 - temp_silavag))
  338. if (temp_silavag = 2) and (vltdif > 0): vltdif = 0
  339. if vgrdif > vaginal_slip: vgrdif = vgrdif - vaginal_slip else if (vgrdif > 0): vgrdif = 0
  340. if -1*vgrdif > vaginal_slip: vgrdif = vgrdif + vaginal_slip else if (vgrdif < 0): vgrdif = 0
  341. stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
  342. if vgrdif < 0: vgrdif = 0
  343. if vltdif < 0: vltdif = 0
  344. vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
  345. gs 'pain', (vgrdif + vltdif)/5 , 'vaginal', 'stretch'
  346. stim['act'] = stim['act'] - (vgrdif + vltdif)
  347. elseif $ARGS[0] = 'vaginal_vibe':
  348. orgasm_flag = 1
  349. count['vaginal_vibe'] = 1
  350. stim['mag'] += 2
  351. stim['act'] = 90
  352. elseif $ARGS[0] = 'flashlite':
  353. count['flashlite'] = 1
  354. stim['act'] = 10
  355. elseif $ARGS[0] = 'flash':
  356. count['flash'] = 1
  357. stim['act'] = 30
  358. elseif $ARGS[0] = 'BDSM':
  359. count['BDSM'] = 1
  360. stim['act'] = 20
  361. elseif $ARGS[0] = 'pee':
  362. count['pee'] = 1
  363. stim['act'] = 10
  364. elseif $ARGS[0] = 'massage_give':
  365. count['massage_give'] = 1
  366. stim['act'] = 10
  367. elseif $ARGS[0] = 'foreplay_give':
  368. count['foreplay_give'] = 1
  369. stim['act'] = 20
  370. elseif $ARGS[0] = 'cuni_give':
  371. count['cuni_give'] = 1
  372. stim['act'] = 30
  373. stim_les = 1
  374. elseif $ARGS[0] = 'rimming_give':
  375. count['rimming_give'] = 1
  376. stim['act'] = 25
  377. elseif $ARGS[0] = 'anal_finger_give':
  378. count['anal_finger_give'] = 1
  379. stim['act'] = 40
  380. elseif $ARGS[0] = 'anal_fist_give':
  381. count['anal_fist_give'] = 1
  382. stim['act'] = 30
  383. elseif $ARGS[0] = 'anal_dildo_give':
  384. count['anal_dildo_give'] = 1
  385. stim['act'] = 40
  386. elseif $ARGS[0] = 'anal_vibe_give':
  387. count['anal_vibe_give'] = 1
  388. stim['act'] = 40
  389. elseif $ARGS[0] = 'anal_strap_give':
  390. count['anal_strap_give'] = 1
  391. stim['act'] = 40
  392. elseif $ARGS[0] = 'vaginal_finger_give':
  393. count['vaginal_finger_give'] = 1
  394. stim['act'] = 60
  395. stim_les = 1
  396. elseif $ARGS[0] = 'vaginal_fist_give':
  397. count['vaginal_fist_give'] = 1
  398. stim['act'] = 50
  399. stim_les = 1
  400. elseif $ARGS[0] = 'vaginal_dildo_give':
  401. count['vaginal_dildo_give'] = 1
  402. stim['act'] = 60
  403. stim_les = 1
  404. elseif $ARGS[0] = 'vaginal_strap_give':
  405. count['vaginal_strap_give'] = 1
  406. stim['act'] = 70
  407. stim_les = 1
  408. elseif $ARGS[0] = 'vaginal_vibe_give':
  409. count['vaginal_vibe_give'] = 1
  410. stim['act'] = 60
  411. stim_les = 1
  412. elseif $ARGS[0] = 'hj':
  413. if temp_unaware = 1:
  414. count['hidden_hj'] = 1
  415. else
  416. count['hj'] = 1
  417. end
  418. stim['act'] = 25
  419. elseif $ARGS[0] = 'bj':
  420. if temp_unaware = 1:
  421. count['hidden_bj'] = 1
  422. else
  423. count['bj'] = 1
  424. end
  425. stim['act'] = 45
  426. if temp_dick > pcs_throat: pcs_throat += 1
  427. elseif $ARGS[0] = 'footjob':
  428. if temp_unaware = 1:
  429. count['hidden_footjob'] = 1
  430. else
  431. count['footjob'] = 1
  432. end
  433. stim['act'] = 25
  434. stim_foot = 1
  435. elseif $ARGS[0] = 'titjob':
  436. if temp_unaware = 1:
  437. count['hidden_titjob'] = 1
  438. else
  439. count['titjob'] = 1
  440. end
  441. stim['act'] = 45
  442. stim_titjob = 1
  443. elseif $ARGS[0] = 'BDSM_give':
  444. count['BDSM_give'] = 1
  445. stim['act'] = 20
  446. elseif $ARGS[0] = 'pee_give':
  447. count['pee_give'] = 1
  448. stim['act'] = 10
  449. end
  450. if stim['mag'] > 9: stim['mag'] = 9
  451. if ARGS[1] > 0: minut += ARGS[1]
  452. stim['time'] = iif(ARGS[1]>0,ARGS[1],-ARGS[1])
  453. !!Adds effects due to sexual perversions
  454. stim['kinkno'] = 0
  455. stim['kink'] = 0
  456. !! Auto adding of lesbian and foot fetishes for acts that must involve them
  457. if stim_les = 1:
  458. stim['kink'] += lesbian['exp']
  459. stim['pref'] += lesbian['pref']
  460. stim['kinkno'] += 1
  461. if temp_unaware = 1:
  462. stim['hidden_lesbian'] = 1
  463. else
  464. stim['lesbian'] = 1
  465. end
  466. end
  467. if stim_foot = 1:
  468. stim['kink'] += feet['exp']
  469. stim['pref'] += feet['pref']
  470. stim['kinkno'] += 1
  471. stim['feet'] = 1
  472. end
  473. if $ARGS[1] ! 'porn' and $ARGS[1] ! 'voyeur' and $ARGS[1] ! 'erotic':
  474. i = 2
  475. :stimloop
  476. if $ARGS[i] ! '':
  477. !!Skipping lesbian and foot where auto added to avoid duplication
  478. if stim_les = 1 and $ARGS[i] = 'lesbian':i += 1 & jump 'stimloop'
  479. if stim_foot = 1 and $ARGS[i] = 'feet':i += 1 & jump 'stimloop'
  480. if $ARGS[i] = 'bound':
  481. stim['kink'] += bound['exp']
  482. stim['pref'] += bound['pref']
  483. stim['kinkno'] += 1
  484. stim['bound'] = 1
  485. elseif $ARGS[i] = 'beast':
  486. stim['kink'] += beast['exp']
  487. stim['pref'] += beast['pref']
  488. stim['kinkno'] += 1
  489. stim['beast'] = 1
  490. elseif $ARGS[i] = 'exhibitionism':
  491. stim['kink'] += exhibitionism['exp']
  492. stim['pref'] += exhibitionism['pref']
  493. inhib_exp += rand(2,6)
  494. stim['kinkno'] += 1
  495. stim['exhibitionism'] = 1
  496. elseif $ARGS[i] = 'rough':
  497. stim['kink'] += rough['exp']
  498. stim['pref'] += rough['pref']
  499. stim['kinkno'] += 1
  500. stim['rough'] = 1
  501. elseif $ARGS[i] = 'prostitution':
  502. stim['kink'] += prostitution['exp']
  503. stim['pref'] += prostitution['pref']
  504. stim['kinkno'] += 1
  505. if temp_unaware = 1:
  506. stim['hidden_prostitution'] = 1
  507. else
  508. stim['prostitution'] = 1
  509. end
  510. elseif $ARGS[i] = 'dom':
  511. stim['kink'] += dom['exp']
  512. stim['pref'] += dom['pref']
  513. stim['kinkno'] += 1
  514. stim['dom'] = 1
  515. elseif $ARGS[i] = 'sub':
  516. stim['kink'] += sub['exp']
  517. stim['pref'] += sub['pref']
  518. stim['kinkno'] += 1
  519. stim['sub'] = 1
  520. elseif $ARGS[i] = 'incest':
  521. stim['kink'] += incest['exp']
  522. stim['pref'] += incest['pref']
  523. stim['kinkno'] += 1
  524. stim['incest'] = 1
  525. elseif $ARGS[i] = 'feet':
  526. stim['kink'] += feet['exp']
  527. stim['pref'] += feet['pref']
  528. stim['kinkno'] += 1
  529. stim['feet'] = 1
  530. elseif $ARGS[i] = 'lesbian':
  531. stim['kink'] += lesbian['exp']
  532. stim['pref'] += lesbian['pref']
  533. stim['kinkno'] += 1
  534. if temp_unaware = 1:
  535. stim['hidden_lesbian'] = 1
  536. else
  537. stim['lesbian'] = 1
  538. end
  539. elseif $ARGS[i] = 'group':
  540. stim['kink'] += group['exp']
  541. stim['pref'] += group['pref']
  542. stim['kinkno'] += 1
  543. if temp_unaware = 1:
  544. stim['hidden_group'] = 1
  545. else
  546. stim['group'] = 1
  547. end
  548. elseif $ARGS[i] = 'gangbang':
  549. stim['kink'] += gang['exp']
  550. stim['pref'] += gang['pref']
  551. stim['kinkno'] += 1
  552. if temp_unaware = 1:
  553. stim['hidden_gang'] = 1
  554. else
  555. stim['gang'] = 1
  556. end
  557. elseif $ARGS[i] = 'humiliation':
  558. stim['kink'] += humiliation['exp']
  559. stim['pref'] += humiliation['pref']
  560. stim['kinkno'] += 1
  561. stim['humiliation'] = 1
  562. elseif $ARGS[i] = 'maso':
  563. stim['kink'] += maso['exp']
  564. stim['pref'] += maso['pref']
  565. stim['kinkno'] += 1
  566. stim['maso'] = 1
  567. elseif $ARGS[i] = 'deepthroat':
  568. stim['kink'] += deepthroat['exp']
  569. stim['pref'] += deepthroat['pref']
  570. stim['kinkno'] += 1
  571. stim['deepthroat'] = 1
  572. !!unknown is for sex with an unknown partner, this could be a gloryhole or unconscious
  573. elseif $ARGS[i] = 'unknown':
  574. stim['kink'] += unknown['exp']
  575. stim['pref'] += unknown['pref']
  576. stim['kinkno'] += 1
  577. stim['unknown'] = 1
  578. elseif $ARGS[i] = 'gloryhole':
  579. stim['kink'] += gloryhole['exp']
  580. stim['pref'] += gloryhole['pref']
  581. stim['kinkno'] += 1
  582. if temp_unaware = 1:
  583. stim['hidden_gloryhole'] = 1
  584. else
  585. stim['gloryhole'] = 1
  586. end
  587. elseif $ARGS[i] = 'rape':
  588. stim['kink'] += rape['exp']
  589. stim['pref'] += rape['pref']
  590. stim['kinkno'] += 1
  591. rapeday = daystart
  592. if temp_unaware = 1:
  593. stim['hidden_rape'] = 1
  594. else
  595. stim['rape'] = 1
  596. end
  597. elseif $ARGS[i] = 'futa':
  598. stim['kink'] += futa['exp']
  599. stim['pref'] += futa['pref']
  600. stim['kinkno'] += 1
  601. if temp_unaware = 1:
  602. stim['hidden_futa'] = 1
  603. else
  604. stim['futa'] = 1
  605. end
  606. end
  607. i += 1
  608. jump 'stimloop'
  609. end
  610. end
  611. !!Fetishes are divided by total number of fetishes
  612. if stim['kinkno'] ! 0:
  613. stim['kink'] = stim['kink']/stim['kinkno']
  614. stim['pref'] = (stim['pref']/stim['kinkno'])
  615. stim['kinkno'] = 0
  616. end
  617. !!Bonus from fetishes, randomised chance for each level of bonus
  618. if rand(0,100) < stim['kink']:
  619. stim['kink'] = 120
  620. elseif rand(0,80) < stim['kink']:
  621. stim['kink'] = 110
  622. elseif rand(0,60) < stim['kink']:
  623. stim['kink'] = 100
  624. elseif rand(0,40) < stim['kink']:
  625. stim['kink'] = 90
  626. else
  627. stim['kink'] = 80
  628. end
  629. !!arousal calculation
  630. stim['total'] = ((stim['mag']*stim['act']*stim['kink']/100) + stim['pref'])*stim['time'] / 120
  631. !!Reduction in arousal linked to pain, masochism helps to deal with this
  632. if pain['total'] > 0:
  633. if maso['pref'] <= 0 and pain['total'] < 50:
  634. if pain['total'] - (maso['exp'] + 1 / 6) > 0:stim['total'] -= (pain['total'] - (maso['exp'] / 6))
  635. elseif maso['pref'] < 25 and pain['total'] < 55:
  636. stim['total'] += (pain['total'] * maso['exp'] +1 / 400)/60*stim['time']
  637. elseif maso['pref'] < 50 and pain['total'] < 70:
  638. stim['total'] += (pain['total'] * maso['exp'] + 1 / 300)/60*stim['time']
  639. elseif maso['pref'] < 75 and pain['total'] < 85:
  640. stim['total'] += (pain['total'] * maso['exp'] + 1 / 200)/60*stim['time']
  641. elseif maso['pref'] >= 75:
  642. stim['total'] += (pain['total'] * maso['exp'] + 1 / 100)/60*stim['time']
  643. else
  644. stim['total'] = 0
  645. end
  646. end
  647. stim['event'] += stim['total']
  648. pcs_horny += stim['total']
  649. !! This is to allow a Succubus with the right skill level to handle any size then go back to original size
  650. if sucvagorg ! 0 and sucvagorg ! pcs_vag: pcs_vag = sucvagorg & killvar 'sucvagorg'
  651. if sucanusorg ! 0 and sucanusorg ! pcs_ass: pcs_ass = sucanusorg & killvar 'sucanusorg'
  652. !!-------------------Orgasm-------------------
  653. !!This is intended to be hidden and the stats and calculations should not appear in game.
  654. if orgasm_flag ! 0: bimbosex_flag = 1
  655. orgasm_buildup += stim['total']
  656. !! This is determining if Sveta will orgasm
  657. if $orgasm_or ! 'no' and $ARGS[0] ! 'flashlite' and $ARGS[0] ! 'flash' and orgasm_flag ! 0:
  658. if $orgasm_or = 'yes' or $orgasm_or = 'custom':
  659. gs 'orgasm', $ARGS[0]
  660. elseif orgasm_buildup >= 100 and stim['total'] > 10 and rand(1,100) <= 20:
  661. gs 'orgasm', $ARGS[0]
  662. elseif orgasm_buildup >= 150 and stim['total'] > 6 and rand(1,100) <= 50:
  663. gs 'orgasm', $ARGS[0]
  664. elseif orgasm_buildup >= 200 and stim['total'] > 4:
  665. gs 'orgasm', $ARGS[0]
  666. end
  667. end
  668. !!This is release is Sveta is so horny and pent up that she can cum with minimal stimulation
  669. if $orgasm_or ! 'no' and orgasm_buildup >= 300 and pcs_horny >= 60: gs 'orgasm', $ARGS[0]
  670. !!Clearing temporary variables with orgasm as a gs this will catch anything there too
  671. killvar 'temp_dick'
  672. killvar 'temp_unaware'
  673. killvar 'temp_text'
  674. killvar '$orgasm_txt'
  675. killvar '$stim_les'
  676. killvar '$stim_foot'
  677. gs 'nichUtil','onArouse',$ARGS[0]
  678. end
  679. !!-----------------------------------------------
  680. !!This calculates the various sex stats and includes a small cooldown of stimulation so only use it once per event
  681. if $ARGS[0] = 'end':
  682. if bimbo_flag = 1:
  683. bimbo_tracker += 1
  684. bimbosex_flag = 0
  685. end
  686. if orgasm_buildup > 350: orgasm_buildup = 350
  687. if orgasm_buildup > 300: orgasm_buildup -= 10
  688. if orgasm_buildup > 200: orgasm_buildup -= 10
  689. if orgasm_buildup > 100: orgasm_buildup -= 10
  690. if stim['lesbian'] = 1: lesbian += 1
  691. if stim['hidden_lesbian'] = 1: hidden_lesbian += 1
  692. if stim['gang'] = 1 or stim['group'] = 1: gang += 1
  693. if stim['hidden_gang'] = 1 or stim['hidden_group'] = 1: hidden_gang += 1
  694. if stim['gloryhole'] = 1: gloryhole += 1
  695. if stim['hidden_gloryhole'] = 1: hidden_gloryhole += 1
  696. if stim['rape'] = 1: rape += 1
  697. if stim['hidden_rape'] = 1: hidden_rape += 1
  698. if stim['futa'] = 1: futa += 1
  699. if stim['hidden_futa'] = 1: hidden_futa += 1
  700. if stim['prostitution'] = 1: slutty += 1
  701. if stim['hidden_prostitution'] = 1: hidden_slutty += 1
  702. killvar 'anal_slip'
  703. killvar 'ar_anal_lube'
  704. killvar 'vaginal_slip'
  705. killvar 'ar_vag_lube'
  706. killvar '$orgasm_or'
  707. !!Updating fetish exp for acts carried out and clearing data
  708. gs 'arousal', 'checks', 'maso'
  709. gs 'arousal', 'checks', 'bound'
  710. gs 'arousal', 'checks', 'beast'
  711. gs 'arousal', 'checks', 'exhibitionism'
  712. gs 'arousal', 'checks', 'rough'
  713. gs 'arousal', 'checks', 'prostitution'
  714. gs 'arousal', 'checks', 'hidden_prostitution'
  715. gs 'arousal', 'checks', 'dom'
  716. gs 'arousal', 'checks', 'sub'
  717. gs 'arousal', 'checks', 'incest'
  718. gs 'arousal', 'checks', 'feet'
  719. gs 'arousal', 'checks', 'lesbian'
  720. gs 'arousal', 'checks', 'hidden_lesbian'
  721. gs 'arousal', 'checks', 'group'
  722. gs 'arousal', 'checks', 'hidden_group'
  723. gs 'arousal', 'checks', 'gang'
  724. gs 'arousal', 'checks', 'hidden_gang'
  725. gs 'arousal', 'checks', 'humiliation'
  726. gs 'arousal', 'checks', 'deepthroat'
  727. gs 'arousal', 'checks', 'unknown'
  728. gs 'arousal', 'checks', 'gloryhole'
  729. gs 'arousal', 'checks', 'hidden_gloryhole'
  730. gs 'arousal', 'checks', 'rape'
  731. gs 'arousal', 'checks', 'hidden_rape'
  732. gs 'arousal', 'checks', 'futa'
  733. gs 'arousal', 'checks', 'hidden_futa'
  734. stim['event'] = 0
  735. !!Adding to counts for character stats
  736. gs 'arousal', 'count', 'foreplay'
  737. gs 'arousal', 'count', 'mast'
  738. gs 'arousal', 'count', 'porn'
  739. gs 'arousal', 'count', 'cuni'
  740. gs 'arousal', 'count', 'rimming'
  741. gs 'arousal', 'count', 'trib'
  742. gs 'arousal', 'count', 'anal'
  743. gs 'arousal', 'count', 'hidden_anal'
  744. gs 'arousal', 'count', 'anal_finger'
  745. gs 'arousal', 'count', 'anal_fist'
  746. gs 'arousal', 'count', 'anal_dildo'
  747. gs 'arousal', 'count', 'anal_strap'
  748. gs 'arousal', 'count', 'anal_vibe'
  749. gs 'arousal', 'count', 'vaginal'
  750. gs 'arousal', 'count', 'hidden_vaginal'
  751. gs 'arousal', 'count', 'vaginal_finger'
  752. gs 'arousal', 'count', 'vaginal_fist'
  753. gs 'arousal', 'count', 'vaginal_dildo'
  754. gs 'arousal', 'count', 'vaginal_strap'
  755. gs 'arousal', 'count', 'vaginal_vibe'
  756. gs 'arousal', 'count', 'BDSM'
  757. gs 'arousal', 'count', 'pee'
  758. gs 'arousal', 'count', 'massage'
  759. gs 'arousal', 'count', 'foreplay_give'
  760. gs 'arousal', 'count', 'cuni_give'
  761. gs 'arousal', 'count', 'rimming_give'
  762. gs 'arousal', 'count', 'anal_finger_give'
  763. gs 'arousal', 'count', 'anal_fist_give'
  764. gs 'arousal', 'count', 'anal_dildo_give'
  765. gs 'arousal', 'count', 'anal_vibe_give'
  766. gs 'arousal', 'count', 'anal_strap_give'
  767. gs 'arousal', 'count', 'vaginal_finger_give'
  768. gs 'arousal', 'count', 'vaginal_fist_give'
  769. gs 'arousal', 'count', 'vaginal_dildo_give'
  770. gs 'arousal', 'count', 'vaginal_strap_give'
  771. gs 'arousal', 'count', 'vaginal_vibe_give'
  772. gs 'arousal', 'count', 'hj'
  773. gs 'arousal', 'count', 'hidden_hj'
  774. gs 'arousal', 'count', 'bj'
  775. gs 'arousal', 'count', 'hidden_bj'
  776. gs 'arousal', 'count', 'footjob'
  777. gs 'arousal', 'count', 'hidden_footjob'
  778. gs 'arousal', 'count', 'titjob'
  779. gs 'arousal', 'count', 'hidden_titjob'
  780. gs 'arousal', 'count', 'BDSM_give'
  781. gs 'arousal', 'count', 'pee_give'
  782. gs 'arousal', 'count', 'massage_give'
  783. gs 'arousal', 'count2', 'flashlite'
  784. gs 'arousal', 'count2', 'flash'
  785. gs 'arousal', 'count2', 'voyeur'
  786. gs 'arousal', 'count2', 'voyeur_sex'
  787. gs 'arousal', 'count2', 'erotic_nudity'
  788. !! Thats here because there is currently a variable zoo.
  789. if zoo > beast['exp']: beast['exp'] = zoo
  790. if beast['exp'] > zoo: zoo = beast['exp']
  791. !!
  792. end
  793. if $ARGS[0] = 'count':
  794. if dyneval('RESULT = count[''<<$ARGS[1]>>'']') = 1:
  795. dynamic 'count[''<<$ARGS[1]>>''] = 0'
  796. dynamic 'stat[''<<$ARGS[1]>>''] += 1'
  797. count['flashlite'] = 0
  798. count['flash'] = 0
  799. count['voyeur'] = 0
  800. end
  801. end
  802. if $ARGS[0] = 'count2':
  803. if dyneval('RESULT = count[''<<$ARGS[1]>>'']') = 1:
  804. dynamic 'count[''<<$ARGS[1]>>''] = 0'
  805. dynamic 'stat[''<<$ARGS[1]>>''] += 1'
  806. end
  807. end
  808. if $ARGS[0] = 'checks':
  809. if dyneval('RESULT = stim[''<<$ARGS[1]>>'']') = 1:
  810. dynamic 'stim[''<<$ARGS[1]>>''] = 0'
  811. dynamic '<<$ARGS[1]>>[''exp''] += 1'
  812. end
  813. end
  814. !!The auto lube application
  815. !!to use enter gs 'arousal', 'auto_lube', 'anal' or 'vag'
  816. !!add 'custom' to display a custom or no text by setting $lube_txt, if $lube_txt is '' no text will be displayed
  817. if $ARGS[0] = 'auto_lube':
  818. if $ARGS[1] = 'anal' and auto_anal_lube = 1:
  819. if lubri > 0:
  820. if $ARGS[2] ! 'custom':
  821. 'You rub some lube in and around your anus.'
  822. elseif $lube_txt ! '':
  823. $lube_txt
  824. end
  825. gs 'arousal', 'anal_finger', 1
  826. anal_slip = 8
  827. ar_anal_lube = 1
  828. lubri -= 1
  829. elseif $ARGS[2] ! 'custom' or ($ARGS[2] = 'custom' and $lube_txt ! ''):
  830. 'You do not have any lube left so cannot use it during this sex act.'
  831. end
  832. end
  833. if $ARGS[1] = 'vag' and auto_vag_lube = 1:
  834. if lubri > 0:
  835. if $ARGS[2] ! 'custom':
  836. 'You rub some lube in and around your vagina.'
  837. elseif $lube_txt ! '':
  838. $lube_txt
  839. end
  840. gs 'arousal', 'vaginal_finger', 1
  841. vaginal_slip = 8
  842. ar_vag_lube = 1
  843. lubri -= 1
  844. elseif $ARGS[2] ! 'custom' or ($ARGS[2] = 'custom' and $lube_txt ! ''):
  845. 'You do not have any lube left so cannot use it during this sex act.'
  846. end
  847. end
  848. killvar '$lube_txt'
  849. end
  850. --- arousal ---------------------------------