prostitution_functions.qsrc 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256
  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 MiraVars['pimp'] ! 1 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 or 2 for not even panty coverage
  207. !! 1 The bottom of this outfit offers no more coverage than panties and it will
  208. !! replace your panties (if worn)
  209. !! 2 This outfit covers less than panties, such as a harness
  210. if PCloSkirt = 6: temp_result_attr += 6
  211. if PCloSkirt = 5: temp_result_attr += 4
  212. if PCloSkirt = 4: temp_result_attr += 2
  213. if PCloSkirt = 1: temp_result_attr -= 4
  214. if PCloPants = 6: temp_result_attr += 6
  215. if PCloPants = 5: temp_result_attr += 4
  216. if PCloPants = 1: temp_result_attr -= 4
  217. if PCloPanties = 2 and $pantyworntype = 'none': temp_result_attr += 12
  218. if PCloPanties = 2 and $pantyworntype ! 'none': temp_result_attr += 8
  219. if PCloPanties = 1: temp_result_attr += 8
  220. temp_result_attr = MAX(temp_result_attr, temp_result_style)
  221. !! PShoHeels values: 1 flats (<5cm), 2 low heel (~5cm), 3 Mid heel (~7.5cm),
  222. !! 4 High heel (~10cm), 5 ultra high heel (~15cm), 6 fetish heel (>15cm)
  223. !! PShoStyle values: 1 alternative style
  224. !! PShoStyle2 values: 1 stripping or whoring, 2 exercise
  225. !! PShoBimbo: 1 Bimbo shoes.
  226. !! PShoCut values: 1: shoes 2: ankle boots, 3: calf high, 4: knee high, 5: thigh high, 6: groin high
  227. if PShoHeels = 6: temp_result_attr += 3
  228. if PShoHeels = 5: temp_result_attr += 2
  229. if PShoHeels = 4: temp_result_attr += 1
  230. if PShoHeels = 2: temp_result_attr -= 2
  231. if PShoHeels = 1: temp_result_attr -= 3
  232. if PShoStyle2 = 1: temp_result_attr += 2
  233. if PShoBimbo = 1: temp_result_attr += 1
  234. if PShoStyle = 1: temp_result_attr -= 1
  235. if PShoCut = 6: temp_result_attr += 2
  236. if PShoCut = 5: temp_result_attr += 1
  237. result = temp_result_attr
  238. killvar 'temp_result_attr'
  239. killvar 'temp_result_style'
  240. end
  241. if $ARGS[0] = 'upclose_chance':
  242. temp_base_app_mod = func('prostitution_functions', 'base_appearance_modifier')
  243. temp_makeup_mod = func('prostitution_functions', 'makeup_modifier')
  244. temp_groom_mod = func('prostitution_functions', 'grooming_modifier')
  245. temp_tat_pierc_mod = func('prostitution_functions', 'tattoo_and_piercing_modifier')
  246. temp_clothes_base = func('prostitution_functions', 'clothing_chance_modifier', 'upclose')
  247. result = (temp_base_app_mod + temp_makeup_mod + temp_groom_mod + temp_tat_pierc_mod + temp_clothes_base)
  248. killvar 'temp_base_app_mod'
  249. killvar 'temp_makeup_mod'
  250. killvar 'temp_groom_mod'
  251. killvar 'temp_tat_pierc_mod'
  252. killvar 'temp_clothes_base'
  253. end
  254. !! Range -10 to +10
  255. if $ARGS[0] = 'makeup_modifier':
  256. !! pcs_makeup:
  257. !! 0: Smeared makeup
  258. !! 1: No makeup
  259. !! 2: Light makeup
  260. !! 3: Vibrant makeup
  261. !! 4: Heavy makeup
  262. !! 5: Professional makeup
  263. !! 6: Bimbo makeup
  264. if pcs_makeup = 6: result += 5
  265. if pcs_makeup = 5: result -= 5
  266. if pcs_makeup = 4: result += 10
  267. if pcs_makeup = 3: result += 5
  268. if pcs_makeup = 1: result -= 5
  269. if pcs_makeup = 0: result -= 10
  270. temp_display = result
  271. killvar 'temp_display'
  272. end
  273. !! Result Range: -100 to +30
  274. if $ARGS[0] = 'base_appearance_modifier':
  275. !! The following can lower the penalty from high appearance
  276. !! A stunningly pretty girl being a street hooker is hard to believe
  277. !! but a stunningly pretty but somewhat ran down girl is easier to
  278. !! accept.
  279. temp_hair -= (1 - pcs_hairbsh) * 10
  280. if pcs_haircol ! nathcol:
  281. if dyefade > 0 and dyefade < 7: temp_dyefade = 5
  282. if dyefade = 0: temp_dyefade = 15
  283. end
  284. if pcs_makeup = 0: temp_makeup_corr = 20
  285. if pcs_apprncbase <= 20:
  286. result -= 100
  287. elseif pcs_apprncbase <= 40:
  288. result -= 20
  289. elseif pcs_apprncbase <= 60:
  290. result -= 10
  291. elseif pcs_apprncbase <= 80:
  292. result += 10
  293. elseif pcs_apprncbase <= 100:
  294. result += 30
  295. elseif pcs_apprncbase <= 120:
  296. result += 30
  297. elseif pcs_apprncbase <= 140:
  298. result += 10
  299. !! Over a certain beauty people will be less likely to think that Sveta is a prostitute working
  300. !! the highway unless she is acting like one, or looks really neglected.
  301. elseif pcs_apprncbase <= 160:
  302. result -= 30 + temp_dyefade + pcs_leghair + temp_hair
  303. elseif pcs_apprncbase <= 179:
  304. result -= 40 + temp_dyefade + pcs_leghair + temp_hair
  305. else
  306. result -= 50 + temp_dyefade + pcs_leghair + temp_hair + temp_makeup_corr
  307. end
  308. !! Being high or looking like someone fighting withdrawal, downbeat or exhausted, dirty, etc.
  309. !! will lessen the high appearance penalty. Will add those later when I figure out a sensible way.
  310. killvar 'temp_display'
  311. killvar 'temp_dyefade'
  312. killvar 'temp_leghair'
  313. killvar 'temp_makeup_corr'
  314. end
  315. !! Result Range: -78 - 0
  316. if $ARGS[0] = 'grooming_modifier':
  317. if pcs_sweat < 22:
  318. result -= 0
  319. elseif pcs_sweat < 38:
  320. result -= (pcs_sweat - 10) / 4 & !! 28/4 = 7
  321. elseif pcs_sweat < 54:
  322. result -= (pcs_sweat - 10) / 2 & !! 54-10 / 2 = 22
  323. else
  324. result -= 3 * (pcs_sweat - 10) / 4 & !! 3 * 100-10 / 4 = 67
  325. end
  326. temp_display = result
  327. killvar 'temp_display'
  328. end
  329. !! Result Range: 0
  330. if $ARGS[0] = 'tattoo_and_piercing_modifier':
  331. result = 0
  332. if (PCloSkirt >= 4 or PCloPants >= 4 or PCloPanties > 0) and PShoCut = 1 and pcs_tattoos['ankle'] > 0: temp_tattoo_mod += 3
  333. if (PCloSkirt >= 4 or PCloPants >= 4 or PCloPanties > 0) and PShoCut < 5 and pcs_tattoos['leg'] > 0: temp_tattoo_mod += 5
  334. if (PCloSKirt = 6 or PCloPanties = 2) and $pantyworntype = 'none' and pcs_tattoos['pussy'] > 0: temp_tattoo_mod += 5
  335. if (PCloSkirt >= 5 or PCloPanties = 2) and pcs_tattoos['ass'] > 0: temp_tattoo_mod += 3
  336. if (PCloThinness >= 5 or PCloTopCut >= 4 or PCloBra = 1) and pcs_tattoos['belly'] > 0: temp_tattoo_mod += 5
  337. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or PCloStyle = 4 or PCloStyle2 = 3) and pcs_tattoos['tramp'] > 0: temp_tattoo_mod += 3
  338. if (PCloThinness >= 5 or PCloTopCut >= 4 or PCloBra = 1) and pcs_tattoos['back'] > 0: temp_tattoo_mod += 3
  339. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or PCloStyle = 4 or PCloStyle2 = 3) and pcs_tattoos['under'] > 0: temp_tattoo_mod += 3
  340. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or (PCloBra = 2 and $braworntype = 'none')) and pcs_tattoos['breast'] > 0: temp_tattoo_mod += 3
  341. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or (PCloBra = 2 and $braworntype = 'none')) and pcs_tattoos['chest'] > 0: temp_tattoo_mod += 3
  342. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or PCloStyle = 4 or PCloStyle2 = 3) and pcs_tattoos['side'] > 0: temp_tattoo_mod += 3
  343. if (PCloThinness >= 5 or PCloBra = 1) and pcs_tattoos['arm'] > 0: temp_tattoo_mod += 2
  344. if (PCloThinness >= 5 or PCloTopCut >= 3 or PCloBra = 1 or PCloStyle = 4 or PCloStyle2 = 3) and pcs_tattoos['shoulder'] > 0: temp_tattoo_mod += 3
  345. if (PCloThinness >= 3 or PCloTopCut >= 2 or PCloBra = 1 or PCloStyle = 4 or PCloStyle2 = 3) and pcs_tattoos['neck'] > 0: temp_tattoo_mod += 5
  346. if pcs_tattoos['face'] > 0: temp_tattoo_mod += 3
  347. result = temp_tattoo_mod
  348. killvar 'temp_tattoo_mod'
  349. end
  350. !!---- Outfit checks ---------------------------------------------------------------------------------
  351. if $ARGS[0] = 'work_clothes':
  352. prostitute['work_clothes'] = (PCloStyle = 4 and (PShoStyle2 = 1 or PShoBimbo = 1 or PShoHeels >= 3))
  353. end
  354. if $ARGS[0] = 'is_default':
  355. 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))
  356. end
  357. !!---- Setting, clearing and changing outfits ------------------------------------------------------------------
  358. if $ARGS[0] = 'set_default_outfit':
  359. !!-- Clothing
  360. $prostitute['clothingworntype'] = $clothingworntype
  361. prostitute['clothingwornnumber'] = clothingwornnumber
  362. !!-- Underwear
  363. prostitute['underweartype'] = 0
  364. if underwear['type'] = 2:
  365. prostitute['underweartype'] = 2
  366. $prostitute['bodysuitworntype'] = $bodysuitworntype
  367. prostitute['bodysuitwornnumber'] = bodysuitwornnumber
  368. else
  369. $prostitute['pantyworntype'] = $pantyworntype
  370. prostitute['pantywornnumber'] = pantywornnumber
  371. $prostitute['braworntype'] = $braworntype
  372. prostitute['brawornnumber'] = brawornnumber
  373. end
  374. !!-- Shoes
  375. $prostitute['shoeworntype'] = $shoeworntype
  376. prostitute['shoewornnumber'] = shoewornnumber
  377. !!-- Bag
  378. $prostitute['currentpursetype'] = $currentpursetype
  379. prostitute['currentpursenumber'] = currentpursenumber
  380. !!-- Coat
  381. $prostitute['coatworntype'] = $coatworntype
  382. prostitute['coatwornnumber'] = coatwornnumber
  383. prostitute['outfit_is_set'] = 1
  384. end
  385. if $ARGS[0] = 'clearing_default_outfit':
  386. !!-- Clothing
  387. $prostitute['clothingworntype'] = ''
  388. prostitute['clothingwornnumber'] = 0
  389. !!-- Underwear
  390. $prostitute['bodysuitworntype'] = ''
  391. prostitute['bodysuitwornnumber'] = 0
  392. $prostitute['pantyworntype'] = ''
  393. prostitute['pantywornnumber'] = 0
  394. $prostitute['braworntype'] = ''
  395. prostitute['brawornnumber'] = 0
  396. !!-- Shoes
  397. $prostitute['shoeworntype'] = ''
  398. prostitute['shoewornnumber'] = 0
  399. !!-- Bag
  400. $prostitute['currentpursetype'] = ''
  401. prostitute['currentpursenumber'] = 0
  402. !!-- Coat
  403. $prostitute['coatworntype'] = ''
  404. prostitute['coatwornnumber'] = 0
  405. prostitute['outfit_is_set'] = 0
  406. end
  407. if $ARGS[0] = 'change_into_prostitute_outfit':
  408. if dyneval('RESULT = <<$prostitute["clothingworntype"]>>_h[<<prostitute["clothingwornnumber"]>>]') <= 0:
  409. msg '<font color="red">Unavailable as outfit is worn out!</font>'
  410. exit
  411. end
  412. !! if last outfit is sport outfit
  413. gs 'wardrobe', 'is_sport'
  414. gs 'wardrobe', 'back_to_regular_clothes'
  415. !!-- Backup
  416. $lastwornclothingtype['prostitute'] = $clothingworntype
  417. lastwornclothingnumber['prostitute'] = clothingwornnumber
  418. lastwornunderwear['prostitute'] = 0
  419. if underwear['type'] = 2:
  420. lastwornunderwear['prostitute'] = 2
  421. $lastwornbodysuittype['prostitute'] = $bodysuitworntype
  422. lastwornbodysuitnumber['prostitute'] = bodysuitwornnumber
  423. else
  424. $lastwornpantytype['prostitute'] = $pantyworntype
  425. lastwornpantynumber['prostitute'] = pantywornnumber
  426. $lastwornbratype['prostitute'] = $braworntype
  427. lastwornbranumber['prostitute'] = brawornnumber
  428. end
  429. $lastwornshoetype['prostitute'] = $shoeworntype
  430. lastwornshoenumber['prostitute'] = shoewornnumber
  431. $lastwornpursetype['prostitute'] = $currentpursetype
  432. lastwornpursenumber['prostitute'] = currentpursenumber
  433. $lastworncoattype['prostitute'] = $coatworntype
  434. lastworncoatnumber['prostitute'] = coatwornnumber
  435. !!-- Clothing
  436. gs 'clothing', 'wear', $prostitute['clothingworntype'], prostitute['clothingwornnumber']
  437. !!-- Underwear
  438. if prostitute['underweartype'] = 2:
  439. gs 'underwear_bodysuits', 'wear', $lastwornbodysuittype['prostitute'], lastwornbodysuitnumber['prostitute']
  440. else
  441. gs 'panties', 'wear', $prostitute['pantyworntype'], prostitute['pantywornnumber']
  442. gs 'bras', 'wear', $prostitute['braworntype'], prostitute['brawornnumber']
  443. end
  444. !!-- Shoes
  445. gs 'shoes', 'wear', $prostitute['shoeworntype'], prostitute['shoewornnumber']
  446. !!-- Bag
  447. gs 'purses', 'wear', $prostitute['currentpursetype'], prostitute['currentpursenumber']
  448. !!-- Coat
  449. gs 'coats', 'wear', $prostitute['coatworntype'], prostitute['coatwornnumber']
  450. !! TODO: Check for worn out here?
  451. !! CHeck if the change happened not at home and if yes, then store the fact of change.
  452. gs 'prostitution_functions', 'work_clothes'
  453. if $ARGS[1] = 'work': prostitute['changed_for_work'] = 1
  454. end
  455. if $ARGS[0] = 'change_into_regular_clothes':
  456. gs 'wardrobe', 'back_to_regular_clothes'
  457. !! if last outfit is sport outfit
  458. gs 'wardrobe', 'is_sport'
  459. gs 'wardrobe', 'back_to_regular_clothes'
  460. end
  461. !!---------- Chaging outfits in public locations ------------------------------------------------------------------------
  462. !!------ Changing clothes --------------------------
  463. if $ARGS[0] = 'change_to_work':
  464. cla & *clr
  465. minut += 10
  466. if $ARGS[1] = 'car':
  467. !! TODO: Video / image and some text describing the cloth change in the car
  468. ''+iif($loc_desc = '', 'You quickly change into your working outfit in your car.', $loc_desc)
  469. end
  470. if $ARGS[1] = 'restroom':
  471. !! TODO: Video / image and some text describing the cloth change in the men''s restroom
  472. !! Is there a way to know if it''s a men''s or women''s restroom?
  473. ''+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)
  474. end
  475. if $ARGS[1] = 'road_side':
  476. !! TODO: Video / image and some text describing the cloth change next to a road
  477. ''+iif($loc_desc = '', 'You quickly change into your working outfit behind some bushes by the road.', $loc_desc)
  478. end
  479. gs 'prostitution_functions', 'change_into_prostitute_outfit', 'work'
  480. act 'Finish': gt $loc, $loc_arg
  481. end
  482. if $ARGS[0] = 'change_back':
  483. cla & *clr
  484. minut += 10
  485. if $ARGS[1] = 'car':
  486. !! TODO: Video / image and some text describing the cloth change in the car
  487. 'You quickly change into your working everyday clothes in your car.'
  488. end
  489. if $ARGS[1] = 'restroom':
  490. !! TODO: Video / image and some text describing the cloth change in the men''s restroom
  491. 'You quickly change into your everyday clothes in the men''s restroom..'
  492. end
  493. if $loc_arg = 'restroom_women':
  494. !! TODO: Video / image and some text describing the cloth change in the women''s restroom
  495. 'You quickly change into your everyday clothes in the women''s restroom.'
  496. end
  497. if $ARGS[1] = 'road_side':
  498. !! TODO: Video / image and some text describing the cloth change next to a road
  499. 'You quickly change into your everyday clothes behind some bushes by the road.'
  500. end
  501. gs 'prostitution_functions', 'change_into_regular_clothes'
  502. act 'Finish': gt $loc, $loc_arg
  503. end
  504. !!-----------------------------------------------------------------------------------------------------------------------
  505. !!---------- Checking for events ----------------------------------------------------------------------------------------
  506. !!-----------------------------------------------------------------------------------------------------------------------
  507. if $ARGS[0] = 'check_solicitation_event':
  508. gs 'prostitution_functions', 'work_clothes'
  509. if prostitute['wl_block'] = 0 and prostitute['full_block'] = 0 and func('prostitution_functions', 'prostitute_work_hours') and func('prostitution_functions','is_solicitation_location'):
  510. if prostitute['pavlovsk'] = 1 and prostitute['pav_time_hour'] ! hour and rand(-20, 70) < minut:
  511. gs 'prostitution_pavlovsk', 'chance'
  512. end
  513. if prostitute['pavlovsk'] = 1 and prostitute['work_clothes'] :
  514. 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>'
  515. end
  516. if prostitute['pav_residential_prost_day'] ! daystart: prostitute['pav_residential_prost_day'] = daystart
  517. !!pav_residential_prost_day
  518. end
  519. end
  520. !!-----------------------------------------------------------------------------------------------------------------------
  521. !!---------- Willpower checks -------------------------------------------------------------------------------------------
  522. !!-----------------------------------------------------------------------------------------------------------------------
  523. if $ARGS[0] = 'will_unprotected':
  524. gs 'willpower', 'calc'
  525. will_cost = 0
  526. if missCum >= timeTresh: will_calc += 100
  527. if $ARGS[1] = 'resist':
  528. if pro_stats['unprotected'] <= 90:
  529. will_cost = (10 + pro_stats['unprotected'] + will_calc) / 10
  530. else
  531. will_cost = (100 + will_calc)/10
  532. end
  533. else
  534. if pro_stats['unprotected'] <= 90:
  535. will_cost = (100 - pro_stats['unprotected'] + will_calc) / 10
  536. else
  537. will_cost = (10 + will_calc)/10
  538. end
  539. end
  540. gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
  541. end
  542. if $ARGS[0] = 'will_rimming':
  543. gs 'willpower', 'calc'
  544. if $ARGS[1] = 'self':
  545. if stat['rimming_give'] <= 90:
  546. will_cost = (100 - stat['rimming_give'] + will_calc)/10
  547. else
  548. will_cost = (10 + will_calc)/10
  549. end
  550. elseif $ARGS[1] = 'force':
  551. if stat['rimming_give'] <= 40:
  552. will_cost = (110 - will_enforced - stat['rimming_give'] + will_calc)/10
  553. else
  554. will_cost = (70 - will_enforced + will_calc)/10
  555. end
  556. else
  557. if stat['rimming_give'] <= 90:
  558. will_cost = (10 + stat['rimming_give'] + will_calc)/10
  559. else
  560. will_cost = (100 + will_calc)/10
  561. end
  562. end
  563. gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
  564. end
  565. if $ARGS[0] = 'will_atm':
  566. gs 'willpower', 'calc'
  567. if $ARGS[1] = 'self':
  568. if pro_stats['atm'] <= 90:
  569. will_cost = (100 - pro_stats['atm'] + will_calc)/10
  570. else
  571. will_cost = (10 + will_calc)/10
  572. end
  573. elseif $ARGS[1] = 'force':
  574. if pro_stats['atm'] <= 40:
  575. will_cost = (110 - will_enforced - pro_stats['atm'] + will_calc)/10
  576. else
  577. will_cost = (70 - will_enforced + will_calc)/10
  578. end
  579. else
  580. if pro_stats['atm'] <= 90:
  581. will_cost = (10 + pro_stats['atm'] + will_calc)/10
  582. else
  583. will_cost = (100 + will_calc)/10
  584. end
  585. end
  586. gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
  587. end
  588. !!-----------------------------------------------------------------------------------------------------------------------
  589. !!---------- Condoms & STDs----------------------------------------------------------------------------------------------
  590. !!-----------------------------------------------------------------------------------------------------------------------
  591. if $ARGS[0] = 'std_check':
  592. gs 'dinSex', 'std_trigger', $ARGS[1]
  593. killvar 'pro_std_check_rand'
  594. killvar 'pro_std_rand'
  595. end
  596. if $ARGS[0] = 'std_check_oral':
  597. gs 'dinSex', 'std_trigger_oral', $ARGS[1]
  598. killvar 'pro_std_check_rand'
  599. killvar 'pro_std_rand'
  600. end
  601. if $ARGS[0] = 'remove_condom':
  602. if mc_inventory['equipped_condoms'] > 0:
  603. mc_inventory['equipped_condoms'] -= 1
  604. elseif mc_inventory['sabotaged_condoms'] > 0 and preziktype = 2:
  605. mc_inventory['sabotaged_condoms'] -= 1
  606. elseif mc_inventory['normal_condoms'] > 0 and preziktype <> 2:
  607. mc_inventory['normal_condoms'] -= 1
  608. end
  609. end
  610. if $ARGS[0] = 'your_condom':
  611. prostitute['condom'] = 1
  612. protect = iif(mc_inventory['equipped_condoms'] > 0,1,0)
  613. if mc_inventory['equipped_condoms'] > 0:
  614. if rand(1,mc_inventory['equipped_condoms']) <= mc_inventory['bad_condoms']:
  615. mc_inventory['bad_condoms'] -= 1
  616. noprotect = 1
  617. sexcontra = rand(4,5)
  618. else
  619. sexcontra = 3
  620. end
  621. mc_inventory['equipped_condoms'] -= 1
  622. if preziktype = 2: sexcontra = 7 & noprotect = 1
  623. else
  624. sexcontra = 0
  625. end
  626. end
  627. if $ARGS[0] = 'his_condom':
  628. $bwa_boy = iif($ARGS[1] = '',$boydesc,$ARGS[1])
  629. protect = 1
  630. sexcontra = 3
  631. *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.'
  632. end
  633. !!---------- Background: Black-----------------------------------------------------------------------------------
  634. if $ARGS[0] = 'darkness':
  635. fcolor = rgb(255, 255, 255)
  636. bcolor = rgb(0, 0, 0)
  637. lcolor = rgb(106, 90, 205)
  638. end
  639. if $ARGS[0] = 'parameters':
  640. !!Reset
  641. protect = 0
  642. sexcontra = 0
  643. $pro_client_condom = 'tbd'
  644. $pro_client_cumshot = 'tbd'
  645. !!Client
  646. gs 'npcgeneratec', 0, 'client', rand(18,65)
  647. gs 'boyStat', $npclastgenerated
  648. !!
  649. !!---------- Time -----------------------------------------------------------------------------------------------
  650. if hour > 19 or hour < 7:
  651. $pro_work_time = 'night'
  652. else
  653. $pro_work_time = 'day'
  654. end
  655. gs 'prostitution_functions', 'std_cum_check'
  656. !!---------- Client Likes/Dislikes ------------------------------------------------------------------------------
  657. if rand(1,10) = 10:
  658. prostitute['mesec_mod'] = 1
  659. else
  660. prostitute['mesec_mod'] = 0
  661. end
  662. if rand(1,100) > 97:
  663. prostitute['dirty_anal_mod'] = 1
  664. else
  665. prostitute['dirty_anal_mod'] = 0
  666. end
  667. if rand(1,10) = 10:
  668. prostitute['cum_visible_mod'] = 1
  669. else
  670. prostitute['cum_visible_mod'] = 0
  671. end
  672. !!---------- Prostitution long term effects ---------------------------------------------------------------------
  673. if $ARGS[0] = 'solicitation_effort':
  674. cost = ARGS[1]
  675. prostitute['skin_penalty'] += 5
  676. if temper < 15: prostitute['skin_penalty'] += 5
  677. if temper > 25: prostitute['skin_penalty'] += 5
  678. if cost <= willpowermax/4:
  679. prostitute['age_mod'] += 5
  680. elseif cost <= willpowermax/3:
  681. prostitute['age_mod'] += 10
  682. elseif cost <= willpowermax/2:
  683. prostitute['age_mod'] += 15
  684. else
  685. prostitute['age_mod'] += 20
  686. end
  687. end
  688. if $ARGS[0] = 'client_effort':
  689. $client_type = iif($ARGS[1] = '', 'normal', $ARGS[1])
  690. if $client_type = 'nice':
  691. prostitute['age_mod'] += 5
  692. elseif $client_type = 'normal':
  693. prostitute['age_mod'] += 10
  694. elseif $client_type = 'abusive':
  695. prostitute['age_mod'] += 20
  696. end
  697. end
  698. if $ARGS[0] = 'daily_effects':
  699. if prostitute['age_mod'] >= 100:
  700. temp_age_mod_remain = prostitute['age_mod'] MOD 100
  701. vidageday -= ((prostitute['age_mod'] - temp_age_mod_remain) / 100)
  702. prostitute['age_mod'] = temp_age_mod_remain
  703. killvar 'temp_age_mod_remain'
  704. end
  705. if prostitute['skin_penalty'] >= 100:
  706. temp_skin_remain = prostitute['skin_penalty'] MOD 100
  707. skinDailyPenalty += ((prostitute['skin_penalty'] - temp_skin_remain) / 100)
  708. prostitute['skin_penalty'] = temp_skin_remain
  709. killvar 'temp_skin_remain'
  710. end
  711. end
  712. !!---------- Age ------------------------------------------------------------------------------------------------
  713. if vidage < 18 and rand(1,10) < 7:
  714. prostitute['vidage_mod'] = 1
  715. else
  716. prostitute['vidage_mod'] = 0
  717. end
  718. !!---------- Scenes ----------------------------------------------------------------------------------------------
  719. !!----------------------------------------------------------------------------------------------------------------
  720. pro_scene_rand = rand(1,100)
  721. if pro_scene_rand <= 50:
  722. if mesec = 0 or prostitute['mesec_mod'] = 1:
  723. $prostitute['client_scene'] = 'Vaginal'
  724. elseif mesec > 0 and prostitute['mesec_mod'] = 0 and (klismaday = daystart or prostitute['dirty_anal_mod'] = 1):
  725. $prostitute['client_scene'] = 'Anal'
  726. else
  727. $prostitute['client_scene'] = 'Blowjob'
  728. end
  729. elseif pro_scene_rand > 50 and pro_scene_rand <= 75:
  730. if klismaday = daystart or prostitute['dirty_anal_mod'] = 1:
  731. $prostitute['client_scene'] = 'Anal'
  732. elseif klismaday ! daystart and prostitute['dirty_anal_mod'] = 0 and (mesec = 0 or prostitute['mesec_mod'] = 1):
  733. $prostitute['client_scene'] = 'Vaginal'
  734. else
  735. $prostitute['client_scene'] = 'Blowjob'
  736. end
  737. else
  738. $prostitute['client_scene'] = 'Blowjob'
  739. end
  740. !!---- Regular Worker ----------------------------------------------------------------------------------------
  741. if prostitute['customer_total'] < 10:
  742. prostitute['regular_chance'] = 0
  743. elseif prostitute['customer_total'] >= 10 and prostitute['customer_total'] <= 25:
  744. prostitute['regular_chance'] = 1
  745. elseif prostitute['customer_total'] > 25 and prostitute['customer_total'] <= 50:
  746. prostitute['regular_chance'] = 2
  747. elseif prostitute['customer_total'] > 50 and prostitute['customer_total'] <= 100:
  748. prostitute['regular_chance'] = 3
  749. elseif prostitute['customer_total'] > 100 and prostitute['customer_total'] <= 250:
  750. prostitute['regular_chance'] = 4
  751. end
  752. !!---- Chance to find a client --------------------------------------------------------------------------------
  753. prostitute['client_chance'] = pcs_hotcat * 10 + prostitute['regular_chance'] * 5 + rand(1,100) + prostitute['pity_counter']
  754. if $pantyworntype = 'eroto' and CloSkirtShortness > 4: prostitute['client_chance'] += 10
  755. !!---- Client ------------------------------------------------------------------------------------------------
  756. if prostitute['regular_timer'] ! daystart and $prostitute['client_scene'] ! 'Blowjob':
  757. 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):
  758. prostitute['regular'] = 1
  759. else
  760. prostitute['regular'] = 0
  761. end
  762. else
  763. prostitute['regular'] = 0
  764. end
  765. !!ToDo: Rough Clients
  766. !! if prostitute['regular'] = 0:
  767. !! if (pro_work_day = 0 and rand(1,100) > 90) or (pro_work_day = 1 and rand(1,100) > 95):
  768. !! if prostitute['rough'] = 1
  769. !! else
  770. !! prostitute['rough'] = 0
  771. !! end
  772. !! end
  773. 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):
  774. prostitute['client_creampie'] = 1
  775. else
  776. prostitute['client_creampie'] = 0
  777. end
  778. if prostitute['rough'] = 1 or (prostitute['rough'] = 0 and rand(1,100) > 40):
  779. prostitute['propose'] = 0
  780. else
  781. prostitute['propose'] = 1
  782. end
  783. end
  784. !!---------- Payment ---------------------------------------------------------------------------------------------
  785. if $ARGS[0] = 'payment':
  786. !!---- Basic Payment -----------------------------------------------------------------------------------------
  787. if $ARGS[1] = 'pav':
  788. if $prostitute['pav_scene'] = 'blowjob':
  789. prostitute['payment'] = 425
  790. elseif $prostitute['pav_scene'] = 'anal':
  791. prostitute['payment'] = 1200
  792. else
  793. prostitute['payment'] = 1000
  794. end
  795. else
  796. if $prostitute['client_scene'] = 'Blowjob':
  797. prostitute['payment'] = 350
  798. if $ARGS[1] = 'condom_no': prostitute['payment'] += 75
  799. if $ARGS[2] = 'inside_yes': prostitute['payment'] += 50
  800. elseif $prostitute['client_scene'] = 'Vaginal':
  801. prostitute['payment'] = 700
  802. if $ARGS[1] = 'condom_no': prostitute['payment'] += 300
  803. if $ARGS[2] = 'inside_yes': prostitute['payment'] += 300
  804. elseif $prostitute['client_scene'] = 'Anal':
  805. prostitute['payment'] = 900
  806. if $ARGS[1] = 'condom_no': prostitute['payment'] += 200
  807. if $ARGS[2] = 'inside_yes': prostitute['payment'] += 100
  808. end
  809. end
  810. !!---- Bonus -------------------------------------------------------------------------------------------------
  811. prostitute['payment_mod'] = pcs_hotcat * 10
  812. if pcs_makeup = 0:
  813. prostitute['payment_mod'] -= 20
  814. elseif pcs_makeup > 1:
  815. prostitute['payment_mod'] += pcs_makeup * 10
  816. end
  817. if mesec > 0 and $prostitute['client_scene'] = 'Vaginal':
  818. if prostitute['mesec_mod'] = 0:
  819. prostitute['payment_mod'] -= 200
  820. else
  821. prostitute['payment_mod'] += 300
  822. end
  823. end
  824. if klismaday ! daystart and $prostitute['client_scene'] = 'Anal':
  825. if prostitute['dirty_anal_mod'] = 0:
  826. if $ARGS[1] = 'condom_no':
  827. prostitute['payment_mod'] -= 600
  828. elseif $ARGS[1] = 'condom_yes':
  829. prostitute['payment_mod'] -= 300
  830. end
  831. else
  832. prostitute['payment_mod'] += 300
  833. end
  834. end
  835. if prostitute['cum_dressed'] = 1:
  836. if prostitute['cum_visible_mod'] = 0:
  837. prostitute['payment_mod'] -= 200
  838. else
  839. prostitute['payment_mod'] += 300
  840. end
  841. end
  842. prostitute['payment_mod'] += pcs_mood - 50
  843. if $pantyworntype = 'eroto' and CloSkirtShortness > 4: prostitute['payment_mod'] += 50
  844. if prostitute['vidage_mod'] = 1:
  845. prostitute['payment_mod'] += 50 * (18 - vidage)
  846. else
  847. prostitute['payment_mod'] -= 50 * (18 - vidage)
  848. end
  849. if ($prostitute['client_scene'] = 'Blowjob') or ($prostitute['pav_scene'] = 'blowjob'):
  850. prostitute['payment_mod'] = prostitute['payment_mod'] / 2
  851. if pcs_piercings['tongue'] = 2:
  852. prostitute['payment_mod'] += 50
  853. elseif pcs_piercings['tongue'] = 4:
  854. prostitute['payment_mod'] += 75
  855. elseif pcs_piercings['tongue'] > 0:
  856. prostitute['payment_mod'] += 25
  857. end
  858. end
  859. prostitute['payment'] += prostitute['payment_mod']
  860. prostitute['payment_backup'] = prostitute['payment']
  861. prostitute['payment'] = (prostitute['payment'] * (100 + prostitute['client_satisfaction'])) / 100
  862. !!Rounding
  863. prostitute['payment'] = func('prostitution_functions', 'exact_round', prostitute['payment'], 10)
  864. prostitute['payment_backup'] = func('prostitution_functions', 'exact_round', prostitute['payment_backup'], 10)
  865. end
  866. !!---------- Abortion --------------------------------------------------------------------------------------------
  867. if $ARGS[0] = 'abortion':
  868. abort += 1
  869. abortionbirthdate = daystart
  870. gs 'medical_din', 'remove_preg'
  871. knowpregloss = 1
  872. abortrand = rand(0, 10)
  873. if age > 18:
  874. if abortrand < 10:sterilewb += 1
  875. if abortrand = 10:sterilewb += 10
  876. else
  877. if abortrand < 7:sterilewb += 2
  878. if abortrand >= 7:sterilewb += 10
  879. end
  880. killvar 'abortrand'
  881. pcs_hydra += 20
  882. if broodcurse > 0: gt 'gameover', 'force', 13
  883. end
  884. !!---------- Random Name -----------------------------------------------------------------------------------------
  885. if $ARGS[0] = 'random_name':
  886. $pro_boyname[1] = ''
  887. $pro_boyname[2] = ''
  888. :pro_rng_jump
  889. pro_temp = rand(0,23)
  890. if pro_temp = 0:
  891. $pro_temp = 'Abram'
  892. elseif pro_temp = 1:
  893. $pro_temp = 'Alexei'
  894. elseif pro_temp = 2:
  895. $pro_temp = 'Adrian'
  896. elseif pro_temp = 3:
  897. $pro_temp = 'Dima'
  898. elseif pro_temp = 4:
  899. $pro_temp = 'Dimitri'
  900. elseif pro_temp = 5:
  901. $pro_temp = 'Igor'
  902. elseif pro_temp = 6:
  903. $pro_temp = 'Leonid'
  904. elseif pro_temp = 7:
  905. $pro_temp = 'Petka'
  906. elseif pro_temp = 8:
  907. $pro_temp = 'Michail'
  908. elseif pro_temp = 9:
  909. $pro_temp = 'Vasily'
  910. elseif pro_temp = 10:
  911. $pro_temp = 'Oleg'
  912. elseif pro_temp = 11:
  913. $pro_temp = 'Olezka'
  914. elseif pro_temp = 12:
  915. $pro_temp = 'Pasha'
  916. elseif pro_temp = 13:
  917. $pro_temp = 'Pavel'
  918. elseif pro_temp = 14:
  919. $pro_temp = 'Sacha'
  920. elseif pro_temp = 15:
  921. $pro_temp = 'Slava'
  922. elseif pro_temp = 16:
  923. $pro_temp = 'Ruslan'
  924. elseif pro_temp = 17:
  925. $pro_temp = 'Taras'
  926. elseif pro_temp = 18:
  927. $pro_temp = 'Timofey'
  928. elseif pro_temp = 19:
  929. $pro_temp = 'Vanya'
  930. elseif pro_temp = 20:
  931. $pro_temp = 'Viktor'
  932. elseif pro_temp = 21:
  933. $pro_temp = 'Vladimir'
  934. elseif pro_temp = 22:
  935. $pro_temp = 'Yaromir'
  936. elseif pro_temp = 23:
  937. $pro_temp = 'Yevgeni'
  938. end
  939. if $pro_boyname[1] = '':
  940. $pro_boyname[1] = $pro_temp
  941. jump 'pro_rng_jump'
  942. elseif $pro_boyname[2] = '':
  943. $pro_boyname[2] = $pro_temp
  944. end
  945. if $pro_boyname[1] = $pro_boyname[2]:
  946. $pro_boyname[2] = ''
  947. jump 'pro_rng_jump'
  948. end
  949. killvar 'pro_temp'
  950. killvar '$pro_temp'
  951. end
  952. !!---------- Payment ---------------------------------------------------------------------------------------------
  953. if $ARGS[0] = 'tat_pierce_count':
  954. gs 'pirsingsalon', 'count'
  955. end
  956. !!---------- Random Name -----------------------------------------------------------------------------------------
  957. if $ARGS[0] = 'pav_client':
  958. !!Reset
  959. prostitute['pav_internal'] = 0
  960. gs 'prostitution_functions', 'std_cum_check'
  961. !!Regular
  962. if prostitute['pav_total'] < 10:
  963. prostitute['pav_chance'] = 0
  964. elseif prostitute['pav_total'] >= 10 and prostitute['pav_total'] <= 25:
  965. prostitute['pav_chance'] = 1
  966. elseif prostitute['pav_total'] > 25 and prostitute['pav_total'] <= 50:
  967. prostitute['pav_chance'] = 2
  968. elseif prostitute['pav_total'] > 50 and prostitute['pav_total'] <= 100:
  969. prostitute['pav_chance'] = 3
  970. elseif prostitute['pav_total'] > 100 and prostitute['pav_total'] <= 250:
  971. prostitute['pav_chance'] = 4
  972. end
  973. 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)):
  974. prostitute['pav_regular'] = 1
  975. !! elseif prostitute['pav_chance'] > 0 and rand(1,100) > 92:
  976. !! prostitute['pav_regular'] = -1
  977. else
  978. prostitute['pav_regular'] = 0
  979. end
  980. !!ToDo: Add cheat for this chance
  981. $prostitute['client_behavior'] = iif(rand(1,100) < prostitute['client_behavior_chance'] or prostitute['pav_regular'] = -1, 'nice', 'abusive')
  982. !!---- Scene --------------------------------------------------------------------------------------------------
  983. if pro_rand > 7:
  984. $prostitute['pav_scene'] = 'anal'
  985. elseif mesec = 0 and rand(0,100) < 50:
  986. $prostitute['pav_scene'] = 'pussy'
  987. else
  988. $prostitute['pav_scene'] = 'blowjob'
  989. end
  990. 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'):
  991. $prostitute['pav_location'] = 'private'
  992. if pro_rand = 3 or pro_rand = 8: $prostitute['client_behavior'] = 'abusive'
  993. elseif pro_rand = 1 and $prostitute['pav_scene'] = 'pussy':
  994. $prostitute['pav_location'] = iif($prostitute['client_behavior'] = 'nice', 'private', 'public')
  995. 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:
  996. $prostitute['pav_location'] = 'public'
  997. if pro_rand = 5: $prostitute['client_behavior'] = 'abusive'
  998. else
  999. gt 'prostitution_pavlovsk', 'rng'
  1000. end
  1001. if prostitute['pav_regular_s8'] = 1 and pro_rand = 8: prostitute['pav_regular'] = 1
  1002. if (pro_rand = 3 or pro_rand = 8) and $prostitute['pav_scene'] = 'private' and prostitute['pav_regular'] = 1:
  1003. prostitute['pav_condom_refusal'] = 1
  1004. else
  1005. prostitute['pav_condom_refusal'] = 0
  1006. end
  1007. !!---- Generator ----------------------------------------------------------------------------------------------
  1008. gs 'npcgeneratec', 0, 'pavlovsk client', rand(18,45)
  1009. gs 'boyStat', $npclastgenerated
  1010. end
  1011. !!---- Checking visible STD and cum -------------------------------------------------------------------------------
  1012. if $ARGS[0] = 'std_cum_check':
  1013. !!---- Visible STD --------------------------------------------------------------------------------------------
  1014. if pcs_apprnc = -10 and rand(1,10) < 8:
  1015. prostitute['std_mod'] = 1
  1016. else
  1017. prostitute['std_mod'] = 0
  1018. end
  1019. !!---- Non-Visible Cum ----------------------------------------------------------------------------------------
  1020. if cumloc[0] = 1:
  1021. prostitute['cum_vaginal_mod'] = 1
  1022. else
  1023. prostitute['cum_vaginal_mod'] = 0
  1024. end
  1025. if cumloc[3] = 1:
  1026. prostitute['cum_anal_mod'] = 1
  1027. else
  1028. prostitute['cum_anal_mod'] = 0
  1029. end
  1030. !!---- Visible Cum (Dressed) ----------------------------------------------------------------------------------
  1031. if cumloc[7] = 1 or cumloc[11] = 1 or cumloc[13] = 1 or cumloc[15] = 1:
  1032. prostitute['cum_dressed'] = 1
  1033. else
  1034. prostitute['cum_dressed'] = 0
  1035. end
  1036. !!Visible Cum (Undressed)
  1037. if cumloc[1] = 1 or cumloc[4] = 1 or cumloc[8] = 1 or cumloc[14] = 1 or cumloc[16] = 1:
  1038. prostitute['cum_undressed'] = 1
  1039. else
  1040. prostitute['cum_undressed'] = 0
  1041. end
  1042. end
  1043. !!---------- Exact Rounding --------------------------------------------------------------------------------------
  1044. if $ARGS[0] = 'exact_round':
  1045. !! ARGS[1] = value you want divided
  1046. !! ARGS[2] = divider
  1047. !! func('prostitution_functions','exact_round', number, divider)
  1048. !! func('prostitution_functions','exact_round', 12345, 7)
  1049. if ARGS[2] ! 0:
  1050. round_number = ARGS[1]/ARGS[2]
  1051. 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
  1052. round_number = round_number * ARGS[2]
  1053. result = round_number
  1054. killvar 'round_number'
  1055. else
  1056. '<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>'
  1057. end
  1058. end
  1059. --- prostitution_functions ---------------------------------