prostitution_functions.qsrc 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281
  1. # prostitution_functions
  2. !! ---- Variables -------------------------------------------------------------------------------------------------------
  3. !!
  4. !! prostitute['payment_method']: 1 - Sveta works for herself; 0 - Sveta works for someone else who will take a cut
  5. !! prostitute['wl_block']: 1 - WLife is loaded which blocks some of the locations: Pavlovsk will rely on the WLife mod
  6. !! and the Gas Station will be completely blocked
  7. !! 0 - WLife is not loaded, or WLife released the lock, everything works as normal.
  8. !! prostitute['full_block']: 1 - Some mod or some other event completely blocked the prostitution content.
  9. !! prostitute[<<$location>>]: 1 - Sveta can work at the location.
  10. !! 0 - Sveta can''t work at the location
  11. !! current locations: Pavlovsk - ''pavlovsk'', Gadukino - ''gadukino'',
  12. !! Road between Pavlovsk and St Petersburg - ''road'', Gas Station ''gas_station''
  13. !! prostitute['active']: 1- Sveta ''unlocked'' prostitution somewhere. It is use for non-location specific checks, like
  14. !! being able set a default prostitute outfit at home, or finding new places to work at.
  15. !! prostitute['work_clothes']: 1 - Sveta is wearing a prostitute outfit, i.e. clothes and shoes
  16. !! prostitute['outfit_is_set']: 1 - Sveta has a default outfit set up. Needed if she wants to change in restrooms
  17. !! or in the car on location, and not travel wearing that outfit
  18. !! prostitute['changed_for_work']: 1 - It means that Sveta changed into her prostitute outfit on site from some regular
  19. !! clothes. This enables the 'Change into regular clothes' action in the changing
  20. !! location.
  21. !! 0 - Sveta didn''t change which means she can''t change into regular clothing.
  22. !!---------- Initial set up, enabling locations, etc. -------------------------------------------------------------------
  23. !!-----------------------------------------------------------------------------------------------------------------------
  24. $solicitation_locations[0] = 'pav_commcenter'
  25. $solicitation_locations[1] = 'pav_residential'
  26. $solicitation_locations[2] = 'pav_industrial'
  27. $solicitation_locations[3] = 'pav_commercial'
  28. $solicitation_locations[4] = 'pav_market'
  29. $solicitation_locations[5] = 'pav_complex'
  30. $solicitation_locations[6] = 'pav_park'
  31. $solicitation_locations[7] = 'pushkin'
  32. !! Set the Pavlovsk 'working' hours
  33. !! Not used at the moment.
  34. if $ARGS[0] = 'set_pavlovsk_hours':
  35. prostitute['pav_start_hour'] = ARGS[1]
  36. prostitute['pav_end_hour'] = ARGS[2]
  37. end
  38. !! Blocks the content that would clash with the Whore Life mod.
  39. if $ARGS[0] = 'wl_block':
  40. prostitute['wl_block'] = ARGS[1]
  41. if prostitute['wl_block']:
  42. gs 'prostitution_functions', 'set_pavlovsk_hours', 6, 23
  43. else
  44. gs 'prostitution_functions', 'set_pavlovsk_hours', 14, 2
  45. end
  46. end
  47. !! Completely blocks the content - it is just here in case some mod needs to block off prostitution.
  48. if $ARGS[1] = 'block':
  49. prostitute['full_block'] = ARGS[1]
  50. end
  51. if $ARGS[0] = 'check_for_wlife':
  52. if mod_list > 0:
  53. mod_i=1
  54. :mod_exec
  55. if $mod_name[mod_i] = 'wlife':
  56. if prostitute['payment_method'] = 0: prostitute['wl_block'] = 1
  57. end
  58. if mod_list > mod_i:
  59. mod_i+=1
  60. jump 'mod_exec'
  61. end
  62. end
  63. end
  64. if $ARGS[0] = 'update_prostitution_locations':
  65. gs 'prostitution_functions', 'set_pavlovsk_prostitute'
  66. if prostitute['gadukino'] = 0: gs 'prostitution_functions', 'set_gadukion_prostitute'
  67. if prostitute['road'] = 0: gs 'prostitution_functions', 'set_highway_prostitute'
  68. end
  69. if $ARGS[0] = 'set_pavlovsk_prostitute':
  70. !! if fame['pav_prostitute'] > 100 or fame['pav_slut'] > 150 and prostitute['wl_block'] = 0 and prostitute['full_block'] = 0:
  71. if (fame['pav_prostitute'] > 250 or fame['pav_slut'] > 250) and prostitute['wl_block'] = 0 and prostitute['full_block'] = 0:
  72. prostitute['pavlovsk'] = 1
  73. prostitute['active'] = 1
  74. prostitute['payment_method'] = 1
  75. else
  76. prostitute['pavlovsk'] = 0
  77. end
  78. end
  79. if $ARGS[0] = 'set_gadukion_prostitute':
  80. if GadBoy['river_gang'] = 2 and (mirapimp = 0 or mirapimp = 2) and prostitute['full_block'] = 0:
  81. prostitute['gadukino'] = 1
  82. prostitute['active'] = 1
  83. prostitute['payment_method'] = 1
  84. else
  85. prostitute['gadukino'] = 0
  86. end
  87. end
  88. if $ARGS[0] = 'set_highway_prostitute':
  89. if prostitute['highway_idea'] = 2 and prostitute['active'] = 1 and ((prostitute['full_block'] = 0 and prostitute['wl_block'] = 0) or (prostitute['wl_block'] = 1 and prostitute['payment_method'] = 1)): prostitute['road'] = 1
  90. end
  91. if $ARGS[0] = 'prostitute_work_hours':
  92. if $region = 'pushkin':
  93. RESULT = (hour >= 0 and hour < 2) or (hour >= 12 and hour < 14) or (hour >= 17 and hour <= 23)
  94. elseif $region = 'pav' or $MID($loc,1,4) = 'pav_':
  95. RESULT = (hour >= 12 and hour < 14) or (hour >= 17 and hour <= 23)
  96. else
  97. RESULT = 0
  98. end
  99. end
  100. if $ARGS[0] = 'is_solicitation_location':
  101. RESULT = $curloc ! 'shop' and $curloc ! 'prostitution_pavlovsk' and $loc = $curloc and menu_off = 0 and ($loc_arg = '' or $loc_arg = 'start') and (ARRPOS('$solicitation_locations', $loc) ! -1)
  102. end
  103. !!-----------------------------------------------------------------------------------------------------------------------
  104. !!-----------------------------------------------------------------------------------------------------------------------
  105. !!
  106. !!---------- Setting default working outfit -----------------------------------------------------------------------------
  107. !! When calling check if Sveta is at home (i.e. the wardrobe is in her current home)
  108. if $ARGS[0] = 'prostitute_outfit_at_home':
  109. if func('homes_properties', 'is_current_home') and prostitute['active']:
  110. gs 'prostitution_functions', 'work_clothes'
  111. if prostitute['work_clothes']:
  112. if prostitute['outfit_is_set'] = 1 and func('prostitution_functions', 'is_default') = 0:
  113. act 'Replace your default prostitute outfit with the current outfit':
  114. gs 'prostitution_functions', 'set_default_outfit'
  115. gt $loc, $loc_arg
  116. end
  117. elseif prostitute['outfit_is_set'] = 0:
  118. act 'Set the current as your default prostitute outfit':
  119. gs 'prostitution_functions', 'set_default_outfit'
  120. gt $loc, $loc_arg
  121. end
  122. end
  123. act 'Change into regular clothes':
  124. gs 'prostitution_functions', 'change_into_regular_clothes'
  125. gt $loc, $loc_arg
  126. end
  127. elseif prostitute['outfit_is_set']:
  128. act 'Change into prostitute outfit':
  129. gs 'prostitution_functions', 'change_into_prostitute_outfit'
  130. gt $loc, $loc_arg
  131. end
  132. end
  133. end
  134. end
  135. !!---- Random approach modifiers ---------------------------------------------------------------------
  136. !! Result Range: -45 to +35
  137. !! Based on worn outfit, how likely is that someone will believe that the player is
  138. !! a hooker working on the street
  139. if $ARGS[0] = 'clothing_chance_modifier':
  140. !! PCloStyle: 1 Girlie, 2 Rebel, 3 Wealthy, 4 Prostitute, 5 is Loose fit
  141. !! PCloStyle2: 1 Maid, 2 Server, 3 Stripper, 4 School
  142. if PCloStyle = 4: temp_result_attr += 10
  143. if PCloStyle2 = 3: temp_result_attr += 5
  144. temp_mult = 1
  145. if $ARGS[2] = 'upclose' and $loc ! 'road' and $loc ! 'gas_station_gp_117':
  146. if hour > 19 : temp_mult = 2
  147. if PCloStyle = 3: temp_result_attr -= 15 * temp_mult
  148. if PCloQuality = 7:
  149. temp_result_attr -= 15 * temp_mult
  150. elseif PCloQuality = 6:
  151. temp_result_attr -= 10 * temp_mult
  152. elseif PCloQuality = 5:
  153. temp_result_attr -= 5 * temp_mult
  154. elseif PCloQuality >= 3:
  155. if temp_mult > 1: temp_result_attr -= 10
  156. else
  157. temp_result_attr += 5
  158. end
  159. end
  160. !! PCloThinness:
  161. !! 6: intentionally reveals breast/pubic areas, with translucent/transparent areas,
  162. !! indecent exposure/arrest event if worn in public without underwear.
  163. !! 5: see through only in bright light, or tight enough to show the body in detail if opaque.
  164. !! 4: is thin or tight enough to be flirty, fine in most places except the most conservative (church, school, etc).
  165. !! 3-2 standard publicly worn outfit.
  166. !! 1 baggy, hiding the body, makes it hard to see the body shape.
  167. !! PCloTopCut:
  168. !! 4: reveals over half the skin on the torso area,
  169. !! 3: has a deep neckline that reaches the cleavage between the breasts,
  170. !! 2: is a cut high enough to be considered appropriate in most places (above the cleavage, or just below where it starts),
  171. !! 1: is a neckline that ends very near the neck or higher.
  172. !! PCloBra
  173. !! 2: Your chest is not covered at all by the outfit, if you wear a bra that will be your top
  174. !! 1: 1 the top is no more than a bra and wearing a bra underneath is pointless
  175. if PCloThinness = 6: temp_result_attr += 6
  176. if PCloThinness = 5: temp_result_attr += 3
  177. if PCloThinness = 4: temp_result_attr += 1
  178. if PCloThinness = 1: temp_result_attr -= 4
  179. !! Top outfit
  180. if PCloTopCut = 7: temp_result_attr += 7
  181. if PCloTopCut = 6: temp_result_attr += 6
  182. if PCloTopCut = 5: temp_result_attr += 5
  183. if PCloTopCut = 4: temp_result_attr += 3
  184. if PCloTopCut = 3: temp_result_attr += 1
  185. if PCloTopCut = 1: temp_result_attr -= 4
  186. if PCloBra = 2 and $braworntype = 'none': temp_result_attr += 6
  187. if PCloBra = 2 and $braworntype ! 'none': temp_result_attr += 3
  188. if PCloBra = 1: temp_result_attr += 3
  189. !! Bottom outfit
  190. !! CloSkirtShortness
  191. !! IMPORTANT: CloSkirtShortness is mapped to PCloSkirt
  192. !! 6: is short enough to reveal pubic areas at all times
  193. !! 5 is ~20% thigh length or less (micro-skirt), and can reveal underwear frequently
  194. !! 4 is ~40% thigh length (miniskirt) and may show underwear if bending over
  195. !! 3 is up to ~60% thigh length (skirt) and normally never reveals underwear
  196. !! 2 is ending immediately above, at or below the knees (knee-length)
  197. !! 1 is ankle-length.
  198. !! CloPantsShortness = 1-6 scale. Higher values are shorter.
  199. !! IMPORTANT: CloPantsShortness is mapped to PCloPants
  200. !! 6 are high-cut shorts (legs end significantly above the crotch, usually reveals a large amount of the ass cheek)
  201. !! 5 is mini shorts (legs do not reach below the crotch)
  202. !! 4 are shorts (close to mid thigh)
  203. !! 3 is knee-length shorts
  204. !! 2 is calf length
  205. !! 1 is ankle length
  206. !! CloPanties = 1 for yes
  207. !! 1: The bottom of this outfit offers no more coverage than panties and it will
  208. !! replace your panties (if worn)
  209. if PCloSkirt = 6: temp_result_attr += 6
  210. if PCloSkirt = 5: temp_result_attr += 4
  211. if PCloSkirt = 4: temp_result_attr += 2
  212. if PCloSkirt = 1: temp_result_attr -= 4
  213. if PCloPants = 6: temp_result_attr += 6
  214. if PCloPants = 5: temp_result_attr += 4
  215. if PCloPants = 1: temp_result_attr -= 4
  216. if PCloPanties = 1: temp_result_attr += 8
  217. temp_result_attr = MAX(temp_result_attr, temp_result_style)
  218. !! PShoHeels values: 1 flats (<5cm), 2 low heel (~5cm), 3 Mid heel (~7.5cm),
  219. !! 4 High heel (~10cm), 5 ultra high heel (~15cm), 6 fetish heel (>15cm)
  220. !! PShoStyle values: 1 stripping or whoring, 2: bimbo style, 3: alternative style
  221. !! PShoCut values: 1: shoes 2: ankle boots, 3: calf high, 4: knee high, 5: thigh high, 6: groin high
  222. if PShoHeels = 6: temp_result_attr += 3
  223. if PShoHeels = 5: temp_result_attr += 2
  224. if PShoHeels = 4: temp_result_attr += 1
  225. if PShoHeels = 2: temp_result_attr -= 2
  226. if PShoHeels = 1: temp_result_attr -= 3
  227. if PShoStyle = 1: temp_result_attr += 2
  228. if PShoStyle = 2: temp_result_attr += 1
  229. if PShoStyle = 3: temp_result_attr -= 1
  230. if PShoCut = 6: temp_result_attr += 2
  231. if PShoCut = 5: temp_result_attr += 1
  232. result = temp_result_attr
  233. killvar 'temp_result_attr'
  234. killvar 'temp_result_style'
  235. end
  236. if $ARGS[0] = 'upclose_chance':
  237. temp_base_app_mod = func('prostitution_functions', 'base_appearance_modifier')
  238. temp_makeup_mod = func('prostitution_functions', 'makeup_modifier')
  239. temp_groom_mod = func('prostitution_functions', 'grooming_modifier')
  240. temp_tat_pierc_mod = func('prostitution_functions', 'tattoo_and_piercing_modifier')
  241. temp_clothes_base = func('prostitution_functions', 'clothing_chance_modifier', 'upclose')
  242. result = (temp_base_app_mod + temp_makeup_mod + temp_groom_mod + temp_tat_pierc_mod + temp_clothes_base)
  243. killvar 'temp_base_app_mod'
  244. killvar 'temp_makeup_mod'
  245. killvar 'temp_groom_mod'
  246. killvar 'temp_tat_pierc_mod'
  247. killvar 'temp_clothes_base'
  248. end
  249. !! Range -10 to +10
  250. if $ARGS[0] = 'makeup_modifier':
  251. !! pcs_makeup:
  252. !! 0: Smeared makeup
  253. !! 1: No makeup
  254. !! 2: Light makeup
  255. !! 3: Vibrant makeup
  256. !! 4: Heavy makeup
  257. !! 5: Professional makeup
  258. !! 6: Bimbo makeup
  259. if pcs_makeup = 6: result += 5
  260. if pcs_makeup = 5: result -= 5
  261. if pcs_makeup = 4: result += 10
  262. if pcs_makeup = 3: result += 5
  263. if pcs_makeup = 1: result -= 5
  264. if pcs_makeup = 0: result -= 10
  265. temp_display = result
  266. killvar 'temp_display'
  267. end
  268. !! Result Range: -100 to +30
  269. if $ARGS[0] = 'base_appearance_modifier':
  270. !! The following can lower the penalty from high appearance
  271. !! A stunningly pretty girl being a street hooker is hard to believe
  272. !! but a stunningly pretty but somewhat ran down girl is easier to
  273. !! accept.
  274. temp_hair -= (1 - pcs_hairbsh) * 10
  275. if pcs_haircol ! nathcol:
  276. if dyefade > 0 and dyefade < 7: temp_dyefade = 5
  277. if dyefade = 0: temp_dyefade = 15
  278. end
  279. if pcs_makeup = 0: temp_makeup_corr = 20
  280. if pcs_apprncbase <= 20:
  281. result -= 100
  282. elseif pcs_apprncbase <= 40:
  283. result -= 20
  284. elseif pcs_apprncbase <= 60:
  285. result -= 10
  286. elseif pcs_apprncbase <= 80:
  287. result += 10
  288. elseif pcs_apprncbase <= 100:
  289. result += 30
  290. elseif pcs_apprncbase <= 120:
  291. result += 30
  292. elseif pcs_apprncbase <= 140:
  293. result += 10
  294. !! Over a certain beauty people will be less likely to think that Sveta is a prostitute working
  295. !! the highway unless she is acting like one, or looks really neglected.
  296. elseif pcs_apprncbase <= 160:
  297. result -= 30 + temp_dyefade + pcs_leghair + temp_hair
  298. elseif pcs_apprncbase <= 179:
  299. result -= 40 + temp_dyefade + pcs_leghair + temp_hair
  300. else
  301. result -= 50 + temp_dyefade + pcs_leghair + temp_hair + temp_makeup_corr
  302. end
  303. !! Being high or looking like someone fighting withdrawal, downbeat or exhausted, dirty, etc.
  304. !! will lessen the high appearance penalty. Will add those later when I figure out a sensible way.
  305. killvar 'temp_display'
  306. killvar 'temp_dyefade'
  307. killvar 'temp_leghair'
  308. killvar 'temp_makeup_corr'
  309. end
  310. !! Result Range: -78 - 0
  311. if $ARGS[0] = 'grooming_modifier':
  312. if pcs_sweat < 22:
  313. result -= 0
  314. elseif pcs_sweat < 38:
  315. result -= (pcs_sweat - 10) / 4 & !! 28/4 = 7
  316. elseif pcs_sweat < 54:
  317. result -= (pcs_sweat - 10) / 2 & !! 54-10 / 2 = 22
  318. else
  319. result -= 3 * (pcs_sweat - 10) / 4 & !! 3 * 100-10 / 4 = 67
  320. end
  321. temp_display = result
  322. killvar 'temp_display'
  323. end
  324. !! Result Range: 0
  325. if $ARGS[0] = 'tattoo_and_piercing_modifier':
  326. result = 0
  327. if (PCloSkirt >= 4 or PCloPants >= 4 or PCloPanties = 1) and PShoCut = 1 and tatankle > 0: temp_tattoo_mod += 3
  328. if (PCloSkirt >= 4 or PCloPants >= 4 or PCloPanties = 1) and PShoCut < 5 and tatleg > 0: temp_tattoo_mod += 5
  329. if PCloSKirt = 6 and $pantyworntype = 'none' and tatvag > 0: temp_tattoo_mod += 5
  330. if PCloSkirt >= 5 and tatass > 0: temp_tattoo_mod += 3
  331. if (PCloThinness >= 5 or PCloTopCut >= 4 or PCloBra = 1) and tatblly > 0: temp_tattoo_mod += 5
  332. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or PCloStyle = 4 or PCloStyle2 = 3) and tatupb > 0: temp_tattoo_mod += 3
  333. if (PCloThinness >= 5 or PCloTopCut >= 4 or PCloBra = 1) and tatback > 0: temp_tattoo_mod += 3
  334. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or PCloStyle = 4 or PCloStyle2 = 3) and tatunder > 0: temp_tattoo_mod += 3
  335. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or (PCloBra = 2 and $braworntype = 'none')) and tatbrst > 0: temp_tattoo_mod += 3
  336. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or (PCloBra = 2 and $braworntype = 'none')) and tatchst > 0: temp_tattoo_mod += 3
  337. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or PCloStyle = 4 or PCloStyle2 = 3) and tatside > 0: temp_tattoo_mod += 3
  338. if (PCloThinness >= 5 or PCloBra = 1) and tatarm > 0: temp_tattoo_mod += 2
  339. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or PCloStyle = 4 or PCloStyle2 = 3) and tatlech > 0: temp_tattoo_mod += 3
  340. if (PCloThinness >= 3 or PCloTopCut >= 2 or PCloBra = 1 or PCloStyle = 4 or PCloStyle2 = 3) and tatneck > 0: temp_tattoo_mod += 5
  341. if tatfce > 0: temp_tattoo_mod += 3
  342. result = temp_tattoo_mod
  343. killvar 'temp_tattoo_mod'
  344. end
  345. !!---- Outfit checks ---------------------------------------------------------------------------------
  346. if $ARGS[0] = 'work_clothes':
  347. prostitute['work_clothes'] = (PCloStyle = 4 and (PShoStyle = 1 or PShoStyle = 2 or PShoHeels >= 3))
  348. end
  349. if $ARGS[0] = 'is_default':
  350. RESULT = prostitute['clothingwornnumber'] = clothingwornnumber and prostitute['shoewornnumber'] = shoewornnumber and prostitute['currentpursenumber'] = currentpursenumber and prostitute['coatwornnumber'] = coatwornnumber and (prostitute['bodysuitwornnumber'] = bodysuitwornnumber or (prostitute['pantywornnumber'] = pantywornnumber and prostitute['brawornnumber'] = brawornnumber))
  351. end
  352. !!---- Setting, clearing and changing outfits ------------------------------------------------------------------
  353. if $ARGS[0] = 'set_default_outfit':
  354. !!-- Clothing
  355. $prostitute['clothingworntype'] = $clothingworntype
  356. prostitute['clothingwornnumber'] = clothingwornnumber
  357. !!-- Underwear
  358. prostitute['underweartype'] = 0
  359. if underwear['type'] = 2:
  360. prostitute['underweartype'] = 2
  361. $prostitute['bodysuitworntype'] = $bodysuitworntype
  362. prostitute['bodysuitwornnumber'] = bodysuitwornnumber
  363. else
  364. $prostitute['pantyworntype'] = $pantyworntype
  365. prostitute['pantywornnumber'] = pantywornnumber
  366. $prostitute['braworntype'] = $braworntype
  367. prostitute['brawornnumber'] = brawornnumber
  368. end
  369. !!-- Shoes
  370. $prostitute['shoeworntype'] = $shoeworntype
  371. prostitute['shoewornnumber'] = shoewornnumber
  372. !!-- Bag
  373. $prostitute['currentpursetype'] = $currentpursetype
  374. prostitute['currentpursenumber'] = currentpursenumber
  375. !!-- Coat
  376. $prostitute['coatworntype'] = $coatworntype
  377. prostitute['coatwornnumber'] = coatwornnumber
  378. prostitute['outfit_is_set'] = 1
  379. end
  380. if $ARGS[0] = 'clearing_default_outfit':
  381. !!-- Clothing
  382. $prostitute['clothingworntype'] = ''
  383. prostitute['clothingwornnumber'] = 0
  384. !!-- Underwear
  385. $prostitute['bodysuitworntype'] = ''
  386. prostitute['bodysuitwornnumber'] = 0
  387. $prostitute['pantyworntype'] = ''
  388. prostitute['pantywornnumber'] = 0
  389. $prostitute['braworntype'] = ''
  390. prostitute['brawornnumber'] = 0
  391. !!-- Shoes
  392. $prostitute['shoeworntype'] = ''
  393. prostitute['shoewornnumber'] = 0
  394. !!-- Bag
  395. $prostitute['currentpursetype'] = ''
  396. prostitute['currentpursenumber'] = 0
  397. !!-- Coat
  398. $prostitute['coatworntype'] = ''
  399. prostitute['coatwornnumber'] = 0
  400. prostitute['outfit_is_set'] = 0
  401. end
  402. if $ARGS[0] = 'change_into_prostitute_outfit':
  403. if dyneval('RESULT = <<$prostitute["clothingworntype"]>>_h[<<prostitute["clothingwornnumber"]>>]') <= 0:
  404. msg '<font color="red">Unavailable as outfit is worn out!</font>'
  405. exit
  406. end
  407. !! if last outfit is sport outfit
  408. gs 'wardrobe', 'is_sport'
  409. gs 'wardrobe', 'back_to_regular_clothes'
  410. !!-- Backup
  411. $lastwornclothingtype['prostitute'] = $clothingworntype
  412. lastwornclothingnumber['prostitute'] = clothingwornnumber
  413. lastwornunderwear['prostitute'] = 0
  414. if underwear['type'] = 2:
  415. lastwornunderwear['prostitute'] = 2
  416. $lastwornbodysuittype['prostitute'] = $bodysuitworntype
  417. lastwornbodysuitnumber['prostitute'] = bodysuitwornnumber
  418. else
  419. $lastwornpantytype['prostitute'] = $pantyworntype
  420. lastwornpantynumber['prostitute'] = pantywornnumber
  421. $lastwornbratype['prostitute'] = $braworntype
  422. lastwornbranumber['prostitute'] = brawornnumber
  423. end
  424. $lastwornshoetype['prostitute'] = $shoeworntype
  425. lastwornshoenumber['prostitute'] = shoewornnumber
  426. $lastwornpursetype['prostitute'] = $currentpursetype
  427. lastwornpursenumber['prostitute'] = currentpursenumber
  428. $lastworncoattype['prostitute'] = $coatworntype
  429. lastworncoatnumber['prostitute'] = coatwornnumber
  430. !!-- Clothing
  431. gs 'clothing', 'wear', $prostitute['clothingworntype'], prostitute['clothingwornnumber']
  432. !!-- Underwear
  433. if prostitute['underweartype'] = 2:
  434. gs 'underwear_bodysuits', 'wear', $lastwornbodysuittype['prostitute'], lastwornbodysuitnumber['prostitute']
  435. else
  436. gs 'panties', 'wear', $prostitute['pantyworntype'], prostitute['pantywornnumber']
  437. gs 'bras', 'wear', $prostitute['braworntype'], prostitute['brawornnumber']
  438. end
  439. !!-- Shoes
  440. gs 'shoes', 'wear', $prostitute['shoeworntype'], prostitute['shoewornnumber']
  441. !!-- Bag
  442. gs 'purses', 'wear', $prostitute['currentpursetype'], prostitute['currentpursenumber']
  443. !!-- Coat
  444. gs 'coats', 'wear', $prostitute['coatworntype'], prostitute['coatwornnumber']
  445. !! TODO: Check for worn out here?
  446. !! CHeck if the change happened not at home and if yes, then store the fact of change.
  447. gs 'prostitution_functions', 'work_clothes'
  448. if $ARGS[1] = 'work': prostitute['changed_for_work'] = 1
  449. end
  450. if $ARGS[0] = 'change_into_regular_clothes':
  451. gs 'wardrobe', 'back_to_regular_clothes'
  452. !! if last outfit is sport outfit
  453. gs 'wardrobe', 'is_sport'
  454. gs 'wardrobe', 'back_to_regular_clothes'
  455. end
  456. !!---------- Chaging outfits in public locations ------------------------------------------------------------------------
  457. !!------ Changing clothes --------------------------
  458. if $ARGS[0] = 'change_to_work':
  459. cla & *clr
  460. minut += 10
  461. if $ARGS[1] = 'car':
  462. !! TODO: Video / image and some text describing the cloth change in the car
  463. ''+iif($loc_desc = '', 'You quickly change into your working outfit in your car.', $loc_desc)
  464. end
  465. if $ARGS[1] = 'restroom':
  466. !! TODO: Video / image and some text describing the cloth change in the men''s restroom
  467. !! Is there a way to know if it''s a men''s or women''s restroom?
  468. ''+iif($loc_desc = '', 'You slip into a stall and quickly change into your working outfit, trying to avoid your clothes touching the floor or, really, anything before you place them safely in your bag.', $loc_desc)
  469. end
  470. if $ARGS[1] = 'road_side':
  471. !! TODO: Video / image and some text describing the cloth change next to a road
  472. ''+iif($loc_desc = '', 'You quickly change into your working outfit behind some bushes by the road.', $loc_desc)
  473. end
  474. gs 'prostitution_functions', 'change_into_prostitute_outfit', 'work'
  475. act 'Finish': gt $loc, $loc_arg
  476. end
  477. if $ARGS[0] = 'change_back':
  478. cla & *clr
  479. minut += 10
  480. if $ARGS[1] = 'car':
  481. !! TODO: Video / image and some text describing the cloth change in the car
  482. 'You quickly change into your working everyday clothes in your car.'
  483. end
  484. if $ARGS[1] = 'restroom':
  485. !! TODO: Video / image and some text describing the cloth change in the men''s restroom
  486. 'You quickly change into your everyday clothes in the men''s restroom..'
  487. end
  488. if $loc_arg = 'restroom_women':
  489. !! TODO: Video / image and some text describing the cloth change in the women''s restroom
  490. 'You quickly change into your everyday clothes in the women''s restroom.'
  491. end
  492. if $ARGS[1] = 'road_side':
  493. !! TODO: Video / image and some text describing the cloth change next to a road
  494. 'You quickly change into your everyday clothes behind some bushes by the road.'
  495. end
  496. gs 'prostitution_functions', 'change_into_regular_clothes'
  497. act 'Finish': gt $loc, $loc_arg
  498. end
  499. !!-----------------------------------------------------------------------------------------------------------------------
  500. !!---------- Checking for events ----------------------------------------------------------------------------------------
  501. !!-----------------------------------------------------------------------------------------------------------------------
  502. if $ARGS[0] = 'check_solicitation_event':
  503. gs 'prostitution_functions', 'work_clothes'
  504. if prostitute['wl_block'] = 0 and prostitute['full_block'] = 0 and func('prostitution_functions', 'prostitute_work_hours') and func('prostitution_functions','is_solicitation_location'):
  505. if prostitute['pavlovsk'] = 1 and prostitute['pav_time_hour'] ! hour and rand(-20, 70) < minut:
  506. gs 'prostitution_pavlovsk', 'chance'
  507. end
  508. if prostitute['pavlovsk'] = 1 and prostitute['work_clothes'] :
  509. pl '<center><a href="exec: gt ''prostitution_pavlovsk'', ''search''"><img title="Click to start working in Pavlovsk." height = 80 src="images/system/icons/icon_prostitute.png"></a></center>'
  510. end
  511. if prostitute['pav_residential_prost_day'] ! daystart: prostitute['pav_residential_prost_day'] = daystart
  512. !!pav_residential_prost_day
  513. end
  514. end
  515. !!-----------------------------------------------------------------------------------------------------------------------
  516. !!---------- Willpower checks -------------------------------------------------------------------------------------------
  517. !!-----------------------------------------------------------------------------------------------------------------------
  518. if $ARGS[0] = 'will_unprotected':
  519. gs 'willpower', 'calc'
  520. will_cost = 0
  521. if missCum >= timeTresh: will_calc += 100
  522. if $ARGS[1] = 'resist':
  523. if pro_stats['unprotected'] <= 90:
  524. will_cost = (10 + pro_stats['unprotected'] + will_calc) / 10
  525. else
  526. will_cost = (100 + will_calc)/10
  527. end
  528. else
  529. if pro_stats['unprotected'] <= 90:
  530. will_cost = (100 - pro_stats['unprotected'] + will_calc) / 10
  531. else
  532. will_cost = (10 + will_calc)/10
  533. end
  534. end
  535. gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
  536. end
  537. if $ARGS[0] = 'will_rimming':
  538. gs 'willpower', 'calc'
  539. if $ARGS[1] = 'self':
  540. if stat['rimming_give'] <= 90:
  541. will_cost = (100 - stat['rimming_give'] + will_calc)/10
  542. else
  543. will_cost = (10 + will_calc)/10
  544. end
  545. elseif $ARGS[1] = 'force':
  546. if stat['rimming_give'] <= 40:
  547. will_cost = (110 - will_enforced - stat['rimming_give'] + will_calc)/10
  548. else
  549. will_cost = (70 - will_enforced + will_calc)/10
  550. end
  551. else
  552. if stat['rimming_give'] <= 90:
  553. will_cost = (10 + stat['rimming_give'] + will_calc)/10
  554. else
  555. will_cost = (100 + will_calc)/10
  556. end
  557. end
  558. gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
  559. end
  560. if $ARGS[0] = 'will_atm':
  561. gs 'willpower', 'calc'
  562. if $ARGS[1] = 'self':
  563. if pro_stats['atm'] <= 90:
  564. will_cost = (100 - pro_stats['atm'] + will_calc)/10
  565. else
  566. will_cost = (10 + will_calc)/10
  567. end
  568. elseif $ARGS[1] = 'force':
  569. if pro_stats['atm'] <= 40:
  570. will_cost = (110 - will_enforced - pro_stats['atm'] + will_calc)/10
  571. else
  572. will_cost = (70 - will_enforced + will_calc)/10
  573. end
  574. else
  575. if pro_stats['atm'] <= 90:
  576. will_cost = (10 + pro_stats['atm'] + will_calc)/10
  577. else
  578. will_cost = (100 + will_calc)/10
  579. end
  580. end
  581. gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
  582. end
  583. !!-----------------------------------------------------------------------------------------------------------------------
  584. !!---------- Condoms & STDs----------------------------------------------------------------------------------------------
  585. !!-----------------------------------------------------------------------------------------------------------------------
  586. if $ARGS[0] = 'std_check':
  587. gs 'dinSex', 'std_trigger', $ARGS[1]
  588. killvar 'pro_std_check_rand'
  589. killvar 'pro_std_rand'
  590. end
  591. if $ARGS[0] = 'std_check_oral':
  592. gs 'dinSex', 'std_trigger_oral', $ARGS[1]
  593. killvar 'pro_std_check_rand'
  594. killvar 'pro_std_rand'
  595. end
  596. if $ARGS[0] = 'remove_condom':
  597. if mc_inventory['equipped_condoms'] > 0:
  598. mc_inventory['equipped_condoms'] -= 1
  599. elseif mc_inventory['sabotaged_condoms'] > 0 and preziktype = 2:
  600. mc_inventory['sabotaged_condoms'] -= 1
  601. elseif mc_inventory['normal_condoms'] > 0 and preziktype <> 2:
  602. mc_inventory['normal_condoms'] -= 1
  603. end
  604. end
  605. if $ARGS[0] = 'your_condom':
  606. prostitute['condom'] = 1
  607. protect = iif(mc_inventory['equipped_condoms'] > 0,1,0)
  608. if mc_inventory['equipped_condoms'] > 0:
  609. if rand(1,mc_inventory['equipped_condoms']) <= mc_inventory['bad_condoms']:
  610. mc_inventory['bad_condoms'] -= 1
  611. noprotect = 1
  612. sexcontra = rand(4,5)
  613. else
  614. sexcontra = 3
  615. end
  616. mc_inventory['equipped_condoms'] -= 1
  617. if preziktype = 2: sexcontra = 7 & noprotect = 1
  618. else
  619. sexcontra = 0
  620. end
  621. end
  622. if $ARGS[0] = 'his_condom':
  623. $bwa_boy = iif($ARGS[1] = '',$boydesc,$ARGS[1])
  624. protect = 1
  625. sexcontra = 3
  626. *p '<<ucase(mid($bwa_boy,1,1))>><<mid($bwa_boy,2,len($bwa_boy)-1)>> takes his condom and puts it on his <<dick>> centimeter dick.'
  627. end
  628. !!---------- Background: Black-----------------------------------------------------------------------------------
  629. if $ARGS[0] = 'darkness':
  630. fcolor = rgb(255, 255, 255)
  631. bcolor = rgb(0, 0, 0)
  632. lcolor = rgb(106, 90, 205)
  633. end
  634. if $ARGS[0] = 'parameters':
  635. !!Reset
  636. protect = 0
  637. sexcontra = 0
  638. $pro_client_condom = 'tbd'
  639. $pro_client_cumshot = 'tbd'
  640. !!Client
  641. gs 'npcgeneratec', 0, 'client', rand(18,65)
  642. gs 'boyStat', $npclastgenerated
  643. !!
  644. !!---------- Time -----------------------------------------------------------------------------------------------
  645. if hour > 19 or hour < 7:
  646. $pro_work_time = 'night'
  647. else
  648. $pro_work_time = 'day'
  649. end
  650. gs 'prostitution_functions', 'std_cum_check'
  651. !!---------- Client Likes/Dislikes ------------------------------------------------------------------------------
  652. if rand(1,10) = 10:
  653. prostitute['mesec_mod'] = 1
  654. else
  655. prostitute['mesec_mod'] = 0
  656. end
  657. if rand(1,100) > 97:
  658. prostitute['dirty_anal_mod'] = 1
  659. else
  660. prostitute['dirty_anal_mod'] = 0
  661. end
  662. if rand(1,10) = 10:
  663. prostitute['cum_visible_mod'] = 1
  664. else
  665. prostitute['cum_visible_mod'] = 0
  666. end
  667. !!---------- Prostitution long term effects ---------------------------------------------------------------------
  668. if $ARGS[0] = 'solicitation_effort':
  669. cost = ARGS[1]
  670. prostitute['skin_penalty'] += 5
  671. if temper < 15: prostitute['skin_penalty'] += 5
  672. if temper > 25: prostitute['skin_penalty'] += 5
  673. if cost <= willpowermax/4:
  674. prostitute['age_mod'] += 5
  675. elseif cost <= willpowermax/3:
  676. prostitute['age_mod'] += 10
  677. elseif cost <= willpowermax/2:
  678. prostitute['age_mod'] += 15
  679. else
  680. prostitute['age_mod'] += 20
  681. end
  682. end
  683. if $ARGS[0] = 'client_effort':
  684. $client_type = iif($ARGS[1] = '', 'normal', $ARGS[1])
  685. if $client_type = 'nice':
  686. prostitute['age_mod'] += 5
  687. elseif $client_type = 'normal':
  688. prostitute['age_mod'] += 10
  689. elseif $client_type = 'abusive':
  690. prostitute['age_mod'] += 20
  691. end
  692. end
  693. if $ARGS[0] = 'daily_effects':
  694. if prostitute['age_mod'] >= 100:
  695. temp_age_mod_remain = prostitute['age_mod'] MOD 100
  696. vidageday -= ((prostitute['age_mod'] - temp_age_mod_remain) / 100)
  697. prostitute['age_mod'] = temp_age_mod_remain
  698. killvar 'temp_age_mod_remain'
  699. end
  700. if prostitute['skin_penalty'] >= 100:
  701. temp_skin_remain = prostitute['skin_penalty'] MOD 100
  702. skinDailyPenalty += ((prostitute['skin_penalty'] - temp_skin_remain) / 100)
  703. prostitute['skin_penalty'] = temp_skin_remain
  704. killvar 'temp_skin_remain'
  705. end
  706. end
  707. !!---------- Age ------------------------------------------------------------------------------------------------
  708. if vidage < 18 and rand(1,10) < 7:
  709. prostitute['vidage_mod'] = 1
  710. else
  711. prostitute['vidage_mod'] = 0
  712. end
  713. !!---------- Scenes ----------------------------------------------------------------------------------------------
  714. !!----------------------------------------------------------------------------------------------------------------
  715. pro_scene_rand = rand(1,100)
  716. if pro_scene_rand <= 50:
  717. if mesec = 0 or prostitute['mesec_mod'] = 1:
  718. $prostitute['client_scene'] = 'Vaginal'
  719. elseif mesec > 0 and prostitute['mesec_mod'] = 0 and (klismaday = daystart or prostitute['dirty_anal_mod'] = 1):
  720. $prostitute['client_scene'] = 'Anal'
  721. else
  722. $prostitute['client_scene'] = 'Blowjob'
  723. end
  724. elseif pro_scene_rand > 50 and pro_scene_rand <= 75:
  725. if klismaday = daystart or prostitute['dirty_anal_mod'] = 1:
  726. $prostitute['client_scene'] = 'Anal'
  727. elseif klismaday ! daystart and prostitute['dirty_anal_mod'] = 0 and (mesec = 0 or prostitute['mesec_mod'] = 1):
  728. $prostitute['client_scene'] = 'Vaginal'
  729. else
  730. $prostitute['client_scene'] = 'Blowjob'
  731. end
  732. else
  733. $prostitute['client_scene'] = 'Blowjob'
  734. end
  735. !!---- Regular Worker ----------------------------------------------------------------------------------------
  736. if prostitute['customer_total'] < 10:
  737. prostitute['regular_chance'] = 0
  738. elseif prostitute['customer_total'] >= 10 and prostitute['customer_total'] <= 25:
  739. prostitute['regular_chance'] = 1
  740. elseif prostitute['customer_total'] > 25 and prostitute['customer_total'] <= 50:
  741. prostitute['regular_chance'] = 2
  742. elseif prostitute['customer_total'] > 50 and prostitute['customer_total'] <= 100:
  743. prostitute['regular_chance'] = 3
  744. elseif prostitute['customer_total'] > 100 and prostitute['customer_total'] <= 250:
  745. prostitute['regular_chance'] = 4
  746. end
  747. !!---- Chance to find a client --------------------------------------------------------------------------------
  748. prostitute['client_chance'] = hotcat * 10 + prostitute['regular_chance'] * 5 + rand(1,100) + prostitute['pity_counter']
  749. if $pantyworntype = 'eroto' and CloSkirtShortness > 4: prostitute['client_chance'] += 10
  750. !!---- Client ------------------------------------------------------------------------------------------------
  751. if prostitute['regular_timer'] ! daystart and $prostitute['client_scene'] ! 'Blowjob':
  752. if (prostitute['regular_chance'] = 1 and rand(1,100) > 95) or (prostitute['regular_chance'] = 2 and rand(1,100) > 90) or (prostitute['regular_chance'] = 3 and rand(1,100) > 80) or (prostitute['regular_chance'] = 4 and rand(1,100) > 60):
  753. prostitute['regular'] = 1
  754. else
  755. prostitute['regular'] = 0
  756. end
  757. else
  758. prostitute['regular'] = 0
  759. end
  760. !!ToDo: Rough Clients
  761. !! if prostitute['regular'] = 0:
  762. !! if (pro_work_day = 0 and rand(1,100) > 90) or (pro_work_day = 1 and rand(1,100) > 95):
  763. !! if prostitute['rough'] = 1
  764. !! else
  765. !! prostitute['rough'] = 0
  766. !! end
  767. !! end
  768. if prostitute['regular'] = 0 and prostitute['rough'] = 0 and prostitute['std_mod'] = 0 and rand(1,100) > iif($pro_brand['text_pubic'] = 'cumslut', 84, 92):
  769. prostitute['client_creampie'] = 1
  770. else
  771. prostitute['client_creampie'] = 0
  772. end
  773. if prostitute['rough'] = 1 or (prostitute['rough'] = 0 and rand(1,100) > 40):
  774. prostitute['propose'] = 0
  775. else
  776. prostitute['propose'] = 1
  777. end
  778. end
  779. !!---------- Payment ---------------------------------------------------------------------------------------------
  780. if $ARGS[0] = 'payment':
  781. !!---- Basic Payment -----------------------------------------------------------------------------------------
  782. if $ARGS[1] = 'pav':
  783. if $prostitute['pav_scene'] = 'blowjob':
  784. prostitute['payment'] = 425
  785. elseif $prostitute['pav_scene'] = 'anal':
  786. prostitute['payment'] = 1200
  787. else
  788. prostitute['payment'] = 1000
  789. end
  790. else
  791. if $prostitute['client_scene'] = 'Blowjob':
  792. prostitute['payment'] = 350
  793. if $ARGS[1] = 'condom_no': prostitute['payment'] += 75
  794. if $ARGS[2] = 'inside_yes': prostitute['payment'] += 50
  795. elseif $prostitute['client_scene'] = 'Vaginal':
  796. prostitute['payment'] = 700
  797. if $ARGS[1] = 'condom_no': prostitute['payment'] += 300
  798. if $ARGS[2] = 'inside_yes': prostitute['payment'] += 300
  799. elseif $prostitute['client_scene'] = 'Anal':
  800. prostitute['payment'] = 900
  801. if $ARGS[1] = 'condom_no': prostitute['payment'] += 200
  802. if $ARGS[2] = 'inside_yes': prostitute['payment'] += 100
  803. end
  804. end
  805. !!---- Bonus -------------------------------------------------------------------------------------------------
  806. prostitute['payment_mod'] = hotcat * 10
  807. if pcs_makeup = 0:
  808. prostitute['payment_mod'] -= 20
  809. elseif pcs_makeup > 1:
  810. prostitute['payment_mod'] += pcs_makeup * 10
  811. end
  812. if mesec > 0 and $prostitute['client_scene'] = 'Vaginal':
  813. if prostitute['mesec_mod'] = 0:
  814. prostitute['payment_mod'] -= 200
  815. else
  816. prostitute['payment_mod'] += 300
  817. end
  818. end
  819. if klismaday ! daystart and $prostitute['client_scene'] = 'Anal':
  820. if prostitute['dirty_anal_mod'] = 0:
  821. if $ARGS[1] = 'condom_no':
  822. prostitute['payment_mod'] -= 600
  823. elseif $ARGS[1] = 'condom_yes':
  824. prostitute['payment_mod'] -= 300
  825. end
  826. else
  827. prostitute['payment_mod'] += 300
  828. end
  829. end
  830. if prostitute['cum_dressed'] = 1:
  831. if prostitute['cum_visible_mod'] = 0:
  832. prostitute['payment_mod'] -= 200
  833. else
  834. prostitute['payment_mod'] += 300
  835. end
  836. end
  837. prostitute['payment_mod'] += pcs_mood - 50
  838. if $pantyworntype = 'eroto' and CloSkirtShortness > 4: prostitute['payment_mod'] += 50
  839. if prostitute['vidage_mod'] = 1:
  840. prostitute['payment_mod'] += 50 * (18 - vidage)
  841. else
  842. prostitute['payment_mod'] -= 50 * (18 - vidage)
  843. end
  844. if ($prostitute['client_scene'] = 'Blowjob') or ($prostitute['pav_scene'] = 'blowjob'):
  845. prostitute['payment_mod'] = prostitute['payment_mod'] / 2
  846. if pirsA = 2:
  847. prostitute['payment_mod'] += 50
  848. elseif pirsA = 4:
  849. prostitute['payment_mod'] += 75
  850. elseif pirsA > 0 and pirsA < 10000:
  851. prostitute['payment_mod'] += 25
  852. end
  853. end
  854. prostitute['payment'] += prostitute['payment_mod']
  855. prostitute['payment_backup'] = prostitute['payment']
  856. prostitute['payment'] = (prostitute['payment'] * (100 + prostitute['client_satisfaction'])) / 100
  857. !!Rounding
  858. prostitute['payment'] = func('prostitution_functions', 'exact_round', prostitute['payment'], 10)
  859. prostitute['payment_backup'] = func('prostitution_functions', 'exact_round', prostitute['payment_backup'], 10)
  860. end
  861. !!---------- Abortion --------------------------------------------------------------------------------------------
  862. if $ARGS[0] = 'abortion':
  863. abort += 1
  864. abortionbirthdate = daystart
  865. gs 'medical_din', 'remove_preg'
  866. knowpregloss = 1
  867. abortrand = rand(0, 10)
  868. if age > 18:
  869. if abortrand < 10:sterilewb += 1
  870. if abortrand = 10:sterilewb += 10
  871. else
  872. if abortrand < 7:sterilewb += 2
  873. if abortrand >= 7:sterilewb += 10
  874. end
  875. killvar 'abortrand'
  876. pcs_hydra += 20
  877. if broodcurse > 0: gt 'gameover', 'force', 13
  878. end
  879. !!---------- Random Name -----------------------------------------------------------------------------------------
  880. if $ARGS[0] = 'random_name':
  881. $pro_boyname[1] = ''
  882. $pro_boyname[2] = ''
  883. :pro_rng_jump
  884. pro_temp = rand(0,23)
  885. if pro_temp = 0:
  886. $pro_temp = 'Abram'
  887. elseif pro_temp = 1:
  888. $pro_temp = 'Alexei'
  889. elseif pro_temp = 2:
  890. $pro_temp = 'Adrian'
  891. elseif pro_temp = 3:
  892. $pro_temp = 'Dima'
  893. elseif pro_temp = 4:
  894. $pro_temp = 'Dimitri'
  895. elseif pro_temp = 5:
  896. $pro_temp = 'Igor'
  897. elseif pro_temp = 6:
  898. $pro_temp = 'Leonid'
  899. elseif pro_temp = 7:
  900. $pro_temp = 'Petka'
  901. elseif pro_temp = 8:
  902. $pro_temp = 'Michail'
  903. elseif pro_temp = 9:
  904. $pro_temp = 'Vasily'
  905. elseif pro_temp = 10:
  906. $pro_temp = 'Oleg'
  907. elseif pro_temp = 11:
  908. $pro_temp = 'Olezka'
  909. elseif pro_temp = 12:
  910. $pro_temp = 'Pasha'
  911. elseif pro_temp = 13:
  912. $pro_temp = 'Pavel'
  913. elseif pro_temp = 14:
  914. $pro_temp = 'Sacha'
  915. elseif pro_temp = 15:
  916. $pro_temp = 'Slava'
  917. elseif pro_temp = 16:
  918. $pro_temp = 'Ruslan'
  919. elseif pro_temp = 17:
  920. $pro_temp = 'Taras'
  921. elseif pro_temp = 18:
  922. $pro_temp = 'Timofey'
  923. elseif pro_temp = 19:
  924. $pro_temp = 'Vanya'
  925. elseif pro_temp = 20:
  926. $pro_temp = 'Viktor'
  927. elseif pro_temp = 21:
  928. $pro_temp = 'Vladimir'
  929. elseif pro_temp = 22:
  930. $pro_temp = 'Yaromir'
  931. elseif pro_temp = 23:
  932. $pro_temp = 'Yevgeni'
  933. end
  934. if $pro_boyname[1] = '':
  935. $pro_boyname[1] = $pro_temp
  936. jump 'pro_rng_jump'
  937. elseif $pro_boyname[2] = '':
  938. $pro_boyname[2] = $pro_temp
  939. end
  940. if $pro_boyname[1] = $pro_boyname[2]:
  941. $pro_boyname[2] = ''
  942. jump 'pro_rng_jump'
  943. end
  944. killvar 'pro_temp'
  945. killvar '$pro_temp'
  946. end
  947. !!---------- Payment ---------------------------------------------------------------------------------------------
  948. if $ARGS[0] = 'tat_pierce_count':
  949. tattCount = 0
  950. if tatarm >= 1: tattCount += 1
  951. if tatass >= 1: tattCount += 1
  952. if tatback >= 1: tattCount += 1
  953. if tatblly >= 1: tattCount += 1
  954. if tatbrst >= 1: tattCount += 1
  955. if tatchst >= 1: tattCount += 1
  956. if tatfce >= 1: tattCount += 1
  957. if tatankle >= 1: tattCount += 1
  958. if tatleg >= 1: tattCount += 1
  959. if tatlip >= 1: tattCount += 1
  960. if tatneck >= 1: tattCount += 1
  961. if tatvag >= 1: tattCount += 1
  962. if tatlech >= 1: tattCount += 1
  963. if tatside >= 1: tattCount += 1
  964. if tatupb >= 1: tattCount += 1
  965. if tatunder >= 1: tattCount += 1
  966. if tatwrist >= 1: tattCount += 1
  967. if tathand >= 1: tattCount += 1
  968. pierWearCount = 0
  969. if pirsA > 0 and pirsA ! 10000: pierWearCount += 1
  970. if pirsB > 0 and pirsB ! 10000: pierWearCount += 1
  971. if pirsC > 0 and pirsC ! 10000: pierWearCount += 1
  972. if pirsD > 0 and pirsD ! 10000: pierWearCount += 1
  973. if pirsE > 0 and pirsE ! 10000: pierWearCount += 1
  974. if pirsF > 0 and pirsF ! 10000: pierWearCount += 1
  975. if pirsG > 0 and pirsG ! 10000: pierWearCount += 1
  976. if pirsN > 0 and pirsN ! 10000: pierWearCount += 1
  977. end
  978. !!---------- Random Name -----------------------------------------------------------------------------------------
  979. if $ARGS[0] = 'pav_client':
  980. !!Reset
  981. prostitute['pav_internal'] = 0
  982. gs 'prostitution_functions', 'std_cum_check'
  983. !!Regular
  984. if prostitute['pav_total'] < 10:
  985. prostitute['pav_chance'] = 0
  986. elseif prostitute['pav_total'] >= 10 and prostitute['pav_total'] <= 25:
  987. prostitute['pav_chance'] = 1
  988. elseif prostitute['pav_total'] > 25 and prostitute['pav_total'] <= 50:
  989. prostitute['pav_chance'] = 2
  990. elseif prostitute['pav_total'] > 50 and prostitute['pav_total'] <= 100:
  991. prostitute['pav_chance'] = 3
  992. elseif prostitute['pav_total'] > 100 and prostitute['pav_total'] <= 250:
  993. prostitute['pav_chance'] = 4
  994. end
  995. if ((prostitute['pav_chance'] = 1 and rand(1,100) > 95) or (prostitute['pav_chance'] = 2 and rand(1,100) > 90) or (prostitute['pav_chance'] = 3 and rand(1,100) > 80) or (prostitute['pav_chance'] = 4 and rand(1,100) > 60)) and (pro_rand ! 8 or (pro_rand = 8 and prostitute['pav_regular_s8'] = 1)):
  996. prostitute['pav_regular'] = 1
  997. !! elseif prostitute['pav_chance'] > 0 and rand(1,100) > 92:
  998. !! prostitute['pav_regular'] = -1
  999. else
  1000. prostitute['pav_regular'] = 0
  1001. end
  1002. !!ToDo: Add cheat for this chance
  1003. $prostitute['client_behavior'] = iif(rand(1,100) < prostitute['client_behavior_chance'] or prostitute['pav_regular'] = -1, 'nice', 'abusive')
  1004. !!---- Scene --------------------------------------------------------------------------------------------------
  1005. if pro_rand > 7:
  1006. $prostitute['pav_scene'] = 'anal'
  1007. elseif mesec = 0 and rand(0,100) < 50:
  1008. $prostitute['pav_scene'] = 'pussy'
  1009. else
  1010. $prostitute['pav_scene'] = 'blowjob'
  1011. end
  1012. if pro_rand = 0 or pro_rand = 8 or pro_rand = 9 or ((pro_rand = 2 or pro_rand = 3 or (pro_rand = 5 and $prostitute['client_behavior'] = 'nice') or pro_rand = 6 or pro_rand = 7) and $prostitute['pav_scene'] = 'pussy'):
  1013. $prostitute['pav_location'] = 'private'
  1014. if pro_rand = 3 or pro_rand = 8: $prostitute['client_behavior'] = 'abusive'
  1015. elseif pro_rand = 1 and $prostitute['pav_scene'] = 'pussy':
  1016. $prostitute['pav_location'] = iif($prostitute['client_behavior'] = 'nice', 'private', 'public')
  1017. elseif ((pro_rand = 2 or pro_rand = 3 or pro_rand = 6 or pro_rand = 7) and $prostitute['pav_scene'] = 'blowjob') or pro_rand = 4 or pro_rand = 5:
  1018. $prostitute['pav_location'] = 'public'
  1019. if pro_rand = 5: $prostitute['client_behavior'] = 'abusive'
  1020. else
  1021. gt 'prostitution_pavlovsk', 'rng'
  1022. end
  1023. if prostitute['pav_regular_s8'] = 1 and pro_rand = 8: prostitute['pav_regular'] = 1
  1024. if (pro_rand = 3 or pro_rand = 8) and $prostitute['pav_scene'] = 'private' and prostitute['pav_regular'] = 1:
  1025. prostitute['pav_condom_refusal'] = 1
  1026. else
  1027. prostitute['pav_condom_refusal'] = 0
  1028. end
  1029. !!---- Generator ----------------------------------------------------------------------------------------------
  1030. gs 'npcgeneratec', 0, 'pavlovsk client', rand(18,45)
  1031. gs 'boyStat', $npclastgenerated
  1032. end
  1033. !!---- Checking visible STD and cum -------------------------------------------------------------------------------
  1034. if $ARGS[0] = 'std_cum_check':
  1035. !!---- Visible STD --------------------------------------------------------------------------------------------
  1036. if pcs_apprnc = -10 and rand(1,10) < 8:
  1037. prostitute['std_mod'] = 1
  1038. else
  1039. prostitute['std_mod'] = 0
  1040. end
  1041. !!---- Non-Visible Cum ----------------------------------------------------------------------------------------
  1042. if cumloc[0] = 1:
  1043. prostitute['cum_vaginal_mod'] = 1
  1044. else
  1045. prostitute['cum_vaginal_mod'] = 0
  1046. end
  1047. if cumloc[3] = 1:
  1048. prostitute['cum_anal_mod'] = 1
  1049. else
  1050. prostitute['cum_anal_mod'] = 0
  1051. end
  1052. !!---- Visible Cum (Dressed) ----------------------------------------------------------------------------------
  1053. if cumloc[7] = 1 or cumloc[11] = 1 or cumloc[13] = 1 or cumloc[15] = 1:
  1054. prostitute['cum_dressed'] = 1
  1055. else
  1056. prostitute['cum_dressed'] = 0
  1057. end
  1058. !!Visible Cum (Undressed)
  1059. if cumloc[1] = 1 or cumloc[4] = 1 or cumloc[8] = 1 or cumloc[14] = 1 or cumloc[16] = 1:
  1060. prostitute['cum_undressed'] = 1
  1061. else
  1062. prostitute['cum_undressed'] = 0
  1063. end
  1064. end
  1065. !!---------- Exact Rounding --------------------------------------------------------------------------------------
  1066. if $ARGS[0] = 'exact_round':
  1067. !! ARGS[1] = value you want divided
  1068. !! ARGS[2] = divider
  1069. !! func('prostitution_functions','exact_round', number, divider)
  1070. !! func('prostitution_functions','exact_round', 12345, 7)
  1071. if ARGS[2] ! 0:
  1072. round_number = ARGS[1]/ARGS[2]
  1073. if (ARGS[2] mod 2 ! 0 and ARGS[1] mod ARGS[2] > ARGS[2]/2) or (ARGS[2] mod 2 = 0 and ARGS[1] mod ARGS[2] >= ARGS[2]/2): round_number += 1
  1074. round_number = round_number * ARGS[2]
  1075. result = round_number
  1076. killvar 'round_number'
  1077. else
  1078. '<b>Developer Note: No division by 0. Please report this and some text from the mainscreen as a bug in the whore life thread.</b>'
  1079. end
  1080. end
  1081. --- prostitution_functions ---------------------------------