prostitution_functions.qsrc 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287
  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 gadriver_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 _
  351. and prostitute['shoewornnumber'] = shoewornnumber _
  352. and prostitute['currentpursenumber'] = currentpursenumber _
  353. and prostitute['coatwornnumber'] = coatwornnumber _
  354. and (prostitute['bodysuitwornnumber'] = bodysuitwornnumber _
  355. or (prostitute['pantywornnumber'] = pantywornnumber _
  356. and prostitute['brawornnumber'] = brawornnumber))
  357. end
  358. !!---- Setting, clearing and changing outfits ------------------------------------------------------------------
  359. if $ARGS[0] = 'set_default_outfit':
  360. !!-- Clothing
  361. $prostitute['clothingworntype'] = $clothingworntype
  362. prostitute['clothingwornnumber'] = clothingwornnumber
  363. !!-- Underwear
  364. prostitute['underweartype'] = 0
  365. if underwear['type'] = 2:
  366. prostitute['underweartype'] = 2
  367. $prostitute['bodysuitworntype'] = $bodysuitworntype
  368. prostitute['bodysuitwornnumber'] = bodysuitwornnumber
  369. else
  370. $prostitute['pantyworntype'] = $pantyworntype
  371. prostitute['pantywornnumber'] = pantywornnumber
  372. $prostitute['braworntype'] = $braworntype
  373. prostitute['brawornnumber'] = brawornnumber
  374. end
  375. !!-- Shoes
  376. $prostitute['shoeworntype'] = $shoeworntype
  377. prostitute['shoewornnumber'] = shoewornnumber
  378. !!-- Bag
  379. $prostitute['currentpursetype'] = $currentpursetype
  380. prostitute['currentpursenumber'] = currentpursenumber
  381. !!-- Coat
  382. $prostitute['coatworntype'] = $coatworntype
  383. prostitute['coatwornnumber'] = coatwornnumber
  384. prostitute['outfit_is_set'] = 1
  385. end
  386. if $ARGS[0] = 'clearing_default_outfit':
  387. !!-- Clothing
  388. $prostitute['clothingworntype'] = ''
  389. prostitute['clothingwornnumber'] = 0
  390. !!-- Underwear
  391. $prostitute['bodysuitworntype'] = ''
  392. prostitute['bodysuitwornnumber'] = 0
  393. $prostitute['pantyworntype'] = ''
  394. prostitute['pantywornnumber'] = 0
  395. $prostitute['braworntype'] = ''
  396. prostitute['brawornnumber'] = 0
  397. !!-- Shoes
  398. $prostitute['shoeworntype'] = ''
  399. prostitute['shoewornnumber'] = 0
  400. !!-- Bag
  401. $prostitute['currentpursetype'] = ''
  402. prostitute['currentpursenumber'] = 0
  403. !!-- Coat
  404. $prostitute['coatworntype'] = ''
  405. prostitute['coatwornnumber'] = 0
  406. prostitute['outfit_is_set'] = 0
  407. end
  408. if $ARGS[0] = 'change_into_prostitute_outfit':
  409. if dyneval('RESULT = <<$prostitute["clothingworntype"]>>_h[<<prostitute["clothingwornnumber"]>>]') <= 0:
  410. msg '<font color="red">Unavailable as outfit is worn out!</font>'
  411. exit
  412. end
  413. !! if last outfit is sport outfit
  414. gs 'wardrobe', 'is_sport'
  415. gs 'wardrobe', 'back_to_regular_clothes'
  416. !!-- Backup
  417. $lastwornclothingtype['prostitute'] = $clothingworntype
  418. lastwornclothingnumber['prostitute'] = clothingwornnumber
  419. lastwornunderwear['prostitute'] = 0
  420. if underwear['type'] = 2:
  421. lastwornunderwear['prostitute'] = 2
  422. $lastwornbodysuittype['prostitute'] = $bodysuitworntype
  423. lastwornbodysuitnumber['prostitute'] = bodysuitwornnumber
  424. else
  425. $lastwornpantytype['prostitute'] = $pantyworntype
  426. lastwornpantynumber['prostitute'] = pantywornnumber
  427. $lastwornbratype['prostitute'] = $braworntype
  428. lastwornbranumber['prostitute'] = brawornnumber
  429. end
  430. $lastwornshoetype['prostitute'] = $shoeworntype
  431. lastwornshoenumber['prostitute'] = shoewornnumber
  432. $lastwornpursetype['prostitute'] = $currentpursetype
  433. lastwornpursenumber['prostitute'] = currentpursenumber
  434. $lastworncoattype['prostitute'] = $coatworntype
  435. lastworncoatnumber['prostitute'] = coatwornnumber
  436. !!-- Clothing
  437. gs 'clothing', 'wear', $prostitute['clothingworntype'], prostitute['clothingwornnumber']
  438. !!-- Underwear
  439. if prostitute['underweartype'] = 2:
  440. gs 'underwear_bodysuits', 'wear', $lastwornbodysuittype['prostitute'], lastwornbodysuitnumber['prostitute']
  441. else
  442. gs 'panties', 'wear', $prostitute['pantyworntype'], prostitute['pantywornnumber']
  443. gs 'bras', 'wear', $prostitute['braworntype'], prostitute['brawornnumber']
  444. end
  445. !!-- Shoes
  446. gs 'shoes', 'wear', $prostitute['shoeworntype'], prostitute['shoewornnumber']
  447. !!-- Bag
  448. gs 'purses', 'wear', $prostitute['currentpursetype'], prostitute['currentpursenumber']
  449. !!-- Coat
  450. gs 'coats', 'wear', $prostitute['coatworntype'], prostitute['coatwornnumber']
  451. !! TODO: Check for worn out here?
  452. !! CHeck if the change happened not at home and if yes, then store the fact of change.
  453. gs 'prostitution_functions', 'work_clothes'
  454. if $ARGS[1] = 'work': prostitute['changed_for_work'] = 1
  455. end
  456. if $ARGS[0] = 'change_into_regular_clothes':
  457. gs 'wardrobe', 'back_to_regular_clothes'
  458. !! if last outfit is sport outfit
  459. gs 'wardrobe', 'is_sport'
  460. gs 'wardrobe', 'back_to_regular_clothes'
  461. end
  462. !!---------- Chaging outfits in public locations ------------------------------------------------------------------------
  463. !!------ Changing clothes --------------------------
  464. if $ARGS[0] = 'change_to_work':
  465. cla & *clr
  466. minut += 10
  467. if $ARGS[1] = 'car':
  468. !! TODO: Video / image and some text describing the cloth change in the car
  469. ''+iif($loc_desc = '', 'You quickly change into your working outfit in your car.', $loc_desc)
  470. end
  471. if $ARGS[1] = 'restroom':
  472. !! TODO: Video / image and some text describing the cloth change in the men''s restroom
  473. !! Is there a way to know if it''s a men''s or women''s restroom?
  474. ''+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)
  475. end
  476. if $ARGS[1] = 'road_side':
  477. !! TODO: Video / image and some text describing the cloth change next to a road
  478. ''+iif($loc_desc = '', 'You quickly change into your working outfit behind some bushes by the road.', $loc_desc)
  479. end
  480. gs 'prostitution_functions', 'change_into_prostitute_outfit', 'work'
  481. act 'Finish': gt $loc, $loc_arg
  482. end
  483. if $ARGS[0] = 'change_back':
  484. cla & *clr
  485. minut += 10
  486. if $ARGS[1] = 'car':
  487. !! TODO: Video / image and some text describing the cloth change in the car
  488. 'You quickly change into your working everyday clothes in your car.'
  489. end
  490. if $ARGS[1] = 'restroom':
  491. !! TODO: Video / image and some text describing the cloth change in the men''s restroom
  492. 'You quickly change into your everyday clothes in the men''s restroom..'
  493. end
  494. if $loc_arg = 'restroom_women':
  495. !! TODO: Video / image and some text describing the cloth change in the women''s restroom
  496. 'You quickly change into your everyday clothes in the women''s restroom.'
  497. end
  498. if $ARGS[1] = 'road_side':
  499. !! TODO: Video / image and some text describing the cloth change next to a road
  500. 'You quickly change into your everyday clothes behind some bushes by the road.'
  501. end
  502. gs 'prostitution_functions', 'change_into_regular_clothes'
  503. act 'Finish': gt $loc, $loc_arg
  504. end
  505. !!-----------------------------------------------------------------------------------------------------------------------
  506. !!---------- Checking for events ----------------------------------------------------------------------------------------
  507. !!-----------------------------------------------------------------------------------------------------------------------
  508. if $ARGS[0] = 'check_solicitation_event':
  509. gs 'prostitution_functions', 'work_clothes'
  510. if prostitute['wl_block'] = 0 and prostitute['full_block'] = 0 and func('prostitution_functions', 'prostitute_work_hours') and func('prostitution_functions','is_solicitation_location'):
  511. if prostitute['pavlovsk'] = 1 and prostitute['pav_time_hour'] ! hour and rand(-20, 70) < minut:
  512. gs 'prostitution_pavlovsk', 'chance'
  513. end
  514. if prostitute['pavlovsk'] = 1 and prostitute['work_clothes'] :
  515. 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>'
  516. end
  517. if prostitute['pav_residential_prost_day'] ! daystart: prostitute['pav_residential_prost_day'] = daystart
  518. !!pav_residential_prost_day
  519. end
  520. end
  521. !!-----------------------------------------------------------------------------------------------------------------------
  522. !!---------- Willpower checks -------------------------------------------------------------------------------------------
  523. !!-----------------------------------------------------------------------------------------------------------------------
  524. if $ARGS[0] = 'will_unprotected':
  525. gs 'willpower', 'calc'
  526. will_cost = 0
  527. if missCum >= timeTresh: will_calc += 100
  528. if $ARGS[1] = 'resist':
  529. if pro_stats['unprotected'] <= 90:
  530. will_cost = (10 + pro_stats['unprotected'] + will_calc) / 10
  531. else
  532. will_cost = (100 + will_calc)/10
  533. end
  534. else
  535. if pro_stats['unprotected'] <= 90:
  536. will_cost = (100 - pro_stats['unprotected'] + will_calc) / 10
  537. else
  538. will_cost = (10 + will_calc)/10
  539. end
  540. end
  541. gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
  542. end
  543. if $ARGS[0] = 'will_rimming':
  544. gs 'willpower', 'calc'
  545. if $ARGS[1] = 'self':
  546. if stat['rimming_give'] <= 90:
  547. will_cost = (100 - stat['rimming_give'] + will_calc)/10
  548. else
  549. will_cost = (10 + will_calc)/10
  550. end
  551. elseif $ARGS[1] = 'force':
  552. if stat['rimming_give'] <= 40:
  553. will_cost = (110 - will_enforced - stat['rimming_give'] + will_calc)/10
  554. else
  555. will_cost = (70 - will_enforced + will_calc)/10
  556. end
  557. else
  558. if stat['rimming_give'] <= 90:
  559. will_cost = (10 + stat['rimming_give'] + will_calc)/10
  560. else
  561. will_cost = (100 + will_calc)/10
  562. end
  563. end
  564. gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
  565. end
  566. if $ARGS[0] = 'will_atm':
  567. gs 'willpower', 'calc'
  568. if $ARGS[1] = 'self':
  569. if pro_stats['atm'] <= 90:
  570. will_cost = (100 - pro_stats['atm'] + will_calc)/10
  571. else
  572. will_cost = (10 + will_calc)/10
  573. end
  574. elseif $ARGS[1] = 'force':
  575. if pro_stats['atm'] <= 40:
  576. will_cost = (110 - will_enforced - pro_stats['atm'] + will_calc)/10
  577. else
  578. will_cost = (70 - will_enforced + will_calc)/10
  579. end
  580. else
  581. if pro_stats['atm'] <= 90:
  582. will_cost = (10 + pro_stats['atm'] + will_calc)/10
  583. else
  584. will_cost = (100 + will_calc)/10
  585. end
  586. end
  587. gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
  588. end
  589. !!-----------------------------------------------------------------------------------------------------------------------
  590. !!---------- Condoms & STDs----------------------------------------------------------------------------------------------
  591. !!-----------------------------------------------------------------------------------------------------------------------
  592. if $ARGS[0] = 'std_check':
  593. gs 'dinSex', 'std_trigger', $ARGS[1]
  594. killvar 'pro_std_check_rand'
  595. killvar 'pro_std_rand'
  596. end
  597. if $ARGS[0] = 'std_check_oral':
  598. gs 'dinSex', 'std_trigger_oral', $ARGS[1]
  599. killvar 'pro_std_check_rand'
  600. killvar 'pro_std_rand'
  601. end
  602. if $ARGS[0] = 'remove_condom':
  603. if mc_inventory['equipped_condoms'] > 0:
  604. mc_inventory['equipped_condoms'] -= 1
  605. elseif mc_inventory['sabotaged_condoms'] > 0 and preziktype = 2:
  606. mc_inventory['sabotaged_condoms'] -= 1
  607. elseif mc_inventory['normal_condoms'] > 0 and preziktype <> 2:
  608. mc_inventory['normal_condoms'] -= 1
  609. end
  610. end
  611. if $ARGS[0] = 'your_condom':
  612. prostitute['condom'] = 1
  613. protect = iif(mc_inventory['equipped_condoms'] > 0,1,0)
  614. if mc_inventory['equipped_condoms'] > 0:
  615. if rand(1,mc_inventory['equipped_condoms']) <= mc_inventory['bad_condoms']:
  616. mc_inventory['bad_condoms'] -= 1
  617. noprotect = 1
  618. sexcontra = rand(4,5)
  619. else
  620. sexcontra = 3
  621. end
  622. mc_inventory['equipped_condoms'] -= 1
  623. if preziktype = 2: sexcontra = 7 & noprotect = 1
  624. else
  625. sexcontra = 0
  626. end
  627. end
  628. if $ARGS[0] = 'his_condom':
  629. $bwa_boy = iif($ARGS[1] = '',$boydesc,$ARGS[1])
  630. protect = 1
  631. sexcontra = 3
  632. *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.'
  633. end
  634. !!---------- Background: Black-----------------------------------------------------------------------------------
  635. if $ARGS[0] = 'darkness':
  636. fcolor = rgb(255, 255, 255)
  637. bcolor = rgb(0, 0, 0)
  638. lcolor = rgb(106, 90, 205)
  639. end
  640. if $ARGS[0] = 'parameters':
  641. !!Reset
  642. protect = 0
  643. sexcontra = 0
  644. $pro_client_condom = 'tbd'
  645. $pro_client_cumshot = 'tbd'
  646. !!Client
  647. gs 'npcgeneratec', 0, 'client', rand(18,65)
  648. gs 'boyStat', $npclastgenerated
  649. !!
  650. !!---------- Time -----------------------------------------------------------------------------------------------
  651. if hour > 19 or hour < 7:
  652. $pro_work_time = 'night'
  653. else
  654. $pro_work_time = 'day'
  655. end
  656. gs 'prostitution_functions', 'std_cum_check'
  657. !!---------- Client Likes/Dislikes ------------------------------------------------------------------------------
  658. if rand(1,10) = 10:
  659. prostitute['mesec_mod'] = 1
  660. else
  661. prostitute['mesec_mod'] = 0
  662. end
  663. if rand(1,100) > 97:
  664. prostitute['dirty_anal_mod'] = 1
  665. else
  666. prostitute['dirty_anal_mod'] = 0
  667. end
  668. if rand(1,10) = 10:
  669. prostitute['cum_visible_mod'] = 1
  670. else
  671. prostitute['cum_visible_mod'] = 0
  672. end
  673. !!---------- Prostitution long term effects ---------------------------------------------------------------------
  674. if $ARGS[0] = 'solicitation_effort':
  675. cost = ARGS[1]
  676. prostitute['skin_penalty'] += 5
  677. if temper < 15: prostitute['skin_penalty'] += 5
  678. if temper > 25: prostitute['skin_penalty'] += 5
  679. if cost <= willpowermax/4:
  680. prostitute['age_mod'] += 5
  681. elseif cost <= willpowermax/3:
  682. prostitute['age_mod'] += 10
  683. elseif cost <= willpowermax/2:
  684. prostitute['age_mod'] += 15
  685. else
  686. prostitute['age_mod'] += 20
  687. end
  688. end
  689. if $ARGS[0] = 'client_effort':
  690. $client_type = iif($ARGS[1] = '', 'normal', $ARGS[1])
  691. if $client_type = 'nice':
  692. prostitute['age_mod'] += 5
  693. elseif $client_type = 'normal':
  694. prostitute['age_mod'] += 10
  695. elseif $client_type = 'abusive':
  696. prostitute['age_mod'] += 20
  697. end
  698. end
  699. if $ARGS[0] = 'daily_effects':
  700. if prostitute['age_mod'] >= 100:
  701. temp_age_mod_remain = prostitute['age_mod'] MOD 100
  702. vidageday -= ((prostitute['age_mod'] - temp_age_mod_remain) / 100)
  703. prostitute['age_mod'] = temp_age_mod_remain
  704. killvar 'temp_age_mod_remain'
  705. end
  706. if prostitute['skin_penalty'] >= 100:
  707. temp_skin_remain = prostitute['skin_penalty'] MOD 100
  708. skinDailyPenalty += ((prostitute['skin_penalty'] - temp_skin_remain) / 100)
  709. prostitute['skin_penalty'] = temp_skin_remain
  710. killvar 'temp_skin_remain'
  711. end
  712. end
  713. !!---------- Age ------------------------------------------------------------------------------------------------
  714. if vidage < 18 and rand(1,10) < 7:
  715. prostitute['vidage_mod'] = 1
  716. else
  717. prostitute['vidage_mod'] = 0
  718. end
  719. !!---------- Scenes ----------------------------------------------------------------------------------------------
  720. !!----------------------------------------------------------------------------------------------------------------
  721. pro_scene_rand = rand(1,100)
  722. if pro_scene_rand <= 50:
  723. if mesec = 0 or prostitute['mesec_mod'] = 1:
  724. $prostitute['client_scene'] = 'Vaginal'
  725. elseif mesec > 0 and prostitute['mesec_mod'] = 0 and (klismaday = daystart or prostitute['dirty_anal_mod'] = 1):
  726. $prostitute['client_scene'] = 'Anal'
  727. else
  728. $prostitute['client_scene'] = 'Blowjob'
  729. end
  730. elseif pro_scene_rand > 50 and pro_scene_rand <= 75:
  731. if klismaday = daystart or prostitute['dirty_anal_mod'] = 1:
  732. $prostitute['client_scene'] = 'Anal'
  733. elseif klismaday ! daystart and prostitute['dirty_anal_mod'] = 0 and (mesec = 0 or prostitute['mesec_mod'] = 1):
  734. $prostitute['client_scene'] = 'Vaginal'
  735. else
  736. $prostitute['client_scene'] = 'Blowjob'
  737. end
  738. else
  739. $prostitute['client_scene'] = 'Blowjob'
  740. end
  741. !!---- Regular Worker ----------------------------------------------------------------------------------------
  742. if prostitute['customer_total'] < 10:
  743. prostitute['regular_chance'] = 0
  744. elseif prostitute['customer_total'] >= 10 and prostitute['customer_total'] <= 25:
  745. prostitute['regular_chance'] = 1
  746. elseif prostitute['customer_total'] > 25 and prostitute['customer_total'] <= 50:
  747. prostitute['regular_chance'] = 2
  748. elseif prostitute['customer_total'] > 50 and prostitute['customer_total'] <= 100:
  749. prostitute['regular_chance'] = 3
  750. elseif prostitute['customer_total'] > 100 and prostitute['customer_total'] <= 250:
  751. prostitute['regular_chance'] = 4
  752. end
  753. !!---- Chance to find a client --------------------------------------------------------------------------------
  754. prostitute['client_chance'] = hotcat * 10 + prostitute['regular_chance'] * 5 + rand(1,100) + prostitute['pity_counter']
  755. if $pantyworntype = 'eroto' and CloSkirtShortness > 4: prostitute['client_chance'] += 10
  756. !!---- Client ------------------------------------------------------------------------------------------------
  757. if prostitute['regular_timer'] ! daystart and $prostitute['client_scene'] ! 'Blowjob':
  758. 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):
  759. prostitute['regular'] = 1
  760. else
  761. prostitute['regular'] = 0
  762. end
  763. else
  764. prostitute['regular'] = 0
  765. end
  766. !!ToDo: Rough Clients
  767. !! if prostitute['regular'] = 0:
  768. !! if (pro_work_day = 0 and rand(1,100) > 90) or (pro_work_day = 1 and rand(1,100) > 95):
  769. !! if prostitute['rough'] = 1
  770. !! else
  771. !! prostitute['rough'] = 0
  772. !! end
  773. !! end
  774. 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):
  775. prostitute['client_creampie'] = 1
  776. else
  777. prostitute['client_creampie'] = 0
  778. end
  779. if prostitute['rough'] = 1 or (prostitute['rough'] = 0 and rand(1,100) > 40):
  780. prostitute['propose'] = 0
  781. else
  782. prostitute['propose'] = 1
  783. end
  784. end
  785. !!---------- Payment ---------------------------------------------------------------------------------------------
  786. if $ARGS[0] = 'payment':
  787. !!---- Basic Payment -----------------------------------------------------------------------------------------
  788. if $ARGS[1] = 'pav':
  789. if $prostitute['pav_scene'] = 'blowjob':
  790. prostitute['payment'] = 425
  791. elseif $prostitute['pav_scene'] = 'anal':
  792. prostitute['payment'] = 1200
  793. else
  794. prostitute['payment'] = 1000
  795. end
  796. else
  797. if $prostitute['client_scene'] = 'Blowjob':
  798. prostitute['payment'] = 350
  799. if $ARGS[1] = 'condom_no': prostitute['payment'] += 75
  800. if $ARGS[2] = 'inside_yes': prostitute['payment'] += 50
  801. elseif $prostitute['client_scene'] = 'Vaginal':
  802. prostitute['payment'] = 700
  803. if $ARGS[1] = 'condom_no': prostitute['payment'] += 300
  804. if $ARGS[2] = 'inside_yes': prostitute['payment'] += 300
  805. elseif $prostitute['client_scene'] = 'Anal':
  806. prostitute['payment'] = 900
  807. if $ARGS[1] = 'condom_no': prostitute['payment'] += 200
  808. if $ARGS[2] = 'inside_yes': prostitute['payment'] += 100
  809. end
  810. end
  811. !!---- Bonus -------------------------------------------------------------------------------------------------
  812. prostitute['payment_mod'] = hotcat * 10
  813. if pcs_makeup = 0:
  814. prostitute['payment_mod'] -= 20
  815. elseif pcs_makeup > 1:
  816. prostitute['payment_mod'] += pcs_makeup * 10
  817. end
  818. if mesec > 0 and $prostitute['client_scene'] = 'Vaginal':
  819. if prostitute['mesec_mod'] = 0:
  820. prostitute['payment_mod'] -= 200
  821. else
  822. prostitute['payment_mod'] += 300
  823. end
  824. end
  825. if klismaday ! daystart and $prostitute['client_scene'] = 'Anal':
  826. if prostitute['dirty_anal_mod'] = 0:
  827. if $ARGS[1] = 'condom_no':
  828. prostitute['payment_mod'] -= 600
  829. elseif $ARGS[1] = 'condom_yes':
  830. prostitute['payment_mod'] -= 300
  831. end
  832. else
  833. prostitute['payment_mod'] += 300
  834. end
  835. end
  836. if prostitute['cum_dressed'] = 1:
  837. if prostitute['cum_visible_mod'] = 0:
  838. prostitute['payment_mod'] -= 200
  839. else
  840. prostitute['payment_mod'] += 300
  841. end
  842. end
  843. prostitute['payment_mod'] += pcs_mood - 50
  844. if $pantyworntype = 'eroto' and CloSkirtShortness > 4: prostitute['payment_mod'] += 50
  845. if prostitute['vidage_mod'] = 1:
  846. prostitute['payment_mod'] += 50 * (18 - vidage)
  847. else
  848. prostitute['payment_mod'] -= 50 * (18 - vidage)
  849. end
  850. if ($prostitute['client_scene'] = 'Blowjob') or ($prostitute['pav_scene'] = 'blowjob'):
  851. prostitute['payment_mod'] = prostitute['payment_mod'] / 2
  852. if pirsA = 2:
  853. prostitute['payment_mod'] += 50
  854. elseif pirsA = 4:
  855. prostitute['payment_mod'] += 75
  856. elseif pirsA > 0 and pirsA < 10000:
  857. prostitute['payment_mod'] += 25
  858. end
  859. end
  860. prostitute['payment'] += prostitute['payment_mod']
  861. prostitute['payment_backup'] = prostitute['payment']
  862. prostitute['payment'] = (prostitute['payment'] * (100 + prostitute['client_satisfaction'])) / 100
  863. !!Rounding
  864. prostitute['payment'] = func('prostitution_functions', 'exact_round', prostitute['payment'], 10)
  865. prostitute['payment_backup'] = func('prostitution_functions', 'exact_round', prostitute['payment_backup'], 10)
  866. end
  867. !!---------- Abortion --------------------------------------------------------------------------------------------
  868. if $ARGS[0] = 'abortion':
  869. abort += 1
  870. abortionbirthdate = daystart
  871. gs 'medical_din', 'remove_preg'
  872. knowpregloss = 1
  873. abortrand = rand(0, 10)
  874. if age > 18:
  875. if abortrand < 10:sterilewb += 1
  876. if abortrand = 10:sterilewb += 10
  877. else
  878. if abortrand < 7:sterilewb += 2
  879. if abortrand >= 7:sterilewb += 10
  880. end
  881. killvar 'abortrand'
  882. pcs_hydra += 20
  883. if broodcurse > 0: over = 13 & gt'gameover'
  884. end
  885. !!---------- Random Name -----------------------------------------------------------------------------------------
  886. if $ARGS[0] = 'random_name':
  887. $pro_boyname[1] = ''
  888. $pro_boyname[2] = ''
  889. :pro_rng_jump
  890. pro_temp = rand(0,23)
  891. if pro_temp = 0:
  892. $pro_temp = 'Abram'
  893. elseif pro_temp = 1:
  894. $pro_temp = 'Alexei'
  895. elseif pro_temp = 2:
  896. $pro_temp = 'Adrian'
  897. elseif pro_temp = 3:
  898. $pro_temp = 'Dima'
  899. elseif pro_temp = 4:
  900. $pro_temp = 'Dimitri'
  901. elseif pro_temp = 5:
  902. $pro_temp = 'Igor'
  903. elseif pro_temp = 6:
  904. $pro_temp = 'Leonid'
  905. elseif pro_temp = 7:
  906. $pro_temp = 'Petka'
  907. elseif pro_temp = 8:
  908. $pro_temp = 'Michail'
  909. elseif pro_temp = 9:
  910. $pro_temp = 'Vasily'
  911. elseif pro_temp = 10:
  912. $pro_temp = 'Oleg'
  913. elseif pro_temp = 11:
  914. $pro_temp = 'Olezka'
  915. elseif pro_temp = 12:
  916. $pro_temp = 'Pasha'
  917. elseif pro_temp = 13:
  918. $pro_temp = 'Pavel'
  919. elseif pro_temp = 14:
  920. $pro_temp = 'Sacha'
  921. elseif pro_temp = 15:
  922. $pro_temp = 'Slava'
  923. elseif pro_temp = 16:
  924. $pro_temp = 'Ruslan'
  925. elseif pro_temp = 17:
  926. $pro_temp = 'Taras'
  927. elseif pro_temp = 18:
  928. $pro_temp = 'Timofey'
  929. elseif pro_temp = 19:
  930. $pro_temp = 'Vanya'
  931. elseif pro_temp = 20:
  932. $pro_temp = 'Viktor'
  933. elseif pro_temp = 21:
  934. $pro_temp = 'Vladimir'
  935. elseif pro_temp = 22:
  936. $pro_temp = 'Yaromir'
  937. elseif pro_temp = 23:
  938. $pro_temp = 'Yevgeni'
  939. end
  940. if $pro_boyname[1] = '':
  941. $pro_boyname[1] = $pro_temp
  942. jump 'pro_rng_jump'
  943. elseif $pro_boyname[2] = '':
  944. $pro_boyname[2] = $pro_temp
  945. end
  946. if $pro_boyname[1] = $pro_boyname[2]:
  947. $pro_boyname[2] = ''
  948. jump 'pro_rng_jump'
  949. end
  950. killvar 'pro_temp'
  951. killvar '$pro_temp'
  952. end
  953. !!---------- Payment ---------------------------------------------------------------------------------------------
  954. if $ARGS[0] = 'tat_pierce_count':
  955. tattCount = 0
  956. if tatarm >= 1: tattCount += 1
  957. if tatass >= 1: tattCount += 1
  958. if tatback >= 1: tattCount += 1
  959. if tatblly >= 1: tattCount += 1
  960. if tatbrst >= 1: tattCount += 1
  961. if tatchst >= 1: tattCount += 1
  962. if tatfce >= 1: tattCount += 1
  963. if tatankle >= 1: tattCount += 1
  964. if tatleg >= 1: tattCount += 1
  965. if tatlip >= 1: tattCount += 1
  966. if tatneck >= 1: tattCount += 1
  967. if tatvag >= 1: tattCount += 1
  968. if tatlech >= 1: tattCount += 1
  969. if tatside >= 1: tattCount += 1
  970. if tatupb >= 1: tattCount += 1
  971. if tatunder >= 1: tattCount += 1
  972. if tatwrist >= 1: tattCount += 1
  973. if tathand >= 1: tattCount += 1
  974. pierWearCount = 0
  975. if pirsA > 0 and pirsA ! 10000: pierWearCount += 1
  976. if pirsB > 0 and pirsB ! 10000: pierWearCount += 1
  977. if pirsC > 0 and pirsC ! 10000: pierWearCount += 1
  978. if pirsD > 0 and pirsD ! 10000: pierWearCount += 1
  979. if pirsE > 0 and pirsE ! 10000: pierWearCount += 1
  980. if pirsF > 0 and pirsF ! 10000: pierWearCount += 1
  981. if pirsG > 0 and pirsG ! 10000: pierWearCount += 1
  982. if pirsN > 0 and pirsN ! 10000: pierWearCount += 1
  983. end
  984. !!---------- Random Name -----------------------------------------------------------------------------------------
  985. if $ARGS[0] = 'pav_client':
  986. !!Reset
  987. prostitute['pav_internal'] = 0
  988. gs 'prostitution_functions', 'std_cum_check'
  989. !!Regular
  990. if prostitute['pav_total'] < 10:
  991. prostitute['pav_chance'] = 0
  992. elseif prostitute['pav_total'] >= 10 and prostitute['pav_total'] <= 25:
  993. prostitute['pav_chance'] = 1
  994. elseif prostitute['pav_total'] > 25 and prostitute['pav_total'] <= 50:
  995. prostitute['pav_chance'] = 2
  996. elseif prostitute['pav_total'] > 50 and prostitute['pav_total'] <= 100:
  997. prostitute['pav_chance'] = 3
  998. elseif prostitute['pav_total'] > 100 and prostitute['pav_total'] <= 250:
  999. prostitute['pav_chance'] = 4
  1000. end
  1001. 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)):
  1002. prostitute['pav_regular'] = 1
  1003. !! elseif prostitute['pav_chance'] > 0 and rand(1,100) > 92:
  1004. !! prostitute['pav_regular'] = -1
  1005. else
  1006. prostitute['pav_regular'] = 0
  1007. end
  1008. !!ToDo: Add cheat for this chance
  1009. $prostitute['client_behavior'] = iif(rand(1,100) < prostitute['client_behavior_chance'] or prostitute['pav_regular'] = -1, 'nice', 'abusive')
  1010. !!---- Scene --------------------------------------------------------------------------------------------------
  1011. if pro_rand > 7:
  1012. $prostitute['pav_scene'] = 'anal'
  1013. elseif mesec = 0 and rand(0,100) < 50:
  1014. $prostitute['pav_scene'] = 'pussy'
  1015. else
  1016. $prostitute['pav_scene'] = 'blowjob'
  1017. end
  1018. 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'):
  1019. $prostitute['pav_location'] = 'private'
  1020. if pro_rand = 3 or pro_rand = 8: $prostitute['client_behavior'] = 'abusive'
  1021. elseif pro_rand = 1 and $prostitute['pav_scene'] = 'pussy':
  1022. $prostitute['pav_location'] = iif($prostitute['client_behavior'] = 'nice', 'private', 'public')
  1023. 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:
  1024. $prostitute['pav_location'] = 'public'
  1025. if pro_rand = 5: $prostitute['client_behavior'] = 'abusive'
  1026. else
  1027. gt 'prostitution_pavlovsk', 'rng'
  1028. end
  1029. if prostitute['pav_regular_s8'] = 1 and pro_rand = 8: prostitute['pav_regular'] = 1
  1030. if (pro_rand = 3 or pro_rand = 8) and $prostitute['pav_scene'] = 'private' and prostitute['pav_regular'] = 1:
  1031. prostitute['pav_condom_refusal'] = 1
  1032. else
  1033. prostitute['pav_condom_refusal'] = 0
  1034. end
  1035. !!---- Generator ----------------------------------------------------------------------------------------------
  1036. gs 'npcgeneratec', 0, 'pavlovsk client', rand(18,45)
  1037. gs 'boyStat', $npclastgenerated
  1038. end
  1039. !!---- Checking visible STD and cum -------------------------------------------------------------------------------
  1040. if $ARGS[0] = 'std_cum_check':
  1041. !!---- Visible STD --------------------------------------------------------------------------------------------
  1042. if pcs_apprnc = -10 and rand(1,10) < 8:
  1043. prostitute['std_mod'] = 1
  1044. else
  1045. prostitute['std_mod'] = 0
  1046. end
  1047. !!---- Non-Visible Cum ----------------------------------------------------------------------------------------
  1048. if cumloc[0] = 1:
  1049. prostitute['cum_vaginal_mod'] = 1
  1050. else
  1051. prostitute['cum_vaginal_mod'] = 0
  1052. end
  1053. if cumloc[3] = 1:
  1054. prostitute['cum_anal_mod'] = 1
  1055. else
  1056. prostitute['cum_anal_mod'] = 0
  1057. end
  1058. !!---- Visible Cum (Dressed) ----------------------------------------------------------------------------------
  1059. if cumloc[7] = 1 or cumloc[11] = 1 or cumloc[13] = 1 or cumloc[15] = 1:
  1060. prostitute['cum_dressed'] = 1
  1061. else
  1062. prostitute['cum_dressed'] = 0
  1063. end
  1064. !!Visible Cum (Undressed)
  1065. if cumloc[1] = 1 or cumloc[4] = 1 or cumloc[8] = 1 or cumloc[14] = 1 or cumloc[16] = 1:
  1066. prostitute['cum_undressed'] = 1
  1067. else
  1068. prostitute['cum_undressed'] = 0
  1069. end
  1070. end
  1071. !!---------- Exact Rounding --------------------------------------------------------------------------------------
  1072. if $ARGS[0] = 'exact_round':
  1073. !! ARGS[1] = value you want divided
  1074. !! ARGS[2] = divider
  1075. !! func('prostitution_functions','exact_round', number, divider)
  1076. !! func('prostitution_functions','exact_round', 12345, 7)
  1077. if ARGS[2] ! 0:
  1078. round_number = ARGS[1]/ARGS[2]
  1079. 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
  1080. round_number = round_number * ARGS[2]
  1081. result = round_number
  1082. killvar 'round_number'
  1083. else
  1084. '<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>'
  1085. end
  1086. end
  1087. --- prostitution_functions ---------------------------------