530 Commits 403e59b92f ... 4063d0dbb1

Author SHA1 Message Date
  maankamara 4063d0dbb1 [fixed]Syntax of a bunch of time advance statements were wrong, only printing a number in main screen. 5 months ago
  anjuna krokus 4bbc08b075 [fixed] a gamebreaking bug, and updated the cheatmenu bodyfat setting to better update your bodyfat with the new system 5 months ago
  anjuna krokus d77e3b66f2 [fixed] Should ensure that bust and butt don't shrink when you have a healthy weight 5 months ago
  anjuna krokus b39b46d125 [fixed] more changes to bring check in line with the shift from 80 to 60 as the standard for pcs_mass['body'] 5 months ago
  anjuna krokus e237c668d9 [change] Decided to move the steroid pube and leghair growth to body 5 months ago
  anjuna krokus 1dfbc106fa [removed] forgot to remove the duplicate steroid manager from body 5 months ago
  anjuna krokus 315152823a [added/changed] added a slow degredation to bodyVars['bust_other'], moved the degredation and breast cream effects to 'body' and implemented into the daily body update 5 months ago
  anjuna krokus 594b70d028 [fixed] breast cream now properly (and for now permanently) affects breast growth. Added some comments to body. 5 months ago
  Kevin_Smarts cede2a4aaf [fixed] Switch for lactation will not turn off if you are already lactating and get pregnant thanks to Dis-FuckU-Cord 5 months ago
  Kevin_Smarts 6de3bab267 Merge remote-tracking branch 'Felix/master' 5 months ago
  Kevin_Smarts 0be83d8712 Merge remote-tracking branch 'Anjuna/master' 5 months ago
  LinaHirata a8556c6d70 [fixed] qsp analyzer warning 6 months ago
  LinaHirata b78dc0db67 [fixed] incorrect `killvar` usage and `gs 'arousal'` calls in `pav_park_sex` 6 months ago
  anjuna krokus 34bdc36e78 [changed] gschool_events, pornhist, and pornstudio now use pcs_has_attr to check for ass-size. This will hopefully standardize ass-sizes and make updating relevant numbers easier. This in preparation for a possible future update to the exact values associated with various ass-sizes 6 months ago
  anjuna krokus 09990af309 [fixed/changed] Fixed a missing bracket in cheatmenu. Disabled bodyVars['butt_bonus'] (now also no longer bodyVar) since it scaled pcs_butt way too much. 6 months ago
  hornguy6 9602cf410d [fixed] missing value 6 months ago
  bgkjdgbizgblzdgbr 763ee6a4d1 [fixed] Code mistake. 6 months ago
  Kevin_Smarts e3d1c42981 Merge remote-tracking branch 'Hooded_Silence/master' 6 months ago
  Hooded Silence 7377b5a5a5 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  Hooded Silence 34addc00a5 [Fix] Missing hour in logic check. 6 months ago
  anjuna krokus 819c9d62a6 [fixed/changed] Fixed missing closing ] in hardreset. Changed mass updates and vhips update 6 months ago
  bgkjdgbizgblzdgbr 1f427e2636 [changed] Added aother situation in which Katja opens her dorm room door for you. 6 months ago
  bgkjdgbizgblzdgbr 19852e4edc [fuxed/changed] Antoher months old sex event I had forgotten to unlock. Also added an increas in Katja sluttyness to the sex scenes. 6 months ago
  bgkjdgbizgblzdgbr 9a2c5b90f0 [fixed/added] Added coments to Katja's schedule, and fixed a bug in it. 6 months ago
  bgkjdgbizgblzdgbr 3eca5d4990 [fixed] Typo in variable name. 6 months ago
  bgkjdgbizgblzdgbr b55af41c40 [fixed] Resiting a variable to early ment a evne could not fire. Fixed the other requirement for the event to use Nush schedule, and only happen once a day. 6 months ago
  Hooded Silence 968c332d74 [Code Fixes] Assigned correct variable types. 6 months ago
  Kevin_Smarts 6b5b8d9040 Merge branch 'master' of https://git.tfgames.site/HoodedSilence/glife 6 months ago
  Kevin_Smarts e0cab5ade5 Merge remote-tracking branch 'Derryth_Love/master' 6 months ago
  Kevin_Smarts 42ff1e42bd Merge remote-tracking branch 'Anjuna/master' 6 months ago
  Hooded Silence 73df57fa40 [Feature] Added Chimrod parser tool to batch file. Download the latest version and install into the tools folder: https://git.tfgames.site/Chimrod/qsp_parser/releases 6 months ago
  Derryth_Love bec404eb21 [Rewrite] First meeting with Tamara(Vicky's Path) 6 months ago
  anjuna krokus 97f74745ba [fixed] better calculation of pcs_weight 6 months ago
  Hooded Silence 92dfd3ce4e [Code Factoring] Removed GIT message within code! 6 months ago
  Hooded Silence 2d7c103d8e More fixes 6 months ago
  Kevin_Smarts 6792b0cabc Merge remote-tracking branch 'Felix/master' 6 months ago
  Kevin_Smarts bf54d2400d Merge remote-tracking branch 'Anjuna/master' 6 months ago
  Kevin_Smarts e1a9ce7372 Merge remote-tracking branch 'Hooded_Silence/master' 6 months ago
  LinaHirata 97f9ad77e8 [fixed] missing closing tag in shaving options table 6 months ago
  LinaHirata 05715f122e Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  anjuna krokus 8c05e81d22 [fixed] forgotten if-statements in saveupdater 6 months ago
  anjuna krokus bce609bef9 [fixed] healthy bmi is at pcs_mass['body'] =60, not 80 (since we split off pcs_mass['butt'], which is 20 at healthy bmi). 6 months ago
  Hooded Silence 6538cd38da [Fix] Fixed ballet start for non-dancer starts - misplaced if end and repair previous broken commit. 6 months ago
  Hooded Silence 6b4d8d87f1 [broken link] Stop your sister talking to herself 6 months ago
  anjuna krokus 4f5c2cd01f [changed] Complete body overhaul. New variable, new systems, new you. 6 months ago
  anjuna krokus bf82f784c4 [changed] portnoi2 (resize all clothing) to tailor (finding the costs) and tailor2 (actually resizing all the clothes). 6 months ago
  hornguy6 198210f1ae [added] yes option for if he asks if you want a cigarette 6 months ago
  hornguy6 6a6dbd946d [changed] new method of checking for pav home for booty calls 6 months ago
  hornguy6 13ae89e23e [fixed] variables need to be toggled 6 months ago
  hornguy6 cf717b08a3 [fixed] sugar daddies and prostitution sessions overlapping 6 months ago
  hornguy6 618bdae03d [fixed] didn't know option was disabled 6 months ago
  hornguy6 ad38087b83 [added] consistency flags 6 months ago
  hornguy6 8a2b6b479e [fixed] wrong location 6 months ago
  hornguy6 c330187d91 [changed] stats and dialogue 6 months ago
  hornguy6 b8c9cd3c5e [added] cum on tits yum 6 months ago
  hornguy6 20806d597c [fixed] not equals should have been equals 6 months ago
  hornguy6 0c697b7b3e [changed] npc more likely to creampie based on certain conditions 6 months ago
  hornguy6 fe132b91f5 [added] new coffee dialogue 6 months ago
  hornguy6 fe0804babb [changed] pullout variable name 6 months ago
  hornguy6 914cc8cf5f [added/changed/fixed] birth control and creampie related dialogue options 6 months ago
  hornguy6 009c6f7b57 [changed] reworked the shower_sex file so it isn't repetitive and 3000 lines long 6 months ago
  anjuna krokus 480fa2f574 [changed] smoothed out pcs_sleep gain in sleep and sleep_simple 6 months ago
  anjuna krokus d9e85a5f59 [fixed][added] fixed money not being properly rewarded. Added correct image paths and the option to report after the experimental trial has ended. 6 months ago
  anjuna krokus da7c479020 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  Kevin_Smarts 324d323dae [fixed] Skirt length set incorrectly 6 months ago
  LinaHirata e3e320c7bc a bit more fixes for `brothel.qsrc` 6 months ago
  LinaHirata 6462a9593e [fixed] reset `call_trace_manual` on save load 6 months ago
  LinaHirata bad66a7295 [fixed] unresolved git conflict 6 months ago
  LinaHirata add786efb3 [fixed] missing comma 6 months ago
  LinaHirata 26bfe6df6e [fixed]?? dont ever rebase 6 months ago
  LinaHirata 24b095153a [fixed] `sister_chat` dead ends 6 months ago
  anjuna krokus e58a90abfc [fixed] Missing colon, removed floating tab and replaced indenting spaces with tabs 6 months ago
  Kevin_Smarts f7ad9b4683 Merge remote-tracking branch 'Felix/master' 6 months ago
  LinaHirata 4fdb2b40e9 [refactor] themes 6 months ago
  LinaHirata f1faaf7e4a [fixed] minor fixes for `brothel.qsrc` 6 months ago
  LinaHirata 2d690984ba [fixed] `food_menu` is now a bit less fucked up 6 months ago
  LinaHirata 0d24b611e6 [changed] moved runtime version check forward a bit 6 months ago
  LinaHirata 7c7c40b69e [changed] slightly optimized notifications system 6 months ago
  Hooded Silence e72d32bdc2 [Fix - Broken Commit] So after that wee clusterfuck of a commit going so FUBAR it was digging' its way to Australia. So once more into the breach my comrades! Hae a wee dram on me for this repo shambles and for any stress ye may hae. 6 months ago
  Hooded Silence c8219dcabe Revert "Ballet content is now active, you need to start in summer as a dancer. Journal needs to be updated with way markers, but slowly going through the code bug fixing. Image paths still need to be fixed which will be the next update alongside content additions. *Note* Whilst you can start Starlets these are exclusionary storylines and you have the option to gracefully leave the Starlets." 6 months ago
  LinaHirata 93b5610def [changed] act placement in alarm clock and intro 6 months ago
  Kevin_Smarts 0acecb7bad Merge remote-tracking branch 'Anjuna/master' 6 months ago
  anjuna krokus 9b3b546c70 [fixed] multiple unintended empty lines, fix proposed by Felix 6 months ago
  anjuna krokus b9f54b028a [fixed] dead-ends in natbel_chat due to wrong goto's 6 months ago
  anjuna krokus e5576e1520 [fixed] missing colon 6 months ago
  anjuna krokus 915ac2a7d6 [fixed] missing colon and removed trailing tabs 6 months ago
  anjuna krokus fcae2cf288 [fixed] missing rand function 6 months ago
  anjuna krokus 458319de6e Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  Hooded Silence b340c49e92 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  bgkjdgbizgblzdgbr 4cdff4a9c2 [fixed] Inequalities, the bane of my existence. 6 months ago
  bgkjdgbizgblzdgbr f78e72d1a9 [fixed] Still two different guys. 6 months ago
  bgkjdgbizgblzdgbr 37afec4a29 [fixed] I need to learn to code. 6 months ago
  bgkjdgbizgblzdgbr a99744c47a [fixed] Nush city schedule updated so that she is actaully somwhere all the time, and Coffee Hole fixed to use her schedule. 6 months ago
  hornguy6 5c98858d91 [fixed] added in new file I forgot 6 months ago
  Kevin_Smarts adaf25c8be [fixed] I should have put these on new lines. Sorry! 6 months ago
  Kevin_Smarts e3e0752355 [changed] Fights now hit various body parts and apply pain if they are Sveta's 6 months ago
  bgkjdgbizgblzdgbr 93a37ccf22 [fixed] Missing : pointed out be Chimrod. 6 months ago
  bgkjdgbizgblzdgbr 0b2b185eed [fixed] Ups. Forgot to active the scene I added 3 months ago. Also fixed it so you can actually by a drink if you want to. 6 months ago
  Derryth_Love 8eb0305d89 [typo] Missing do-do 6 months ago
  hornguy6 2cc4570f6c [fixed] no message for bumming cigarettes 6 months ago
  anjuna krokus 2b8135f561 [removed] forgotten image placeholders that should no longer be there 6 months ago
  anjuna krokus b77058ec90 [added] Experimental trials have dropped! They're weird, wacky, and now come with a new and improved40% guarantee to not fuck up your life! Sign up now at the city residential clinic and help shape the future! 6 months ago
  hornguy6 710c008520 [fixed] did not push update sister chats to new location in other file 6 months ago
  bgkjdgbizgblzdgbr 8bf79a67bb [fixed] Errors with the clothes Kataj presents to you at pussy cats 6 months ago
  bgkjdgbizgblzdgbr 4fa1df2bc1 [Added] Katja will now tell you she needs to go and not just disappear from the Coffee Hole. 6 months ago
  LinaHirata 6372ef0884 [changed] cosmetic (and couple functional) changes to `item_cart` 6 months ago
  LinaHirata 770ec5fe41 [added] `rgb_to_hex` func 6 months ago
  LinaHirata 1bc2d5942d [fixed] daylight duration, commented the code for future reading, hope it helps 6 months ago
  LinaHirata 0283b56d7d [fixed] indent 6 months ago
  bgkjdgbizgblzdgbr c92703717a [changed/added] Added schedule for Nush and the band mates for the school year. 6 months ago
  LinaHirata 5deff6c4f7 [added] runtime version check, the game will not load in incompatible players 6 months ago
  LinaHirata 08dfd27a39 [fixed] redundant text in hardware store 6 months ago
  bgkjdgbizgblzdgbr 4ed65261bb [fixed] Missing loc and loc_arg 6 months ago
  bgkjdgbizgblzdgbr d11ff3024c [fixed] Wrong image link. 6 months ago
  bgkjdgbizgblzdgbr d81ffe030c [fixed] The two guys do have different names. 6 months ago
  bgkjdgbizgblzdgbr 5d4b7a2718 [fixed] Pegging Igor is not supposed to be a one time thing. 6 months ago
  bgkjdgbizgblzdgbr 2f42336ed6 [fixed] The nerds meet once a week, not once a month at the Coffee Hole if Sveta haven't gotten an invite yet. 6 months ago
  hornguy6 813d76e327 [added] seeding stat tracking for virginity and body count checks 6 months ago
  hornguy6 d94a424380 [added] stat tracking to check if you orgasmed when you lost your virginity 6 months ago
  hornguy6 45e133114a [changed] reorganized the sister_chat file 6 months ago
  hornguy6 3f5eaca010 [added] The Graduate reference 6 months ago
  hornguy6 254ffc8a80 [fixed] prostituion 6 months ago
  hornguy6 ca38a5ba74 [changed] the fuck_cum thing 6 months ago
  hornguy6 bc236ea05c [fixed] if statement should include no_condom guys 6 months ago
  hornguy6 d92865313d [changed] updated the stat tracking 6 months ago
  hornguy6 e4f18418b0 [fixed] more of the undressing arg changes 6 months ago
  hornguy6 4cd2e70ec2 [changed] boy now slightly less likely to pull you into his favorite position 6 months ago
  hornguy6 51320ffd70 [fixed] variable stuff 6 months ago
  hornguy6 8b3126abc8 [added] WIP dialogue about your first creampie 6 months ago
  hornguy6 01a540edac [changed] text edits and stuff 6 months ago
  hornguy6 72483a182d [added] new conversation about starting birth control to abandon condoms 6 months ago
  hornguy6 e3f7a2eb08 [changed] moved the undress arg out of foreplay and into start 6 months ago
  hornguy6 30f527b25c [added] can wake up your sugar daddy for your sugar 6 months ago
  hornguy6 978e0ed34a [fixed] prostitution, not prostituion 6 months ago
  hornguy6 e27d32c53a [added] special dialogue if you lost your virginity to a guy 6 months ago
  hornguy6 af0ba39ede [changed] should be able to say you prefer positions you didn't do it in now 6 months ago
  hornguy6 3c0ba9e614 [added] can ask for your sugar money while preparing to leave 6 months ago
  hornguy6 c1b6bb6dcb [fixed] changed if statement to make more sense 6 months ago
  hornguy6 f005a2de58 [added] new creampie mechanics 6 months ago
  hornguy6 459191081b [fixed] carrot facing wrong way :3 6 months ago
  hornguy6 6e975efb69 [fixed] some variable seeding 6 months ago
  hornguy6 64a72cf29b [added] a wip conversation 6 months ago
  hornguy6 b818063fff [changed] trying a new way of checking boy conversation topics 6 months ago
  hornguy6 7f718db521 [fixed] calling wrong location 6 months ago
  anjuna krokus 4821be42b5 [fixed/changed] invert_color function in shortgs 6 months ago
  anjuna krokus de84dea062 [changed] Significant simplification of int_to_hex_str and hex_str_to_int functions. Credits to Sword and Felix 6 months ago
  anjuna krokus 4138b30c1a [fixed] Crash related to journal_npc_information 6 months ago
  Vengeance_11 9f9125dcc1 Nursing degree and related NPCs added to university 6 months ago
  Kevin_Smarts 0760f7b4d2 [changed] Collated some Tanya variables and adjusted number of sex visits to unlock overnight stays and maid job offer 6 months ago
  Derryth_Love 0388216749 [Fix] Invisible Pussy in Modeling Studio. 6 months ago
  Kevin_Smarts 32b63803fe [fixed] Abortion talk on wrong line so onlt showed if not first pregnancy 6 months ago
  Kevin_Smarts 6e983b2bb4 [fixed] spelling error in image links 6 months ago
  Kevin_Smarts dd9d38776a [added] Abortion talk with mother from BBZ01 6 months ago
  anjuna krokus a4cdccc7b6 [fixed] small fix to city residential gopniks not functioning correctly if you ran away first 6 months ago
  anjuna krokus dc65565333 [fixed] forgotten end in shortgs 6 months ago
  anjuna krokus 4a8f56ebb8 [added] invert color function to shortgs 6 months ago
  anjuna krokus 8111b926bc [added] mod support to sentence.qsrc to allow mods to create their own crimes 6 months ago
  anjuna krokus 0eaaaaa529 [fixed] Repeating arrests due to improper cleaning and moving of subjects and dates. 6 months ago
  LinaHirata 3f00e0dd53 [fixed] `DayStage` 6 and 1 using white `fcolor` 6 months ago
  LinaHirata 79cdd19f1b [fixed] kevin broke the game.... missing `end` in `natbel_chat` 6 months ago
  Kevin_Smarts 60ed0e0634 [added] New text after forgiving Nat loans but not dominating her. Can only do it 3 times before the loans stop. 6 months ago
  anjuna krokus 37ae373da3 [fixed] dot instead of komma. My bad 6 months ago
  anjuna krokus a6641e51f3 [fixed] mods working in the sleep cycle. Update to how mods check for being in the cycle. 6 months ago
  anjuna krokus c3f3acfac2 [fixed] forgotten clearing of $sleep_loc in 'sleep_simple' and fixed the problematic file wide $sleep_loc 6 months ago
  anjuna krokus 6bb0af45bd [added] Link explaining the doy function 6 months ago
  anjuna krokus cf5f5fb517 [fixed] Error in nichServantSleepEvents_handler in the pre_sleep_events location. 6 months ago
  hornguy6 6e595ecd13 [fixed] dead end missing call 6 months ago
  hornguy6 1e61461c46 [fixed] calling wrong file 6 months ago
  hornguy6 c8410c209d [fixed] hopefully can break up with sugar daddies correctly now 6 months ago
  Hooded Silence e5efb0640b Ballet content is now active, you need to start in summer as a dancer. Journal needs to be updated with way markers, but slowly going through the code bug fixing. Image paths still need to be fixed which will be the next update alongside content additions. *Note* Whilst you can start Starlets these are exclusionary storylines and you have the option to gracefully leave the Starlets. 6 months ago
  bgkjdgbizgblzdgbr dc2cc838eb [fixed] Inequalities, the bane of my existence. 6 months ago
  bgkjdgbizgblzdgbr c141f18737 [fixed] Still two different guys. 6 months ago
  bgkjdgbizgblzdgbr 71f47b9e31 [fixed] I need to learn to code. 6 months ago
  bgkjdgbizgblzdgbr df0efe1651 [fixed] Nush city schedule updated so that she is actaully somwhere all the time, and Coffee Hole fixed to use her schedule. 6 months ago
  anjuna krokus b6d4820afa [fixed][added] fixed the pubecolor not being set properly. Added support for bust_other and butt_other, where miscellaneous effect can enhance/reduce the bust/ass. 6 months ago
  anjuna krokus b210b13731 [fixed] $temp_doctor being deleted to early, which lead to empty doctor names. Updated the table row colors to be in line with the themes 6 months ago
  bgkjdgbizgblzdgbr cbfe4606f2 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  hornguy6 e3fb719fb3 [fixed] added in new file I forgot 6 months ago
  bgkjdgbizgblzdgbr d8481205d5 [fixed] Missing : pointed out be Chimrod. 6 months ago
  Kevin_Smarts e310a80262 [fixed] I should have put these on new lines. Sorry! 6 months ago
  Kevin_Smarts 5821dc4ef5 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  Kevin_Smarts 6ab217bf2b [changed] Fights now hit various body parts and apply pain if they are Sveta's 6 months ago
  bgkjdgbizgblzdgbr 5f22827bed [fixed] Ups. Forgot to active the scene I added 3 months ago. Also fixed it so you can actually by a drink if you want to. 6 months ago
  Kevin_Smarts 74a3d2a8dd Merge remote-tracking branch 'Derryth_Love/master' 6 months ago
  Kevin_Smarts ac5b8a1d3c Merge remote-tracking branch 'Hornguy6/master' 6 months ago
  Derryth_Love 4bef8ef060 [typo] Missing do-do 6 months ago
  hornguy6 a015d58cbb [fixed] no message for bumming cigarettes 6 months ago
  anjuna krokus 621a889ee9 [removed] forgotten image placeholders that should no longer be there 6 months ago
  anjuna krokus 5829c46139 [added] Experimental trials have dropped! They're weird, wacky, and now come with a new and improved40% guarantee to not fuck up your life! Sign up now at the city residential clinic and help shape the future! 6 months ago
  Kevin_Smarts 085d37bd4a Merge remote-tracking branch 'Hornguy6/master' 6 months ago
  hornguy6 1597731621 [fixed] did not push update sister chats to new location in other file 6 months ago
  bgkjdgbizgblzdgbr 3d23b9f636 [fixed] Errors with the clothes Kataj presents to you at pussy cats 6 months ago
  bgkjdgbizgblzdgbr 4bcca64bed [Added] Katja will now tell you she needs to go and not just disappear from the Coffee Hole. 6 months ago
  LinaHirata d99fa5519a [changed] cosmetic (and couple functional) changes to `item_cart` 6 months ago
  LinaHirata 20c0265946 [added] `rgb_to_hex` func 6 months ago
  LinaHirata f0e008f3e5 [fixed] daylight duration, commented the code for future reading, hope it helps 6 months ago
  LinaHirata c3dafc33ab [fixed] indent 6 months ago
  LinaHirata 9a054b2071 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  bgkjdgbizgblzdgbr e2153f5b39 [changed/added] Added schedule for Nush and the band mates for the school year. 6 months ago
  LinaHirata b8be0ff344 [added] runtime version check, the game will not load in incompatible players 6 months ago
  LinaHirata 65aaff46e8 [fixed] redundant text in hardware store 6 months ago
  bgkjdgbizgblzdgbr 310805e56a [fixed] Missing loc and loc_arg 6 months ago
  bgkjdgbizgblzdgbr db17fdc286 [fixed] Wrong image link. 6 months ago
  bgkjdgbizgblzdgbr c1e9fb31cb [fixed] The two guys do have different names. 6 months ago
  bgkjdgbizgblzdgbr 1642986d99 [fixed] Pegging Igor is not supposed to be a one time thing. 6 months ago
  bgkjdgbizgblzdgbr 30abaf81cf [fixed] The nerds meet once a week, not once a month at the Coffee Hole if Sveta haven't gotten an invite yet. 6 months ago
  Kevin_Smarts cfd067215b Merge remote-tracking branch 'Hornguy6/master' 6 months ago
  hornguy6 d7bf5a3fe7 [added] seeding stat tracking for virginity and body count checks 6 months ago
  hornguy6 e96b167041 [added] stat tracking to check if you orgasmed when you lost your virginity 6 months ago
  anjuna krokus 12ec61c40d [fixed/changed] invert_color function in shortgs 6 months ago
  anjuna krokus 123b82601b [changed] Significant simplification of int_to_hex_str and hex_str_to_int functions. Credits to Sword and Felix 6 months ago
  anjuna krokus 2b36b16ee3 [fixed] Crash related to journal_npc_information 6 months ago
  anjuna krokus 92280d4c8d Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  Vengeance_11 2be8fe7384 Nursing degree and related NPCs added to university 6 months ago
  Kevin_Smarts d7b2e76440 [changed] Collated some Tanya variables and adjusted number of sex visits to unlock overnight stays and maid job offer 6 months ago
  Kevin_Smarts 05d9dc4889 Merge remote-tracking branch 'Derryth_Love/master' 6 months ago
  Derryth_Love 4f3cf041e4 [Fix] Invisible Pussy in Modeling Studio. 6 months ago
  anjuna krokus 7e10bcf144 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  anjuna krokus 0192df10f5 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  anjuna krokus 4ef865c06c Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  Kevin_Smarts b6a1a64d18 [fixed] Abortion talk on wrong line so onlt showed if not first pregnancy 6 months ago
  Kevin_Smarts 896b91db76 Merge remote-tracking branch 'Anjuna/master' 6 months ago
  Kevin_Smarts 9a81b0dbfe [fixed] spelling error in image links 6 months ago
  hornguy6 70428f9b1e [changed] reorganized the sister_chat file 6 months ago
  hornguy6 cd2e088310 [added] The Graduate reference 6 months ago
  hornguy6 0c094073c9 [fixed] prostituion 6 months ago
  hornguy6 8f3048a9dc [changed] the fuck_cum thing 6 months ago
  hornguy6 3de78a01dd [fixed] if statement should include no_condom guys 6 months ago
  hornguy6 7d8fc9a85a [changed] updated the stat tracking 6 months ago
  hornguy6 9d934fc915 [fixed] more of the undressing arg changes 6 months ago
  hornguy6 eb9e9bacf5 [changed] boy now slightly less likely to pull you into his favorite position 6 months ago
  hornguy6 b7154334fc [fixed] variable stuff 6 months ago
  hornguy6 cdd78ff849 [added] WIP dialogue about your first creampie 6 months ago
  hornguy6 e4329fbed7 [changed] text edits and stuff 6 months ago
  hornguy6 0a4909ee5f [added] new conversation about starting birth control to abandon condoms 6 months ago
  hornguy6 ce4a37b2c4 [changed] moved the undress arg out of foreplay and into start 6 months ago
  hornguy6 6a8adf68ff [added] can wake up your sugar daddy for your sugar 6 months ago
  hornguy6 fdefd0cff7 [fixed] prostitution, not prostituion 6 months ago
  hornguy6 f81fcb21d1 [added] special dialogue if you lost your virginity to a guy 6 months ago
  hornguy6 aef73d2aa1 [changed] should be able to say you prefer positions you didn't do it in now 6 months ago
  hornguy6 76f9f35cf9 [added] can ask for your sugar money while preparing to leave 6 months ago
  hornguy6 ad0a1f69e5 [fixed] changed if statement to make more sense 6 months ago
  hornguy6 e8bd6f00cd [added] new creampie mechanics 6 months ago
  hornguy6 8832429ffb [fixed] carrot facing wrong way :3 6 months ago
  hornguy6 521b666a2b [fixed] some variable seeding 6 months ago
  hornguy6 c098c1a5a7 [added] a wip conversation 6 months ago
  hornguy6 3962eeb75b [changed] trying a new way of checking boy conversation topics 6 months ago
  hornguy6 f91c291ec9 [fixed] calling wrong location 6 months ago
  Kevin_Smarts 1ecb103e89 Merge remote-tracking branch 'Anjuna/master' 6 months ago
  anjuna krokus 9f0ca864d8 [fixed] small fix to city residential gopniks not functioning correctly if you ran away first 6 months ago
  Kevin_Smarts 9f9d334ca3 [added] Abortion talk with mother from BBZ01 6 months ago
  anjuna krokus ecc2314898 [fixed] forgotten end in shortgs 6 months ago
  anjuna krokus ec7f201d16 [added] invert color function to shortgs 6 months ago
  anjuna krokus 308c62045d [added] mod support to sentence.qsrc to allow mods to create their own crimes 6 months ago
  anjuna krokus fa73d5ef56 [fixed] Repeating arrests due to improper cleaning and moving of subjects and dates. 6 months ago
  LinaHirata 925737548f [fixed] `DayStage` 6 and 1 using white `fcolor` 6 months ago
  LinaHirata dbd13f0161 [fixed] kevin broke the game.... missing `end` in `natbel_chat` 6 months ago
  Kevin_Smarts 10b96988bc [added] New text after forgiving Nat loans but not dominating her. Can only do it 3 times before the loans stop. 6 months ago
  anjuna krokus 295f287f49 [fixed] dot instead of komma. My bad 6 months ago
  anjuna krokus c642619c98 [fixed] mods working in the sleep cycle. Update to how mods check for being in the cycle. 6 months ago
  anjuna krokus 89fbc756ec [fixed] forgotten clearing of $sleep_loc in 'sleep_simple' and fixed the problematic file wide $sleep_loc 6 months ago
  anjuna krokus 5d8aded6e1 [added] Link explaining the doy function 6 months ago
  Kevin_Smarts f5a2c13082 Merge branch 'master' of https://git.tfgames.site/anjuna/Girl-Life-Anjuna 6 months ago
  Kevin_Smarts a1c69f746d Merge remote-tracking branch 'Hornguy6/master' 6 months ago
  anjuna krokus 06722c6c96 [fixed] Error in nichServantSleepEvents_handler in the pre_sleep_events location. 6 months ago
  Kevin_Smarts 521eeba044 Merge remote-tracking branch 'Hooded_Silence/master' 6 months ago
  hornguy6 05cfd39f0e [fixed] dead end missing call 6 months ago
  hornguy6 337aab68cd [fixed] calling wrong file 6 months ago
  Hooded Silence 1f535603b6 Fixed bracket time travel. 6 months ago
  hornguy6 e23f1d9894 [fixed] hopefully can break up with sugar daddies correctly now 6 months ago
  Kevin_Smarts 101fb7feed Merge remote-tracking branch 'Felix/master' 6 months ago
  Kevin_Smarts f235a02908 Merge remote-tracking branch 'Hooded_Silence/master' 6 months ago
  LinaHirata 11c4cab85e [revert] `gs 'npc', 'cleanarrays'` breaking change, what i assumed to be a typo probably wasnt one 3KEKW 6 months ago
  LinaHirata 2b39d1f9f8 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  Hooded Silence f5ca05ccc4 Ballet content - code update and refactoring for review. Next stage is implement fetch trigger into code. Ballet street renamed but may be removed at next release. Ballet Secrets New Shop is partially populated with facilities to be added once balancing and costs are figured out. 6 months ago
  LinaHirata f3897d77be [fixed] Pyaterochka `Buy Ski` giving you skates instead 6 months ago
  netuttki 34400998e6 Merge remote-tracking branch 'Kevin-upstream/master' 6 months ago
  Kevin_Smarts b36613939b Merge remote-tracking branch 'Anjuna/master' 6 months ago
  Kevin_Smarts 8338da6549 Merge remote-tracking branch 'Felix/master' 6 months ago
  anjuna krokus e52a0b5fc1 [changed] renamed 'body', '' to 'body', 'Update_Body', nuked the persistent vhtmp variable, and further split up the DailyUpdate function. 6 months ago
  anjuna krokus ed7bb4da0c [changed] small change to the calc_salocatnow function (from gs to func) and setup for the pending nbsize changes that will probably come in the near future 6 months ago
  LinaHirata 840a8ae776 [fixed] `cikl` generating `<br>`s and couple other minor fixes 6 months ago
  LinaHirata e1395d2a68 [fixed] workaround for `pornstack` desyncing from `pfilmday` 6 months ago
  netuttki 2bc757188d Moved "Can't do camshow" and "Can't watch porn" texts in the right place 6 months ago
  netuttki cf2e94c553 Fixed gas station to display the shopping list properly. 6 months ago
  netuttki 501dab068f Merge remote-tracking branch 'Kevin-upstream/master' 6 months ago
  Kevin_Smarts a8a81ebb4e Merge remote-tracking branch 'Felix/master' 6 months ago
  LinaHirata 8580d89937 [fixed] quick save/load buttons now also change their size according to icon height setting 6 months ago
  anjuna krokus fbedb1dae4 [changed] simplified logic and added a comment 6 months ago
  anjuna krokus 7ee03c719a [changed] minor change to increase readability since 55 < hration < 61 6 months ago
  anjuna krokus bfb259ab2f [removed] useless code. My bad 6 months ago
  anjuna krokus b5250770f6 [fixed] Forgotten label 6 months ago
  anjuna krokus 516806f56b [added/changed] Added decimal information for BMI and Weight (no changes to fundamental gameplay). First step in the refactoring of body.qsrc 6 months ago
  LinaHirata 7a2b2a8bb3 [fixed] syntax error in `pushkin_ballet_class` 6 months ago
  LinaHirata 0593bd1423 [fixed] loc name `Journal` (should be lower case) 6 months ago
  LinaHirata 7bb124588c [fixed] syntax errors in `city_trashplace` 6 months ago
  LinaHirata d23d0533ae [fixed] setting `stren_plus` via cheat menu now correctly updates appearance 6 months ago
  Kevin_Smarts f2c0b3cef0 [removed] cleared most of the unused files as not required anymore 6 months ago
  Kevin_Smarts 2be9807e0d Merge remote-tracking branch 'Awesome/master' 6 months ago
  Kevin_Smarts 6358a2d95b Merge remote-tracking branch 'Felix/master' 6 months ago
  Awesome 37db215357 [Fixed] City trashplace and pornstudio 6 months ago
  LinaHirata d8021497f0 [purged] `$this` 6 months ago
  anjuna krokus 2cd6856d69 [added] razors and tampons to Gad market 6 months ago
  anjuna krokus b8148f13a1 [fixed][added] Fixed the library debt and added the option to pay it with your card. 6 months ago
  anjuna krokus eac96984d4 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  Kevin_Smarts 4a9889e1ac Merge remote-tracking branch 'Netuttki/master' 6 months ago
  Kevin_Smarts 148e8def2b Merge remote-tracking branch 'Awesome/master' 6 months ago
  Kevin_Smarts 9f45889048 Merge remote-tracking branch 'Anya/master' 6 months ago
  netuttki 8d59ce06b3 Merge remote-tracking branch 'Kevin-upstream/master' 6 months ago
  netuttki 0797238803 Set the correct location type for the guest bedroom to make music work. 6 months ago
  Vengeance_11 c116572d56 Proofreading and variable updates 6 months ago
  Vengeance_11 c91bf731cf Fixed machine translation in trash place 6 months ago
  Awesome eeaa157220 [fixed] missing boystat calls for Kolka 6 months ago
  Anya 0bb7e8b9f5 [fixed] julia shower dead end 6 months ago
  Anya 9020fe920c [fixed] more accurate tat count for Lina convo 6 months ago
  anjuna krokus 859785fbb7 [added] option to set npc_preferences directly with numbers. Use this only if you know what you're doing 6 months ago
  Kevin_Smarts 6b3876497f [fixed] A lot of sports outfits had tops set as replacing bra when they really shouldn't have. Should help with lower inhib 6 months ago
  Kevin_Smarts 8e94f962c2 Merge remote-tracking branch 'Hornguy6/master' 6 months ago
  netuttki 90215a3d92 Merge remote-tracking branch 'Kevin-upstream/master' 6 months ago
  anjuna krokus 4f0e69f19a [fixed] a bug in npc_set_preference which prevented the entire system from working.... WOOPS... 6 months ago
  hornguy6 00d76b17ab [added] [changed] [fixed] lots and lots of changes and additions that were made while waiting for feature lock to end :P 6 months ago
  bgkjdgbizgblzdgbr 658df55402 [fixed] igorstrap is not a binary variable, and should not be checked as one. 6 months ago
  Kevin_Smarts 2bb088a76f [text edit from anjuna 6 months ago
  LinaHirata d55d9bba01 [fixed] journal, ballet section 6 months ago
  LinaHirata dbb0fcc059 LSP hates `'string'+ +'string'` statements; i do to AngryFroge 6 months ago
  LinaHirata 82785889e7 [added] manual call trace snippet 6 months ago
  LinaHirata 4618c67ff6 [added] call trace, auto mode 6 months ago
  LinaHirata ff552fea84 [fixed] redundant `result` and `killvar` in `hex to int` and `int to hex` funcs 6 months ago
  LinaHirata 9e9798aa58 [changed] no longer sendind `steroid_dose` as an ARG since it isnt required anymore 6 months ago
  LinaHirata 065b6e414f [changed] minor `exp_gain` refactor 6 months ago
  LinaHirata 006490e285 [changed] made mirror routines dynamic 6 months ago
  LinaHirata cefeb9379b [removed] redundant `photography_start = 1` check 6 months ago
  LinaHirata 55d33ee355 [optimized] reduced var count in `notifications.qsrc` by 1 COGGERS 6 months ago
  LinaHirata 21ef12d3a7 [added] provisions for `git_hash` build tagging and call trace 6 months ago
  LinaHirata 02975fc574 [changes] minor cosmetic changes to `item_cart` 6 months ago
  LinaHirata 46e9475df3 [fixed] `pcs_energy` and `pcs_hydra` checks in `hourly_events` 6 months ago
  LinaHirata 43d199d816 [changed] training in gym now requires atleast 20 hunger 6 months ago
  LinaHirata b8a7c42020 [fixed] assign $stat_day_suffix after the date change 6 months ago
  LinaHirata 3887b4e900 [fixed] broken ballet doesnt compile 6 months ago
  LinaHirata d13cf97658 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  Kevin_Smarts e6ff795e53 [fixed] Doc gives wrong price for herpes shots 6 months ago
  LinaHirata 7dac581bfd [fixed] indent 6 months ago
  Kevin_Smarts 13e5bd59b6 Merge remote-tracking branch 'Awesome/master' 6 months ago
  Kevin_Smarts f7baa9fb06 Merge remote-tracking branch 'Hooded_Silence/master' 6 months ago
  Kevin_Smarts 4d23b4ae6e [text edit] couple of missing spaces 6 months ago
  Awesome f3e6925012 [Changed] New design for the alarm clock 6 months ago
  Hooded Silence 3339fe249e Announcing the start of the long awaited Ballet content, this is the start of integrating Hooded Silence's mod into the core game. It is not fully linked into the game areas and things will likely break until it is fully integrated. This is for both code review and suggestions as it is being worked on from team members and adventurous mortals. 6 months ago
  Hooded Silence f7e20fe945 Optimisation: Cache date suffix into $stat_day_suffix in stat_display to reduce execution calls. 6 months ago
  Kevin_Smarts 613b8bc17d [fixed] error spotted by analyser 6 months ago
  Kevin_Smarts 4bab9aea74 Merge remote-tracking branch 'Derryth_Love/master' 6 months ago
  Kevin_Smarts 248553ba27 Merge remote-tracking branch 'Awesome/master' 6 months ago
  Kevin_Smarts a901a50da6 [added] Changelog update and version update in preperation for bug fix release 6 months ago
  Derryth_Love e04bc4a99a [fix]The END my only Friend 6 months ago
  Awesome 9358ec9bf7 [Fixed] Female sparring partners having male names 6 months ago
  Kevin_Smarts dcd95ba19d [fixed] Mum chat could drop you in Pav Market even if it started in St Pete's 6 months ago
  Kevin_Smarts c5fc754187 Merge remote-tracking branch 'Derryth_Love/master' 6 months ago
  Derryth_Love 01a4602e8c [fix]Removed redundant ELSE 6 months ago
  Kevin_Smarts 7203f05cc2 Merge remote-tracking branch 'Awesome/master' 6 months ago
  Awesome e72a5710ac [fixed] Volleyball icon 6 months ago
  Kevin_Smarts bf8ecdf517 [fixed] Sister age wasn't calculated in mother file before being used and if you haven't talked to sis it was 0 6 months ago
  Derryth_Love e9062dc69c [fix]Missing $ in $ARGS 6 months ago
  Derryth_Love 923f6c5f1d [fix]syntax error 6 months ago
  Derryth_Love 63fd076bb2 [fix]Meynold house not showing up after sveta is told she can visit whenever she wants. 6 months ago
  Derryth_Love f6c396c4ac [fix]Added Meynold key to the kitchen, so it can be aquired when school is not in session. 6 months ago
  Derryth_Love 2f444a7e82 [fix]You now can get an invite to Vicky's house during the summer after the beach scene. 6 months ago
  Derryth_Love 5e10527187 [add]added text to advertisements on first floor 6 months ago
  Derryth_Love d7e0101d8d [fix] Sveta walking out naked from the Studio no longer 6 months ago
  Anya 29b3cccd03 [fixed] Christina caught one too many times 6 months ago
  hornguy6 5db6987d05 [fixed] made asking for a creampie and getting panicked or angry mutually exclusive 6 months ago
  hornguy6 b701cb7158 [fixed] WIP event was not blocked off 6 months ago
  anjuna krokus b1c0526c8f [fixed] forgot to include the check for schoolgirl start w.r.t. vacation 6 months ago
  anjuna krokus 82fc13aa8e [fixed/added] fixed issues surrounding the vacation alarm not working correctly on the first and last day of vacation. Better sleep in the therapist hotel events, and added a hex to int function to shortgs 6 months ago
  anjuna krokus 83bed94bac [fixed] unnecessary sorting in cikl 6 months ago
  anjuna krokus ed3276ca03 Revert "[fixed] prevent unnecessary sorting" 6 months ago
  anjuna krokus 49702f8ec5 [fixed] prevent unnecessary sorting 6 months ago
  anjuna krokus 14971c2776 [fixed] Actual Issues surrounding courtletter stuff 6 months ago
  anjuna krokus d5056abddd Revert "[fixed] issues with the court system if you miss a courthearing repeatedly" 6 months ago
  anjuna krokus 7198cd6fc8 [fixed] issues with the court system if you miss a courthearing repeatedly 6 months ago
  LinaHirata 1c86514cd1 [fixed] computors availably in city library when its closed 6 months ago
  LinaHirata f6c363d524 [fixed] city library no internet access; added restrictions 6 months ago
  LinaHirata effe3bc14f [fixed] printing `dynamic` code instead of running it `3Head` 6 months ago
  Kevin_Smarts f456f1f2da [fixed] Sveta used by hunters and not custom name 6 months ago
  Kevin_Smarts 7947660859 [fixed] Sister age wasn't calculated in mother file before being used and if you haven't talked to sis it was 0 6 months ago
  Kevin_Smarts c6e9dc9623 Merge remote-tracking branch 'Derryth_Love/master' 6 months ago
  Kevin_Smarts 9d7a2014c9 Merge remote-tracking branch 'Anya/master' 6 months ago
  Kevin_Smarts 56f822f803 Merge remote-tracking branch 'Hornguy6/master' 6 months ago
  Kevin_Smarts b9bd9cf34c Merge remote-tracking branch 'Anjuna/master' 6 months ago
  netuttki f5a003fda6 Merge remote-tracking branch 'Kevin-upstream/master' 6 months ago
  anjuna krokus e579b42756 [fixed] forgot to include the check for schoolgirl start w.r.t. vacation 6 months ago
  anjuna krokus a6c5c11776 [fixed/added] fixed issues surrounding the vacation alarm not working correctly on the first and last day of vacation. Better sleep in the therapist hotel events, and added a hex to int function to shortgs 6 months ago
  LinaHirata 920fd83559 [fixed] computors availably in city library when its closed 6 months ago
  LinaHirata 642685356d [fixed] city library no internet access; added restrictions 6 months ago
  Derryth_Love db114e826f [fix]Missing $ in $ARGS 6 months ago
  Derryth_Love 296536e316 [fix]syntax error 6 months ago
  anjuna krokus bb44fe50f2 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  Derryth_Love 92cc6b6d71 [fix]Meynold house not showing up after sveta is told she can visit whenever she wants. 6 months ago
  Derryth_Love 3fb2ae19e5 [fix]Added Meynold key to the kitchen, so it can be aquired when school is not in session. 6 months ago
  Anya a4fc53a667 [fixed] Christina caught one too many times 6 months ago
  anjuna krokus 40a1580293 [fixed] unnecessary sorting in cikl 6 months ago
  anjuna krokus 6e7b5563d0 Revert "[fixed] prevent unnecessary sorting" 6 months ago
  bgkjdgbizgblzdgbr 6a06e9d114 Reverting changes 6 months ago
  bgkjdgbizgblzdgbr 9db7c679e7 [added] A flle that should not have been removed. 6 months ago
  bgkjdgbizgblzdgbr 79e472a391 Revert "[removed] Old unused file" 6 months ago
  Awesome 3ece4e75ab [fixed] more npcs not using the custom name of sveta and some changes to camgirl arousal calls 6 months ago
  LinaHirata f01bf6b133 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  bgkjdgbizgblzdgbr 1618e3d1c2 Reverting changes 6 months ago
  bgkjdgbizgblzdgbr 7d8d643ba1 [added] A flle that should not have been removed. 6 months ago
  bgkjdgbizgblzdgbr 3a061b055b Revert "[removed] Old unused file" 6 months ago
  LinaHirata 488cd2b997 [fixed] printing `dynamic` code instead of running it `3Head` 6 months ago
  Awesome 5802c6e4c0 [fixed] npcs calling sveta sveta instead of the custom name and some more nerfs for camgirl 6 months ago
  Awesome a93022af3f [Fixed] nerfed camgirl stuff 6 months ago
  bgkjdgbizgblzdgbr 86456d5996 [fixed] File removed from glife.qproj that should not have been removed. 6 months ago
  bgkjdgbizgblzdgbr 02d27d01a0 [fixed] File removed from glife.qproj that should not have been removed. 6 months ago
  hornguy6 6dee1043df [fixed] made asking for a creampie and getting panicked or angry mutually exclusive 6 months ago
  hornguy6 dc87e4e33c [fixed] WIP event was not blocked off 6 months ago
  Derryth_Love 047d2d1e34 [fix]You now can get an invite to Vicky's house during the summer after the beach scene. 6 months ago
  anjuna krokus c7eb1c8460 [fixed] prevent unnecessary sorting 6 months ago
  anjuna krokus 4a4b46f21e [fixed] Actual Issues surrounding courtletter stuff 6 months ago
  anjuna krokus 92a2a8a8d4 Revert "[fixed] issues with the court system if you miss a courthearing repeatedly" 6 months ago
  anjuna krokus 0e09e859d8 [fixed] issues with the court system if you miss a courthearing repeatedly 6 months ago
  Derryth_Love b868b01c14 [add]added text to advertisements on first floor 6 months ago
  Derryth_Love b48539dc4a [fix] Sveta walking out naked from the Studio no longer 6 months ago
  Awesome 2f0b452f61 [fixed] forgot to add the .mp4 to the video link :Distressed: 6 months ago
  Awesome be42807b36 [fixed] infinite mushroom/berry baskets 6 months ago
  LinaHirata cf7bc053ab Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 months ago
  LinaHirata ba1748933e [fixed] blank screen when buying antifungal in city pharm 6 months ago
  Kevin_Smarts 3a4dbb3a6b Merge remote-tracking branch 'Awesome/master' 6 months ago
  Kevin_Smarts b3feee6054 Merge remote-tracking branch 'Anjuna/master' 6 months ago
  Kevin_Smarts 53e3a1289b Merge remote-tracking branch 'Netuttki/master' 6 months ago
  Kevin_Smarts 08f7da50ff [fixed] Rubels? changed to use correct sign to prevent further spelling errors 6 months ago
  Awesome 093f08c4a0 [text edit] small corrections 6 months ago
  anjuna krokus 0c546e970e [fixed] sleep simple printing stuff and wrong image names in hotel_therapist 6 months ago
  netuttki 56efd3b06b Added text for changing clothes by the road when not with a car. 6 months ago
  netuttki 9da3e7812b Fixed: Going to the road automatically equipped prostitute outfit 6 months ago
  netuttki 9278d54662 Merge remote-tracking branch 'Kevin-upstream/master' 6 months ago
  anjuna krokus c31e42b036 [fixed] spelling mitsake 6 months ago
  Kevin_Smarts 3bae7b45cf [fixed] section should have been commented out as conditions cannot be meet until the stripclub bar work job exists. 6 months ago
  LinaHirata 84da459dc8 [fixed] revert last commit 6 months ago
  Kevin_Smarts fde2ce843b [fixed] shave fix from Felix 6 months ago
  LinaHirata f5e30db022 [fixed/changed] early shaving and `Shave Options` menu; adjusted `shave_length` and `shave_trigger` for clean and lazy shave options 7 months ago
  Kevin_Smarts 762497c11c Merge remote-tracking branch 'Anjuna/master' 7 months ago
  anjuna krokus cfaf80d6e2 [fixed] bikini events while wearing a one-piece 7 months ago
  Hooded Silence ccf4dc3cdd City library - fix the broken computer. 7 months ago
  anjuna krokus be92372981 [fixed] wrong event calls in various sleep cycle event locations. 7 months ago
  anjuna krokus 18c5d2a3b8 [changed] moved the 'extra' function from sleep to wakeup and renamed it to snooze_alarm 7 months ago
  Kevin_Smarts 0b21058425 [changed] Version number updated for release 7 months ago
  Kevin_Smarts 36047cc697 [changed] Change log updated ready for release 7 months ago
  Kevin_Smarts 82add24006 Merge remote-tracking branch 'Anjuna/master' 7 months ago
  anjuna krokus 771ffac719 [fixed] Snooze didn't work. 7 months ago
  hornguy6 385827a216 [fixed] more stat and consistency fixes 7 months ago
  hornguy6 f2e77b54b4 [fixed] miscellaneous typos and stat fixes 7 months ago
  hornguy6 91621e3a01 [fixed] checks against no_condom trait needs to call against numbers greater than 0 because it can be 1 or 2 7 months ago
  hornguy6 2c0e0a39e8 [fixed] storing wrong number 7 months ago
  Kevin_Smarts aac8043dd6 [Added] Version history updated for release 7 months ago
  Kevin_Smarts 3ed8e3a2fb Merge remote-tracking branch 'Netuttki/master' 7 months ago
  Kevin_Smarts d26a5efd64 [fixed] Dynamic theme colour fix from Felix 7 months ago
  netuttki 3fe6e01013 Removed an obsolete check for prostitution events. 7 months ago
  netuttki da61264a46 Merge remote-tracking branch 'Kevin-upstream/master' 7 months ago
  Kevin_Smarts 73b0220729 Merge remote-tracking branch 'Hornguy6/master' 7 months ago
  Kevin_Smarts b3f79e65d7 Merge remote-tracking branch 'Awesome/master' 7 months ago
  Kevin_Smarts 88072166ef Merge remote-tracking branch 'Anjuna/master' 7 months ago
  hornguy6 0cec6228c9 [fixed] updated the colors again because for some stupid reason BColorBase is a constantly changing variable that makes it impossible to consistently keep legible text 7 months ago
  hornguy6 5c2ae4e324 [fixed] accidentally replaced existing text with upcoming party text 7 months ago
  Awesome cdb72cf994 [fixed] some wrong image links 7 months ago
  anjuna krokus de7e461fd5 Forgotten killvar 7 months ago
  anjuna krokus 149e1dc249 [fixed] wrong sublocation called in bed2 when setting the alarmclock on 7 months ago
  anjuna krokus f39c47973a [fixed] improved sublocation naming in bed2 to prevent confusion and future bugs 7 months ago
  netuttki a3fcba4a60 Merge remote-tracking branch 'Kevin-upstream/master' 7 months ago
  netuttki f6e250206a Better message when an action can't be done 7 months ago
  netuttki bdef1b72cd Fixed the incorrect "you're not alone" message bug. 7 months ago
  Kevin_Smarts 1322e8fe50 Merge remote-tracking branch 'Netuttki/master' 7 months ago
  Kevin_Smarts ace7613150 Merge remote-tracking branch 'Derryth_Love/master' 7 months ago
  netuttki 6dad15a54b Fix to the weird random lover descriptions in the old system. 7 months ago
  netuttki 6d44de4413 Merge remote-tracking branch 'Kevin-upstream/master' 7 months ago
  Kevin_Smarts 9745c917c3 [fixed] Check for hunger/fatigue added to kickboxing gym to prevent being able to keep using it when too hunger or fatigued 7 months ago
  Kevin_Smarts c0c4591a3a [fixed] Stamina now full at game start 7 months ago
  Kevin_Smarts e77cda99d9 [fixed] Leading cows home actually returns you to the village and not just back to the field now 7 months ago
  Kevin_Smarts 55e6677f32 [fixed] Artem will stop asking to for Sveta to be his gf when she is already 7 months ago
  Derryth_Love a8689997e4 [fix] more typos in mother chats 7 months ago
  Kevin_Smarts 4912a0eede [fixed] Football using exercise system so that it applies everything and stamina check to make sure you have enough to play 7 months ago
  Derryth_Love ba9df1da7e [fix] Typos in Mother Chats 7 months ago
  Derryth_Love 832cc5aa6b [fix]Typo in Confession 7 months ago
  Kevin_Smarts 69cea1fe76 Merge remote-tracking branch 'Awesome/master' 7 months ago
  Kevin_Smarts e72f53d7ae Merge remote-tracking branch 'Anjuna/master' 7 months ago
  Kevin_Smarts 4b085a585a Merge remote-tracking branch 'Derryth_Love/master' 7 months ago
  Awesome af90d224f6 [fixed] filename 7 months ago
  Awesome edad83156f some more fixes for the missing media script it should now give a more or less accurate account of the missing images 7 months ago
  anjuna krokus e7d8f629c1 [fixed] another line referencing stealing in the prostitution content 7 months ago
  anjuna krokus 01ab7af30d [fixed] Prostitution hearing no longer references stealing 7 months ago
  anjuna krokus 1f35f6f978 [fixed] updated comments in sentence for better overview 7 months ago
  anjuna krokus 135987f037 [fixed] a bug with missing court. 7 months ago
  anjuna krokus e868003de0 [fixed] wrong variable checked. 7 months ago
  netuttki 6495ac2c46 Merge remote-tracking branch 'Kevin-upstream/master' 7 months ago
  hornguy6 9681db156d [fixed] loverGender was getting killvar'ed before a check requiring it so the result would always be 0 7 months ago
  Derryth_Love fb806889e2 [fix]Incorrect timestamp for looking for V&V 7 months ago
  LinaHirata 5ca8e6537b [fixed] `selfies/school_classroom/titflash/<<i>>.jpg` sometimes picking `0.jpg` which doesnt exist 7 months ago
  LinaHirata 0bf479c3b0 [fixed] `alt_color` now considers if it should be dynamic or not (are you indoors or outdoors) 7 months ago
  Kevin_Smarts 922138a59d [fixed] Missing clears 7 months ago
  Awesome 3d90fe3a6a [fixed] some issues in the missing image script and some wrong imagelinks 7 months ago
  Derryth_Love b0c6f30460 [Edit] Tamara's Personality and Relationship with Valentina Updated. 7 months ago
  Kevin_Smarts e5456cf383 Merge remote-tracking branch 'Hornguy6/master' 7 months ago
  hornguy6 9ae8b92718 [fixed] loverGender was getting killvar'ed before a check requiring it so the result would always be 0 7 months ago
  Derryth_Love 9febfc1a94 [fix]Incorrect timestamp for looking for V&V 7 months ago
  Kevin_Smarts cc88ec9723 Merge branch 'master' of https://git.tfgames.site/Awesome/glife 7 months ago
  Awesome ab66e2ab80 [added] new script to check for missing media(currently mp4 and jpg only) also it has difficulties with variables and no clue how to handle FUNC or iif so I excluded those for now feel free to fix it 7 months ago
  LinaHirata fdb46860b6 [fixed] `selfies/school_classroom/titflash/<<i>>.jpg` sometimes picking `0.jpg` which doesnt exist 7 months ago
  LinaHirata b2234d479b [fixed] `alt_color` now considers if it should be dynamic or not (are you indoors or outdoors) 7 months ago
  Kevin_Smarts 158cbffd70 [fixed] Missing clears 7 months ago
  Kevin_Smarts 00d2c83490 Merge remote-tracking branch 'Anjuna/master' 7 months ago
  Kevin_Smarts 821de06114 Merge remote-tracking branch 'Hornguy6/master' 7 months ago
  Kevin_Smarts f8c496d3d4 Merge remote-tracking branch 'Awesome/master' 7 months ago
  Kevin_Smarts de89408ba3 Merge remote-tracking branch 'Hooded_Silence/master' 7 months ago
  anjuna krokus 363e4a9609 [fixed] A better flow for the sleep cycle (specifically dream_events), better error messages to prevent needless bug reports. 7 months ago
  bgkjdgbizgblzdgbr 91e098a5d3 [fixed] Wrong links. Spotted by Felix. 7 months ago
  bgkjdgbizgblzdgbr c9085b90a7 [fixed] YOu need << >> when using dymamics. 7 months ago
  bgkjdgbizgblzdgbr a01f08b987 [fixed] Some more Katja nigthclub bugs, spotted by Felix. 7 months ago
  bgkjdgbizgblzdgbr f696a58478 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 7 months ago
  bgkjdgbizgblzdgbr 56c719ab17 [fixed] Wrong links in Katja nightclub dancing. 7 months ago
  hornguy6 7cc1b72dd2 [fixed] two pump chumps cum so fast that it didn't count as a fuck 7 months ago
  hornguy6 e56225e384 [fixed] missing confirmation dialogue 7 months ago
  hornguy6 f8606aa61d [fixed] extra tab 7 months ago
  hornguy6 be7073d19e [fixed] dead end 7 months ago
  Awesome 698018fc8f [removed] Old unused file 7 months ago
  anjuna krokus 1ed4a95142 [fixed] wrong event location in pav_pool and the cum_call bug in the rex_party 7 months ago
  hornguy6 da81fb8266 [fixed] some variables not getting set i think 7 months ago
  Kevin_Smarts be63dd7ad0 [fixed] Use specific backups for protitute clothing change to reduce errors and trimmed the trailing spaces in the file 7 months ago
  netuttki 51af6ad4d7 I'm dumb, I didn't refresh the home after updating the properties 7 months ago
  Awesome 9c70bf6e79 [fixed] Bg image not closing on Village shop 7 months ago
  LinaHirata 848843cf57 [minor fixes] to shopping 7 months ago
  Hooded Silence 1a34b189b0 Variable cleanup 7 months ago
100 changed files with 4891 additions and 2088 deletions
  1. 3 0
      Check_media.bat
  2. 48 17
      MakeQSP.bat
  3. 24 1
      glife.qproj
  4. 119 0
      ignoremedialinks.txt
  5. 19 20
      locations/AppearanceSystem.qsrc
  6. 49 42
      locations/Cheatmenu_din.qsrc
  7. 41 73
      locations/Club2.qsrc
  8. 1 1
      locations/IvanEv.qsrc
  9. 3 3
      locations/KatjaHomeTalk.qsrc
  10. 6 1
      locations/Komp.qsrc
  11. 51 1
      locations/LOCA.qsrc
  12. 12 12
      locations/MeynoldHome.qsrc
  13. 1 1
      locations/NikoEv2.qsrc
  14. 55 75
      locations/Peterroom.qsrc
  15. 8 8
      locations/UnitAppearance.qsrc
  16. 1 1
      locations/Zvereva_Sly_sex.qsrc
  17. 69 69
      locations/_attributes_danilovich_outfits.qsrc
  18. 1 1
      locations/_attributes_school.qsrc
  19. 2 2
      locations/act_main1.qsrc
  20. 2 2
      locations/act_minor1.qsrc
  21. 68 38
      locations/alarmclock.qsrc
  22. 1 1
      locations/albina_starlets_sex.qsrc
  23. 1 1
      locations/albina_wine_event.qsrc
  24. 1 1
      locations/alexandriaEv.qsrc
  25. 87 42
      locations/anushapt.qsrc
  26. 286 55
      locations/anushka_konstantinov_schedule.qsrc
  27. 86 27
      locations/arkadi_fyodorov_schedule.qsrc
  28. 67 2
      locations/arousal.qsrc
  29. 7 7
      locations/artem_date_events.qsrc
  30. 25 22
      locations/artemhome.qsrc
  31. 3 0
      locations/ballet_global_evt.qsrc
  32. 97 0
      locations/ballet_npc.qsrc
  33. 74 0
      locations/ballet_secrets.qsrc
  34. 1 1
      locations/bank.qsrc
  35. 3 3
      locations/bed.qsrc
  36. 14 14
      locations/bed2.qsrc
  37. 16 10
      locations/bed_events.qsrc
  38. 3 4
      locations/bed_get_out.qsrc
  39. 3 6
      locations/bed_get_out_events.qsrc
  40. 7 5
      locations/bedrPar.qsrc
  41. 593 277
      locations/body.qsrc
  42. 137 138
      locations/body_desc.qsrc
  43. 5 4
      locations/booty_call_sms.qsrc
  44. 25 9
      locations/boy.qsrc
  45. 56 43
      locations/brothel.qsrc
  46. 8 7
      locations/brother.qsrc
  47. 4 0
      locations/brother2.qsrc
  48. 1 1
      locations/cafe_parco.qsrc
  49. 1 1
      locations/camera.qsrc
  50. 39 45
      locations/cikl.qsrc
  51. 2 2
      locations/city_center.qsrc
  52. 31 23
      locations/city_clinic.qsrc
  53. 3 5
      locations/city_coffee_hole.qsrc
  54. 135 0
      locations/city_experimental_trials.qsrc
  55. 615 0
      locations/city_experimental_trials_events.qsrc
  56. 512 0
      locations/city_experimental_trials_list.qsrc
  57. 25 0
      locations/city_experimental_trials_pharmacy.qsrc
  58. 19 10
      locations/city_library.qsrc
  59. 2 2
      locations/city_market.qsrc
  60. 2 2
      locations/city_musicstore.qsrc
  61. 1 1
      locations/city_nightclub.qsrc
  62. 1 0
      locations/city_pharmacy.qsrc
  63. 3 3
      locations/city_redlight.qsrc
  64. 184 179
      locations/city_trashplace.qsrc
  65. 78 119
      locations/city_trashplaceevents.qsrc
  66. 1 1
      locations/clothing.qsrc
  67. 199 0
      locations/core_library.qsrc
  68. 20 1
      locations/counter.qsrc
  69. 6 8
      locations/courtletter.qsrc
  70. 1 1
      locations/crossfit_north_girlmeet.qsrc
  71. 4 4
      locations/dateF.qsrc
  72. 2 2
      locations/dimaRevenge.qsrc
  73. 179 292
      locations/din_van.qsrc
  74. 4 6
      locations/dream_events.qsrc
  75. 3 2
      locations/emp_functions.qsrc
  76. 8 8
      locations/exercise.qsrc
  77. 51 43
      locations/exp_gain.qsrc
  78. 2 2
      locations/fame.qsrc
  79. 281 16
      locations/fight.qsrc
  80. 199 195
      locations/fit.qsrc
  81. 38 11
      locations/food_menu.qsrc
  82. 4 3
      locations/foto.qsrc
  83. 1 1
      locations/foto_shoot.qsrc
  84. 1 1
      locations/gadfield.qsrc
  85. 3 3
      locations/gadforest_event.qsrc
  86. 1 1
      locations/gadhouse.qsrc
  87. 0 1
      locations/gadmarket.qsrc
  88. 1 1
      locations/gadroad.qsrc
  89. 4 15
      locations/gas_station_gp_117.qsrc
  90. 2 0
      locations/gdksport.qsrc
  91. 4 4
      locations/gloryhole.qsrc
  92. 1 1
      locations/gopnew.qsrc
  93. 1 1
      locations/grandpahelp.qsrc
  94. 1 1
      locations/gschool_boys_bathroom.qsrc
  95. 2 2
      locations/gschool_cheerleading.qsrc
  96. 7 6
      locations/gschool_events.qsrc
  97. 1 1
      locations/gschool_grounds.qsrc
  98. 6 8
      locations/gschool_groups.qsrc
  99. 1 1
      locations/gschool_jock_chats.qsrc
  100. 5 5
      locations/gschool_lessons.qsrc

+ 3 - 0
Check_media.bat

@@ -0,0 +1,3 @@
+@echo off
+python "%~dp0tools\check_missing_media.py"
+if errorlevel 1 pause

+ 48 - 17
MakeQSP.bat

@@ -1,5 +1,8 @@
 @ECHO off
 
+:: Set batch file path
+set BATDir=%~dp0
+
 :: Set those lines to fit your setup. 
 :: This is where glife.qsp will be copied. If you don't want to move it just comment (::) the line below.
 :: set CP_TO=..\GL_ECV
@@ -11,40 +14,52 @@ set QGEN=tools\QGen5\QGen.exe
 :: The file that will be generated or open
 set QSPFILE=glife.qsp
 
+:: Chimrod validation tool
+set QSPParser=tools\qsp_parser.exe
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
 :menu
 cls
 echo.
-echo :: QSP Compiler and Launcher
+echo :: Girl Life - QSP Compiler and Launcher ::
 echo.
 
 if defined QGEN (
-	if not exist "%QGEN%" ( 
-		echo QGEN     : [ERROR] - %QGEN%  not found. Using DEFAULT application.
+	if not exist "%BATDir%%QGEN%" ( 
+		echo QGEN       : [ERROR] - "%BATDir%%QGEN%"  not found. Using DEFAULT application.
 		set QGEN=
-	) else ( echo QGEN     : [OK] - "%QGEN%")
+	) else ( 
+			echo QGEN       : [OK] - "%BATDir%%QGEN%")
 ) else echo QGEN     : [NOT DEFINED] - Using DEFAULT application.
 
 if defined QSPGUI (
-	if not exist "%QSPGUI%" ( 
-		echo QSP EXEC : [ERROR] - %QSPGUI% not found.
+	if not exist "%BATDir%%QSPGUI%" ( 
+		echo QSP EXEC   : [ERROR] -"%BATDir%%QSPGUI%" not found.
 		set QSPGUI=
-	) else ( echo QSP EXEC : [OK] - "%QSPGUI%")
-) else ( echo QSP EXEC : [NOT DEFINED] - Using Windows DEFAULT.)
+	) else ( echo QSP EXEC   : [OK] - "%BATDir%%QSPGUI%")
+) else ( echo QSP EXEC   : [NOT DEFINED] - Using Windows DEFAULT.)
 
 if defined QSPFILE (
-	if not exist "%QSPFILE%" ( 
-		echo QSP FILE : [WARNING] - %QSPFILE% not found.
-	) else ( echo QSP FILE : [OK] - "%QSPFILE%")
-) else ( echo QSP FILE : [NOT DEFINED] - ERROR: CAN'T CONTINUE.)
+	if not exist "%BATDir%%QSPFILE%" ( 
+		echo QSP FILE   : [WARNING] - "%BATDir%%QSPFILE%" not found.
+	) else ( echo QSP FILE   : [OK] - "%BATDir%%QSPFILE%")
+) else ( echo QSP FILE   : [NOT DEFINED] - ERROR: CAN'T CONTINUE.)
 
 if defined CP_TO (
 	if not exist "%CP_TO%" (
-		echo COPY     : [ERROR] - Destination "%CP_TO%" not found. Copy DISABLED.
+		echo COPY       : [ERROR] - Destination "%CP_TO%" not found. Copy DISABLED.
 		set CP_TO=
-	) else ( echo COPY     : [OK] - "%CP_TO%")
-) else (  echo COPY     : [DISABLED] )
+	) else ( echo COPY      : [OK] - "%CP_TO%")
+) else (  echo COPY       : [DISABLED] )
+
+if defined QSPParser (
+	if not exist "%BATDir%%QSPParser%" ( 
+		echo QSP Parser : [WARNING] - "%BATDir%%QSPParser%" not found.
+		echo              Please visit the Girl Life Discord to download the latest version.
+	) else ( echo QSP Parser : [OK] - "%BATDir%%QSPParser%")
+) else ( echo QSP Parser : [NOT FOUND - DISABLED ]	)
+
+
 
 echo.
 
@@ -54,7 +69,7 @@ if defined NOT_FOUND (
 )
 
 echo.
-echo ACTIONS: (B)uild  (R)un  (F)ull  (Q)Gen  (E)xit
+echo ACTIONS: (B)uild  (R)un  (F)ull  (Q)Gen (V) Validate (E)xit
 echo.
 set /p action=Choose an action:
 
@@ -62,10 +77,12 @@ if defined QSPFILE (
 	if %action% == b goto build
 	if %action% == r goto run
 	if %action% == f goto build
+	if %action% == v goto parser
 	if %action% == q goto qgen
 	if %action% == B goto build
 	if %action% == R goto run
 	if %action% == F goto build
+	if %action% == V goto parser
 	if %action% == Q goto qgen
 )
 
@@ -98,10 +115,24 @@ echo Running ...
 if defined CP_TO ( start %QGEN% %CP_TO%\%QSPFILE% ) else ( start %QGEN% %QSPFILE% )
 goto exit
 
+:parser
+echo.
+echo validating...
+
+@ECHO ON
+"%BATDir%%QSPParser%" --level warn "%BATDir%glife.txt" > "%BATDir%validation.log"
+@ECHO off
+echo Done - Exiting.
+pause
+goto exit
+
 :run
 echo.
 echo Running ...
 
-if defined CP_TO ( start %QSPGUI% %CP_TO%\%QSPFILE% ) else ( start %QSPGUI% %QSPFILE% )
+if defined CP_TO ( start "%BATDir%%QSPGUI%" %CP_TO%\%QSPFILE% ) else ( start "%BATDir%%QSPGUI%" %QSPFILE% )
+
+
+
 
 :exit

+ 24 - 1
glife.qproj

@@ -172,7 +172,8 @@
 		<Location name="$attributes_misc_outfits"/>
 		<Location name="lost_clothes_here"/>
 		<Location name="portnoi"/>
-		<Location name="portnoi2"/>
+		<Location name="tailor"/>
+		<Location name="tailor2"/>
 	</Folder>
 	<Folder name="Shoes">
 		<Location name="shoes"/>
@@ -488,6 +489,7 @@
 		<Location name="dinmother"/>
 		<Location name="sister"/>
 		<Location name="sister_chat"/>
+		<Location name="sister_sex_talk"/>
 		<Location name="sistersleep"/>
 		<Location name="sisterQW"/>
 		<Location name="ludahome"/>
@@ -955,6 +957,10 @@
 		<Location name="park_walkeventsrnd"/>
 		<Location name="park_walkevents"/>
 		<Location name="city_clinic"/>
+		<Location name="city_experimental_trials"/>
+		<Location name="city_experimental_trials_pharmacy"/>
+		<Location name="city_experimental_trials_list"/>
+		<Location name="city_experimental_trials_events"/>
 		<Location name="city_market"/>
 		<Location name="city_marketwork"/>
 		<Location name="city_sauna"/>
@@ -1349,6 +1355,23 @@
 		<Location name="treeCircActs"/>
 		<Location name="treeCircEntry"/>
 	</Folder>
+	<folder name="Ballet_career">
+		<Location name="pushkin_ballet_init"/>
+		<Location name="core_library"/>
+		<Location name="ballet_npc"/>
+		<Location name="npc_3501_init"/>
+		<Location name="maya_residence"/>
+		<Location name="npc_3510_init"/>
+		<Location name="pushkin_ballet_center"/>
+		<Location name="pushkin_ballet_res"/>
+		<Location name="pushkin_ballet_class"/>
+		<Location name="pushkin_ballet_evt"/>
+		<Location name="ballet_global_evt"/>
+		<Location name="ballet_secrets"/>
+		<Location name="marlilnsky_theatre"/>
+		<Location name="pushkin_theatre"/>
+		<Location name="st_petersburg_canals"/>
+	</folder>
 	<Location name="cleanHTML"/>
 	</Structure>
 </QGen-project>

+ 119 - 0
ignoremedialinks.txt

@@ -0,0 +1,119 @@
+images/locations/pavlovsk/resident/apartment/shulginhome/bigroom/card/sex/sex<<$mid($temp2,1,1)>>.jpg
+images/pc/body/cum/<<$mid($temp2,4,val($mid($temp1,3,2))-3)>>.jpg
+<<$deckImg[dealerHand[0]]>>
+<<$deckImg[dealerHand[i]]>>
+<<$deckImg[playerHand[i * 16 + j]]>>
+images/system/phone/theme/' + $phonetheme_name[i] + '/icon_call.png
+images/characters/shared/headshots_generic/1[$boy]>>.jpg
+images/characters/shared/headshots_generic/2[$boy]>>.jpg
+images/characters/shared/headshots_generic/3[$boy]>>.jpg
+images/characters/shared/headshots_generic/4[$boy]>>.jpg
+images/characters/shared/headshots_generic/5[$boy]>>.jpg
+images/characters/shared/headshots_generic/6[$boy]>>.jpg
+images/characters/shared/headshots_generic/7[$boy]>>.jpg
+images/characters/shared/headshots_generic/8[$boy]>>.jpg
+images/characters/shared/headshots_generic/9[$boy]>>.jpg
+images/characters/shared/headshots_generic/10[$boy]>>.jpg
+images/characters/shared/headshots_generic/11[$boy]>>.jpg
+images/characters/shared/headshots_generic/12[$boy]>>.jpg
+images/characters/shared/headshots_generic/13[$boy]>>.jpg
+images/characters/shared/headshots_generic/14[$boy]>>.jpg
+images/characters/shared/headshots_generic/15[$boy]>>.jpg
+images/characters/shared/headshots_generic/16[$boy]>>.jpg
+images/characters/shared/headshots_generic/17[$boy]>>.jpg
+images/characters/shared/headshots_generic/18[$boy]>>.jpg
+images/characters/shared/headshots_generic/19[$boy]>>.jpg
+images/characters/shared/headshots_generic/20[$boy]>>.jpg
+images/characters/shared/headshots_generic/21[$boy]>>.jpg
+images/characters/shared/headshots_generic/22[$boy]>>.jpg
+images/characters/shared/headshots_generic/23[$boy]>>.jpg
+images/characters/shared/headshots_generic/24[$boy]>>.jpg
+images/characters/shared/headshots_generic/25[$boy]>>.jpg
+images/characters/shared/headshots_generic/26[$boy]>>.jpg
+images/characters/shared/headshots_generic/27[$boy]>>.jpg
+images/characters/shared/headshots_generic/28[$boy]>>.jpg
+images/characters/shared/headshots_generic/29[$boy]>>.jpg
+images/characters/shared/headshots_generic/30[$boy]>>.jpg
+<<$pcs_image[i]>>
+<<$opp_image[i]>>
+images/pc/activities/flashing/dress/inside/bra/' + rand(1,dress_ind_bra) + '.jpg
+images/pc/activities/flashing/dress/outside/bra/' + rand(1,dress_out_bra) + '.jpg
+images/pc/activities/flashing/pants/inside/bra/' + rand(1,pants_ind_bra) + '.jpg
+images/pc/activities/flashing/pants/outside/bra/' + rand(1,pants_out_bra) + '.jpg
+images/pc/activities/flashing/dress/inside/tits/' + rand(1,dress_ind_tits) + '.jpg
+images/pc/activities/flashing/dress/outside/tits/' + rand(1,dress_out_tits) + '.jpg
+images/pc/activities/flashing/pants/inside/tits/' + rand(1,pants_ind_tits) + '.jpg
+images/pc/activities/flashing/pants/outside/tits/' + rand(1,pants_out_tits) + '.jpg
+images/pc/activities/flashing/dress/inside/panty/' + rand(1,dress_ind_panties) + '.jpg
+images/pc/activities/flashing/dress/outside/panty/' + rand(1,dress_out_panties) + '.jpg
+images/pc/activities/flashing/pants/inside/panty/' + rand(1,pants_ind_panties) + '.jpg
+images/pc/activities/flashing/pants/outside/panty/' + rand(1,pants_out_panties) + '.jpg
+images/pc/activities/flashing/dress/inside/pussy/' + rand(1,dress_ind_pussy) + '.jpg
+images/pc/activities/flashing/dress/inside/pussy/hairy' + rand(1,dress_ind_pussy_hairy) + '.jpg
+images/pc/activities/flashing/dress/outside/pussy/' + rand(1,dress_out_pussy) + '.jpg
+images/pc/activities/flashing/dress/outside/pussy/hairy' + rand(1,dress_out_pussy_hairy) + '.jpg
+images/pc/activities/flashing/pants/inside/pussy/' + rand(1,pants_ind_pussy) + '.jpg
+images/pc/activities/flashing/pants/inside/pussy/hairy' + rand(1,pants_ind_pussy_hairy) + '.jpg
+images/pc/activities/flashing/pants/outside/pussy/' + rand(1,pants_out_pussy) + '.jpg
+images/pc/activities/flashing/pants/outside/pussy/hairy' + rand(1,pants_out_pussy_hairy) + '.jpg
+images/pc/activities/flashing/dress/inside/pussy/' + rand(1,pants_ind_pussy) + '.jpg
+images/pc/activities/flashing/dress/inside/pussy/hairy' + rand(1,pants_ind_pussy_hairy) + '.jpg
+images/pc/activities/flashing/dress/outside/pussy/' + rand(1,pants_out_pussy) + '.jpg
+images/pc/activities/flashing/dress/outside/pussy/hairy' + rand(1,pants_out_pussy_hairy) + '.jpg
+images/pc/activities/flashing/dress/inside/pantyrear/' + rand(1,dress_ind_pantyrear) + '.jpg
+images/pc/activities/flashing/dress/outside/pantyrear/' + rand(1,dress_out_pantyrear) + '.jpg
+images/pc/activities/flashing/pants/inside/pantyrear/' + rand(1,pants_ind_pantyrear) + '.jpg
+images/pc/activities/flashing/pants/outside/pantyrear/' + rand(1,pants_out_pantyrear) + '.jpg
+images/pc/activities/flashing/dress/inside/butt/' + rand(1,dress_ind_butt) + '.jpg
+images/pc/activities/flashing/dress/outside/butt_plug/' + rand(1,dress_out_butt_plug) + '.jpg
+images/pc/activities/flashing/dress/outside/butt/' + rand(1,dress_out_butt) + '.jpg
+images/pc/activities/flashing/pants/inside/butt/' + rand(1,pants_ind_butt) + '.jpg
+images/pc/activities/flashing/pants/outside/butt_plug/' + rand(1,pants_out_butt_plug) + '.jpg
+images/pc/activities/flashing/pants/outside/butt/' + rand(1,pants_out_butt) + '.jpg
+images/pc/activities/flashing/dress/inside/full/' + rand(1,dress_ind_full) + '.jpg
+images/pc/activities/flashing/dress/inside/full/hairy' + rand(1,dress_ind_full_hairy) + '.jpg
+images/pc/activities/flashing/dress/outside/full/' + rand(1,dress_out_full) + '.jpg
+images/pc/activities/flashing/dress/outside/full/hairy' + rand(1,dress_out_full_hairy) + '.jpg
+images/pc/activities/flashing/pants/inside/full/' + rand(1,pants_ind_full) + '.jpg
+images/pc/activities/flashing/pants/inside/full/hairy' + rand(1,pants_ind_full_hairy) + '.jpg
+images/pc/activities/flashing/pants/outside/full/' + rand(1,pants_out_full) + '.jpg
+images/pc/activities/flashing/pants/outside/full/hairy' + rand(1,pants_out_full_hairy) + '.jpg
+images/characters/shared/headshots_generic/'+lover_picture[lover_number]+'.jpg
+images/locations/city/citycenter/mall/salon/work/sex/fuck<<masseuse[''position'']>>.mp4
+images/shared/romance/lovers/homes/high_rise/<<npc_apt_number[$npclastgenerated]>>/bedroom.jpg
+images/shared/romance/lovers/homes/high_rise/<<npc_apt_number[$npclastgenerated]>>/bath.jpg
+images/shared/romance/lovers/homes/multibedroom/<<npc_apt_number[$npclastgenerated]>>/bedroom.jpg
+images/shared/romance/lovers/homes/multibedroom/<<npc_apt_number[$npclastgenerated]>>/kitchen.jpg
+images/shared/romance/lovers/homes/multibedroom/<<npc_apt_number[$npclastgenerated]>>/living.jpg
+images/shared/romance/lovers/homes/multibedroom/<<npc_apt_number[$npclastgenerated]>>/bath.jpg
+images/shared/romance/lovers/homes/multibedroom/<<npc_apt_number[$npclastgenerated]>>/<<$npc_apt_spare[$npclastgenerated]>>.jpg
+images/shared/romance/lovers/homes/1bedroom/<<npc_apt_number[$npclastgenerated]>>/bedroom.jpg
+images/shared/romance/lovers/homes/1bedroom/<<npc_apt_number[$npclastgenerated]>>/kitchen.jpg
+images/shared/romance/lovers/homes/1bedroom/<<npc_apt_number[$npclastgenerated]>>/living.jpg
+images/shared/romance/lovers/homes/1bedroom/<<npc_apt_number[$npclastgenerated]>>/bath.jpg
+images/shared/romance/lovers/homes/studio/<<npc_apt_number[$npclastgenerated]>>/bedroom.jpg
+images/shared/romance/lovers/homes/studio/<<npc_apt_number[$npclastgenerated]>>/bath.jpg
+images/shared/romance/lovers/homes/studio/<<npc_apt_number[$npclastgenerated]>>/living.jpg
+images/locations/highway/guy (<<ARGS[2]>>).jpg
+images/shared/sex/vag/cowgirl/hard<<sex_ev[''cowgirl_rand'']>>.mp4
+images/shared/sex/vag/<<$sex_ev[''position'']>>/slow2.mp4
+images/' + $epayments['banner'] +  '
+images/system/icons/menu/<<iif(telefon[''UnreadSMS'']=0,''icon_phone.png'',''icon_phone_sms.gif'')>>
+<<func(''$face_image'')>>
+<<$telefon[''ContactIcon'']>>
+images/system/phone/theme/<<$phonetheme_name[pcs_phonetheme]>>/icon_call.png
+<<$telefonIncC[
+images/system/phone/theme/<<$phonetheme_name[pcs_phonetheme]>>/icon_megafon.png
+images/system/phone/theme/<<$phonetheme_name[pcs_phonetheme]>>/icon_notebook.png
+images/system/phone/theme/<<$phonetheme_name[pcs_phonetheme]>>/icon_camera.png
+images/system/phone/theme/<<$phonetheme_name[pcs_phonetheme]>>/<<iif(telefon[''UnreadSMS'']=0,''icon_sms.png'',''icon_sms_new.gif'')>>
+<<$telefonCon[''Icon'']>>
+<<$SMSPicture1[telefon[''SMSid'']]>>
+<<$SMSPicture2[telefon[''SMSid'']]>>
+<<$SMSPicture3[telefon[''SMSid'']]>>
+<<$SMSPicture4[telefon[''SMSid'']]>>
+images/system/phone/theme/<<$phonetheme_name[pcs_phonetheme]>>/icon_weather.png
+images/system/phone/theme/<<$phonetheme_name[pcs_phonetheme]>>/icon_calendar.png
+images/system/phone/theme/<<$phonetheme_name[pcs_phonetheme]>>/icon_music.png
+images/system/phone/theme/<<$phonetheme_name[pcs_phonetheme]>>/icon_pictures.png
+images/system/phone/theme/<<$phonetheme_name[pcs_phonetheme]>>/icon_settings.png

+ 19 - 20
locations/AppearanceSystem.qsrc

@@ -1,5 +1,4 @@
 # AppearanceSystem
-$this = 'AppearanceSystem'
 
 if $ARGS[0] = '':
 	!{
@@ -9,12 +8,12 @@ if $ARGS[0] = '':
     }
 	if pcs_makeup = 6 and bimbolevel >= 2: extra_supnatvnesh = 2*bimbolevel - 2
 
-	clothingBonus = func($this, 'CalcClothingBonus')
-	accessoriesBonus = func($this, 'CalcAccessoriesBonus', bonusZ, PShoQuality)
-	groomingBonus = func($this, 'CalcGroomingBonus')
-	groomingPenalty = func($this, 'CalcGroomingPenalty')
-	pcs_apprnc = func($this, 'CalcAppearance', (supnatvnesh + extra_supnatvnesh))
-	Hotcat = func($this, 'ConvertToHotcat')
+	clothingBonus = func('AppearanceSystem', 'CalcClothingBonus')
+	accessoriesBonus = func('AppearanceSystem', 'CalcAccessoriesBonus', bonusZ, PShoQuality)
+	groomingBonus = func('AppearanceSystem', 'CalcGroomingBonus')
+	groomingPenalty = func('AppearanceSystem', 'CalcGroomingPenalty')
+	pcs_apprnc = func('AppearanceSystem', 'CalcAppearance', (supnatvnesh + extra_supnatvnesh))
+	Hotcat = func('AppearanceSystem', 'ConvertToHotcat')
 
 	killvar 'clothingBonus'
 	killvar 'accessoriesBonus'
@@ -28,11 +27,11 @@ if $args[0] = 'UpdateBaseAppearnce':
 		Base Appearance is calculated from:
 			vidage, skin, body shape (fat and strength), attributes (endurance and agility)
 	}
-	attributeBonus = func($this, 'CalcAttributeBonus')
+	attributeBonus = func('AppearanceSystem', 'CalcAttributeBonus')
 	skinBonus = pcs_skin / 10
-	bodyShapeBonus = func($this, 'SetBodyShapeBonus')
-	visibleAgePenalty = func($this, 'CalcVisibleAgePenalty')
-	teethPenalty = func($this, 'CalcTeethPenalty')
+	bodyShapeBonus = func('AppearanceSystem', 'SetBodyShapeBonus')
+	visibleAgePenalty = func('AppearanceSystem', 'CalcVisibleAgePenalty')
+	teethPenalty = func('AppearanceSystem', 'CalcTeethPenalty')
 
 	! Calculte base appearance
 	pcs_apprncbase = skinBonus + bodyShapeBonus + attributeBonus - visibleAgePenalty - teethPenalty + supnatvnesh
@@ -56,7 +55,7 @@ if $ARGS[0] = 'CalcFaceBonus':
 	else
 		eyelashesBonus = 0
 	end
-	eyelashesBonus = FUNC($this, 'AdjustFromBMI', eyelashesBonus)
+	eyelashesBonus = FUNC('AppearanceSystem', 'AdjustFromBMI', eyelashesBonus)
 
 	!!	Setting Eye Size bonus
 	if pcs_eyesize = 1:
@@ -68,7 +67,7 @@ if $ARGS[0] = 'CalcFaceBonus':
 	else
 		eyeSizeBonus = 0
 	end
-	eyeSizeBonus = FUNC($this, 'AdjustFromBMI', eyeSizeBonus)
+	eyeSizeBonus = FUNC('AppearanceSystem', 'AdjustFromBMI', eyeSizeBonus)
 
 	!!	Setting the Lip size bonus
 	if pcs_lip = 0:
@@ -82,7 +81,7 @@ if $ARGS[0] = 'CalcFaceBonus':
 	else
 		lipBonus = 3
 	end
-	lipBonus = FUNC($this, 'AdjustFromBMI', lipBonus)
+	lipBonus = FUNC('AppearanceSystem', 'AdjustFromBMI', lipBonus)
 
 	result = eyelashesBonus + eyeSizeBonus + lipBonus
 
@@ -91,7 +90,7 @@ end
 if $ARGS[0] = 'CalcAttributeBonus':
 	tempAttributeBonus = (pcs_agil / 5) + (pcs_vital / 5)
 
-	result = func($this, 'AdjustFromBMI', tempAttributeBonus)
+	result = func('AppearanceSystem', 'AdjustFromBMI', tempAttributeBonus)
 	killvar 'tempAttributeBonus'
 end
 
@@ -102,7 +101,7 @@ if $ARGS[0] = 'CalcVisibleAgePenalty':
 		tempAttributePenalty = 0
 	end
 
-	result = func($this, 'AdjustFromBMI', tempAttributePenalty)
+	result = func('AppearanceSystem', 'AdjustFromBMI', tempAttributePenalty)
 	killvar 'tempAttributePenalty'
 end
 
@@ -119,7 +118,7 @@ if $ARGS[0] = 'CalcTeethPenalty':
 		tempAttributePenalty +=  10 * pcs_missing_teeth
 	end
 
-	result = func($this, 'AdjustFromBMI', tempAttributePenalty)
+	result = func('AppearanceSystem', 'AdjustFromBMI', tempAttributePenalty)
 	killvar 'tempAttributePenalty'
 end
 
@@ -197,14 +196,14 @@ if $ARGS[0] = 'SetBodyShapeBonus':
 			end
 		end
 
-		!!This modifies bodykoef for high or low salo values
+		!!This modifies bodykoef for high or low pcs_mass['body'] values
 		if salocatnow = 0 or salocatnow >= 7:
 			tempBodyShapeBonus -= 8
 		elseif salocatnow = 1 or salocatnow = 6:
 			tempBodyShapeBonus -= 4
 		end
 
-		if vofat > 0: tempBodyShapeBonus -= vofat
+		if bodyVars['vofat'] > 0: tempBodyShapeBonus -= bodyVars['vofat']
 
 		result = tempBodyShapeBonus
 
@@ -285,7 +284,7 @@ if $ARGS[0] = 'CalcGroomingBonus':
 	tempGroomingBonus = makeupBonus + breathBonus
 
 	!result = tempGroomingBonus
-	result = func($this, 'AdjustFromBMI', tempGroomingBonus)
+	result = func('AppearanceSystem', 'AdjustFromBMI', tempGroomingBonus)
 
 end
 

+ 49 - 42
locations/Cheatmenu_din.qsrc

@@ -217,31 +217,31 @@ $cheatmenu['bodyMod'] = {
 		'starving (No, you may not select ''starving'', it''s here to show where the scale starts)'
 		''
 		if salocatnow ! 1:
-			'<a href="exec:salo = 20 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 1)]>></a>'
+			'<a href="exec: pcs_mass[''body''] = 20 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 1)]>></a>'
 			''
 		end
 		if salocatnow ! 2:
-			'<a href="exec:salo = 40 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 2)]>></a>'
+			'<a href="exec: pcs_mass[''body''] = 40 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 2)]>></a>'
 			''
 		end
 		if salocatnow ! 3:
-			'<a href="exec:salo = 60 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 3)]>></a>'
+			'<a href="exec: pcs_mass[''body''] = 60 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 3)]>></a>'
 			''
 		end
 		if salocatnow ! 4:
-			'<a href="exec:salo = 80 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 4)]>></a>'
+			'<a href="exec: pcs_mass[''body''] = 80 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 4)]>></a>'
 			''
 		end
 		if salocatnow ! 5:
-			'<a href="exec:salo = 100 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 5)]>></a>'
+			'<a href="exec: pcs_mass[''body''] = 100 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 5)]>></a>'
 			''
 		end
 		if salocatnow ! 6:
-			'<a href="exec:salo = 120 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 6)]>></a>'
+			'<a href="exec: pcs_mass[''body''] = 120 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 6)]>></a>'
 			''
 		end
 		if salocatnow ! 7:
-			'<a href="exec:salo = 140 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 7)]>></a>'
+			'<a href="exec: pcs_mass[''body''] = 140 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 7)]>></a>'
 			''
 		end
 	else
@@ -839,10 +839,10 @@ $cheatmenu['looks'] = {
 	*p 'Toned Butt (<<butt_tr_lvl>>): ' & dynamic $cheatmenu['printLooksLinks'], 'butt_tr', 'Toned Butt'
 	*nl
 	'You have <<$titsize>> breasts'
-	if tits => 0 and tits < 11:'<a href="exec:silicone += 5 & dynamic $cheatmenu[''looks'']">Enlarge breasts(silicone)</a>'
-	if silicone => 1:'<a href="exec:silicone -= 5 & dynamic $cheatmenu[''looks'']">Shrink breasts(silicone)</a>'
-	if tits => 0 and tits < 11:'<a href="exec:nbsize += 5 & dynamic $cheatmenu[''looks'']">Enlarge breasts(natural)</a>'
-	if nbsize => 1:'<a href="exec:nbsize -= 5 & titreduc = 1 & dynamic $cheatmenu[''looks'']">Shrink breasts(natural)</a>'
+	if tits => 0 and tits < 11:'<a href="exec: bodyVars[''bust_silicone''] += 5 & dynamic $cheatmenu[''looks'']">Enlarge breasts(silicone)</a>'
+	if bodyVars['bust_silicone'] => 1:'<a href="exec: bodyVars[''bust_silicone''] -= 5 & dynamic $cheatmenu[''looks'']">Shrink breasts(silicone)</a>'
+	if tits => 0 and tits < 11:'<a href="exec: pcs_mass[''bust''] += 5 & dynamic $cheatmenu[''looks'']">Enlarge breasts(natural)</a>'
+	if pcs_mass['bust'] => 1: '<a href="exec: pcs_mass[''bust''] -= 5 & titreduc = 1 & dynamic $cheatmenu[''looks'']">Shrink breasts(natural)</a>'
 	*nl
 	if pcs_butt <= 4:
 		$pcs_butt[1] = 'flat'
@@ -854,11 +854,11 @@ $cheatmenu['looks'] = {
 		$pcs_butt[1] = 'bubble'
 	end
 	'You have <<$pcs_butt[1]>> butt'
-	if pcs_butt < 20:'<a href="exec:butt_cheat += 2 & dynamic $cheatmenu[''looks'']">Enlarge butt</a>'
-	if pcs_butt > 1:'<a href="exec:butt_cheat -= 2 & dynamic $cheatmenu[''looks'']">Shrink butt</a>'
-	if butt_cheat ! 0:'<a href="exec:butt_cheat = 0 & dynamic $cheatmenu[''looks'']">Reset butt shape to default</a>'
-	if silicone_butt => 1:'<a href="exec:silicone_butt = 0 & dynamic $cheatmenu[''looks'']">Remove butt implants</a>'
-	if silicone_butt = 0:'<a href="exec:silicone_butt += 16 & dynamic $cheatmenu[''looks'']">Add butt implants</a>'
+	if pcs_butt < 20:'<a href="exec: bodyVars[''butt_cheat''] += 2 & dynamic $cheatmenu[''looks'']">Enlarge butt</a>'
+	if pcs_butt > 1:'<a href="exec: bodyVars[''butt_cheat''] -= 2 & dynamic $cheatmenu[''looks'']">Shrink butt</a>'
+	if bodyVars['butt_cheat'] ! 0:'<a href="exec: bodyVars[''butt_cheat''] = 0 & dynamic $cheatmenu[''looks'']">Reset butt shape to default</a>'
+	if bodyVars['butt_silicone'] => 1:'<a href="exec: bodyVars[''butt_silicone''] = 0 & dynamic $cheatmenu[''looks'']">Remove butt implants</a>'
+	if bodyVars['butt_silicone'] = 0:'<a href="exec: bodyVars[''butt_silicone''] += 16 & dynamic $cheatmenu[''looks'']">Add butt implants</a>'
 	*nl
 	'<<$lip>>'
 	if pcs_lip < 4:'<a href="exec:pcs_lip += 1 & dynamic $cheatmenu[''looks'']">Enlarge lips</a>'
@@ -907,8 +907,8 @@ $cheatmenu['looks'] = {
 	*nl
 	if dounspell = 0:
 		if fat ! 0: '<a href="exec:fat = 0 & dynamic $cheatmenu[''looks'']">Zero fat</a>'
-		'Body Fat = (<<salo>>): <a href="exec:salo -= 10 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">-10</a> <a href="exec:salo -= 5 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">-5</a> <a href="exec:salo -= 1 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">-1</a> <a href="exec:salo += 1 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">+1</a> <a href="exec:salo += 5 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">+5</a> <a href="exec:salo += 10 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">+10</a>'
-		'Note: You need some Body Fat to survive, any value under 11 is clasified as "starving" and a value of 0 can lead to a Game Over.'
+		'Body Fat = (<<pcs_mass[''body'']>>): <a href="exec: gs ''Cheatmenu_din'', ''change_pcs_mass_body'', -10">-10</a> <a href="exec: gs ''Cheatmenu_din'', ''change_pcs_mass_body'', -5">-5</a> <a href="exec: gs ''Cheatmenu_din'', ''change_pcs_mass_body'', -1">-1</a> <a href="exec: gs ''Cheatmenu_din'', ''change_pcs_mass_body'', 1">+1</a> <a href="exec: gs ''Cheatmenu_din'', ''change_pcs_mass_body'', 5">+5</a> <a href="exec: gs ''Cheatmenu_din'', ''change_pcs_mass_body'', 10">+10</a>'
+		'Note: You need some Body Fat to survive, any value under 11 is clasified as "starving" and a value of 0 can lead to a Game Over. 60 is the center of a healthy bodyweight.'
 	end
 	*nl
 	'<a href="exec:dynamic $cheatmenu[''tatoo'']">Tattoo removal</a>'
@@ -955,6 +955,12 @@ $cheatmenu['looks'] = {
 	'</td></tr></table></center>'
 }
 
+if $ARGS[0] = 'change_pcs_mass_body':
+	gs 'body', 'Set_mass_distribution_using_body', pcs_mass['body'] + ARGS[1]
+	dynamic $cheatmenu['looks']
+end
+
+
 if $ARGS[0] = 'vagenlarge':
 	if pcs_vag = 0:
 		pcs_vag = 5
@@ -1018,28 +1024,27 @@ $cheatmenu['parameters'] = {
 	*nl
 	'Body Shape Parameters'
 	'<<pcs_bust>> - <<pcs_waist>> - <<pcs_hips>>, <<$titsize>> breasts, the difference between the hips and waist <<pcs_hips-pcs_waist>> cm'
-	'Muscularity: strenbuf = <<strenbuf>>, salo =	<<salo>>, fat = <<fat>>'
+	'Muscularity: strenbuf = <<strenbuf>>, pcs_mass[''body''] =	<<pcs_mass[''body'']>>, fat = <<fat>>'
 	'Variable List:'
 	'agilbuf = <<agilbuf>>'
 	'strenbuf = <<strenbuf>>'
 	'vitalbuf = <<vitalbuf>>'
-	'BMI (pcs_bmi) = <<pcs_bmi>>'
-	'weight (pcs_weight) = <<pcs_weight>> kg'
+	'BMI (pcs_bmi) = <<pcs_bmi[0]>>.<<pcs_bmi[1]>>'
+	'weight (pcs_weight) = <<pcs_weight[0]>>.<<pcs_weight[1]>> kg'
 	'bust (pcs_bust) = <<pcs_bust>>'
 	'band (pcs_band) = <<pcs_band>>'
 	'waist (pcs_waist) = <<pcs_waist>>'
 	'hips (pcs_hips) = <<pcs_hips>>'
 	'bust - band (pcs_cupsize) = <<pcs_cupsize>>'
-	'silicone = <<silicone>>'
-	'nbsize = <<nbsize>>'
-	'magicf2b = <<magicf2b>>'
-	'genbsize = <<genbsize>>'
-	'vhips = <<vhips>>'
-	'vhtmp = <<vhtmp>>'
-	'wratio = <<wratio>>'
-	'bratio = <<bratio>>'
-	'hratio = <<hratio>>'
-	'vofat = <<vofat>>'
+	'bodyVars[''bust_silicone''] = <<bodyVars[''bust_silicone'']>>'
+	'pcs_mass[''bust''] = <<pcs_mass[''bust'']>>'
+	'bodyVars[''bust_magic''] = <<bodyVars[''bust_magic'']>>'
+	'pcs_mass[''bust_gen''] = <<pcs_mass[''bust_gen'']>>'
+	'bodyVars[''vhips''] = <<bodyVars[''vhips'']>>'
+	'bodyVars[''wratio''] = <<bodyVars[''wratio'']>>'
+	'bodyVars[''bratio''] = <<bodyVars[''bratio'']>>'
+	'bodyVars[''hratio''] = <<bodyVars[''hratio'']>>'
+	'bodyVars[''vofat''] = <<bodyVars[''vofat'']>>'
 	'salocatnow = <<salocatnow>>'
 	'salocatlast = <<salocatlast>>'
 	'magf2bdo = <<magf2bdo>>'
@@ -2113,19 +2118,21 @@ $cheatmenu['display'] = {
 		'Force Image Width: Currently OFF - <a href="exec:set_imgh = 0 &set_imgw=input(''Enter the width of the images'') & dynamic $cheatmenu[''display'']">Turn ON</a>'
 	end
 	*nl
-	!night_mode 0: dynamic
-	!night_mode 1: black
-	!night_mode 2: grey
-	!night_mode 3: white
-	!night_mode 99: no theme
 	*p 'Girl Life Theme Selection: '
-	*p iif(night_mode = 0, 'Dynamic | ', '<a href="exec:night_mode = 0 & dynamic $cheatmenu[''display''] & gs ''$menu_obnovit''">Dynamic</a> | ')
-	*p iif(night_mode = 1, 'Pitch Black | ', '<a href="exec:night_mode = 1 & dynamic $cheatmenu[''display''] & gs ''$menu_obnovit''">Pitch Black</a> | ')
-	*p iif(night_mode = 2, 'Modern Grey | ', '<a href="exec:night_mode = 2 & dynamic $cheatmenu[''display''] & gs ''$menu_obnovit''">Modern Grey</a> | ')
-	*p iif(night_mode = 3, 'White | ', '<a href="exec:night_mode = 3 & dynamic $cheatmenu[''display''] & gs ''$menu_obnovit''">White</a> | ')
-	*pl iif(night_mode = 99, 'No Theme', '<a href="exec:night_mode = 99 & dynamic $cheatmenu[''display''] & gs ''$menu_obnovit''">No Theme</a>')
 
-	'<font color="grey">Dynamic theme (default) will change colour based on the game hour. No theme will remove table backgrounds.</font>'
+	*p iif($theme['name'] = 'Dynamic', 'Dynamic&nbsp;|&nbsp;', '<a href="exec:gs ''themes'', ''set_dynamic'' & gs ''$menu_obnovit'' & dynamic $cheatmenu[''display'']">Dynamic</a>&nbsp;|&nbsp;')
+
+	*p iif($theme['name'] = 'White', 'White&nbsp;|&nbsp;', '<a href="exec:gs ''themes'', ''set_white'' & gs ''$menu_obnovit'' & dynamic $cheatmenu[''display'']">White</a>&nbsp;|&nbsp;')
+
+	*p iif($theme['name'] = 'Black', 'Pitch Black&nbsp;|&nbsp;', '<a href="exec:gs ''themes'', ''set_black'' & gs ''$menu_obnovit'' & dynamic $cheatmenu[''display'']">Pitch Black</a>&nbsp;|&nbsp;')
+
+	*p iif($theme['name'] = 'Modern Grey', 'Modern Grey&nbsp;|&nbsp;', '<a href="exec:gs ''themes'', ''set_gray'' & gs ''$menu_obnovit'' & dynamic $cheatmenu[''display'']">Modern Grey</a>&nbsp;|&nbsp;')
+
+	*p iif($theme['name'] = 'Custom', 'Custom&nbsp;', '<a href="exec:gs ''themes'', ''set_custom'' & gs ''$menu_obnovit'' & dynamic $cheatmenu[''display'']">Custom</a>&nbsp;')
+
+	*pl '<a href="exec:msg ''test''"><img src="images/system/image_needed.png" height="<<fsize+2>>"></a>'
+
+	'<font color="grey">Dynamic theme (default) will change colour based on the game hour.</font>'
 	*nl
 	if Enable_tablemap = 1:
 		'List friends in table: Currently ON - <a href="exec:Enable_tablemap = 0 & dynamic $cheatmenu[''display'']">Turn OFF</a>'

+ 41 - 73
locations/Club2.qsrc

@@ -8,34 +8,26 @@ if $ARGS[0] = 'toilet1':
 	gs 'npcgeneratec', 0, 'Gloryhole Client', rand(18,60)
 	gs 'boyStat', $npclastgenerated
 	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/sex/glory.jpg"></center>'
-	*nl
-	'You went into the booth and closed the door. The walls are covered with obscene graffiti, and holes are carved in opposite walls. Sitting on the toilet you hear a noise coming from the next stall, and then someone''s eye appears at the hole.'
-	'The next thing you know, a cock is pushed through the hole. A lustful voice says, "here''s a treat for you, baby."'
-	'This is so unexpected, that you hardly believe any of this is real, as you tentatively touch their member. It is hard and hot.'
+	'You head into the stall and close the door. The walls are covered with obscene graffiti and circular holes are carved in the walls. Sitting on the toilet, you hear a noise coming from the next stall.'
+	'The next thing you know, a cock is pushed through the hole. "Here''s a treat for you, baby," a lustful voice says with a laugh.'
 
-	act 'Leave':gt 'city_nightclub', 'inside'
+	act 'Leave': gt 'city_nightclub', 'inside'
 
 	act 'Take a closer look':
 		*clr & cla
-
-		if TQuest = 1:TQuest = 2
-
+		if TQuest = 1: TQuest = 2
 		guy += 1
 		pcs_throat += 1
 		'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/sex/glory1.jpg"></center>'
-		*nl
-		'This is so surreal, but you lean closer to their member and impulsively find yourself licking it, again and again.'
-		
+		'You lean closer and find yourself impulsively licking the cock in front of you.'
 		gs 'arousal', 'bj', 5, 'sub'
 		gs 'stat'
 
-		act 'Cover lips':
+		act 'Suck it':
 			*clr & cla
+			minut += 2
 			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/sex/glory2.jpg"></center>'
-			*nl
-			'You wrap your lips around the head and start sucking, trying to take it as deep as possible.'
-			'Suddenly, the reality of the situation comes flooding back into your head - and a warm liquid comes flooding into your mouth.'
-
+			'You wrap your lips around the head and start sucking, trying to take it as deep as possible. After a few minutes, a warm liquid starts flooding into your mouth as you hear a loud groan coming from the next stall.'
 			gs 'arousal', 'bj', 5, 'sub'
 			gs 'stat'
 		
@@ -44,31 +36,26 @@ if $ARGS[0] = 'toilet1':
 				gs 'cum_call', 'mouth_swallow', $boy
 				money += 1000
 				'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/sex/glory3.jpg"></center>'
-				*nl
-				'You gather a mouthful of sperm, and then swallow it. Their sperm has a sticky and sharp taste which makes you grimace.'
-				'A man''s voice tells you - "That was fucking great, here, you deserve it." and then 1,000 RUB are pushed through the hole.'
-
+				'You swallow. The cum has a sharp, tart taste which makes you grimace.'
+				'"That was fucking great, and you swallow! Here, you deserve it."' 
+				'1000 rubles is pushed through the hole.'
 				gs 'arousal', 'end'
 				gs 'stat'
-				
-				act 'Leave':gt 'city_nightclub', 'inside'
+				act 'Leave': gt 'city_nightclub', 'inside'
 			end
 
-			act 'Spit out':
+			act 'Spit it out':
 				cla
 				spafinloc = 11
 				gs 'cum_manage'
 				money += 500
 				'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/sex/glory3.jpg"></center>'
-				*nl
-				'You gather a mouthful of sperm, but the sticky and sharp taste overwhelms you, and you spit it on the floor.'
-				'A man''s voice tells you - "Here, your money." and then 500 RUB are pushed through the hole.'
-
+				'The sharp, tart taste overwhelms you and you spit the cum out onto the floor.'
+				'500 RUB is pushed through the hole.'
 				gs 'arousal', 'end'
 				gs 'stat'
-				
-				act 'Leave':gt 'city_nightclub', 'inside'
-			end
+				act 'Leave': gt 'city_nightclub', 'inside'
+			end 
 		end
 	end
 end
@@ -76,12 +63,10 @@ end
 if $ARGS[0] = 'toilet':
 	*clr & cla
 	gs 'stat'
-	'You pee sitting on the toilet and begin to wipe with toilet paper. Apparently you pressed too hard, as you feel a thrill coming from between the legs.'
-	
+	'You grab some toilet paper to wipe yourself, but press a little too hard and feel a warmth growing between your legs.'
 	gs 'arousal', 'clit_finger', 3 
 	gs 'stat'
-
-	act 'Leave':gs 'arousal', 'end' & gt 'city_nightclub', 'inside'
+	act 'Leave': gs 'arousal', 'end' & gt 'city_nightclub', 'inside'
 
 	act 'Caress yourself':
 		cla
@@ -90,35 +75,29 @@ if $ARGS[0] = 'toilet':
 		money += 500
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/shared/sex/mast/tomas.jpg"></center>'
-		*nl
-		'You caress swollen pussy with your fingers until you orgasm enthusiastically.'
-		'After orgasm, you catch your breath, but then notice someone is peeking at you through a hole in the wall.'
-		'The man behind the wall realises he has been caught, and giggles that you put on a great show. Suddenly the eye disappears, and 500 rubles are pushed through the hole.'
-
+		'You caress your swollen pussy with your fingers until you orgasm. When you catch your breath, you notice someone peeking at you through a hole in the wall.'
+		'500 rubles is pushed through the hole as the man thanks you for the show.'
 		$orgasm_or = 'yes'
 		gs 'arousal', 'clit_finger', 5, 'exhibitionism', 'masturbate'
 		gs 'arousal', 'end'
 		gs 'stat'
-	
-		act 'Leave':gt 'city_nightclub', 'inside'
+		act 'Leave': gt 'city_nightclub', 'inside'
 	end
 end
 
 if $ARGS[0] = 'toilet2':
 	*clr & cla
-	'You sit in a booth and hear both adjacent doors closing as two others enter.'
-	'A voice from the next stall tells you - "Don''t be afraid baby, we won''t hurt you! On the contrary, we will give you some delicious candy with extra cream filling.'
+	'As you''re sitting on the toilet, you hear both adjacent stall doors closing.'
+	'"Don''t be afraid baby, we won''t hurt you. On the contrary, we''ll give you some delicious candy with extra cream filling!" a voice says with a laugh.'
 
-	act 'Leave':gt 'city_nightclub', 'inside'
+	act 'Leave': gt 'city_nightclub', 'inside'
 
-	act 'Take a closer look':
+	act 'Continue':
 		*clr & cla
 		slutiness += 10
 		'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/sex/glory4.jpg"></center>'
-		*nl
-		'On both sides of your booth cocks poke through holes in the wall. The same voice says, "Come on, baby, come on, feeding time".'
-		'You take both members and begin to caress them, then bend over to one and take it into your mouth.'
-		
+		'Two cocks poke through the holes in the walls. "Come on, baby. You know you want to..." the voice says.'
+		'You reach out and start stroking both cocks before leaning over and taking one into your mouth.'
 		gs 'arousal', 'hj', 10, 'sub', 'group'
 		gs 'arousal', 'bj', 10, 'sub', 'group'
 		minut -= 10
@@ -127,33 +106,24 @@ if $ARGS[0] = 'toilet2':
 		act 'Continue':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/sex/glory5.jpg"></center>'
-			*nl
-			'You are enthusiastically fucked in the mouth by both members in turn.'
-			
+			'You alternate between sucking one cock while jerking off the other.'
 			gs 'arousal', 'bj', 10, 'sub', 'group'
 			gs 'stat'
 		
 			act 'Continue':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/sex/glory6.jpg"></center>'
-				*nl
-				'Finally one of the men finishes in your mouth.'
-				'You lick it up and turn all your attention to the other.'
-				
+				'After a few minutes, one of the men finishes in your mouth. You lick it up and turn all your attention to the other.'
 				gs 'arousal', 'bj', 10, 'sub', 'group'
 				gs 'stat'
 		
 				act 'Continue':
 					*clr & cla
 					'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/sex/glory7.jpg"></center>'
-					*nl
-					'Before long, the second man also comes in your mouth.'
-					'You swallow a mouthful and wipe your face, but find semen smeared all over it.'
-					
+					'Before long, the second man also cums in your mouth. You swallow both loads and wipe your face.'
 					gs 'arousal', 'bj', 10, 'sub', 'group'
-					
-					if rand(1, 100) > pcs_horny:
-						pcs_horny += 10 & 'You were not satisfied - after all, they were only in your mouth!'
+					if rand(1,100) > pcs_horny:
+						pcs_horny += 10 & 'You were not satisfied and feel your pussy burning with desire.'
 						$orgasm_or = 'no'
 					else
 						pcs_horny = 0 & 'Even though they only fucked your mouth, you feel an orgasm wash over you from the sheer depravity of the situation.'
@@ -165,9 +135,8 @@ if $ARGS[0] = 'toilet2':
 						cla
 						money += 2000
 						TQuest = 3
-						'A pleased voice says from behind the wall - "You were great, I think you''ve earned a reward."'
-						'2,000 RUB pokes through the hole.'
-
+						'"You were great, I think you''ve earned a reward."'
+						'2000 rubles pokes through the hole.'
 						guy += 2
 						gs 'npcgeneratec', 0, 'Gloryhole Client', rand(18,60)
 						gs 'boyStat', $npclastgenerated
@@ -180,14 +149,13 @@ if $ARGS[0] = 'toilet2':
 						
 						if pornstudio = 0:
 							act 'Continue':
-								pornstudio = 2
-								'A male voice says "I have some more work for you."'
-								'He pushes a card through the hole and says "Come find me at my studio if you want to have fun and make more money."'
-
-								act 'Leave':gt 'city_nightclub', 'inside'
+								pornstudio = 1
+								'A business card is then pushed through the hole. "That was some amazing cock sucking there, girl! Come here if you want to have some fun and make more money with that mouth of yours."'
+								'You look at the card. It''s for a porn studio located in the city''s industrial district.'
+								act 'Leave': gt 'city_nightclub', 'inside'
 							end
 						else
-							act 'Leave':gt 'city_nightclub', 'inside'
+							act 'Leave': gt 'city_nightclub', 'inside'
 						end
 					end
 				end
@@ -196,4 +164,4 @@ if $ARGS[0] = 'toilet2':
 	end
 end
 
---- Club2 ---------------------------------
+--- Club2 ---------------------------------

+ 1 - 1
locations/IvanEv.qsrc

@@ -177,7 +177,7 @@ if $ARGS[0] = 'School Chat':
 					cla
 					gs'stat'
 					'<center><b><font color=#00eaff>School Hallway</font></b></center>'
-					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<Rand(0,2)>>.jpg"></center>'
+					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<rand(0,2)>>.jpg"></center>'
 					'You don''t feel like attending all of your classes this morning. Surely no one will miss you if you skip one of your three morning classes.'
 
 					act 'Go to girl''s bathroom':gt 'gschool_girls_bathroom', 'start'

+ 3 - 3
locations/KatjaHomeTalk.qsrc

@@ -1532,10 +1532,10 @@ if $ARGS[0] = 'TamVal':
 	*clr & cla
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/katja/TK.jpg"></center>'
 	'Katja has left her phone at home, so you have a quick visit to her room, but as you reach the entry hall, some words reach your ears. Two women are talking in the living room.'
-	'"Oh Aunt Tamara! It has been marvelous to be with you again, but it is so unjust that my job only lets me see you so little, and I... I want to return all the favors you have given me."'
+	'"Oh Mistress Tamara! It has been marvelous to be with you again, but it is so unjust that my job only lets me see you so little, and I... I want to return all the favors you have given me."'
 	'The woman sounds young and, you must say, a little flirty? Turning towards Katja, you see recognition and surprise in her eyes.'
-	'"It is my pleasure Valentina, but you don''t need to do anything. What you must do is concentrate on your studies and work. With that, I''m served, but it is late and I think we must say goodbye. So, Valentina?"'
-	'The older woman sounds a lot more serious, but not without fondness, then suddenly they shut up and some muffled sounds reach your ears. Katja takes your hand and sneaks deeper into the house, where you see two women, embraced and kissing affectionately. Maybe too affectionately for a goodbye kiss. By your side, Katja gasps and the two women turn towards you. The older one smiles, unperturbed at the sudden interruption. The younger (not much older than you), after a moment, tightens her embrace and gives you a somewhat defiant smile.'
+	'"It is my pleasure Valentina, but I don''t need you for anything else, right now. What you must do is concentrate on your studies and work. With that, I''m served, but it is late and I think we must say goodbye. You may stand now Valentina!"'
+	'The older woman sounds a lot more serious, but not without fondness, then suddenly they shut up and some muffled sounds reach your ears. Katja takes your hand and sneaks deeper into the house, where you see two women, embraced and kissing affectionately. Maybe too affectionately for a goodbye kiss. By your side, Katja gasps and the two women turn towards you. The older one smiles, unperturbed at the sudden interruption. The younger (not much older than you), after a moment, releases her embrace and give you both a submissive curtsy, with down turned eyes.'
 	'"Oh Ekaterina! Look who has come to see us! Valentina!"'
 	'Katja mumbles something that sounds like a "hello", then without loosening her grip on your hand, quickly takes you towards her bedroom. As you two enter, she throws herself at the bed and muffles a scream in the pillow.'
 	minut += 5

+ 6 - 1
locations/Komp.qsrc

@@ -82,7 +82,12 @@ if $ARGS[0] = 'browse':
 		if access['general-text'] = 1: '<center><h4 style="color: red;"><b><<$access[''general-text'']>></b></h4></center>'
 		'You go to your favourite start page, while you try to decide on what you want to see right now.'		
 		'A blinking banner for a <a href="exec: gt ''komp'',''agent''">Kirsanova Real Estate Agency</a> keeps popping up in the corner.'
-
+		if $access['noporn'] = 1:
+			"<b><<$access['noporn']>></b>"
+		end
+		if  camwhore = 1 and access['nocamshow'] = 1 and mc_inventory['tech_webcam'] = 1: 
+			"<b><<$access['nocamshow']>></b>"
+		end
 		if func('homes_properties', 'is_property_of_status', 'owned', 'city_apartment') and husband = 0: act 'Rent your apartment out': gt 'komp', 'sale'
 
 		if access['noporn'] = 0: act 'Watch porn': gt 'komp', 'porno'

+ 51 - 1
locations/LOCA.qsrc

@@ -6,7 +6,7 @@ if settingmode!0: killvar '$cheatmenu'
 msg "Changed Location 
 	$menu_loc		<<$menu_loc>> 
 	$menu_arg		<<$menu_arg>> 
-	$loc_arg			<<$loc_arg>> 
+	$loc_arg		<<$loc_arg>> 
 	$loc			<<$loc>> 
 	$location_type	<<$location_type>> 
 	$locM			<<$locM>>
@@ -31,5 +31,55 @@ if mod_list > 0:
 	end
 end
 
+if call_trace_enabled ! 0 and call_trace_manual = 0:
+	$call_trace_line = "'<<$curloc>>'"
+
+	call_trace_index = 0
+	:call_trace_loop
+	if call_trace_index < arrsize("$ARGS"):
+		if $ARGS[call_trace_index] ! '':
+			$call_trace_line += ", '<<$ARGS[call_trace_index]>>'"
+		else
+			$call_trace_line += ", <<ARGS[call_trace_index]>>"
+		end
+		call_trace_index += 1
+		jump 'call_trace_loop'
+	end
+	killvar 'call_trace_index'
+
+	$call_trace += $call_trace_line + '<br>'
+	killvar '$call_trace_line'
+	if call_trace_shown ! 0: gs 'stat_display'
+end
+
+!!	MANUAL CALL TRACE SNIPPET
+!?	Why use manual call trace:
+!	- auto mode doesnt catch `gs` calls, manual does
+!?	HOWTO use:
+!	- put it at the head of the location you want to debug
+!	  set location name (if you want it to make sense and look nice)
+
+! {
+call_trace_manual = 1
+$call_trace_line = "'PUT_LOC_NAME_HERE'"
+
+call_trace_index = 0
+:call_trace_loop
+if call_trace_index < arrsize("$ARGS"):
+    if $ARGS[call_trace_index] ! '':
+        $call_trace_line += ", '<<$ARGS[call_trace_index]>>'"
+    else
+        $call_trace_line += ", <<ARGS[call_trace_index]>>"
+    end
+    call_trace_index += 1
+    jump 'call_trace_loop'
+end
+killvar 'call_trace_index'
+
+$call_trace += $call_trace_line + '<br>'
+killvar '$call_trace_line'
+if call_trace_shown ! 0: gs 'stat_display'
+}
+
 --- LOCA ---------------------------------
 

+ 12 - 12
locations/MeynoldHome.qsrc

@@ -890,37 +890,37 @@ if $ARGS[0] = 'Kat Bath':
 		act 'Continue':	
 			cla & *clr
 			gs'stat'
-			'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath1.mp4"></video></center>'
+			'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/receiving/1.mp4"></video></center>'
 			'Realizing your pain, Katja quickly stops then whispers in your ear, "Get in the tub." You do as she says and climb into the tub as Katja undresses herself and joins you. She begins soaping up the sponge then says, "Sit up." You do as she says and she begins lathering your body with the soft sponge while being very careful not to put too much pressure on your sore spots.'
 					
 			act 'Let Katja rinse you':	
 				cla & *clr
 				gs'stat'	
-				'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath2.mp4"></video></center>'
+				'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/receiving/2.mp4"></video></center>'
 				'After Katja finishes rinsing off the soap she grabs onto the back of your head then pulls you forward toward her nipple and you obediently begin licking her nipple passionately while occasionally looking up to see her lightly bitting her lip, obviously pleased at your performance. She then lightly grips your neck, gently pushing you off her, before climbing on top of the side of the tub before spreading her legs and rubbing her pussy gently.'
 			
 				act 'Lick her pussy':	
 					cla & *clr
 					gs'stat'
-					'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath3.mp4"></video></center>'
+					'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/receiving/3.mp4"></video></center>'
 					'You lean forward then begin lightly licking her pussy as Katja leans back against the wall. You continue licking her vagina gently at first then begin quickening your pace while occasionally looking up to see her tilting her head back and moaning. You can see her legs tensing up as you pleasure her.'
 					
 					act 'Continue':	
 						cla & *clr
 						gs'stat'
-						'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath4.mp4"></video></center>'
+						'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/receiving/4.mp4"></video></center>'
 						'As you continue licking Katja''s pussy, you decide to slide one of your fingers into her vagina then do your best to please her with it. You run your finger inside of her, brushing her g-spot with the tip of your finger as Katja begins moaning louder. You look up to Katja to see her fidgeting as she moans out loud.'
 						
 						act 'Increase your pace':	
 							cla & *clr
 							gs'stat'
-							'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath5.mp4"></video></center>'
+							'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/receiving/5.mp4"></video></center>'
 							'You increase your pace before Katja suddenly slams her head back. Katja''s body begins to spasm as she experiences a powerful orgasm. Her moaning is erratic and her hands tightly clench around the shelf. You look up at her and watch her writhing in pleasure. <font color=#FF00FF>Yes Katja. Feel what you mean to me. You deserve every second of pleasure I can give you. I want you to feel pure ecstasy.</font>'
 							
 							act 'Continue':	
 								cla & *clr
 								gs'stat'
-								'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath6.mp4"></video></center>'
+								'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/receiving/6.mp4"></video></center>'
 								'Katja finishes her orgasm then lays still for a few seconds, catching her breath before looking into your eyes and saying, "You did good <<$pcs_nickname>>... Real good." She then leans forward and places her hand on your cheek, "You''re such a good girl aren''t you?" She then shares a soft passionate kiss with you for what feels like an eternity, but an eternity that you welcome.'
 								
 								act 'Finish the kiss':	
@@ -1005,37 +1005,37 @@ if $ARGS[0] = 'Katja Bath':
 		act 'Continue':	
 			cla & *clr
 			gs'stat'
-			'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath1.mp4"></video></center>'
+			'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/giving/1.mp4"></video></center>'
 			'Realizing your pain, Katja quickly stops then whispers in your ear, "I''m sorry I just... I forgot." You stroke her cheek then say, "Take off your clothes then get in." Katja quickly undresses herself and joins you. She begins soaping up the sponge then says, "Can you sit up please." You nod and she begins lathering your body with the soft sponge while being very careful not to put too much pressure on your sore spots.'
 					
 			act 'Let Katja rinse you off':	
 				cla & *clr
 				gs'stat'	
-				'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath2.mp4"></video></center>'
+				'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/giving/2.mp4"></video></center>'
 				'After Katja finishes rinsing off the soap you grab onto the back of her head then pull her forward toward your nipple and she obediently begins licking your nipple passionately while occasionally looking up to see if you approve. You give her a nod then lightly grip her neck, gently pushing her off of you, before climbing on top of the side of the tub before laying back and spreading your legs and rubbing your pussy gently.'
 			
 				act 'Let Katja lick your pussy':	
 					cla & *clr
 					gs'stat'
-					'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath3.mp4"></video></center>'
+					'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/giving/3.mp4"></video></center>'
 					'Katja leans forward then begin lightly licking your pussy as you lean back laying against the side of the tub. Katja continues licking your vagina gently at first then begins quickening her pace while occasionally looking up to see your reaction, obviously wanting to please you. You reach down then stroke her cheek as she continues licking your vagina.'
 					
 					act 'See what she does':	
 						cla & *clr
 						gs'stat'
-						'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath4.mp4"></video></center>'
+						'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/giving/4.mp4"></video></center>'
 						'Katja slowly begins to slide one of her fingers into your vagina then dooes her best to please her with it. She runs her finger inside of you, brushing against your g-spot with the tip of her finger as you begin moaning louder. Katja looks up to you as you feel the pleasure building to an almost unsustainable amount, as you begin moaning loudly, feeling like you will burst into an orgasm at any second.'
 						
 						act 'Orgasm':	
 							cla & *clr
 							gs'stat'
-							'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath5.mp4"></video></center>'
+							'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/giving/5.mp4"></video></center>'
 							'Katja notices your loud moaning then begins increasing her pace, causing you to suddenly slam your head back. You feel your breath stop as waves of pleasure begin pulsing throughout your body. You lose all control as your body is filled with perfect ecstasy. You can hear yourself moaning loudly and feel your body spasming wildly while Katja remains latched onto your vagina, licking vigorously. <font color=#FF00FF>Yes Katja. Please me. Show me what I mean to you. Make me feel pure ecstasy!</font>'
 							
 							act 'Continue':	
 								cla & *clr
 								gs'stat'
-								'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/bath6.mp4"></video></center>'
+								'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/natalia/love/bathroom/giving/6.mp4"></video></center>'
 								'You finish your orgasm then lay still for a few seconds, catching your breath before looking into Katja''s eyes and saying, "You did great Kat... Really good." You then lean forward and places your hand on her cheek, "You''re such a good girl aren''t you?" You both then share a soft passionate kiss for what feels like an eternity, but an eternity that you welcome.'
 								
 								act 'Meekly nod':	

+ 1 - 1
locations/NikoEv2.qsrc

@@ -1248,7 +1248,7 @@ if $ARGS[0] = 'Niko Search':
 		*clr & cla
 		minut += 5
 		gs 'stat'	
-		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/niko/nikoev2/school/restroom/1.jpg"></center>'
+		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/niko/nikoev/school/restroom/2.jpg"></center>'
 		'You lick the tip of Dan''s dick before taking it into your mouth and sucking it firmly. Vitek and Vasily take out their dicks and start lightly stroking them before you reach out and grab onto their dicks. "You''re doing well, <<$pcs_nickname>>. Can you suck me next?" Vasily asks and you nod before pulling away from Dan and wrapping your lips around Vasily''s dick, sucking it gently while Vitek paws at your breasts through your shirt. After a few seconds, Vitek grows impatient and pushes his dick against your lips.' 
 		if kotovloveQW < 0:	
 			'"What are you waiting for, slut? Start sucking my dick. You made a fool of me and you''ll make up for it." You can feel your heart rapidly beating as you start sucking on Vitek''s dick, fearful of angering him further.'

+ 55 - 75
locations/Peterroom.qsrc

@@ -2,8 +2,7 @@
 
 !! Peter, the owner of the sexshop
 if $ARGS[0] = 'start_door':
-	cla
-	*clr
+	*clr & cla
 	$menu_loc = 'Peterroom'
 	$menu_arg = 'start_door'
 	menu_off = 0
@@ -28,7 +27,7 @@ if $ARGS[0] = 'start_door':
 			petersexday += 1
 			'You ring the doorbell and wait. After a few seconds, Peter opens the door and smiles. "Come in and get changed."'
 
-			act 'Enter the apartment':gt 'peterroom', 'start'
+			act 'Enter the apartment': gt 'peterroom', 'start'
 		else
 			'You ring the doorbell a few times, but no one answers.'
 
@@ -42,25 +41,23 @@ if $ARGS[0] = 'start_door':
 end
 
 if $ARGS[0] = 'start':
-	cla
-	*clr
+	*clr & cla
 	menu_off = 1
 	gs 'stat'
 
 	if peter > 0 :
-		peterrand = rand(1, 2)
+		peterrand = rand(1,2)
 		'<center><img <<$set_imgh>> src="images/characters/city/peter/9.jpg"></center>'
 		'You get undressed and fasten your collar around your neck.'
 		'"Who''s my good bitch?" you hear Peter ask from the next room.'
 
 		act 'I am, Master':
 			petersex = petersex + 1
-
-			if analplugin = 1 :gt 'peterroom', 'klap'
-			if peterrand < 2 :gt 'peterroom', 'd1'
-			if peterrand > 1 :gt 'peterroom', 'd2'
+			if analplugin = 1: gt 'peterroom', 'klap'
+			if peterrand < 2: gt 'peterroom', 'd1'
+			if peterrand > 1: gt 'peterroom', 'd2'
 		end
-	elseif peter < 1 :
+	elseif peter < 1:
 		petersexday += 1
 		minut += 10
 		'<center><img <<$set_imgh>> src="images/characters/city/peter/1.jpg"></center>'
@@ -68,60 +65,56 @@ if $ARGS[0] = 'start':
 		'He puts the collar down in front of you. It''s a broad strip of leather with a ring at the front where a leash can be attached.'
 
 		act 'Put it on':
-			*clr
-			cla
+			*clr & cla
 			'<center><img <<$set_imgh>> src="images/characters/city/peter/2.jpg"></center>'
 			'You eagerly put the collar on and Peter strokes you gently on the cheek, but then suddenly pulls his hand back and slaps you.'
-			'"Lustful girl! Stand up and turn around - hands behind your back!"'
+			'"Lustful girl! Stand up and turn around, hands behind your back!"'
 			'You do as he says and feel leather cuffs being tightly fastened around your wrists.'
 
-			if analplugin = 1 :
+			if analplugin = 1:
 				analplugin = 0
-				'"What do we have here?" Peter grips the end of the butt plug sticking out of your ass, and eases it out.'
+				'"What do we have here?" he asks as he grips the end of your butt plug and eases it out.'
 			end
 
 			act 'Smile':
-				cla
-				*clr
+				*clr & cla
 				gs 'stat'
 				'<center><img <<$set_imgh>> src="images/characters/city/peter/3.jpg"></center>'
 				'Peter pulls you by the collar and forces you onto your knees in front of him. "Open your mouth, bitch!" he sternly orders.'
 
 				act 'Please him':
-					cla
-					*clr
+					*clr & cla
 					'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/4.jpg"></center>'
 					'Peter unbuttons his pants and pulls out his cock before grabbing you by the hair and shoving it into your mouth. You obediently wrap your lips around it and start sucking it, feeling it grow and strain inside your mouth.'
 					gs 'arousal', 'bj', 5, 'sub'
 					gs 'stat'
 					
 					act 'Continue':
-						cla
-						*clr
+						*clr & cla
 						'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/5.jpg"></center>'
-						'After a few minutes, Peter slides his dick out of your mouth, pulls you to your feet and pushes you onto the bed. He pushes your legs up to your chest before binding your hand cuffs behind them.'
-						'He climbs onto the bed and thrusts his dick into your pussy before he starts fucking you hard and fast. After a few minutes, he stops and pulls out, unties you and shoves you to the floor.'
+						'After a few minutes, Peter slides his dick out of your mouth, pulls you to your feet and pushes you onto the bed. He pushes your legs up to your chest before binding your handcuffs behind them.'
+						'He climbs onto the bed and thrusts his dick into your pussy before he starts fucking you hard and fast. After a few minutes, he stops and pulls out, unties you and shoves you on the floor.'
 						'He walks across the room before turning back to you. "Crawl to me, bitch!"'
 						gs 'arousal', 'vaginal', 5, 'sub'
 						gs 'stat'
 					
-						act 'Crawl' :gt 'peterroom', 'klap'
+						act 'Crawl': gt 'peterroom', 'klap'
 					end
 				end
 				
 				gs 'willpower', 'sex', 'resist', 'hard'
 				if will_cost <= pcs_willpwr:
 					act 'Refuse (<<will_cost>> Willpower)':
-						cla & *clr
+						*clr & cla
 						gs 'pain', 8, 'asscheeks', 'spank'
 						gs 'willpower', 'pay', 'resist'
 						gs 'stat'
 						'<center><img <<$set_imgh>> src="images/characters/city/peter/4_1.jpg"></center>'
 						'You remain where you are and refuse to move. Peter scowls with disappointment.'
-						'"A disobidient bitch like you needs to be punished!" he says as he rounds the table and forces you onto your knees and pulling your ass high in the air. You squeal when he shoves a butt plug deep into your ass, but it gets worse. He reaches for his whip and starts flogging your ass. He counts the strikes aloud, ignoring your sobs as the leather tails burn across your raw, stinging ass.'
+						'"A disobidient bitch like you needs to be punished!" he says as he rounds the table and forces you onto your knees before pulling your ass high in the air. You squeal when he shoves a butt plug deep into your ass, but it gets worse. He reaches for his whip and starts flogging your ass. He counts the strikes aloud, ignoring your sobs as the leather tails burn across your raw, stinging ass.'
 						'"Beg me to fuck you, whore!" he snarls as he whips you extra hard.'
 						'"Please fuck me, Master! Fuck me like the dirty little whore I am!" you beg through your tears and you see a faint smile on his face.'
-						act 'Continue' :gt 'peterroom', 'klap'
+						act 'Continue': gt 'peterroom', 'klap'
 					end
 				else
 					act 'Refuse (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
@@ -134,8 +127,7 @@ if $ARGS[0] = 'start':
 end
 
 if $ARGS[0] = 'klap':
-	cla
-	*clr
+	*clr & cla
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/characters/city/peter/6.jpg"></center>'
 	'Peter puts you on a leash and leads you into the bedroom. He pushes you onto the bed and ties your hands and feet to the headboard before fastening a ball gag into your mouth.'
@@ -144,28 +136,27 @@ if $ARGS[0] = 'klap':
 	gs 'stat'
 	
 	act 'Moan':
-		cla
-		*clr
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/7.jpg"></center>'
 		'Your moans are muffled by the gag as Peter bears down on you from above. "Let''s see how well your sweet ass takes me..." he says'
 
-		if analplugin = 1 :
+		if analplugin = 1:
 			analplugin = 0
 			', pulls out your butt plug'
 		end
 
-		'and starts pushing his dick against your asshole. After a few seconds, the tip pops into you and you moan into the gag. You can''t wait for him to bury himself in your ass completely. Peter sees your reaction and begins to fuck your ass, penetrating deeper with each stroke, until his dick is completely buried inside you and his balls slap hard against your buttocks. He fucks you so hard that your knees start to shake, and pussy juices trickle down your ass.'
+		'and starts pushing his dick against your asshole. After a few seconds, the tip pops into you and you moan into the gag. You can''t wait for him to bury himself in your ass completely. Peter sees your reaction and starts fucking your ass, penetrating deeper with each thrust until his dick is completely buried inside you. He fucks you so hard that your knees start to shake and pussy juices trickle down your leg.'
 		gs 'arousal', 'anal', 10, 'sub'
 		gs 'stat'
 
 		act 'Moan again':
-			cla & *clr
+			*clr & cla
 			'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/8.jpg"></center>'
 			'He continues to fuck you hard and fast, then slows the rhythm, finishing with several sharp uneven thrusts that fill your insides with a hot stream of cum.'
 			gs 'arousal', 'anal', 10, 'sub'
 			gs 'stat'
 		
-			if pcs_ass < 25:pcs_ass += 1
+			if pcs_ass < 25: pcs_ass += 1
 
 			if pcs_horny >= 100:
 				$orgasm_or = 'yes'
@@ -175,40 +166,39 @@ if $ARGS[0] = 'klap':
 
 			'Your ass makes a loud squelching noise when he pulls his dick out. Peter sits on the bed, breathing heavily while you remain bound, his cum slowly leaking from your asshole.'
 			
-			act 'Relax' :gt 'peterroom', 'end'
+			act 'Relax': gt 'peterroom', 'end'
 		end
 	end
 end
 
 if $ARGS[0] = 'end':
-	cla
-	*clr
+	*clr & cla
 	minut += 30
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/characters/city/peter/vanroom.jpg"></center>'
-	'"You were great." Peter says as he smacks your ass. He then picks you up and carries you to the bathroom, where you take a bath together.'
+	'"You were great," he says as he smacks your ass. He then picks you up and carries you to the bathroom, where you take a bath together.'
     'He greatly enjoys "washing" you, his hands paying special attention to your breasts and pussy as you lean back and make out with him.'
 	act 'Leave':
-		cla
-		*clr
+		*clr & cla
 		peter += 1
 		minut += 20
 		'<center><img <<$set_imgh>> src="images/characters/city/peter/mash.jpg"></center>'
-		'You relax in the bath together for a while until Peter states that he has business to attend to. You climb out of the bath and dry off before getting dressed. Peter grabs his keys and locks up before you walk outside together. When you reach his car, Peter leans in to kiss you.'
-		'"You''re a breath of fresh air, <<$pcs_nickname>>. You never fail to brighten my day." he says while gently stroking your cheek. "I hope I can see you against soon."'
-		'He climbs into his car and starts the engine, but just as he''s about to drive off, he suddenly calls to you. "Do you need a lift?"'
+		'You relax in the bath together for a while until Peter states that he has business to attend to elsewhere. You climb out of the bath and dry off before getting dressed. Peter then grabs his keys and locks up before you walk outside together. When you reach his car, he leans in to kiss you.'
+		'"You''re a breath of fresh air, <<$pcs_nickname>>. You never fail to brighten my day," he says while gently stroking your cheek. "I hope I can see you against soon."'
+		'He climbs into his car and starts the engine, but just as he''s about to drive off, he suddenly calls out to you. "Do you need a lift?"'
 	
 		act 'To the city center':
 			gs 'arousal', 'end'
 			'You nod and get into the car next to him. "Just into the city center is fine, thanks."'
-            'You spend the journey talking about the sex you just had and you reach the city center a few minutes later. Peter leans over and gives your ass a firm squeeze as you climb out of the car. "Until next time <<$pcs_nickname>>." You smile at him and close the door before he drives off.' 			
+            'You spend the journey talking about the sex you just had and you reach the city center a few minutes later. Peter leans over and gives your ass a firm squeeze as you climb out of the car. "Until next time, <<$pcs_nickname>>." You smile at him and close the door before he drives off.' 			
 			gt 'city_center'
 		end
+		
 		if func('homes_properties', 'has_access', 'city_house'):
 			act 'To your apartment':
 				gs 'arousal', 'end'
 				'You nod and get into the car next to him, giving him directions to your apartment complex.'
-				'You spend the journey talking about the sex you just had and you eventually reach your apartment building. Peter leans over and gives your ass a firm squeeze as you climb out of the car. "Until next time <<$pcs_nickname>>." You smile at him and close the door before he drives off.' 
+				'You spend the journey talking about the sex you just had and you eventually reach your apartment building. Peter leans over and gives your ass a firm squeeze as you climb out of the car. "Until next time, <<$pcs_nickname>>." You smile at him and close the door before he drives off.' 
 				gt 'city_residential'
 			end
 		end
@@ -216,15 +206,13 @@ if $ARGS[0] = 'end':
 end
 
 if $ARGS[0] = 'd1':
-	cla
-	*clr
-	if pcs_ass < 25:pcs_ass += 1
+	*clr & cla
+	if pcs_ass < 25: pcs_ass += 1
 	'<center><img <<$set_imgh>> src="images/characters/city/peter/d1-1.jpg"></center>'
 	'Peter binds your torso and hands before he lifts you up and hangs you from a hook.'
 	
 	act 'Suck his fingers':
-		cla
-		*clr
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/d1-2.jpg"></center>'
 		'Peter grabs your head and shoves all of his fingers into your mouth, forcing you to suck on them.'
 		'After a few seconds of you sucking and gagging on his fingers, he withdraws them and moves around behind you.'     
@@ -232,8 +220,7 @@ if $ARGS[0] = 'd1':
 		gs 'stat'
 		
 		act 'Penetration':
-			cla
-			*clr
+			*clr & cla
 			'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/d1-3.jpg"></center>'
 			'You think he is about to finger your ass, but squeal in surprise when he shoves his dick into you instead.'
             'You moan in a mix of pleasure and pain as he starts thrusting, quickly picking up the pace.'
@@ -241,10 +228,9 @@ if $ARGS[0] = 'd1':
 			gs 'stat'
 		
 			act 'Moan':
-				cla
-				*clr
+				*clr & cla
 				'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/d1-4.jpg"></center>'
-				'He continues to fuck you hard and you submit yourself to the pleasure of your ass being hammered, your pussy juices running down your legs.'
+				'He continues to fuck you hard and you submit yourself to the pleasure of your ass being hammered as your pussy juices run down your legs.'
 
 				if pcs_horny >= 100:
 					$orgasm_or = 'yes'
@@ -258,56 +244,50 @@ if $ARGS[0] = 'd1':
 				
 				'Your ass makes a loud squelching noise when he pulls his dick out. Peter sits on the bed, breathing heavily while you remain kneeling with your ass in the air, his cum trickling down your leg.'
 
-				act 'Further' :gt 'peterroom', 'end'
+				act 'Further': gt 'peterroom', 'end'
 			end
 		end
 	end
 end
 
 if $ARGS[0] = 'd2':
-	cla
-	*clr
+	*clr & cla
 	'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/d2-1.jpg"></center>'
-	'Peter forces you on your knees, then lifts your head and thrusts his cock into your mouth. The head of his cock goes down your throat, but he continues to thrust, forcing more of its 25cm length inside.'
-
+	'Peter forces you on your knees, then lifts your head and thrusts his cock into your mouth. The head of his cock goes down your throat, but he continues to thrust, forcing more of it inside.'
 	gs 'arousal', 'bj', 5, 'sub'
 	gs 'stat'
 
 	act 'Suck':
-		cla
-		*clr
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/d2-2.jpg"></center>'
 		'He thrusts mercilessly, fucking deeper into your mouth. Eventually, you feel his balls slap your chin, and realize that he''s bottomed out.'
-		'You feel a sense of pride in managing to take it all, but the feeling melts away as he begins to use your throat.'
-
+		'You feel a sense of pride in managing to take it all, but the feeling melts away as he starts to fuck your throat.'
 		gs 'arousal', 'bj', 5, 'sub', 'deepthroat'
 		gs 'stat'
 	
 		act 'Moan':
-			cla
-			*clr
+			*clr & cla
 			'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/d2-3.jpg"></center>'
-			'Tears stream from your eyes as he begins moving slowly. He takes his hands away from your head, and you desperately grab onto him while you let him use your throat. Trembling, you are lost in sensations - caught between the fire raging between your legs and your shameless awareness of the depravity of the situation.'
+			'Tears stream from your eyes and you desperately grab onto him, trembling as you let him use you in such a depraved manner.'
 			gs 'arousal', 'bj', 5, 'sub', 'deepthroat'
 			gs 'stat'
 		
 			act 'Moan':
-				cla
-				*clr
+				*clr & cla
 				'<center><img <<$set_imgh>> src="images/characters/city/peter/sex/d2-4.jpg"></center>'
-				'Peter is nearing climax, his thrusts becoming ragged, when he suddenly stops and pushes in deep. His balls draw up, coated with your saliva, and you feel his sperm shooting down your throat.'
+				'Peter is nearing climax, his thrusts becoming ragged, when he suddenly stops and pushes in deep. His balls draw up, coated with your saliva, and you feel his cum shooting down your throat.'
 				gs 'arousal', 'bj', 5, 'sub', 'deepthroat'
 				gs 'stat'
 		
 				if pcs_horny >= 100:
 					$orgasm_or = 'yes'
-					'Your orgasm suddenly hits you. Waves of pleasure ripple through your body, and you moan and shudder with release, but Peter holds you in place and refuses to allow his cock to slip out of your mouth.'
+					'Your orgasm suddenly hits you. Waves of pleasure ripple through your body, and you moan and shudder with release, but Peter holds you in place and refuses to allow his cock out of your mouth.'
 				end
 
-				act 'Swallow' :gt 'peterroom', 'end'
+				act 'Swallow': gt 'peterroom', 'end'
 			end
 		end
 	end
 end
 
---- Peterroom ---------------------------------
+--- Peterroom ---------------------------------

+ 8 - 8
locations/UnitAppearance.qsrc

@@ -121,11 +121,11 @@ end
 if $ARGS[0] = 'GenerateSvetas':
 
 	$svetadesc = 'Current Sveta'
-	unitsalo = salo
+	unitsalo = pcs_mass['body']
 	unitpcs_hgt = pcs_hgt
 	unitstrenbuf = strenbuf
 	unitsalocatnow = salocatnow
-	unitvofat = vofat
+	unitvofat = bodyVars['vofat']
 	unitpcs_lashes = pcs_lashes
 	unitpcs_eyesize = pcs_eyesize
 	unitpcs_lip = pcs_lip
@@ -1507,12 +1507,12 @@ if $ARGS[0] = 'CurVal':
     $SvetaDesc = input("Enter a description for Sveta")
 	*clr
 	''
-	'    $svetadesc = ''<<$SvetaDesc>>'''
-	'    unitsalo = <<salo>>'
+	'    $svetadesc = ''<<$SvetaDesc>>'' '
+	'    unitsalo = <<pcs_mass[''body'']>>'
 	'    unitpcs_hgt = <<pcs_hgt>>'
 	'    unitstrenbuf = <<strenbuf>>'
 	'    unitsalocatnow = <<salocatnow>>'
-	'    unitvofat = <<vofat>>'
+	'    unitvofat = <<bodyVars[''vofat'']>>'
 	'    unitpcs_lashes = <<pcs_lashes>>'
 	'    unitpcs_eyesize = <<pcs_eyesize>>'
 	'    unitpcs_lip = <<pcs_lip>>'
@@ -1525,11 +1525,11 @@ if $ARGS[0] = 'CurVal':
 	'    unitPXCloTopCut = <<PXCloTopCut>>'
 	'    unitPXCloBottomShortness = <<PXCloBottomShortness>>'
 	'    unitPCloQuality = <<PCloQuality>>'
-	'    $unitclothingworntype = ''<<$clothingworntype>>'''
+	'    $unitclothingworntype = ''<<$clothingworntype>>'' '
 	'    unitbonusZ = <<bonusZ>>'
 	'    unitPShoQuality = <<PShoQuality>>'
-	'    $unitpantyworntype = ''<<$pantyworntype>>'''
-	'    $unitbraworntype = ''<<$braworntype>>'''
+	'    $unitpantyworntype = ''<<$pantyworntype>>'' '
+	'    $unitbraworntype = ''<<$braworntype>>'' '
 	'    unitpcs_lipbalm = <<pcs_lipbalm>>'
 	'    unitmopkoef = <<mopkoef>>'
 	'    unitpcs_hairbsh = <<pcs_hairbsh>>'

+ 1 - 1
locations/Zvereva_Sly_sex.qsrc

@@ -33,7 +33,7 @@ if $ARGS[0] = 'Sly_random_sex_acts':
 
 		if slyQW['Chris_peek_daystart'] ! daystart:
 			slyQW['Chris_peek_daystart'] = daystart
-			if slyQW['Chris_caught'] <= 5:
+			if slyQW['Chris_caught'] < 5:
 				if rand(1, 4) = 1:
 					slyQW['Chris_caught'] += 1
 					slyQW['Chris_peeking'] = 1

+ 69 - 69
locations/_attributes_danilovich_outfits.qsrc

@@ -47,7 +47,7 @@ elseif ARGS[1] = 7:
 elseif ARGS[1] = 8:
 	CloQuality = 2
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 
 elseif ARGS[1] = 9:
@@ -77,7 +77,7 @@ elseif ARGS[1] = 12:
 elseif ARGS[1] = 13:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 6
 
 elseif ARGS[1] = 14:
@@ -102,13 +102,13 @@ elseif ARGS[1] = 16:
 elseif ARGS[1] = 17:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 18:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 19:
@@ -126,13 +126,13 @@ elseif ARGS[1] = 20:
 elseif ARGS[1] = 21:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 22:
 	CloQuality = 2
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 4
 	
 elseif ARGS[1] = 23:
@@ -156,31 +156,31 @@ elseif ARGS[1] = 25:
 elseif ARGS[1] = 26:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 
 elseif ARGS[1] = 27:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 4
 	
 elseif ARGS[1] = 28:
 	CloQuality = 2
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 4
 	
 elseif ARGS[1] = 29:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 4
 	
 elseif ARGS[1] = 30:
 	CloQuality = 2
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 31:
@@ -192,19 +192,19 @@ elseif ARGS[1] = 31:
 elseif ARGS[1] = 32:
 	CloQuality = 2
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 33:
 	CloQuality = 2
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 34:
 	CloQuality = 2
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 35:
@@ -216,37 +216,37 @@ elseif ARGS[1] = 35:
 elseif ARGS[1] = 36:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 37:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPanties = 1
 	
 elseif ARGS[1] = 38:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPanties = 1
 	
 elseif ARGS[1] = 39:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPanties = 1
 	
 elseif ARGS[1] = 40:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 41:
 	CloQuality = 2
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 42:
@@ -258,7 +258,7 @@ elseif ARGS[1] = 42:
 elseif ARGS[1] = 43:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 4
 	
 elseif ARGS[1] = 44:
@@ -276,37 +276,37 @@ elseif ARGS[1] = 45:
 elseif ARGS[1] = 46:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 
 elseif ARGS[1] = 47:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 4
 
 elseif ARGS[1] = 48:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 4
 	
 elseif ARGS[1] = 49:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 50:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 51:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 52:
@@ -318,13 +318,13 @@ elseif ARGS[1] = 52:
 elseif ARGS[1] = 53:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 54:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 55:
@@ -336,13 +336,13 @@ elseif ARGS[1] = 55:
 elseif ARGS[1] = 56:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 57:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 5
 	
 elseif ARGS[1] = 58:
@@ -426,7 +426,7 @@ elseif ARGS[1] = 70:
 elseif ARGS[1] = 71:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 
 elseif ARGS[1] = 72:
@@ -456,7 +456,7 @@ elseif ARGS[1] = 75:
 elseif ARGS[1] = 76:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 77:
@@ -468,14 +468,14 @@ elseif ARGS[1] = 77:
 elseif ARGS[1] = 78:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 3
 	CloBimbo = 1
 	
 elseif ARGS[1] = 79:
 	CloQuality = 4
 	CloThinness = 3
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 80:
@@ -583,7 +583,7 @@ elseif ARGS[1] = 96:
 elseif ARGS[1] = 97:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 98:
@@ -601,7 +601,7 @@ elseif ARGS[1] = 99:
 elseif ARGS[1] = 100:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 101:
@@ -619,13 +619,13 @@ elseif ARGS[1] = 102:
 elseif ARGS[1] = 103:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 104:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 105:
@@ -662,31 +662,31 @@ elseif ARGS[1] = 109:
 elseif ARGS[1] = 110:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 111:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 112:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 113:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 114:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 115:
@@ -716,31 +716,31 @@ elseif ARGS[1] = 118:
 elseif ARGS[1] = 119:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 120:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 121:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 122:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 123:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 124:
@@ -753,7 +753,7 @@ elseif ARGS[1] = 124:
 elseif ARGS[1] = 125:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 126:
@@ -771,49 +771,49 @@ elseif ARGS[1] = 127:
 elseif ARGS[1] = 128:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 129:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 130:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 131:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 132:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 133:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 134:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 135:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	CloBimbo = 1
 	
@@ -826,7 +826,7 @@ elseif ARGS[1] = 136:
 elseif ARGS[1] = 137:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 138:
@@ -838,13 +838,13 @@ elseif ARGS[1] = 138:
 elseif ARGS[1] = 139:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 140:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 141:
@@ -856,31 +856,31 @@ elseif ARGS[1] = 141:
 elseif ARGS[1] = 142:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 143:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 144:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 145:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 146:
 	CloQuality = 3
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 	
 elseif ARGS[1] = 147:
@@ -910,13 +910,13 @@ elseif ARGS[1] = 150:
 elseif ARGS[1] = 151:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPanties =1
 	
 elseif ARGS[1] = 152:
 	CloQuality = 4
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPanties =1
 	
 elseif ARGS[1] = 153:
@@ -971,7 +971,7 @@ elseif ARGS[1] = 159:
 elseif ARGS[1] = 160:
 	CloQuality = 5
 	CloThinness = 4
-	CloBra = 1
+	CloTopCut = 4
 	CloPantsShortness = 1
 
 end

+ 1 - 1
locations/_attributes_school.qsrc

@@ -304,7 +304,7 @@ elseif ARGS[1] = 43:
 	CloQuality = 3
 	CloThinness = 3
 	CloTopCut = 1
-	CloSkirtShortness = 3
+	CloSkirtShortness = 4
 	CloStyle2 = 4
 	
 elseif ARGS[1] = 44:

+ 2 - 2
locations/act_main1.qsrc

@@ -128,7 +128,7 @@ if $ARGS[0] = 'Unashamed_Intro':
 				'Vitaly sniggers as the extra stays dead still and you kick the bed as if trying to wake her up.'
 				act'Cut!':
 					cla & *clr
-					'<center><img <<$set_imgh>> src="images/locations/industrial/studio/set1.jpg"></center>'
+					'<center><img <<$set_imgh>> src="images/locations/city/industrial/studio/set1.jpg"></center>'
 					'The director calls cut as you finish up your first take. You spend a while longer cleaning up the bits that needed correction or the director wanted to tweak before going to the break.'
 					act'Go to break':gt 'studio_events', 'break'
 				end
@@ -322,7 +322,7 @@ if $ARGS[0] = 'Unashamed_nude_sex3':
 			'And slap down the phone in relief.'
 			act'Cut!':
 				cla & *clr
-				'<center><img <<$set_imgh>> src="images/locations/industrial/studio/set1.jpg"></center>'
+				'<center><img <<$set_imgh>> src="images/locations/city/industrial/studio/set1.jpg"></center>'
 				'The director calls cut and you slowly sit up on the bed.'
 				if acting['realsex'] = 0:
 					'"Yanovich!" you call out to the director. "You told him to blow on my pussy like that didn''t you?!"'

+ 2 - 2
locations/act_minor1.qsrc

@@ -27,7 +27,7 @@ if $ARGS[0] = 'club_flash':
 	acting['scene_count'] = 1
 	*clr & cla
 	if pcs_perform < 50: gs 'exp_gain', 'perform', 10
-	'<center><img <<$set_imgh>> src="images/locations/industrial/studio/set1.jpg"></center>'
+	'<center><img <<$set_imgh>> src="images/locations/city/industrial/studio/set1.jpg"></center>'
 	'You go on set and everyone is getting ready. You pass the time by continuing to study your lines until someone comes over to you and puts you on your mark. The director quickly runs through the scene with you and all the other actors to make sure there isn''t any confusion. With you and everybody else nodding in confirmation you all get back into place and the director yells, "Quiet on the set!"'
 	act'"Action!"':
 		*clr & cla
@@ -89,7 +89,7 @@ if $ARGS[0] = 'club_flash':
 							minut += 2
 							gs'stat'
 							*clr & cla
-							'<center><img <<$set_imgh>> src="images/locations/industrial/studio/set1.jpg"></center>'
+							'<center><img <<$set_imgh>> src="images/locations/city/industrial/studio/set1.jpg"></center>'
 							'The crew reviews the footage for a minute before the director calls to reset and you do a few more takes of the scene as everybody corrects the minor things that either went wrong or the director decided didn''t feel right for the scene.'
 							act'Additional takes':
 								minut += 30

+ 68 - 38
locations/alarmclock.qsrc

@@ -2,44 +2,13 @@
 
 if $ARGS[0] = 'start':
 	menu_off = 1
-
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/shared/home/bedroom/bed2.jpg"></center>'
-	'<center>Enter time using number pad and click set to change alarm times, don''t forget to turn your alarm on.</center>'
+	'<center><h4>Enter the time using the number pad and click on set to change alarm times, don''t forget to turn your alarm on.</h></center>'
 	*nl
+	gs 'alarmclock', 'build_table'
 
-	if numbud = 4: '<center><b><<bud1>><<bud2>>:<<bud3>><<bud4>></b></center>'
-	if numbud = 3: '<center><b><<bud1>><<bud2>>:<<bud3>></b><<bud4>></center>'
-	if numbud = 2: '<center><b><<bud1>><<bud2>></b>:<<bud3>><<bud4>></center>'
-	if numbud = 1: '<center><b><<bud1>></b><<bud2>>:<<bud3>><<bud4>></center>'
-	if numbud = 0: '<center><<bud1>><<bud2>> : <<bud3>><<bud4>></center>'
-
-	'<center><b><a href="exec:gt ''alarmclock'', ''clear''">Clear</a>'
-	'<center><b><a href="exec:gt ''alarmclock'', ''1''">1</a> <a href="exec:gt ''alarmclock'', ''2''">2</a> <a href="exec:gt ''alarmclock'', ''3''">3</a></b></center>'
-	'<center><b><a href="exec:gt ''alarmclock'', ''4''">4</a> <a href="exec:gt ''alarmclock'', ''5''">5</a> <a href="exec:gt ''alarmclock'', ''6''">6</a></b></center>'
-	'<center><b><a href="exec:gt ''alarmclock'', ''7''">7</a> <a href="exec:gt ''alarmclock'', ''8''">8</a> <a href="exec:gt ''alarmclock'', ''9''">9</a></b></center>'
-	'<center><b><a href="exec:gt ''alarmclock'', ''0''">0</a></b></center>'
-
-	'<center><b><a href="exec: bud_weekend = 0 & gt ''alarmclock'', ''Reset''">Reset weekday alarm</a> <a href="exec: bud_weekend = 0 & gt ''alarmclock'', ''Time''">Set</a> weekday alarm to this time</b></center>'
-	'<center><b>Currently set for <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>></center>'
-
-	'<center><b><a href="exec: bud_weekend = 1 & gt ''alarmclock'', ''Reset''">Reset weekend alarm</a> <a href="exec: bud_weekend = 1 & gt ''alarmclock'', ''Time''">Set</a> weekend alarm to this time</b></center>'
-	'<center><b>Currently set for <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>></center>'
-
-	if mid($start_type,1,2) = 'sg' and alarmVars['alarm_holiday'] = 0:
-		'<center><b>Use weekend alarm for holidays - <a href="exec: alarmVars[''alarm_holiday''] = 1 & gt ''alarmclock'', ''start''">OFF</a></b></center>'
-	elseif mid($start_type,1,2) = 'sg' and alarmVars['alarm_holiday'] = 1:
-		'<center><b>Use weekend alarm for holidays - <a href="exec:  alarmVars[''alarm_holiday''] = 0 & gt ''alarmclock'', ''start''">ON</a></b></center>'
-	end
-
-	*nl
-	if alarmVars['alarmOn'] = 0:
-		'<center>Your alarm is currently turned <a href="exec: alarmVars[''alarmOn''] = 1 & gt ''alarmclock'', ''start''"><b>OFF</a></b></center>'
-	else
-		'<center>Your alarm is currently turned <a href="exec: alarmVars[''alarmOn''] = 0 & gt ''alarmclock'', ''start''"><b>ON</b></a></center>'
-		'<center>The alarm is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend.</center>'
-	end
-	act 'Clear time display':
+	act 'Finish':
 		bud1 = 0
 		bud2 = 0
 		bud3 = 0
@@ -47,13 +16,13 @@ if $ARGS[0] = 'start':
 		numbud = 0
 		gt 'alarmclock', 'fin'
 	end
-	act 'Finish':
+	act 'Clear time display':
 		bud1 = 0
 		bud2 = 0
 		bud3 = 0
 		bud4 = 0
 		numbud = 0
-		gt 'alarmclock', 'fin'
+		gt 'alarmclock', 'start'
 	end
 end
 
@@ -69,7 +38,7 @@ if $ARGS[0] = 'clear':
 	bud3 = 0
 	bud4 = 0
 	numbud = 0
-	gt 'alarmclock', 'fin'
+	gt 'alarmclock', 'start'
 end
 
 if $ARGS[0] = 'Time':
@@ -209,6 +178,67 @@ if $ARGS[0] = 'Reset':
 	gt 'alarmclock', 'start'
 end
 
-if $ARGS[0] = 'fin': gt $loc, $loc_arg
+if $ARGS[0] = 'fin':gt $loc, $loc_arg
+
+
+if $ARGS[0] = 'build_table':
+
+	$num_html = '<td align="center"><b><font size="+2">'
+	$html_num = '</a></font></b></td>'
+	$more_html = '<center><table width="20%" cellspacing=0 cellpadding=3 align="center" border=1><tr align="center"><th COLSPAN=3 align="center"><font size="+3">'
+	$even_more_html = '</font></th></tr>'
+	if numbud = 4:$alarm_html = '<<bud1>><<bud2>> : <<bud3>><<bud4>>'
+	if numbud = 3:$alarm_html = '<<bud1>><<bud2>> : <<bud3>><U><<bud4>></U>'
+	if numbud = 2:$alarm_html = '<<bud1>><<bud2>> : <U><<bud3>></U><<bud4>>'
+	if numbud = 1:$alarm_html = '<<bud1>><U><<bud2>></U> : <<bud3>><<bud4>>'
+	if numbud = 0:$alarm_html = '<U><<bud1>></U><<bud2>> : <<bud3>><<bud4>>'
+
+	$numbud_table='<tr><td colspan=3 align="center"><b><font size="+2"><a href="exec:gt ''alarmclock'', ''clear''">Clear</a></font></b></td></tr>'
+	$numbud_table+='<tr><<$num_html>><a href="exec:gt ''alarmclock'', ''1''">1<<$html_num>>'
+	$numbud_table+='<<$num_html>><a href="exec:gt ''alarmclock'', ''2''">2<<$html_num>>'
+	$numbud_table+='<<$num_html>><a href="exec:gt ''alarmclock'', ''3''">3<<$html_num>></tr>'
+	$numbud_table+='<tr><<$num_html>><a href="exec:gt ''alarmclock'', ''4''">4<<$html_num>>'
+	$numbud_table+='<<$num_html>><a href="exec:gt ''alarmclock'', ''5''">5<<$html_num>>'
+	$numbud_table+='<<$num_html>><a href="exec:gt ''alarmclock'', ''6''">6<<$html_num>></tr>'
+	$numbud_table+='<tr><<$num_html>><a href="exec:gt ''alarmclock'', ''7''">7<<$html_num>>'
+	$numbud_table+='<<$num_html>><a href="exec:gt ''alarmclock'', ''8''">8<<$html_num>>'
+	$numbud_table+='<<$num_html>><a href="exec:gt ''alarmclock'', ''9''">9<<$html_num>></tr>'
+	$numbud_table+='<tr><td colspan=3 align="center"><b><font size="+2"><a href="exec:gt ''alarmclock'', ''0''">0</a></font></b></td></tr></table></center>'
+
+	$alarmVars_table='<center><table border=0 cellpadding=0 cellspacing=5><font size="+1"<b>'
+	$alarmVars_table+='<tr><td><b><a href="exec: bud_weekend = 0 & gt ''alarmclock'', ''Reset''">Reset weekday alarm</a></b></td>'
+	$alarmVars_table+='<td><b><a href="exec: bud_weekend = 0 & gt ''alarmclock'', ''Time''">Set weekday alarm</a></b></td>'
+	$alarmVars_table+='<td><b>Currently set for <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>></b></td></tr>'
+	
+	$alarmVars_table+='<tr><td><b><a href="exec: bud_weekend = 1 & gt ''alarmclock'', ''Reset''">Reset weekend alarm</a></b></td>'
+	$alarmVars_table+='<td><b><a href="exec: bud_weekend = 1 & gt ''alarmclock'', ''Time''">Set weekend alarm</a></b></td>'
+	$alarmVars_table+='<td><b>Currently set for <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>></b></td></tr>'
+
+	if mid($start_type,1,2) = 'sg':
+		$alarmVars_table+='<tr><td colspan="3"><b>Use weekend alarm for holidays - ' + iif(alarmVars['alarm_holiday'] = 0, '<a href="exec: alarmVars[''alarm_holiday''] = 1 & gt ''alarmclock'', ''start''">OFF</a>', '<a href="exec:  alarmVars[''alarm_holiday''] = 0 & gt ''alarmclock'', ''start''">ON</a>') + '</b></td></tr>'
+	end
+
+	$alarmVars_table+='<tr><td colspan="3"><b>Your alarm is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt ''alarmclock'', ''start''">OFF</a>', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt ''alarmclock'', ''start''">ON</a>') + '.</b></td></tr>'
+
+	if alarmVars['alarmOn'] = 1:
+		$alarmVars_table+='</table></center><center><table border=0 cellpadding=0 cellspacing=10><tr><td><b>Your Alarm is ' + iif(alarmVars['timerH'] <= 0 and alarmVars['timerM'] <= 0, 'not set', 'set to ' + func('alarmclock', 'alarm_display', alarmVars['timerH'], alarmVars['timerM'])) + ' for the weekdays ' + iif(alarmVars['timerEndH'] <= 0 and alarmVars['timerEndM'] <= 0, 'and not set', 'and set to ' + func('alarmclock', 'alarm_display', alarmVars['timerEndH'], alarmVars['timerEndM'])) + ' for the weekend' + iif(alarmVars['alarm_holiday'] = 1, ' and holidays', '') + '.</b></td></tr>'
+	end
+	$alarmVars_table+='</b></font></table></center>'
+
+	'<<$more_html>><<$alarm_html>><<$even_more_html>><<$numbud_table>>'
+	'<<$alarmVars_table>>'
+
+	killvar '$num_html'
+	killvar '$html_num'
+	killvar '$alarm_html'
+	killvar '$numbud_table'
+	killvar '$more_html'
+	killvar '$even_more_html'
+	killvar '$alarmVars_table'
+
+end
+
+
+
 
 --- alarmclock ---------------------------------

+ 1 - 1
locations/albina_starlets_sex.qsrc

@@ -372,7 +372,7 @@ if $ARGS[0] = 'whore3':
 		act 'Get started':
 			*clr & cla
 			guy += 2
-			'<center><img <<$set_imgh>> src="images/shared/sex/blowjob/tolietbj2.jpg"></center>'
+			'<center><img <<$set_imgh>> src="images/shared/sex/blowjob/toiletbj2.jpg"></center>'
 			'"Hurry up, bro!" the confident one says. "You don''t want to be a virgin anymore, so here''s a slut that will make you a man, but won''t give you a disease in the process."'
 			'He forces you to kneel in front of him and you unzip his pants. "See? This whore can''t wait to get started!" he laughs as you start sucking his dick. You hold in a giggle when you see that, even when hard, he''s a little on the smaller side.'
 			'As you continue sucking his dick, the shy boy''s confidence grows and he pulls out his much larger cock.'

+ 1 - 1
locations/albina_wine_event.qsrc

@@ -608,7 +608,7 @@ if $ARGS[0] = 'porn_talk':
 					gs 'albina_wine_event','wine_chat2'
 				end
 				
-				gs 'albina_wine_event','tell_raped'
+				!! gs 'albina_wine_event','tell_raped'
 			end
 		end
 	end

+ 1 - 1
locations/alexandriaEv.qsrc

@@ -503,7 +503,7 @@ end
 
 if $ARGS[0] = 'succubribe':
 	*clr & cla
-	minut + 5
+	minut += 5
 	AlexandriaMissionQW = 2
 	pcs_mood -= 10
 	gs 'stat'

+ 87 - 42
locations/anushapt.qsrc

@@ -25,6 +25,7 @@ if $ARGS[0] = 'home':
 	$location_type = 'private'	
 	gs 'themes', 'indoors'
 	gs 'stat'
+	gs 'anushka_konstantinov_schedule'
 	if anushkaQW['home_day'] ! daystart:
 		anushkaQW['home_day'] = daystart
 		AnushkaLoc = 0
@@ -39,7 +40,35 @@ if $ARGS[0] = 'home':
 	elseif hour < 8:
 		'It''s too early in the day to visit Anushka.'
 		act 'Move away from the door':gt'pav_complex', 'start'
-	elseif ((hour >= 15 and hour < 20) or (week > 5 and hour >= 10 and hour < 20)) and (rand(0,4) = 0):
+	elseif locat['A144'] = 30:
+		*clr & cla
+		menu_off = 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
+		'You stand outside the Konstantinov household knocking on the door. It''s some time before someone answers it. In the end, it turns out to be Maksim. He looks you over from head to toe, obviously trying to imagine you naked. "Nush isn''t here right now. She''s driving around the country with the band, they went on tour, I wish I could have gone."'
+		'You nod to that, you remember that now. "Right, I can''t believe I forgot that, well hope they are having fun."'
+		'"Rad is likely banging all the bitch''s." His tone makes it sound like he is a little jealous. "Nush is likely getting gangbanged by the band or a bunch of random dude every night." He says smuggly like it is some kind of joke.'
+		*nl
+		'You shake your head. "You really shouldn''t say that about your sister."'
+		'He snorts derisively. "What are you my dad all of a sudden? Besides that''s what mom says."'
+		'You just sigh, no point trying to talk to him about that. "Anyways do you know when they will be back?"'
+		'He shrugs. "She is suppose to be back sometime in August, mom said I can''t let any of her friends in while she is gone." Before you can even get a word in, he slowly closes the door checking you out as he does. With nothing more to do, you turn to leave.'
+		act 'Move away from the door':gt'pav_complex', 'start'
+	elseif yearstart > 1:
+		*clr & cla
+		menu_off = 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
+		'You stand outside the Konstantinov household knocking on the door. It''s some time before someone answers it. In the end, it turns out to be Maksim. He looks you over from head to toe, obviously trying to imagine you naked. "Nush isn''t moved out, she moved to the city with Rad and the guys, they got some apartment near the Uni so she can go to school." He sounds like he is about to throw up thinking about choosing to attend more school, he doesn''t seem to like school much.'
+		'You nod to that. "Oh... ok, do you have their address?"'
+		'He sighs loudly like you are huge bother. "No, Rad works at the music store in the mall, I try and stop by when I get time to go to the city. Maybe you can stop by and ask him." He makes it sound like he is real busy and traveling around doing important stuff.'
+		*nl
+		'You snort slightly in amusement. "Your sister work there too?"'
+		'He rolls his eyes. "No." He says no like you are a idiot for asking. "She works as a waitress or something at a coffee shop near where they live, like she could get a cool job like Rad, she is just some dumb waitress."'
+		'You just sigh, you are briefly tempted to point out your mom is just a waitress too. But no point trying to talk to him about that. "Anyways thanks I guess."'
+		'He shrugs. "Whatever, mom said I can''t let any of her friends since she doesn''t live here anymore." Before you can even get a word in, he slowly closes the door checking you out as he does. With nothing more to do, you turn to leave.'
+		act 'Move away from the door':gt'pav_complex', 'start'
+	elseif ((hour >= 15 and hour < 20) or (week > 5 and hour >= 10 and hour < 20)) and locat['A144'] ! 22 and (rand(0,4) = 0):
 		*clr & cla
 		menu_off = 1
 		gs 'stat'
@@ -47,7 +76,7 @@ if $ARGS[0] = 'home':
 		'You stand outside the Konstantinov household knocking on the door. It''s some time before someone answers it. In the end, it turns out to be Anushka''s mother.'
 		'Her mother just stands there, glaring at you for a while. "Well now, don''t just stand there. What do you want? Oh wait, let me guess you want to see Anushka? Well, the little slut isn''t here, and I don''t know when she''ll be back, so why don''t you just go bother someone else?" Before you can even get a word in, she slams the door in your face, and you hear all the locks click into place. With nothing more to do, you turn to leave.'
 		act 'Move away from the door':gt'pav_complex', 'start'
-	elseif week = 3 and hour >= 16 and hour < 23:
+	elseif locat['A144'] = 24:
 		*clr & cla
 		AnushkaLoc = 0
 		band['practice_invite'] = 1
@@ -56,7 +85,7 @@ if $ARGS[0] = 'home':
 		'You shake your head, but there''s nothing you can do about it. Should you go in and wait for her or just go? As you decide, you can feel Maksim undressing you with his eyes as he stares straight at your tits.'
 		act 'Leave': gt 'pav_complex','start'
 		act 'Enter': gt 'anushapt','hallway'
-	elseif (week = 5 or week = 6) and hour >= 20:
+	elseif locat['A144'] = 25:
 		*clr & cla
 		AnushkaLoc = 0
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
@@ -64,11 +93,13 @@ if $ARGS[0] = 'home':
 		'You shake your head, but there is nothing you can do about it. Should you go in and wait for her or just go? As you decide, you can feel Maksim undressing you with his eyes as he stares straight at your tits.'
 		act 'Leave': gt 'pav_complex','start'
 		act 'Enter': gt 'anushapt','hallway'
-	elseif (hour >= 15 and hour < 22) or (week > 5 and hour >= 8 and hour < 22):
+	elseif locat['A144'] = 22:
 		*clr & cla
 		menu_off = 1
 		gs 'stat'
-		nushdoor = rand(1,21)
+		gs 'radomir_popov_schedule'
+		gs 'valentin_bogdanov_schedule'
+		nushdoor = rand(1,17)
 		if nushdoor <= 3 and anushkaQW['shower_day'] ! daystart:
 			*clr & cla
 			AnushkaLoc = 7
@@ -102,17 +133,6 @@ if $ARGS[0] = 'home':
 				end
 			end
 		elseif nushdoor <= 6:
-			*clr & cla
-			AnushkaLoc = 2
-			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
-			'You stand outside the Konstantinov household and wait for Anushka to open the door, but Maksim answers instead.'
-			'He looks you over from head to toe, obviously trying to imagine you naked. "What?" he asks.'
-			'You ignore his staring and ask "Is Anushka home?"'
-			'He hooks his thumb over his shoulder to point down the hall. "She''s in her room, likely getting stoned or masturbating to porn or something."'
-			'You ignore his comments and step around him to enter the apartment. He closes the door and heads back to his room.'
-			act 'Leave': gt 'pav_complex','start'
-			act 'Enter': gt 'anushapt','hallway'
-		elseif nushdoor <= 9:
 			*clr & cla
 			AnushkaLoc = 1
 			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big144.jpg"></center>'
@@ -120,7 +140,7 @@ if $ARGS[0] = 'home':
 			'To your relief, she opens the door, smiling. "Hey <<$pcs_nickname>>. Come on in."'
 			act 'Leave': gt 'pav_complex','start'
 			act 'Enter': gt 'anushapt','hallway'
-		elseif nushdoor <= 12 and anushkaQW['tv_day'] ! daystart:
+		elseif nushdoor <= 9 and anushkaQW['tv_day'] ! daystart:
 			*clr & cla
 			AnushkaLoc = 5
 			anushkaQW['tv_day'] = daystart
@@ -128,7 +148,7 @@ if $ARGS[0] = 'home':
 			'You stand outside the Konstantinov household and hope that Anushka will open the door.'
 			'To your relief, she opens the door, smiling. "Hey <<$pcs_nickname>>. Come in, I was just watching some TV." As you go inside, she closes the door and heads for the living room where some action movie is playing on the TV. She practically falls down on the couch as she takes a seat.'
 			act 'Take a seat next to her': gt 'anushapt','nushlivroom'
-		elseif nushdoor <= 13:
+		elseif nushdoor <= 10 and locat['A154'] = 23:
 			*clr & cla
 			AnushkaLoc = 2
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
@@ -167,7 +187,7 @@ if $ARGS[0] = 'home':
 					act 'Take a peek (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 				end
 			end
-		elseif nushdoor = 14:
+		elseif nushdoor = 11 and locat['A158'] = 23:
 			*clr & cla
 			AnushkaLoc = 2
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
@@ -208,7 +228,7 @@ if $ARGS[0] = 'home':
 					act 'Take a peek (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 				end
 			end
-		elseif nushdoor = 15 and marcusdate < 1:
+		elseif nushdoor = 12 and marcusdate < 1:
 			*clr & cla
 			AnushkaLoc = 2
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
@@ -249,34 +269,45 @@ if $ARGS[0] = 'home':
 				end
 			end
 		else
-			if maksimQW['QWstage'] = 0:
+			*clr & cla
+			AnushkaLoc = 2
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
+			'You stand outside the Konstantinov household and wait for Anushka to open the door, but Maksim answers instead.'
+			'He looks you over from head to toe, obviously trying to imagine you naked. "What?" he asks.'
+			'You ignore his staring and ask "Is Anushka home?"'
+			'He hooks his thumb over his shoulder to point down the hall. "She''s in her room, likely getting stoned or masturbating to porn or something."'
+			'You ignore his comments and step around him to enter the apartment. He closes the door and heads back to his room.'
+			act 'Leave': gt 'pav_complex','start'
+			act 'Enter': gt 'anushapt','hallway'
+		end
+		killvar 'nushdoor'
+    elseif (hour >= 15 and hour < 22) or (week > 5 and hour >= 8 and hour < 22):
+		if maksimQW['QWstage'] = 0:
+			*clr & cla
+			maksimQW['QWstage'] = 1
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
+			'You stand outside the Konstantinov household and wait for Anushka to open the door, but Maksim answers instead.'
+			'He looks you over from head to toe, obviously trying to imagine you naked. "What?" he asks.'
+			'You ignore his staring and ask, "Is Anushka home?"'
+			'"No, she''s not here right now. She''s probably out sucking some guy''s dick or something, but you can go wait for her in her room if you want."'
+			act 'Leave': gt 'pav_complex','start'
+			act 'Enter': gt 'anushapt','hallway'
+			act 'Why would you say that?':
 				*clr & cla
-				maksimQW['QWstage'] = 1
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
-				'You stand outside the Konstantinov household and wait for Anushka to open the door, but Maksim answers instead.'
-				'He looks you over from head to toe, obviously trying to imagine you naked. "What?" he asks.'
-				'You ignore his staring and ask, "Is Anushka home?"'
-				'"No, she''s not here right now. She''s probably out sucking some guy''s dick or something, but you can go wait for her in her room if you want."'
+				'You are aghast that her brother would say such a thing about her. "Why would you tell people something like that?"'
+				'At first, he looks a little confused, as if he''s not sure what you mean, then just shrugs. "That''s what mom always says when I ask where Anushka is."'
+				'You shake your head, unsure what to think about this. Should you go in and wait for her or just go? Maksim just stands there staring at your tits, and you can actually feel him undressing you with his eyes.'
 				act 'Leave': gt 'pav_complex','start'
 				act 'Enter': gt 'anushapt','hallway'
-				act 'Why would you say that?':
-					*clr & cla
-					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
-					'You are aghast that her brother would say such a thing about her. "Why would you tell people something like that?"'
-					'At first, he looks a little confused, as if he''s not sure what you mean, then just shrugs. "That''s what mom always says when I ask where Anushka is."'
-					'You shake your head, unsure what to think about this. Should you go in and wait for her or just go? Maksim just stands there staring at your tits, and you can actually feel him undressing you with his eyes.'
-					act 'Leave': gt 'pav_complex','start'
-					act 'Enter': gt 'anushapt','hallway'
-				end
-			else
-				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
-				'Maksim answers the door instead. He looks you over from head to toe, obviously trying to imagine you naked. "Anushka''s not here right now. She''s probably out sucking some guy''s dick or something, but you can wait for her in her room if you want."'
-				'You shake your head, but there''s nothing you can do about it. Should you go in and wait for her or just go? As you decide, you can feel Maksim undressing you with his eyes as he stares straight at your tits.'
 			end
-			act 'Leave': gt 'pav_complex','start'
-			act 'Enter': gt 'anushapt','hallway'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/maksim.jpg"></center>'
+			'Maksim answers the door instead. He looks you over from head to toe, obviously trying to imagine you naked. "Anushka''s not here right now. She''s probably out sucking some guy''s dick or something, but you can wait for her in her room if you want."'
+			'You shake your head, but there''s nothing you can do about it. Should you go in and wait for her or just go? As you decide, you can feel Maksim undressing you with his eyes as he stares straight at your tits.'
 		end
-		killvar 'nushdoor'
+		act 'Leave': gt 'pav_complex','start'
+		act 'Enter': gt 'anushapt','hallway'
 	else
 		'You knock on the door several times, but no one answers. You assume that there probably isn''t anyone home at the moment.'
 		act 'Move away from the door': gt 'pav_complex','start'
@@ -1321,6 +1352,20 @@ if $ARGS[0] = 'firstvisit':
 	gs 'themes', 'indoors'
 	minut += 1
 	gs 'stat'
+	locat['A144'] = 22
+	if hour < 16:
+		locat['144_rand1'] = daystart
+		locat['144_save1'] = locat['144']
+	elseif hour < 18:
+		locat['144_rand2'] = daystart
+		locat['144_save2'] = locat['144']
+	elseif hour < 20:
+		locat['144_rand3'] = daystart
+		locat['144_save3'] = locat['144']
+	elseif hour < 22:
+		locat['144_rand4'] = daystart
+		locat['144_save4'] = locat['144']
+	end	
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/stairs/etaj4.jpg"></center>'
 	'Anushka leads you to her apartment, and the two of you talk a bit as you go. It''s nothing important, just idle small talk to pass the time. Once on the fourth floor of her building, she leads you to apartment 17. It''s one of the corner apartments. You know from your own building these are the bigger three bedroom apartments. She unlocks the door with her keys and leads you inside. "Let''s see if my dad is home." she tells you as she leads you to the living room.'
 	act 'Continue': AnushkaLoc = 5 & gt'anushapt','livingroom'

+ 286 - 55
locations/anushka_konstantinov_schedule.qsrc

@@ -18,6 +18,18 @@
 !locat['A144'] = 10 (Anushka is at the University classes 09:00 to 15:00)
 !locat['A144'] = 11 (Anushka is at the modeling studio First Sat of each month 8 to 16:00)
 !locat['A144'] = 12 (Anushka is at the University Library Mon and Wed from 15:00 till 18:00)
+
+!locat['A144'] = 20 Home, sleeping getting up in the morning and walking to school.
+!locat['A144'] = 21 At school.
+!locat['A144'] = 22 Hanging out near the school.
+!locat['A144'] = 22 Home, accepting visitors or hanging out near the Five Eight Estate.
+!locat['A144'] = 23 Out at an unspecified location in Pav.
+!locat['A144'] = 24 Practicing with the band in the garage.
+!locat['A144'] = 25 At the community center disco.
+!locat['A144'] = 26 Travelling to or from the city to Pav.
+
+!locat['A144'] = 30 On tour with the band
+
 !---------------------------------------------
 
 ! City schedule
@@ -28,66 +40,285 @@
 !! Home is located in her bedroom (2)
 ! TODO: randomize the location inside home?
 
-if week = 1:
-	! Monday
-	if hour >= 9 and hour < 15:
-		! Need an additional check: is the university open?
-		locat['A144'] = 10
-	elseif hour >= 15 and hour < 18:
-		locat['A144'] = 12
-	elseif hour >= 18 and hour <= 23:
-		locat['A144'] = 2
-	end
-elseif week = 2:
-	if hour >= 9 and hour < 15:
-		locat['A144'] = 10
-	elseif hour >= 15 and hour < 18:
-		locat['A144'] = 2
-	elseif hour >= 18 and hour <23:
-		locat['A144'] = 9
-	end
-elseif week = 3:
-	if hour >= 9 and hour < 15:
-		locat['A144'] = 10
-	elseif hour >= 15 and hour < 18:
-		locat['A144'] = 12
-	elseif hour >= 18 and hour < 23:
-		locat['A144'] = 8
-	end
-elseif week = 4:
-	if hour >= 9 and hour < 15:
-		locat['A144'] = 10
-	elseif hour >= 18 and hour <23:
-		locat['A144'] = 9
-	end
-elseif week = 5:
-	if hour >= 9 and hour < 15:
-		locat['A144'] = 10
-	elseif hour >= 10 and hour <16:
-		locat['A144'] = 9
-	elseif hour >= 16 and hour <20:
-		locat['A144'] = 2
-	elseif hour >= 20:
-		locat['A144'] = 0
+if yearstart = 1 and (month < 6 or year = 2016):
+	!! Schedule for the first year of the game until just after school ends
+	if week < 6:
+		if hour < 8:
+			locat['A144'] = 20
+		elseif hour < 14:
+			locat['A144'] = 21
+		elseif hour < 15:
+			locat['A144'] = 22
+		elseif hour < 16:
+			if locat['A144_rand1'] ! daystart:
+				if rand(0,4) = 0:
+					locat['A144'] = 23
+				else
+					locat['A144'] = 22
+				end
+				locat['144_rand1'] = daystart
+				locat['144_save1'] = locat['144']
+			else
+				locat['144'] = locat['144_save1']
+			end
+		elseif hour < 18:
+			if week =3:
+				locat['A144'] = 24
+			else
+				if locat['A144_rand2'] ! daystart:
+					if rand(0,1) = 0:
+						locat['A144'] = 23
+					else
+						locat['A144'] = 22
+					end
+					locat['144_rand2'] = daystart
+					locat['144_save2'] = locat['144']
+				else
+					locat['144'] = locat['144_save2']
+				end
+			end
+		elseif hour < 20:
+			if week = 3:
+				locat['A144'] = 24
+			else
+				if locat['A144_rand3'] ! daystart:
+					if rand(0,3) = 0:
+						locat['A144'] = 23
+					else
+						locat['A144'] = 22
+					end
+					locat['144_rand3'] = daystart
+					locat['144_save3'] = locat['144']
+				else
+					locat['144'] = locat['144_save3']
+				end
+			end
+		elseif hour < 22:
+			if week = 3:
+				locat['A144'] = 24
+			elseif week = 5:
+				locat['A144'] = 25
+			else
+				if locat['A144_rand4'] ! daystart:
+					if rand(0,3) = 0:
+						locat['A144'] = 23
+					else
+						locat['A144'] = 22
+					end
+					locat['144_rand4'] = daystart
+					locat['144_save4'] = locat['144']
+				else
+					locat['144'] = locat['144_save4']
+				end
+			end
+		else
+			if week = 5:
+				locat['A144'] = 25
+			else
+				locat['A144'] = 20
+			end
+		end
+	elseif week = 6:
+		if hour < 9:
+			locat['A144'] = 20	
+		elseif hour< 13:
+			if day < 8:
+				locat['A144'] = 11
+			else
+				if locat['A144_rand1'] ! daystart:
+					if rand(0,3) = 0:
+						locat['A144'] = 23
+					else
+						locat['A144'] = 22
+					end
+					locat['144_rand1'] = daystart
+					locat['144_save1'] = locat['144']
+				else
+					locat['144'] = locat['144_save1']
+				end
+			end
+		elseif hour < 16:
+			if day < 8:
+				locat['A144'] = 11
+			else
+				if locat['A144_rand2'] ! daystart:
+					if rand(0,1) = 0:
+						locat['A144'] = 23
+					else
+						locat['A144'] = 22
+					end
+					locat['144_rand2'] = daystart
+					locat['144_save2'] = locat['144']
+				else
+					locat['144'] = locat['144_save2']
+				end
+			end
+		elseif hour < 18:
+			if day < 8:
+				locat['A144'] = 23
+			else
+				if locat['A144_rand3'] ! daystart:
+					if rand(0,1) = 0:
+						locat['A144'] = 23
+					else
+						locat['A144'] = 22
+					end
+					locat['144_rand3'] = daystart
+					locat['144_save3'] = locat['144']
+				else
+					locat['144'] = locat['144_save3']
+				end
+			end
+		elseif hour < 20:
+			if locat['A144_rand4'] ! daystart:
+				if rand(0,3) = 0:
+					locat['A144'] = 23
+				else
+					locat['A144'] = 22
+				end
+				locat['144_rand4'] = daystart
+				locat['144_save4'] = locat['144']
+			else
+				locat['144'] = locat['144_save4']
+			end
+		else
+			locat['A144'] = 25
+		end
+	else
+		if hour < 9:
+			locat['A144'] = 20	
+		elseif hour < 13:
+			if locat['A144_rand1'] ! daystart:
+				if rand(0,3) = 0:
+					locat['A144'] = 23
+				else
+					locat['A144'] = 22
+				end
+				locat['144_rand1'] = daystart
+				locat['144_save1'] = locat['144']
+			else
+				locat['144'] = locat['144_save1']
+			end
+		elseif hour < 17:
+			if locat['A144_rand2'] ! daystart:
+				if rand(0,1) = 0:
+					locat['A144'] = 23
+				else
+					locat['A144'] = 22
+				end
+				locat['144_rand2'] = daystart
+				locat['144_save2'] = locat['144']
+			else
+				locat['144'] = locat['144_save2']
+			end
+		elseif hour < 20:
+			if locat['A144_rand3'] ! daystart:
+				if rand(0,1) = 0:
+					locat['A144'] = 23
+				else
+					locat['A144'] = 22
+				end
+				locat['144_rand3'] = daystart
+				locat['144_save3'] = locat['144']
+			else
+				locat['144'] = locat['144_save3']
+			end
+		elseif hour < 22:
+			if locat['A144_rand4'] ! daystart:
+				if rand(0,3) = 0:
+					locat['A144'] = 23
+				else
+					locat['A144'] = 22
+				end
+				locat['144_rand4'] = daystart
+				locat['144_save4'] = locat['144']
+			else
+				locat['144'] = locat['144_save4']
+			end
+		else
+			locat['A144'] = 20
+		end
 	end
-elseif week = 6:
-	!(first Sat each month from 16:00 till 20:00)
-	if day <= 7:
-		if hour >= 8 and hour < 16:
-			locat['A144'] = 11
-		elseif hour >= 16 and hour < 20:
+elseif yearstart = 1 or (yearstart = 2 and month = 8 and day < 10):
+	!! Schedule for the rest of the first year (and a week of the second) She is on tour with the band.
+	locat['A144'] = 30
+else
+	!! Schedule for later uni years.
+	if week = 1:
+		! Monday
+		if hour >= 9 and hour < 15:
+			! Need an additional check: is the university open?
+			locat['A144'] = 10
+		elseif hour >= 15 and hour < 18:
+			locat['A144'] = 12
+		elseif hour >= 18 and hour <= 23:
 			locat['A144'] = 2
+		else
+			locat['A144'] = 0
 		end
-	else
-		if hour <= 8 and hour < 20:
+	elseif week = 2:
+		if hour >= 9 and hour < 15:
+			locat['A144'] = 10
+		elseif hour >= 15 and hour < 18:
 			locat['A144'] = 2
-		elseif hour >= 20:
+		elseif hour >= 18 and hour <23:
+			locat['A144'] = 9
+		else
+			locat['A144'] = 0
+		end
+	elseif week = 3:
+		if hour >= 9 and hour < 15:
+			locat['A144'] = 10
+		elseif hour >= 15 and hour < 18:
+			locat['A144'] = 12
+		elseif hour >= 18 and hour < 23:
+			locat['A144'] = 8
+		else
+			locat['A144'] = 0
+		end
+	elseif week = 4:
+		if hour >= 9 and hour < 15:
+			locat['A144'] = 10
+		elseif hour >= 18 and hour <23:
+			locat['A144'] = 9
+		else
+			locat['A144'] = 0
+		end
+	elseif week = 5:
+		if hour < 9:
+			locat['A144'] = 0
+		elseif hour < 10:
+			locat['A144'] = 10
+		elseif hour < 16:
+			locat['A144'] = 9
+		elseif hour < 20:
+			locat['A144'] = 2
+		else
+			locat['A144'] = 0
+		end
+	elseif week = 6:
+		!(first Sat each month from 16:00 till 20:00)
+		if day <= 7:
+			if hour >= 8 and hour < 16:
+				locat['A144'] = 11
+			elseif hour >= 16 and hour < 20:
+				locat['A144'] = 2
+			else
+				locat['A144'] = 0
+			end
+		else
+			if hour <= 8 and hour < 20:
+				locat['A144'] = 2
+			else
+				locat['A144'] = 0
+			end
+		end
+	else
+		if hour >= 18 and hour <23:
+			locat['A144'] = 9
+		else
 			locat['A144'] = 0
 		end
-	end
-else
-	if hour >= 18 and hour <23:
-		locat['A144'] = 9
 	end
 end
 
@@ -150,5 +381,5 @@ if $ARGS[0] = 'journal':
 
 end
 
+--- anushka_konstantinov_schedule ---------------------------------
 
---- anushka_konstantinov_schedule ---------------------------------

+ 86 - 27
locations/arkadi_fyodorov_schedule.qsrc

@@ -15,39 +15,98 @@
 !locat['A156'] = 7 (Arkadi in the bathroom)
 !locat['A156'] = 8 (Arkadi is in the garage with the band Wed 18-23)
 !locat['A156'] = 9 (Arkadi is at work, factory Mon-Fri 8 to 17)
+
+!locat['A156'] = 20 Home, sleeping getting up in the morning and walking to school.
+!locat['A156'] = 21 At school.
+!locat['A156'] = 23 Out at an unspecified location in Pav.
+!locat['A156'] = 24 Practicing with the band in the garage.
+!locat['A156'] = 25 At the community center disco.
+
+!locat['A156'] = 30 On tour with the band
+
 !---------------------------------------------
 
 !! Todo !!Arkadi is home Mon-Tues and Thurs from 18:00 for rest of night, Sun all day
 
-if week = 1:
-	if hour >= 8 and hour < 17:
-		locat['A156'] = 9
-	end
-elseif week = 2:
-	if hour >= 8 and hour < 17:
-		locat['A156'] = 9
+if yearstart = 1 and (month < 6 or year = 2016):
+	!! Schedule for the first year of the game until just after school ends
+	if week < 6:
+		if hour < 8:
+			locat['A156'] = 20
+		elseif hour < 16:
+			locat['A156'] = 23
+		elseif hour < 20:
+			if week = 3:
+				locat['A156'] = 24
+			else
+				locat['A156'] = 23
+			end
+		elseif hour < 22:
+			if week = 3:
+				locat['A156'] = 24
+			elseif week = 5:
+				locat['A156'] = 25
+			else
+				locat['A156'] = 23
+			end
+		else
+			if week = 5:
+				locat['A156'] = 25
+			else
+				locat['A156'] = 20
+			end
+		end
+	elseif week = 6:
+		if hour < 9:
+			locat['A156'] = 20	
+		elseif hour < 20:
+			locat['A156'] = 23
+		else
+			locat['A156'] = 25
+		end
+	else
+		if hour < 9:
+			locat['A156'] = 20	
+		elseif hour < 22:
+			locat['A156'] = 23
+		else
+			locat['A156'] = 20
+		end
 	end
-elseif week = 3:
-	if hour >= 8 and hour < 17:
-		locat['A156'] = 9
-	elseif hour >= 18 and hour < 23:
-		locat['A156'] = 8
-	end
-elseif week = 4:
-	if hour >= 8 and hour < 17:
-		locat['A156'] = 9
-	end
-elseif week = 5:
-	if hour >= 8 and hour < 17:
-		locat['A156'] = 9
-	elseif hour >= 20:
-		locat['A156'] = 0
-	end
-elseif week = 6:
-	if hour >= 20:
-		locat['A156'] = 0
+elseif yearstart = 1 or (yearstart = 2 and month = 8 and day < 10):
+	!! Schedule for the rest of the first year (and a week of the second) She is on tour with the band.
+	locat['A156'] = 30
+else
+	if week = 1:
+		if hour >= 8 and hour < 17:
+			locat['A156'] = 9
+		end
+	elseif week = 2:
+		if hour >= 8 and hour < 17:
+			locat['A156'] = 9
+		end
+	elseif week = 3:
+		if hour >= 8 and hour < 17:
+			locat['A156'] = 9
+		elseif hour >= 18 and hour < 23:
+			locat['A156'] = 8
+		end
+	elseif week = 4:
+		if hour >= 8 and hour < 17:
+			locat['A156'] = 9
+		end
+	elseif week = 5:
+		if hour >= 8 and hour < 17:
+			locat['A156'] = 9
+		elseif hour >= 20:
+			locat['A156'] = 0
+		end
+	elseif week = 6:
+		if hour >= 20:
+			locat['A156'] = 0
+		end
+	elseif week = 7:
 	end
-elseif week = 7:
 end
 
 if locat['A156'] > 0 and locat['A156'] < 8:

+ 67 - 2
locations/arousal.qsrc

@@ -350,6 +350,14 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		if temp_unaware = 1:
 			count['hidden_vaginal'] = 1
 		else
+			if stat['think_virgin'] = 1:
+				virgin_stats['day_lost'] = daystart
+				virgin_stats['age_lost'] = age
+				virgin_stats['vaginal'] = 1
+				$virgin_stats['virgin_taker'] = $npc_firstname[$boy]
+				$virgin_stats['cock_size'] = $npc_dick_desc[$boy]
+				if birthday = day and birthmonth = month: virgin_stats['birthday'] = 1
+			end
 			count['vaginal'] = 1
 			stat['last_man_sex_day'] = daystart
 		end
@@ -428,6 +436,16 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	elseif $ARGS[0] = 'vaginal_strap':
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_strap'] = 1
+		if stat['think_virgin'] = 1:
+			virgin_stats['day_lost'] = daystart
+			virgin_stats['age_lost'] = age
+			virgin_stats['strapon'] = 1
+			$virgin_stats['virgin_taker_ID'] = $boy
+			if birthday = day and birthmonth = month:
+				virgin_stats['birthday'] = 1
+			end
+			!! if dont_know_npc_name
+		end
 		stim['mag'] += 1
 		!! virginal capacity increase
 		if pcs_vag < temp_dick:pcs_vag += 1
@@ -632,6 +650,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 					stim['hidden_prostitution'] = 1
 				else
 					stim['prostitution'] = 1
+					if stat['think_virgin'] = 1 and (count['vaginal'] = 1 or count['vaginal_strap'] = 1): virgin_stats['prostitute'] = 1
 				end
 			elseif $ARGS[i] = 'dom':
 				stim['kink'] += dom['exp']
@@ -720,7 +739,8 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 					stim['hidden_rape'] = 1
 				else
 					stim['rape'] = 1
-				end	
+				end
+				if stat['think_virgin'] = 1 and (count['vaginal'] = 1 or count['vaginal_strap'] = 1): virgin_stats['rape'] = 1
 			elseif $ARGS[i] = 'shemale':
 				stim['kink'] += shemale['exp']
 				stim['pref'] += shemale['pref']
@@ -729,7 +749,8 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 					stim['hidden_shemale'] = 1
 				else
 					stim['shemale'] = 1
-				end	
+				end
+				if stat['think_virgin'] = 1 and (count['vaginal'] = 1 or count['vaginal_strap'] = 1): virgin_stats['shemale'] = 1
 			elseif $ARGS[i] = 'masturbate':
 				stim['kink'] += masturbate['exp']
 				stim['pref'] += masturbate['pref']
@@ -861,6 +882,50 @@ if $ARGS[0] = 'end':
 	if stim['prostitution'] = 1: slutty += 1
 	if stim['hidden_prostitution'] = 1: hidden_slutty += 1
 	if stim['masturbate'] = 1: stat['mast'] += 1
+	if npc_sexual[$boy] = 0 and (orgasm_flag['clit'] + orgasm_flag['vaginal'] + orgasm_flag['anal'] + count['bj'] + count['titjob'] + stim_les) > 0:
+		npc_sexual[$boy] = 1
+		stat['sexual_partners'] += 1
+		if npc_gender[$boy] = 0:
+			stat['male_sexual_partners'] += 1
+		elseif npc_gender[$boy] = 1:
+			stat['female_sexual_partners'] += 1
+		else
+			stat['herm_sexual_partners'] += 1
+		end
+	end
+	
+	if npc_sex[$boy] = 0 and (count['vaginal'] + stim['lesbian']) > 0:
+		if npc_sexual[$boy] = 1 and npc_sex[$boy] = 0: stat['sexual_partners'] -= 1
+		if npc_sex[$boy] = 0:
+			if npc_gender[$boy] = 0:
+				stat['men_fucked'] += 1
+			elseif npc_gender[$boy] = 1:
+				stat['women_fucked'] += 1
+			else
+				stat['herm_fucked'] += 1
+			end
+			npc_sex[$boy] = 1
+			stat['body_count'] += 1
+		end
+		stat['vaginal_partners'] += 1
+	end
+	
+	if npc_anal_fucked[$boy] = 0 and count['anal'] > 0:
+		npc_anal_fucked[$boy] = 1
+		if npc_sexual[$boy] = 1 and npc_sex[$boy] = 0: stat['sexual_partners'] -= 1
+		if npc_sex[$boy] = 0:
+			if npc_gender[$boy] = 0:
+				stat['men_fucked'] += 1
+			elseif npc_gender[$boy] = 1:
+				stat['women_fucked'] += 1
+			else
+				stat['herm_fucked'] += 1
+			end
+			npc_sex[$boy] = 1
+			stat['body_count'] += 1
+		end
+		stat['anal_partners'] += 1
+	end
 	
 	killvar 'anal_slip'
 	killvar 'ar_anal_lube'

+ 7 - 7
locations/artem_date_events.qsrc

@@ -544,7 +544,7 @@ if $ARGS[0] = 'gang_rape':
 		gs 'stat'
 		act 'The nightmare begins':
 			*clr & cla
-			'<center><img <<$set_imgh>> src="images/shared/sex/rape/park_rape1.jpg"></center>'
+			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/artem/sex/park/rape1.jpg"></center>'
 			'Two of them hold you down while one pulls his dick out, shoves it in your pussy and starts hammering away, not caring if you enjoy it or not. The more you struggle or cry out, the more they seem to enjoy it.'
 			gs 'pain', 2, 'wrists', 'bind'
 			gs 'boystat', $boy1
@@ -553,7 +553,7 @@ if $ARGS[0] = 'gang_rape':
 			gs 'stat'
 			act 'Continue':
 				*clr & cla
-				'<center><img <<$set_imgh>> src="images/shared/sex/rape/park_rape2.jpg"></center>'
+				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/artem/sex/park/rape2.jpg"></center>'
 				'The one watching takes his turn and forces his dick inside you while the first one just watches as he jerks off.'
 				gs 'pain', 2, 'wrists', 'bind'
 				gs 'boystat', $boy2
@@ -562,7 +562,7 @@ if $ARGS[0] = 'gang_rape':
 				gs 'stat'
 				act 'Continue':
 					*clr & cla
-					'<center><img <<$set_imgh>> src="images/shared/sex/rape/park_rape3.jpg"></center>'
+					'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/artem/sex/park/rape3.jpg"></center>'
 					'"Alright, my turn," the leader says. "Roll her over onto her hands and knees." You''re roughly forced into a kneeling position on the nasty old mattress, with your face forced against it. You feel someone spit on your asshole before a dick is shoved inside, causing you to cry out in pain as he starts pounding you balls deep. "Much tighter than that gaping pussy after you guys ripped it up!" He laughs and the others join in.'
 					gs 'pain', 2, 'wrists', 'bind'
 					gs 'boystat', $boy3
@@ -571,7 +571,7 @@ if $ARGS[0] = 'gang_rape':
 					gs 'stat'
 					act 'Two at a time':
 						*clr & cla
-						'<center><img <<$set_imgh>> src="images/shared/sex/rape/park_rape4.jpg"></center>'
+						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/artem/sex/park/rape4.jpg"></center>'
 						'The leader pulls out of your ass and lies in front of you on his side as someone else starts roughly fucking your ass. Once he''s next to your head, the leader shoves his dick in your mouth and makes you suck his dick as the other three take turns fucking your ass. You soon feel one of them cumming in your ass as another speaks up. "Come on, she has other holes! I''m tired of waiting!"'
 						gs 'pain', 2, 'wrists', 'bind'
 						gs 'pain', 6, 'jaw', 'ache'
@@ -584,7 +584,7 @@ if $ARGS[0] = 'gang_rape':
 						gs 'stat'
 						act 'Continue':
 							*clr & cla
-							'<center><img <<$set_imgh>> src="images/shared/sex/rape/park_rape5.jpg"></center>'
+							'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/artem/sex/park/rape5.jpg"></center>'
 							'With that, one of them lies down on the mattress and they force you to straddle and mount him, his cock sliding into your battered pussy as another cock is shoved into your mouth and a third back in your ass. The ones who were on watch come over to take their turns as you feel one of them cumming in your pussy.'
 							gs 'pain', 2, 'wrists', 'bind'
 							gs 'pain', 6, 'jaw', 'ache'
@@ -599,7 +599,7 @@ if $ARGS[0] = 'gang_rape':
 							gs 'stat'
 							act 'Continue':
 								*clr & cla
-								'<center><img <<$set_imgh>> src="images/shared/sex/rape/park_rapecum1.jpg"></center>'
+								'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/artem/sex/park/rapecum1.jpg"></center>'
 								'The remaining ones take turns fucking all three of your holes so much that you lose count as two of them cum inside you. When they pull out, you feel the cum leaking out of both of your holes as one of the other guys cums in your mouth.'
 								gs 'pain', 2, 'wrists', 'bind'
 								gs 'pain', 6, 'jaw', 'ache'
@@ -616,7 +616,7 @@ if $ARGS[0] = 'gang_rape':
 								gs 'stat'
 								act 'Last one':
 									*clr & cla
-									'<center><img <<$set_imgh>> src="images/shared/sex/rape/park_rapecum2.jpg"></center>'
+									'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/artem/sex/park/rapecum2.jpg"></center>'
 									'The last one starts fucking your throat. Before too long, he starts cumming as well, holding your mouth open with one hand as he jerks off with the other, milking every last drop of cum into your mouth.'
 									gs 'pain', 2, 'wrists', 'bind'
 									gs 'pain', 6, 'jaw', 'ache'

+ 25 - 22
locations/artemhome.qsrc

@@ -826,7 +826,7 @@ if $ARGS[0] = 'livingroom':
 					'<center><b><font color = maroon>Living room</font></b></center>'
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/artemhome/livingroom/watchplay.jpg"></center>'
 					'You shake your head. "I had a lot of fun playing with you, but I need to get going. Maybe next time."'
-					'He looks disappointed. "Oh, okay. See you at school then.'
+					'He looks disappointed. "Oh, okay. See you at school then."'
 					act 'Leave': gt'pod_ezd','etaj_1'
 				end
 			end
@@ -1423,7 +1423,7 @@ if $ARGS[0] = 'chat':
 			'You quickly pack up your things and leave the apartment with him.'
 			act 'Go on a date': gt 'artem_date_events','artem_date'
 		end
-	elseif artemQW['date'] >= 9 and artemQW['dateask'] ! daystart:
+	elseif artemQW['date'] >= 9 and artemQW['dateask'] ! daystart and artemQW['bf'] = 0:
 		*clr & cla
 		artemQW['dateask'] = daystart
 		artemQW['date'] += 1
@@ -1690,26 +1690,29 @@ if $ARGS[0] = 'chat':
 				end
 			end
 		end
-		if artemQW['nush3some'] = 1 and (week ! 3 or hour < 16 ):
-			act 'Ready for threesome with Anushka':
-				*clr & cla
-				artemQW['nush3some'] += 1
-				minut += 10
-				gs 'stat'
-				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/artem/talk2.jpg"></center>'
-				'You give him a kiss. "So, are you ready for our threesome?"'
-				'Artem looks into your eyes and nods with a nervous smile. "Yeah, I''m ready. As ready as I''ll ever be."'
-				'You smile and give him a reassuring pat on the leg as you look at him. "Don''t worry, it will be fun." He just nods and doesn''t say anything more, but you can tell he''s also eager under his nervousness.'
-				*nl
-				'You pull out your phone and text Anushka. "Hey, what''s up? You ready to come over for that threesome?"'
-				'It takes a minute or so before she responds. "Sure, where at?", followed by a bunch of sexual innuendo emojis. You can feel Artem looking over and reading what she wrote.'
-				'You text back. "Artem''s, just send a text when you''re here and he''ll come answer the door."'
-				'She just texts back several more sexual innuendo emojis.'
-				*nl
-				'You put your phone down. "Well, she''s on her way." He tidies his room while waiting for her, stopping at his dresser and digging into the bottom drawer before setting a bottle of lube down on the end table. You can''t help but smile; he''s serious about getting a little payback. He sits back next to you to wait for Anushka to show up.'
-				gs 'arousal', 'kiss', 1
-				gs 'stat'
-				act 'Wait for Anushka': gt 'artem_sex', 'anushka_3some'
+		if artemQW['nush3some'] = 1:
+			gs 'anushka_konstantinov_schedule'
+			if  locat['A144'] = 22 or locat['A144'] = 23:
+				act 'Ready for threesome with Anushka':
+					*clr & cla
+					artemQW['nush3some'] += 1
+					minut += 10
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/artem/talk2.jpg"></center>'
+					'You give him a kiss. "So, are you ready for our threesome?"'
+					'Artem looks into your eyes and nods with a nervous smile. "Yeah, I''m ready. As ready as I''ll ever be."'
+					'You smile and give him a reassuring pat on the leg as you look at him. "Don''t worry, it will be fun." He just nods and doesn''t say anything more, but you can tell he''s also eager under his nervousness.'
+					*nl
+					'You pull out your phone and text Anushka. "Hey, what''s up? You ready to come over for that threesome?"'
+					'It takes a minute or so before she responds. "Sure, where at?", followed by a bunch of sexual innuendo emojis. You can feel Artem looking over and reading what she wrote.'
+					'You text back. "Artem''s, just send a text when you''re here and he''ll come answer the door."'
+					'She just texts back several more sexual innuendo emojis.'
+					*nl
+					'You put your phone down. "Well, she''s on her way." He tidies his room while waiting for her, stopping at his dresser and digging into the bottom drawer before setting a bottle of lube down on the end table. You can''t help but smile; he''s serious about getting a little payback. He sits back next to you to wait for Anushka to show up.'
+					gs 'arousal', 'kiss', 1
+					gs 'stat'
+					act 'Wait for Anushka': gt 'artem_sex', 'anushka_3some'
+				end
 			end
 		end
 		if artemQW['anal'] >= 1 and mc_inventory['strapon'] = 1 and strapnumber > 0 and artemQW[strapon] = 0:

+ 3 - 0
locations/ballet_global_evt.qsrc

@@ -0,0 +1,3 @@
+# ballet_global_evt
+!! General world events 
+--- ballet_global_evt---------------------------------

+ 97 - 0
locations/ballet_npc.qsrc

@@ -0,0 +1,97 @@
+# ballet_npc
+
+!! Set up dance school dramatis personae - Start at 3500 to avoid conflicts with main game...
+
+!! Students
+
+npctemp = 3501
+$npc_firstname['A<<npctemp>>'] = 'Maya'
+$npc_nickname['A<<npctemp>>'] = 'Maya'
+$npc_lastname['A<<npctemp>>'] = 'Semionova'
+$npc_usedname['A<<npctemp>>'] = 'Maya'
+$npc_notes['A<<npctemp>>'] = 'Maya is the daughter of Anitchka a freelance coryphée, she was encouraged to dance from a young age until she was nine when she started doing gymnastics. This changed when she was eleven when her mother became ill and she was asked to carry on the family tradition. Maya is a naturally gifted dancer and after six years is tipped to become one of Russia''s leading stars in the future.'
+npc_dob['A<<npctemp>>'] = 19990502
+npc_gender['A<<npctemp>>'] = 1
+gs 'npcstaticdefaults', 'defaults'
+npc_bust['A<<npctemp>>'] = 14
+npc_intel['A<<npctemp>>'] = 75
+hotcat_rating['A<<npctemp>>'] = 8
+
+!! mod appearance NPC settings, height in cm, weight in kg
+$npc_haircolour['A<<npctemp>>'] = 'blonde'
+$npc_eyecolour['A<<npctemp>>'] = 'blue'
+$npc_height['A<<npctemp>>'] = 170
+$npc_weight['A<<npctemp>>'] = 50 
+
+!! NPC Temp: 3502 - Kima
+!! Kima Agapova - The dance critic and fanatical to become a dancer, no matter the cost. Keeps a 'black book' of contacts and information. Arguably the best dancer in the school alongside Maya. She will try and gather information on Sveta's activities.
+!! will try and blackmail Sveta into either giving up if she learns if she's has dirty secrets such as prostitution, slut rep, etc or passing the information to Rudolph to destroy her career to remove her as competition.
+
+!! NPC temp: 3503 - Tanis
+!! Tanis Komarova - Bitchy dancer who thinks she''s already the Principle Dancer. Age 17. Future concept as the class bully to other dancers and students.
+
+!! NPC temp: 3504 - Galina
+!! Galina Molchalina - Quiet and shy student, age 16. Highly secretive and doesn't engage with the class, she also has a nervous personality as if she's afraid. This comes from her family being marked as 'radicals' by the old KGB and under constant watch from FSB even to this day.
+
+!! NPC temp: 3505 - Taisiya
+!! Taisiya Lebedeva - The eldest student, and an elegant beauty, Age 18. A quiet, but captivating beauty who has a enchanting charismatic presence that men can't keep their eyes off her leading to bitchy remarks from other girls. 
+!! She''s oblivous to her beauty instead focusing on acting and dance. (side note: surname is one of the most common in St P.), she's got a strong religous personality.
+!! Malta Aurelie
+
+!! NPC temp: 3506 - Nikita
+!! Nikita Volkova - Bronya''s daughter. Age 16. Keep fit fanatic, and does tap, ballet, etc. As Bronya's daughter she's been given privileged access to the school, whilst no great talent she's still one of the better dance students at the school but just not at ballet despite Bronya's wishes.
+
+!! NPC temp: 3507 - Gasha
+!! Gasha Morozova - The youngest in the class at 15, close friend of Nikita as the grew up in the same village. Nikita and Galina are often seen in each others company in the local coffee shop and rarely seen alone leading to rumours. She''s a bit of a foodie, and love sweet things which conflicts with keeping in shape for her dance career.
+
+!! NPC temp: 3508 - Calina
+!! NPC temp: 3509 - Ruza
+!! Calina and Ruza Sokolova - Twin dancers. Not interested in ballet, but took the course to further their education into becoming dancers. Age 17. They also professional models with a Moscow agency. 
+!! Adel and Alina Fakhteeva twins?
+
+!! Staff
+
+npctemp = 3510
+$npc_firstname['A<<npctemp>>'] = 'Rudolf'
+$npc_nickname['A<<npctemp>>'] = 'Rudolf '
+$npc_lastname['A<<npctemp>>'] = 'Baryshnikov'
+$npc_usedname['A<<npctemp>>'] = 'Rudolf'
+npc_dob['A<<npctemp>>'] = 19820920
+$npc_notes['A<<npctemp>>'] = 'Rudolf is a charming and handsome man, he was on course to become one of Russia''s best ballet dancers until a stage accident cut short his career. Today he works at the dance school as a instructor, agent and a board member. Many rumours about his life have swirled around him over the years but none have been proven.'
+npc_gender['A<<npctemp>>'] = 0
+gs 'npcstaticdefaults', 'defaults'
+$npc_thdick['A<<npctemp>>'] = 'slim'
+npc_dick['A<<npctemp>>'] = 10
+npc_sexskill['A<<npctemp>>'] = 2
+npc_intel['A<<npctemp>>'] = 57
+hotcat_rating['A<<npctemp>>'] = 8
+npc_spermpot['A<<npctemp>>'] = 15000
+
+
+!! NPC temp: 3511 - Biserka
+!! class teacher: Biserka Ananiashvili
+
+!! NPC temp: 3512 - Sofia
+!! class teacher/pianist: Sofia Solovyova
+
+!! NPC temp: 3513 - Bronya 
+!! Residential Warden: Bronya Volkova and former violinist, strict but fair has two daughters with Nikita being the youngest training to be a ballet dancer and her eldest in Germany training to be a surgeon. 
+
+npc_temp = 3513
+$npc_firstname['A<<npctemp>>'] = 'Bronya'
+$npc_nickname['A<<npctemp>>'] = 'Bronya '
+$npc_lastname['A<<npctemp>>'] = 'Volkova'
+$npc_usedname['A<<npctemp>>'] = 'Bronya'
+
+!! NPC temp: 3514 - Physio - 
+ 
+!! Make up teacher: No name, the teacher never bothers to tell the class after a week. Former stage make up artist, beautician and scatterbrained.
+
+!! Staff Physio - TBC
+!! Mistress of Ballet - TBC
+--- ballet_npc ---------------------------------
+
+
+
+
+

+ 74 - 0
locations/ballet_secrets.qsrc

@@ -0,0 +1,74 @@
+# ballet_secrets
+
+!! Author: Hooded Silence
+!! A dance shop which includes ballet, gymnastics and physio-therapy sources. Alternative path to ballet career in second year and first.
+!! TBC - NPCs to be created
+
+if $ARGS[0] = 'init':
+  *clr & cla
+  gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+  $location_type = 'public_indoors'
+  $setloc['StageTitle'] = 'Ballet Secrets'
+  $setloc['StageImage'] =  'pushkin/ballet_secrets'
+  $location_type = 'public_indoors'
+  gs 'themes', 'indoors'
+  gs 'core_library', 'stage_title'
+
+end
+
+!! Intro
+
+if $ARGS[0] = 'first_visit':
+end
+!! Services
+  !! Gymnastics
+  if $ARGS[0] = 'gymnastics':
+    gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+    $location_type = 'public_indoors'
+    $setloc['StageTitle'] = 'Ballet Secrets - Gymnastics Class'
+    $setloc['StageImage'] =  'pushkin/ballet_secrets'
+    $location_type = 'public_indoors'
+    gs 'themes', 'indoors'
+    gs 'core_library', 'stage_title'
+  end
+  !! Ballet Courses Easy, Intermediate and advanced
+  if $ARGS[0] = 'ballet_courses':
+    gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+    $location_type = 'public_indoors'
+    $setloc['StageTitle'] = 'Ballet Secrets - Courses'
+    $setloc['StageImage'] =  'pushkin/ballet_secrets'
+    $location_type = 'public_indoors'
+    gs 'themes', 'indoors'
+    gs 'core_library', 'stage_title'
+  end
+  !! Physiotherapy
+  if $ARGS[0] = 'physio':
+    gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+    $location_type = 'public_indoors'
+    $setloc['StageTitle'] = 'Ballet Secrets - Physio'
+    $setloc['StageImage'] =  'pushkin/ballet_secrets'
+    $location_type = 'public_indoors'
+    gs 'themes', 'indoors'
+    gs 'core_library', 'stage_title'
+  end
+!! Shopping
+if $ARGS[0] = 'clothing':
+  gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+  $location_type = 'public_indoors'
+  $setloc['StageTitle'] = 'Ballet Secrets - Dancewear'
+  $setloc['StageImage'] =  'pushkin/ballet_secrets'
+  $location_type = 'public_indoors'
+  gs 'themes', 'indoors'
+  gs 'core_library', 'stage_title'
+end
+!! Custom Tutus for quests/shows, ballet shoe fitting, clothing, physio items, portable ballet equipment (barre) etc.
+if $ARGS[0] = 'quest':
+  gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+  $location_type = 'public_indoors'
+  $setloc['StageTitle'] = 'Ballet Secrets'
+  $setloc['StageImage'] =  'pushkin/ballet_secrets'
+  $location_type = 'public_indoors'
+  gs 'themes', 'indoors'
+  gs 'core_library', 'stage_title'
+end
+--- ballet_secrets ---------------------------------

+ 1 - 1
locations/bank.qsrc

@@ -416,7 +416,7 @@ if $ARGS[0] = 'cikl':
 		count = ARRSIZE('$internet_action_messages')
 		i = 0
 		:loop_messages
-			'<<$internet_action_messages[i]>>'
+			if $internet_action_messages[i] ! '': *pl $internet_action_messages[i]
 			i += 1
 		if i < count: jump 'loop_messages'
 		killvar 'i'

+ 3 - 3
locations/bed.qsrc

@@ -1,5 +1,4 @@
 # bed
-$sleep_loc = 'bed'
 menu_off = 1
 
 !! Prepare to lie down, move to events related to entering the bed.
@@ -14,10 +13,11 @@ end
 
 if $ARGS[0] = 'mod_sleeptriggers':
 	!! This location is here to allow mods to hook into the system.
-	!! Either check for: if $sleep_loc = 'bed' and $$ARGS[0] = 'mod_sleeptriggers'
+	!! Either check for: if $ARGS[0] = 'bed' and $ARGS[1] = 'mod_sleeptriggers'
 	!!
 	!! This is NOT for events!!
-
+	
+	gs 'LOCA', 'bed', 'mod_sleeptriggers'
 	gt 'bed_events', 'start'
 end
 

+ 14 - 14
locations/bed2.qsrc

@@ -1,5 +1,4 @@
 # bed2
-$sleep_loc = 'bed2'
 
 !! Lying in bed hub. From here PC can take various actions, including going to sleep.
 !!
@@ -26,19 +25,20 @@ end
 
 if $ARGS[0] = 'mod_sleeptriggers':
 	!! This location is here to allow mods to hook into the system.
-	!! Either check for: if $sleep_loc = 'bed2' and $ARGS[0] = 'mod_sleeptriggers'
+	!! Either check for: if $ARGS[0] = 'bed2' and $ARGS[1] = 'mod_sleeptriggers'
 	!!
 	!! This is NOT for events!!
 
-	gt 'bed2', 'end'
+	gs 'LOCA', 'bed2', 'mod_sleeptriggers'
+	gt 'bed2', 'main'
 end
 
 
-if $ARGS[0] = 'end':
+if $ARGS[0] = 'main':
 	$menu_loc = 'bed2'
 	$alarmloc = 'bed2'
-	$menu_arg = 'end'
-	$alarmarg = 'end'
+	$menu_arg = 'main'
+	$alarmarg = 'main'
 	menu_off = 0
 
 	if pcs_makeup ! 1 and cosmetic_tattoo = 0: *nl '<b><font color="red">You need to wash off your makeup before going to bed.</font></b>'
@@ -49,7 +49,7 @@ if $ARGS[0] = 'end':
 		'<center><img <<$set_imgh>> src="images/shared/home/bedroom/son.jpg"></center>'
 	end
 	*nl
-	'Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt ''bed2'', ''start''">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt ''bed2'', ''start''">ON</a>.')
+	'Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt ''bed2'', ''main''">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt ''bed2'', ''main''">ON</a>.')
 	*nl
 	gs 'bed2', 'wear_panties_decider'
 	*nl
@@ -84,11 +84,11 @@ end
 if $ARGS[0] = 'wear_panties_decider':
 	if hypnoPanty <= 0:
 		if sleepVars['bedPanty'] = 0:
-			'Will you always wear your underwear to bed? Currently - <a href="exec:sleepVars[''bedPanty''] = 1 & gs ''stat'' & gt ''bed2'', ''end''">AS IS</a>.'
+			'Will you always wear your underwear to bed? Currently - <a href="exec:sleepVars[''bedPanty''] = 1 & gs ''stat'' & gt ''bed2'', ''main''">AS IS</a>.'
 		elseif sleepVars['bedPanty'] = 1:
-			'Will you always wear your underwear to bed? Currently - <a href="exec:sleepVars[''bedPanty''] = 2 & gs ''stat'' & gt ''bed2'', ''end''">YES</a>.'
+			'Will you always wear your underwear to bed? Currently - <a href="exec:sleepVars[''bedPanty''] = 2 & gs ''stat'' & gt ''bed2'', ''main''">YES</a>.'
 		elseif sleepVars['bedPanty'] = 2:
-			'Will you always wear your underwear to bed? Currently - <a href="exec:sleepVars[''bedPanty''] = 0 & gs ''stat'' & gt ''bed2'', ''end''">NO</a>.'
+			'Will you always wear your underwear to bed? Currently - <a href="exec:sleepVars[''bedPanty''] = 0 & gs ''stat'' & gt ''bed2'', ''main''">NO</a>.'
 		end
 	end
 end
@@ -96,9 +96,9 @@ end
 if $ARGS[0] = 'wear_buttplug_decider':
 	if mc_inventory['buttplug'] = 1:
 		if sleepVars['bedAnal'] = 0:
-			'Should you always remove your anal plug before bed? Currently - <a href="exec:sleepVars[''bedAnal''] = 1 & gs ''stat'' & gt ''bed2'', ''end''">NO</a>.'
+			'Should you always remove your anal plug before bed? Currently - <a href="exec:sleepVars[''bedAnal''] = 1 & gs ''stat'' & gt ''bed2'', ''main''">NO</a>.'
 		elseif sleepVars['bedAnal'] = 1:
-			'Should you always remove your anal plug before bed? Currently - <a href="exec:sleepVars[''bedAnal''] = 0 & gs ''stat'' & gt ''bed2'', ''end''">YES</a>.'
+			'Should you always remove your anal plug before bed? Currently - <a href="exec:sleepVars[''bedAnal''] = 0 & gs ''stat'' & gt ''bed2'', ''main''">YES</a>.'
 		end
 	end
 end
@@ -106,9 +106,9 @@ end
 if $ARGS[0] = 'wear_vibe_decider':
 	if mc_inventory['vibe'] = 1 and sleepVars['cheatVib'] = 1:
 		if sleepVars['bedVibrator'] = 0:
-			'Should you always remove your vibrator before bed? Currently - <a href="exec:sleepVars[''bedVibrator''] = 1 & gs ''stat'' & gt ''bed2'', ''end''">NO</a>.'
+			'Should you always remove your vibrator before bed? Currently - <a href="exec:sleepVars[''bedVibrator''] = 1 & gs ''stat'' & gt ''bed2'', ''main''">NO</a>.'
 		elseif sleepVars['bedVibrator'] = 1:
-			'Should you always remove your vibrator before bed? Currently - <a href="exec:sleepVars[''bedVibrator''] = 0 & gs ''stat'' & gt ''bed2'', ''end''">YES</a>.'
+			'Should you always remove your vibrator before bed? Currently - <a href="exec:sleepVars[''bedVibrator''] = 0 & gs ''stat'' & gt ''bed2'', ''main''">YES</a>.'
 		end
 	end
 end

+ 16 - 10
locations/bed_events.qsrc

@@ -1,5 +1,4 @@
 # bed_events
-$sleep_loc = 'bed_events'
 menu_off = 1
 
 !! Bed events trigger after going to lie down on the bed, but before actually lying down in bed (and getting to choose to sleep, get out, read a book, etc)
@@ -37,7 +36,7 @@ end
 
 if $ARGS[0] = 'mod_sleepevents':
 	!! This location is here to allow mods to hook into the system.
-	!! Either check for: if $sleep_loc = 'bed_events' and $ARGS[0] = 'mod_sleepevents'
+	!! Either check for: if $ARGS[0] = 'bed_events' and $ARGS[1] = 'mod_sleepevents'
 	!!
 	!! You can add events as: $sleep_events[] = 'gs ''mod_loc'' ''mod_args0'' '
 	!! A random event will be chosen from amongst the added ones.
@@ -52,6 +51,7 @@ if $ARGS[0] = 'mod_sleepevents':
 	!! DO NOT DIRECTLY GOTO/GOSUB OUTOF THIS LOCATION. ALWAYS ADD IT TO THE QUEUEs!!!!
 	!! IT WILL ALMOST CERTIANLY END BADLY WHEN MORE THAN 1 MOD IS INVOLVED.
 
+	gs 'LOCA', 'bed_events', 'mod_sleepevents'
 	gt 'bed_events', 'event_handler'
 end
 
@@ -100,7 +100,6 @@ end
 
 if $ARGS[0] = 'exit':
 	sleepVars['events_done'] = 0
-	killvar '$sleep_loc'
 	killvar '$sleep_events'
 	killvar '$sleep_events_priority'
 	killvar 'temp_slev_id'
@@ -109,7 +108,6 @@ end
 
 if $ARGS[0] = 'continue':
 	sleepVars['events_done'] = 0
-	killvar '$sleep_loc'
 	killvar '$sleep_events'
 	killvar '$sleep_events_priority'
 	killvar 'temp_slev_id'
@@ -127,8 +125,15 @@ end
 	!!                                     !!
 	!!=====================================!!
 
-
 if $ARGS[0] = 'rab':
+	gt 'bed_events', 'rab2'
+end
+
+if $ARGS[0] = 'vor':
+	gt 'bed_events', 'vor2'
+end
+
+if $ARGS[0] = 'rab2':
 	menu_off = 1
 	minut += 120
 	houserabday = daystart
@@ -219,12 +224,11 @@ if $ARGS[0] = 'rab':
 	end
 end
 
-
-if $ARGS[0] = 'vor':
+if $ARGS[0] = 'vor2':
 	menu_off = 1
 	if rex['owned'] = 0:
 		'You''re lying in bed when you hear sounds from the hallway. You decide to get up and as you get to the door, you see two masked men.'
-		act 'Scream': gt 'bed_events', 'vor2'
+		act 'Scream': gt 'bed_events', 'vor3'
 
 	else
 		if dog_bravery = 0: 
@@ -233,7 +237,7 @@ if $ARGS[0] = 'vor':
 
 		if dog_bravery < 50:
 			'You''re lying in bed when you hear sounds from the hallway. You decide to get up and as you get to the door you see two masked men. <<$rex[''name'']>> is shivering in the corner.'
-			act 'Scream': gt 'bed_events', 'vor2'
+			act 'Scream': gt 'bed_events', 'vor3'
 		else
 			minut += 10
 			'You''re lying in bed when you suddenly hear a commotion out in the hallway. You get up to check it out and as you arrive, you see <<$rex[''name'']>> chase two masked men outside. You can hear loud swearing as they run down the stairs.'
@@ -257,7 +261,7 @@ if $ARGS[0] = 'vor':
 end
 
 
-if $ARGS[0] = 'vor2':
+if $ARGS[0] = 'vor3':
 	menu_off = 1
 	minut += 60
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/apartment/sex/g0.jpg"></center>'
@@ -356,12 +360,14 @@ if $ARGS[0] = 'mast':
 	pcs_vag += 1
 
 	if husband = 0 or strpos('bedr,bedr2x,korr,korr2x',$loc) <= 0 or husbandrink = 10:
+		gs 'bed_events', 'exit'
 		gt 'selfplay', 'start'
 	else
 		if mc_inventory['dildo_small'] = 0:
 			if week > 5 or week < 6 and hour > 16:
 				'You feel the need for something inside you and think that your husband would be a better option.'
 			else
+				gs 'bed_events', 'exit'
 				gt 'selfplay', 'start'
 			end
 		else

+ 3 - 4
locations/bed_get_out.qsrc

@@ -1,12 +1,11 @@
 # bed_get_out
-$sleep_loc = 'bed_get_out'
 
 
 if $ARGS[0] = 'start' or $ARGS[0] = '':
 	menu_off = 1
 	minut -= 1
 	InSleep = 0
-	slept_in = 0
+	sleepVars['slept_in'] = 0
 	strip_here = 0
 	SleepHorny = 0
 	!! to fudge the first hour wake up sleep loss.
@@ -16,17 +15,17 @@ end
 
 if $ARGS[0] = 'mod_sleeptriggers':
 	!! This location is here to allow mods to hook into the system.
-	!! Check for: if $sleep_loc = 'bed_get_out' and $ARGS[0] = 'mod_sleeptriggers'
+	!! Check for: if $ARGS[0] = 'bed_get_out' and $ARGS[1] = 'mod_sleeptriggers'
 	!!
 	!! This is NOT for events!!
 	
+	gs 'LOCA', 'bed_get_out', 'mod_sleeptriggers'
 	xgt 'bed_get_out_events', 'start'
 end
 
 
 if $ARGS[0] = 'end':
 	menu_off = 0
-	killvar '$sleep_loc'
 	if fullmorrout = 1:
 		if $loc = 'bedrPar':
 			gt 'vanrPar'

+ 3 - 6
locations/bed_get_out_events.qsrc

@@ -1,5 +1,4 @@
 # bed_get_out_events
-$sleep_loc = 'bed_get_out_events'
 menu_off = 1
 
 !! wakeup events trigger during when waking up
@@ -23,7 +22,7 @@ if $ARGS[0] = 'start' or $ARGS[0] = '':
 		sleepVars['events_done'] = 0
 		
 		if vomit['morning_sick'] = 1 or vomit['hangover'] = 1 or vomit['unlucky'] = 1:
-			$sleep_events[] = 'gt ''bed_get_out_events'', ''vomit'' '
+			$sleep_events[] = 'gs ''bed_get_out_events'', ''vomit'' '
 		end
 
 		xgt 'bed_get_out_events', 'mod_sleepevents'
@@ -34,7 +33,7 @@ end
 
 if $ARGS[0] = 'mod_sleepevents':
 	!! This location is here to allow mods to hook into the system.
-	!! Either check for: if $sleep_loc = 'bed_get_out_events' and $ARGS[0] = 'mod_sleepevents'
+	!! Either check for: if $ARGS[0] = 'bed_get_out_events' and $ARGS[1] = 'mod_sleepevents'
 	!!
 	!! You can add events as: $sleep_events[] = 'gs ''mod_loc'' ''mod_args0'' '
 	!! A random event will be chosen from amongst the added ones.
@@ -48,6 +47,7 @@ if $ARGS[0] = 'mod_sleepevents':
 	!! DO NOT DIRECTLY GOTO/GOSUB OUTOF THIS LOCATION. ALWAYS ADD IT TO THE QUEUEs!!!!
 	!! IT WILL ALMOST CERTIANLY END BADLY WHEN MORE THAN 1 MOD IS INVOLVED.
 
+	gs 'LOCA', 'bed_get_out_events', 'mod_sleepevents'
 	xgt 'bed_get_out_events', 'event_handler'
 end
 
@@ -97,7 +97,6 @@ end
 
 if $ARGS[0] = 'exit':
 	sleepVars['events_done'] = 0
-	killvar '$sleep_loc'
 	killvar '$sleep_events'
 	killvar '$sleep_events_priority'
 	killvar 'temp_slev_id'
@@ -106,7 +105,6 @@ end
 
 if $ARGS[0] = 'continue':
 	sleepVars['events_done'] = 0
-	killvar '$sleep_loc'
 	killvar '$sleep_events'
 	killvar '$sleep_events_priority'
 	killvar 'temp_slev_id'
@@ -127,7 +125,6 @@ end
 
 if $ARGS[0] = 'vomit':
 	gs 'bed_get_out_events', 'exit'
-
 	gt 'home_activity', 'vomiting_exit'
 end
 

+ 7 - 5
locations/bedrPar.qsrc

@@ -12,6 +12,8 @@ $locclass = 'bedr'
 gs 'themes', 'indoors'
 gs 'stat'
 gs 'family_schedule'
+!! ballet career
+gs 'core_library', 'init'
 
 !! This is runs only once, just to make sure that Sveta can sing from the start, does not have to wait a whole day for `cikl` to run.
 if ml_performance['max_perform_minutes'] = 0: ml_performance['max_perform_minutes'] = pcs_instrmusic + pcs_vokal
@@ -173,14 +175,14 @@ if $ARGS[0] = '' or $ARGS[0] = 'start':
 					'<a href="exec:gt ''sistersleep'', ''sister_sleep''">Anya</a> is asleep in her bed.'
 				elseif locat['Anya'] = 4:
 					sisterdialog = 3
-					'<a href="exec:gt ''sister_chat'', ''sister_chat''">Anya</a> is getting ready to go out.'
+					'<a href="exec:gt ''sister_chat'', ''talking''">Anya</a> is getting ready to go out.'
 				elseif locat['Anya'] = 15:
-					if anyaQW['bathroom_dildos'] > 0: gt 'sister_chat','bathroom_dildo_talk1'
-					'<a href="exec:gt ''sister_chat'', ''sister_chat''">Anya</a> is sitting on her bed, reading a book.'
-				elseif locat['Anya'] = 26:
+					if anyaQW['bathroom_dildos'] > 0:gt'sister_chat','bathroom_dildo_talk1'
+					'<a href="exec:gt ''sister_chat'', ''talking''">Anya</a> is sitting on her bed, reading a book.'
+				elseif locat['Anya'] = 26 or (locat['Anya'] = 1 and locat['Anya_party_day'] >= daystart - 1):
 					if sisboypartyQW = 1: sisboypartyQW = 2
 					if sisboyparty = -1: sisboyparty = 1
-					'A drunken Anya is sound asleep in her bed.'
+					'A drunken <a href="exec:gt ''sistersleep'', ''drunk_after_party''">Anya</a> is sound asleep in her bed.'
 				end
 			end
 		end

File diff suppressed because it is too large
+ 593 - 277
locations/body.qsrc


+ 137 - 138
locations/body_desc.qsrc

@@ -10,31 +10,30 @@
 }
 
 if $ARGS[0] = '':
-	$this = 'body_desc'
-	gs $this, 'throat'
-	gs $this, 'pussy'
-	gs $this, 'anus'
-	if dounspell = 0: gs $this, 'butt' & gs $this, 'breasts' & gs $this, 'BMI'
-	gs $this, 'lips'
-	gs $this, 'hair'
-	gs $this, 'tan'
-	gs $this, 'skin'
-	gs $this, 'eye_color'
-	gs $this, 'eyelashes'
-	gs $this, 'glasses'
-	gs $this, 'eye_size'
-	gs $this, 'makeup'
-	gs $this, 'nipples'
-	gs $this, 'clit'
-	gs $this, 'pubes'
-	gs $this, 'legs'
-	gs $this, 'appearance'
+	gs 'body_desc', 'throat'
+	gs 'body_desc', 'pussy'
+	gs 'body_desc', 'anus'
+	if dounspell = 0: gs 'body_desc', 'butt' & gs 'body_desc', 'breasts' & gs 'body_desc', 'BMI'
+	gs 'body_desc', 'lips'
+	gs 'body_desc', 'hair'
+	gs 'body_desc', 'tan'
+	gs 'body_desc', 'skin'
+	gs 'body_desc', 'eye_color'
+	gs 'body_desc', 'eyelashes'
+	gs 'body_desc', 'glasses'
+	gs 'body_desc', 'eye_size'
+	gs 'body_desc', 'makeup'
+	gs 'body_desc', 'nipples'
+	gs 'body_desc', 'clit'
+	gs 'body_desc', 'pubes'
+	gs 'body_desc', 'legs'
+	gs 'body_desc', 'appearance'
 end
 
 if $ARGS[0] = 'ChooseDescWord':
 	!{
 		This function picks a random descriptive word from $ARGS array and returns back the word
-		To implement, call func($this, 'ChooseDescWord', [desc word1], [desc word2], [desc word3], etc.)
+		To implement, call func('body_desc', 'ChooseDescWord', [desc word1], [desc word2], [desc word3], etc.)
 		return a string
 	}
 	$result = $ARGS[rand(2, arrsize('$ARGS')-1)]
@@ -89,31 +88,31 @@ if $ARGS[0] = 'pussy':
 			$pcs_vag = 'Your poor little <a href="exec:view''images/pc/body/pussy/stage5/' + rand(1,5) + '.jpg''">pussy</a> is broken from too much stuffing, it''ll need time to recover, ' + iif(stat['think_virgin'] = 0,'maybe you should skip the next gangbang?.','this can''t be right. What could be doing this to me?')
 		end
 		$pcs_vag_image = 'images/pc/body/pussy/stage5/' + rand(1,5) + '.jpg'
-		$pc_desc['pussy'] = func($this, 'ChooseDescWord', 'ruined', 'broken', 'proplapsed', 'destroyed', 'annihilated', 'obliterated','decimated')
+		$pc_desc['pussy'] = func('body_desc', 'ChooseDescWord', 'ruined', 'broken', 'proplapsed', 'destroyed', 'annihilated', 'obliterated','decimated')
 		$pc_descWordy['pussy'] = 'prolapsed, ruined, chasm of a'
 		$vaginatipe = 'ruined'
 	elseif vgape = 3:
 		$pcs_vag = 'You have a gaping hole of a <a href="exec:view''images/pc/body/pussy/stage4/' + rand(1,5) + '.jpg''">vagina</a>, ' + iif(stat['think_virgin'] = 0,'it has seen a lot of action.','how though? Maybe something is wrong with you, virgins don''t look like this.')
 		$pcs_vag_image = 'images/pc/body/pussy/stage4/' + rand(1,5) + '.jpg'
-		$pc_desc['pussy'] = func($this, 'ChooseDescWord', 'gaping', 'open', 'extended', 'wide')
+		$pc_desc['pussy'] = func('body_desc', 'ChooseDescWord', 'gaping', 'open', 'extended', 'wide')
 		$pc_descWordy['pussy'] = 'gaping and well used'
 		$vaginatipe = 'gaping'
 	elseif vgape = 2:
 		$pcs_vag = 'Your <a href="exec:view''images/pc/body/pussy/stage3/' + rand(1,5) + '.jpg''">vagina</a> looks like it has seen some action, ' + iif(stat['think_virgin'] = 0,'which it totally has.','which doesn''t make sense. You''re still a virgin.')
 		$pcs_vag_image = 'images/pc/body/pussy/stage3/' + rand(1,5) + '.jpg'
-		$pc_desc['pussy'] = func($this, 'ChooseDescWord', 'recovering', 'recently used', 'welcoming')
+		$pc_desc['pussy'] = func('body_desc', 'ChooseDescWord', 'recovering', 'recently used', 'welcoming')
 		$pc_descWordy['pussy'] = 'experienced, welcoming'
 		$vaginatipe = 'welcoming'
 	elseif vgape = 1 or pcs_vag > 10:
 		$pcs_vag = 'Your <a href="exec:view''images/pc/body/pussy/stage2/' + rand(1,5) + '.jpg''">pussy</a> looks like it has been used recently or is just well worn in, ' + iif(stat['think_virgin'] = 0,'maybe you''ve been over doing it?','which seems unfair for a virgin like yourself.')
 		$pcs_vag_image = 'images/pc/body/pussy/stage2/' + rand(1,5) + '.jpg'
-		$pc_desc['pussy'] = func($this, 'ChooseDescWord', 'pliable', 'used')
+		$pc_desc['pussy'] = func('body_desc', 'ChooseDescWord', 'pliable', 'used')
 		$pc_descWordy['pussy'] = 'worn in'
 		$vaginatipe = 'used'
 	elseif pcs_vag > 0:
 		$pcs_vag = 'Your <a href="exec:view''images/pc/body/pussy/stage1/' + rand(1,5) + '.jpg''">pussy</a> looks perfectly normal, ' + iif(stat['think_virgin'] = 0,'for someone sexually active.','just not as virginal as you would expect.')
 		$pcs_vag_image = 'images/pc/body/pussy/stage1/' + rand(1,5) + '.jpg'
-		$pc_desc['pussy'] = func($this, 'ChooseDescWord', 'snug', 'tight', 'cosy')
+		$pc_desc['pussy'] = func('body_desc', 'ChooseDescWord', 'snug', 'tight', 'cosy')
 		$pc_descWordy['pussy'] = 'tight and unused'
 		$vaginatipe = 'unused'
 	else
@@ -135,31 +134,31 @@ if $ARGS[0] = 'anus':
 			else
 				$pcs_ass = 'Your <a href="exec:view''images/pc/body/anus/stage5/' + rand(1,5) + '.jpg''">anus</a> is almost completely wrecked at this time. Even with conscious effort it''s hard to close it.'
 			end
-			$pc_desc['anus'] = func($this, 'ChooseDescWord', 'gaping', 'yawning', 'destroyed', 'demolished', 'uselessly loose','ruined', 'wrecked')
+			$pc_desc['anus'] = func('body_desc', 'ChooseDescWord', 'gaping', 'yawning', 'destroyed', 'demolished', 'uselessly loose','ruined', 'wrecked')
 			$pc_descWordy['anus'] = 'gaping, seemingly constantly-fucked'
 			$anustipe = 'gaping'
 		elseif agape = 3:
 			anpic = 4
 			$pcs_ass = 'Your <a href="exec:view''images/pc/body/anus/stage4/' + rand(1,5) + '.jpg''">anus</a> looks like a wide hole, it is clear you have recently been penetrated.'
-			$pc_desc['anus'] = func($this, 'ChooseDescWord', 'loose', 'casually open', 'routinely-fucked')
+			$pc_desc['anus'] = func('body_desc', 'ChooseDescWord', 'loose', 'casually open', 'routinely-fucked')
 			$pc_descWordy['anus'] = 'loose, open'
 			$anustipe = 'loose'
 		elseif agape = 2:
 			anpic = 3
 			$pcs_ass = 'Your <a href="exec:view''images/pc/body/anus/stage3/' + rand(1,5) + '.jpg''">anus</a> gapes a little from anal penetration, it should recover soon.'
-			$pc_desc['anus'] = func($this, 'ChooseDescWord', 'stretchy', 'welcomingly ready', 'experienced')
+			$pc_desc['anus'] = func('body_desc', 'ChooseDescWord', 'stretchy', 'welcomingly ready', 'experienced')
 			$pc_descWordy['anus'] = 'stretchy, regularly-fucked'
 			$anustipe = 'stretchy'
 		elseif agape = 1 or pcs_ass > 10:
 			anpic = 2
 			$pcs_ass = 'Your pliable <a href="exec:view''images/pc/body/anus/stage2/' + rand(1,5) + '.jpg''">anus</a> has the shape of an asterisk and has clearly been used.'
-			$pc_desc['anus'] = func($this, 'ChooseDescWord', 'flexible', 'slightly experienced', 'pliable')
+			$pc_desc['anus'] = func('body_desc', 'ChooseDescWord', 'flexible', 'slightly experienced', 'pliable')
 			$pc_descWordy['anus'] = 'flexible, still-snug'
 			$anustipe = 'flexible'
 		elseif pcs_ass > 0:
 			anpic = 1
 			$pcs_ass = 'Your <a href="exec:view''images/pc/body/anus/stage1/' + rand(1,5) + '.jpg''">anus</a> shows no sign of having been penetrated.'
-			$pc_desc['anus'] = func($this, 'ChooseDescWord', 'tight', 'tightly-clenching', 'snug')
+			$pc_desc['anus'] = func('body_desc', 'ChooseDescWord', 'tight', 'tightly-clenching', 'snug')
 			$pc_descWordy['anus'] = 'tight, scarcely-used'
 			$anustipe = 'tight'
 		else
@@ -212,7 +211,7 @@ if $ARGS[0] = 'breasts':
 	!! more noticeable on a thinner body than a heavier one. I have experimented with moving where the silicone is factored in to the body shape calculations, but ultimately there is just no better way to do it than how it is now, given the things that increase the amount
 	!! of silicone in the PC body. The best kludge I can make is working off of stored fat (pcs_weight does actually not do the job at all, as a fat PC and thin PC are almost the same, oddly, in my tests) and making an approximation from there. The amount of the silicone
 	!! variable does not really equate to any particular real-life cc calculation for implant size, so we cannot go off of that. This will have to do for now.
-	pcs_bustdisparity = (silicone/10) - salocatnow
+	pcs_bustdisparity = (bodyVars['bust_silicone']/10) - salocatnow
 
 	if pcs_bustdisparity >=1 and pcs_bustdisparity < 2:
 		$pcdesc_breastsqualifierinsertive = ''
@@ -249,7 +248,7 @@ if $ARGS[0] = 'breasts':
 		$pcdesc_breastsword = 'bolt-ons'
 		pcdesc_breastimplantcheck = 1
 	!! This triggers if they have fake breasts, but they are not obviously, blatantly fake breasts. In fact, this should be what triggers most of the time with a PC who has implants, given average cases.
-	elseif pcs_bustdisparity < 1 and silicone > 0:
+	elseif pcs_bustdisparity < 1 and bodyVars['bust_silicone'] > 0:
 		if pcs_cupsize <= 30:
 			$pcdesc_breastsword = 'breasts'
 		else
@@ -275,7 +274,7 @@ if $ARGS[0] = 'breasts':
 	if pcs_cupsize <= 5:
 		tits = 0
 		$titsize = 'AA cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'tiny', 'barely-there')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'tiny', 'barely-there')
 
 		!! Honestly, I am not even sure it is possible to have silicone and be this small. But just in case...
 		if pcdesc_breastimplantcheck = 1:
@@ -293,7 +292,7 @@ if $ARGS[0] = 'breasts':
 		elseif rand_breasts = 1:
 			$pcdesc_breastsrandom = 'smaller than a handful'
 		end
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'petite', 'smaller than a handful')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'petite', 'smaller than a handful')
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'barely modified<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
 		else
@@ -303,7 +302,7 @@ if $ARGS[0] = 'breasts':
 	elseif pcs_cupsize <= 15:
 		tits = 2
 		$titsize = 'B cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'small', 'sporty')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'small', 'sporty')
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'small, subtly augmented<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
 		else
@@ -313,7 +312,7 @@ if $ARGS[0] = 'breasts':
 	elseif pcs_cupsize <= 20:
 		tits = 3
 		$titsize = 'C cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'ample', 'average-sized')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'ample', 'average-sized')
 		!! At this point PCs should now be able to get the bolted-on look, so we need to be a bit more careful to avoid contradictions in descriptive phrasing. It is OK to have some repetition here for a cup size or two.
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'ample, silicone-padded<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
@@ -324,7 +323,7 @@ if $ARGS[0] = 'breasts':
 	elseif pcs_cupsize <= 25:
 		tits = 4
 		$titsize = 'D cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'full', 'hefty')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'full', 'hefty')
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'full, silicone-padded<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
 		else
@@ -334,7 +333,7 @@ if $ARGS[0] = 'breasts':
 	elseif pcs_cupsize <= 30:
 		tits = 5
 		$titsize = 'E cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'generous', 'heavy', 'fairly large')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'generous', 'heavy', 'fairly large')
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'heavy, fake<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
 		else
@@ -345,7 +344,7 @@ if $ARGS[0] = 'breasts':
 		!! From F cup and onward, breasts are now automatically referred to as tits, since that is how most others will see them. It is a subtle sexualisation, but it should be one that matches with the pre-generated descriptions from here on out.
 		tits = 6
 		$titsize = 'F cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'big', 'large')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'big', 'large')
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'big, implant-stuffed<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
 		else
@@ -355,7 +354,7 @@ if $ARGS[0] = 'breasts':
 	elseif pcs_cupsize <= 40:
 		tits = 7
 		$titsize = 'G cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'considerably large', 'quite large')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'considerably large', 'quite large')
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'considerably large, implant-stuffed<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
 		else
@@ -365,7 +364,7 @@ if $ARGS[0] = 'breasts':
 	elseif pcs_cupsize <= 45:
 		tits = 8
 		$titsize = 'H cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'extremely large', 'incredibly stacked')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'extremely large', 'incredibly stacked')
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'extremely large, silicone-stuffed<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
 		else
@@ -375,7 +374,7 @@ if $ARGS[0] = 'breasts':
 	elseif pcs_cupsize <= 50:
 		tits = 9
 		$titsize = 'I cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'huge', 'impractically big', 'figure-dominating')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'huge', 'impractically big', 'figure-dominating')
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'huge, silicone-swollen<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
 		else
@@ -385,7 +384,7 @@ if $ARGS[0] = 'breasts':
 	elseif pcs_cupsize <= 55:
 		tits = 10
 		$titsize = 'J cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'massive', 'enormous')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'massive', 'enormous')
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'massively fake<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
 		else
@@ -395,7 +394,7 @@ if $ARGS[0] = 'breasts':
 	else
 		tits = 11
 		$titsize = 'K cup'
-		$pc_desc['breast'] = func($this, 'ChooseDescWord', 'whorishly oversized', 'fucktoy-appropriate','ridiculously big')
+		$pc_desc['breast'] = func('body_desc', 'ChooseDescWord', 'whorishly oversized', 'fucktoy-appropriate','ridiculously big')
 		if pcdesc_breastimplantcheck = 1:
 			$pc_descWordy['breast'] = 'whorishly oversized<<$pcdesc_breastsqualifierinsertive>> <<$pcdesc_breastsword>>'
 		else
@@ -418,7 +417,7 @@ if $ARGS[0] = 'butt':
 	end
 
 	!have butt implant
-	if silicone_butt > 0:
+	if bodyVars['butt_silicone'] > 0:
 		buttpic = 4
 		$pcs_butt = 'Through the use of implants, you have given yourself a jiggly bubble <a href="exec:view''images/pc/body/ass/4.jpg''">butt</a>.'
 	end
@@ -427,24 +426,24 @@ end
 if $ARGS[0] = 'lips':
 	if pcs_lip <= 0:
 		pcs_lip = 0
-		$pc_desc['lip size'] = func($this, 'ChooseDescWord', 'thin', 'narrow', 'slender')
+		$pc_desc['lip size'] = func('body_desc', 'ChooseDescWord', 'thin', 'narrow', 'slender')
 		$pcs_lipSize = 'thin'
 		$pc_descWordy['lip size'] = 'thin, scarcely-noticeable'
 	elseif pcs_lip = 1:
-		$pc_desc['lip size'] = func($this, 'ChooseDescWord', 'kissable', 'normal')
+		$pc_desc['lip size'] = func('body_desc', 'ChooseDescWord', 'kissable', 'normal')
 		$pcs_lipSize = 'normal'
 		$pc_descWordy['lip size'] = 'kissable, if average'
 	elseif pcs_lip = 2:
-		$pc_desc['lip size'] = func($this, 'ChooseDescWord', 'plump', 'full', 'inviting')
+		$pc_desc['lip size'] = func('body_desc', 'ChooseDescWord', 'plump', 'full', 'inviting')
 		$pcs_lipSize = 'plump'
 		$pc_descWordy['lip size'] = 'invitingly full'
 	elseif pcs_lip = 3:
-		$pc_desc['lip size'] = func($this, 'ChooseDescWord', 'thick', 'big', 'pouty')
+		$pc_desc['lip size'] = func('body_desc', 'ChooseDescWord', 'thick', 'big', 'pouty')
 		$pcs_lipSize = 'big, pouting'
 		$pc_descWordy['lip size'] = 'big, pouty and full'
 	else
 		pcs_lip = 4
-		$pc_desc['lip size'] = func($this, 'ChooseDescWord', 'fat', 'pillowy', 'plush')
+		$pc_desc['lip size'] = func('body_desc', 'ChooseDescWord', 'fat', 'pillowy', 'plush')
 		$pcs_lipSize = 'pillowy'
 		$pc_descWordy['lip size'] = 'plush, pillowy and inviting'
 	end
@@ -452,7 +451,7 @@ if $ARGS[0] = 'lips':
 	!! $pcdesc_lipglossed is used for a past-tense descriptive, present-tense descriptives will use $pcdesc_lipgloss. In most cases, the lip balm descriptors should only add options when looking at random choices, as the additional random options are merely indicative of
 	!! a more suggestive lip shape and fullness, not necessarily a different type of gloss. Only shiny is culled past 1, because it is boring. $pcs_lipbalm is left for backwards compatibility.
 	if pcs_lipbalm > 0:
-		$pc_desc['lip gloss'] = func($this, 'ChooseDescWord', 'shiny', 'glossy', 'juicy', 'slippery')
+		$pc_desc['lip gloss'] = func('body_desc', 'ChooseDescWord', 'shiny', 'glossy', 'juicy', 'slippery')
 		$pc_desc['lip glossed'] = 'glossed'
 		if pcs_lip = 1:
 			$pcs_lipbalm  = 'shiny'
@@ -488,28 +487,28 @@ end
 if $ARGS[0] = 'tan':
 	!! The solarium increases tan value by 10,  and the beach increases it by 1 or 3 based on whether or not you use sunblock (counterintuitively, sunblock increases it by 3, not 1 -- I think suntan lotion was meant, which is actually a different thing)
 	if pcs_tan = 0:
-		$pc_desc['tan'] = func($this, 'ChooseDescWord', 'pale', 'alabaster', 'porcelain', 'fair')
+		$pc_desc['tan'] = func('body_desc', 'ChooseDescWord', 'pale', 'alabaster', 'porcelain', 'fair')
 		$pc_descWordy['tan'] = 'pale, alabaster'
 		$pcs_tan = 'pale'
 	elseif pcs_tan > 0 and pcs_tan <= 5:
-		$pc_desc['tan'] = func($this, 'ChooseDescWord', 'lightly tanned', 'barely tanned', 'scarcely darkened')
+		$pc_desc['tan'] = func('body_desc', 'ChooseDescWord', 'lightly tanned', 'barely tanned', 'scarcely darkened')
 		$pc_descWordy['tan'] = 'just barely sun-kissed'
 		$pcs_tan = 'faintly tanned'
 	elseif pcs_tan > 5 and pcs_tan <= 10:
-		$pc_desc['tan'] = func($this, 'ChooseDescWord', 'tanned', 'lightly bronzed', 'sun-kissed', 'lightly browned')
+		$pc_desc['tan'] = func('body_desc', 'ChooseDescWord', 'tanned', 'lightly bronzed', 'sun-kissed', 'lightly browned')
 		$pc_descWordy['tan'] = 'gently sun-kissed'
 		$pcs_tan = 'tanned'
 	elseif pcs_tan > 10 and pcs_tan <= 25:
-		$pc_desc['tan'] = func($this, 'ChooseDescWord', 'bronzed', 'browned', 'light caramel')
+		$pc_desc['tan'] = func('body_desc', 'ChooseDescWord', 'bronzed', 'browned', 'light caramel')
 		$pc_descWordy['tan'] = 'sun-swept, beach-bunny brown'
 		$pcs_tan = 'bronzed'
 	elseif pcs_tan > 25 and pcs_tan <= 50:
-		$pc_desc['tan'] = func($this, 'ChooseDescWord', 'deeply tanned', 'very dark', 'richly browned', 'tawny')
+		$pc_desc['tan'] = func('body_desc', 'ChooseDescWord', 'deeply tanned', 'very dark', 'richly browned', 'tawny')
 		$pc_descWordy['tan'] = 'dark, richly browned'
 		$pcs_tan = 'deeply tanned'
 	else
 		!! This would take some very intentional tanorexia
-		$pc_desc['tan'] = func($this, 'ChooseDescWord', 'extremely darkly tanned', 'nearly unnaturally darkened', 'dark, desert-tanned')
+		$pc_desc['tan'] = func('body_desc', 'ChooseDescWord', 'extremely darkly tanned', 'nearly unnaturally darkened', 'dark, desert-tanned')
 		$pc_descWordy['tan'] = 'practically swarthy'
 		$pcs_tan = 'extremely darkly tanned'
 	end
@@ -517,23 +516,23 @@ end
 
 if $ARGS[0] = 'skin':
 	if pcs_skin < 200:
-		$pc_desc['skin'] = func($this, 'ChooseDescWord', 'terrible', 'awful', 'greasy', 'pimple-strewn')
+		$pc_desc['skin'] = func('body_desc', 'ChooseDescWord', 'terrible', 'awful', 'greasy', 'pimple-strewn')
 		$pc_descWordy['skin'] = 'awful, greasy and pimply'
 		$skin = 'Your <<$pcs_tan>> skin is rough and covered with pimples and moles. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
 	elseif pcs_skin < 400:
-		$pc_desc['skin'] = func($this, 'ChooseDescWord', 'bad', 'greasy', 'rough', 'unappealing')
+		$pc_desc['skin'] = func('body_desc', 'ChooseDescWord', 'bad', 'greasy', 'rough', 'unappealing')
 		$pc_descWordy['skin'] = 'poorly-kept, unappealing'
 		$skin = 'Your <<$pcs_tan>> skin is rough and has a few pimples. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
 	elseif pcs_skin < 600:
-		$pc_desc['skin'] = func($this, 'ChooseDescWord', 'average', 'normal', 'clear')
+		$pc_desc['skin'] = func('body_desc', 'ChooseDescWord', 'average', 'normal', 'clear')
 		$pc_descWordy['skin'] = 'normal, slightly rough'
 		$skin = 'Your <<$pcs_tan>> skin is clear of acne but still slightly rough. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
 	elseif pcs_skin < 800:
-		$pc_desc['skin'] = func($this, 'ChooseDescWord', 'good', 'nice', 'smooth', 'great', 'well-kept')
+		$pc_desc['skin'] = func('body_desc', 'ChooseDescWord', 'good', 'nice', 'smooth', 'great', 'well-kept')
 		$pc_descWordy['skin'] = 'smooth, well-kept'
 		$skin = 'You have <<$pcs_tan>>, smooth and well-groomed skin. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
 	else
-		$pc_desc['skin'] = func($this, 'ChooseDescWord', 'excellent', 'silken', 'soft', 'silky', 'immaculate')
+		$pc_desc['skin'] = func('body_desc', 'ChooseDescWord', 'excellent', 'silken', 'soft', 'silky', 'immaculate')
 		$pc_descWordy['skin'] = 'immaculate, silky-soft'
 		$skin = 'You have <<$pcs_tan>> and very smooth skin which almost feels like silk to the touch. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
 	end
@@ -548,22 +547,22 @@ if $ARGS[0] = 'eyelashes':
 	end
 
 	if pcs_lashes >= 5:
-		$pc_desc['eyelashes'] = func($this, 'ChooseDescWord', 'long, jewel-dusted', 'incredibly extravagant','overwhelmingly indulgent','jewel-sparkled, showgirl')
+		$pc_desc['eyelashes'] = func('body_desc', 'ChooseDescWord', 'long, jewel-dusted', 'incredibly extravagant','overwhelmingly indulgent','jewel-sparkled, showgirl')
 		$pc_descWordy['eyelashes'] = 'incredibly extravagant, jewel-dusted'
 		$pcs_lashes = 'with over-the-top, jewel-dusted eyelash extensions'
 	elseif pcs_lashes = 4:
 		if false_lashes >= 1:
-			$pc_desc['eyelashes'] = func($this, 'ChooseDescWord', 'mink-feathered', 'attention-grabbing','intoxicatingly seductive false','wildly flirtatious false')
+			$pc_desc['eyelashes'] = func('body_desc', 'ChooseDescWord', 'mink-feathered', 'attention-grabbing','intoxicatingly seductive false','wildly flirtatious false')
 			$pcs_lashes = 'with fabulous, mink-feathered false lashes'
 			$pc_descWordy['eyelashes'] = 'fabulous, mink-feathered false'
 		else
-			$pc_desc['eyelashes'] = func($this, 'ChooseDescWord', 'amazingly lengthy', 'show-stealing','incredibly lush','stunningly dark and full')
+			$pc_desc['eyelashes'] = func('body_desc', 'ChooseDescWord', 'amazingly lengthy', 'show-stealing','incredibly lush','stunningly dark and full')
 			$pcs_lashes = 'with stunningly dark and full lash extensions'
 			$pc_descWordy['eyelashes'] = 'stunningly dark and full, show-stealing'
 		end
 
 	elseif pcs_lashes = 3:
-		$pc_desc['eyelashes'] = func($this, 'ChooseDescWord', 'lavish', 'lush, dark','seductively-curled','flirtatiously lengthy')
+		$pc_desc['eyelashes'] = func('body_desc', 'ChooseDescWord', 'lavish', 'lush, dark','seductively-curled','flirtatiously lengthy')
 
 		if false_lashes >= 1:
 			$pcs_lashes = 'with lavish, fluttery false lashes'
@@ -574,7 +573,7 @@ if $ARGS[0] = 'eyelashes':
 		end
 
 	elseif pcs_lashes = 2:
-		$pc_desc['eyelashes'] = func($this, 'ChooseDescWord', 'lengthy', 'long','fluttery','seductive')
+		$pc_desc['eyelashes'] = func('body_desc', 'ChooseDescWord', 'lengthy', 'long','fluttery','seductive')
 		$pc_descWordy['eyelashes'] = 'long, fluttery'
 		$pcs_lashes = 'with long eyelashes'
 
@@ -584,7 +583,7 @@ if $ARGS[0] = 'eyelashes':
 		$pcs_lashes = 'with average eyelashes'
 
 	elseif pcs_lashes = 0:
-		$pc_desc['eyelashes'] = func($this, 'ChooseDescWord', 'short', 'scarce','faint')
+		$pc_desc['eyelashes'] = func('body_desc', 'ChooseDescWord', 'short', 'scarce','faint')
 		$pc_descWordy['eyelashes'] = 'short, barely-noticeable'
 		$pcs_lashes = 'with short eyelashes'
 	end
@@ -595,11 +594,11 @@ if $ARGS[0] = 'glasses':
 	!! I changed glassvnesh back to 5 for wearing basic glasses. Boys do not make passes at girls who wear glasses.
 	!! Most of these descriptive variables are for describing cum, they would not be reliable for much else. They are used in the context of looking through something.
 	if glass >= 2:
-		$pc_desc['vision'] = func($this, 'ChooseDescWord', 'glasses', 'lenses')
+		$pc_desc['vision'] = func('body_desc', 'ChooseDescWord', 'glasses', 'lenses')
 		$pc_descWordy['vision'] = 'chic, stylish glasses'
 		$glass = ' You wear glasses.'
 	elseif glass = 1:
-		$pc_desc['vision'] = func($this, 'ChooseDescWord', 'glasses', 'lenses', 'dorky glasses', 'geeky lenses')
+		$pc_desc['vision'] = func('body_desc', 'ChooseDescWord', 'glasses', 'lenses', 'dorky glasses', 'geeky lenses')
 		$pc_descWordy['vision'] = 'cheap, utilitarian glasses'
 		$glass = ' You wear silly glasses in a cheap frame.'
 	else
@@ -611,19 +610,19 @@ end
 
 if $ARGS[0] = 'eye_color':
 	if pcs_eyecol = 0:
-		$pc_desc['eye colour'] = func($this, 'ChooseDescWord', 'brown', 'hazel')
+		$pc_desc['eye colour'] = func('body_desc', 'ChooseDescWord', 'brown', 'hazel')
 		$pc_descWordy['eye colour'] = 'warm, hazel'
 		$pcs_eyecol = 'brown'
 	elseif pcs_eyecol = 1:
-		$pc_desc['eye colour'] = func($this, 'ChooseDescWord', 'pale', 'grey', 'silvery')
+		$pc_desc['eye colour'] = func('body_desc', 'ChooseDescWord', 'pale', 'grey', 'silvery')
 		$pc_descWordy['eye colour'] = 'pale, silvery-grey'
 		$pcs_eyecol = 'grey'
 	elseif pcs_eyecol = 2:
-		$pc_desc['eye colour'] = func($this, 'ChooseDescWord', 'green', 'emerald')
+		$pc_desc['eye colour'] = func('body_desc', 'ChooseDescWord', 'green', 'emerald')
 		$pc_descWordy['eye colour'] = 'sparkling green'
 		$pcs_eyecol = 'green'
 	elseif pcs_eyecol = 3:
-		$pc_desc['eye colour'] = func($this, 'ChooseDescWord', 'blue', 'sapphire')
+		$pc_desc['eye colour'] = func('body_desc', 'ChooseDescWord', 'blue', 'sapphire')
 		$pc_descWordy['eye colour'] = 'vibrant, crystal blue'
 		$pcs_eyecol = 'blue'
 	else
@@ -760,43 +759,43 @@ end
 
 if $ARGS[0] = 'makeup':
 	if pcs_makeup = 0:
-		$pc_desc['makeup'] = func($this, 'ChooseDescWord', 'makeup-ruined', 'makeup-smeared', 'makeup-trashed')
+		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'makeup-ruined', 'makeup-smeared', 'makeup-trashed')
 		$pc_descWordy['makeup'] = 'clownishly makeup-smeared'
 		$pcs_makeup = '<b><font color="red">Your makeup is smeared all over your face</font></b>'
 		$pcs_makeup_msg = 'Your makeup is smeared all over your face.'
 		$pcs_makeup_tooltip = 'Your makeup is ruined.'
 	elseif pcs_makeup = 1:
-		$pc_desc['makeup'] = func($this, 'ChooseDescWord', 'natural', 'bare')
+		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'natural', 'bare')
 		$pc_descWordy['makeup'] = 'bare, natural'
 		$pcs_makeup = 'You''re not wearing any kind of makeup'
 		$pcs_makeup_msg = 'You''re not wearing any kind of makeup.'
 		$pcs_makeup_tooltip = 'You''re not wearing makeup.'
 	elseif pcs_makeup = 2:
-		$pc_desc['makeup'] = func($this, 'ChooseDescWord', 'lightly-accented', 'subtly-highlighted')
+		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'lightly-accented', 'subtly-highlighted')
 		$pc_descWordy['makeup'] = 'almost natural, subtly-accented'
 		$pcs_makeup = 'Your makeup is light and subtle, with neutral tones to bring out your natural beauty'
 		$pcs_makeup_msg = 'Your makeup is light and subtle, with neutral tones to bring out your natural beauty.'
 		$pcs_makeup_tooltip = 'Your makeup is light and subtle.'
 	elseif pcs_makeup = 3:
-		$pc_desc['makeup'] = func($this, 'ChooseDescWord', 'colourfully done-up', 'vibrantly done-up')
+		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'colourfully done-up', 'vibrantly done-up')
 		$pc_descWordy['makeup'] = 'colourful, tastefully done-up'
 		$pcs_makeup = 'Your makeup has some mildly vibrant tones, covering your minor imperfections and enhancing your best features'
 		$pcs_makeup_msg = 'Your makeup has some mildly vibrant tones, covering your minor imperfections and enhancing your best features.'
 		$pcs_makeup_tooltip = 'Your makeup has some mildly vibrant tones.'
 	elseif pcs_makeup = 4:
-		$pc_desc['makeup'] = func($this, 'ChooseDescWord', 'painted-on', 'makeup-caked', 'dolled-up', 'sultry, dramatically done-up')
+		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'painted-on', 'makeup-caked', 'dolled-up', 'sultry, dramatically done-up')
 		$pc_descWordy['makeup'] = 'heavily dolled-up and painted'
 		$pcs_makeup = 'Your makeup is thick enough to cover most imperfections, with rich shades drawing attention to your eyes and lips'
 		$pcs_makeup_msg = 'Your makeup is thick enough to cover most imperfections, with rich shades drawing attention to your eyes and lips.'
 		$pcs_makeup_tooltip = 'Your makeup is thick enough to cover most imperfections.'
 	elseif pcs_makeup = 5:
-		$pc_desc['makeup'] = func($this, 'ChooseDescWord', 'painted-on', 'makeup-caked', 'dolled-up', 'sultry, dramatically done-up')
+		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'painted-on', 'makeup-caked', 'dolled-up', 'sultry, dramatically done-up')
 		$pc_descWordy['makeup'] = 'heavily dolled-up and painted'
 		$pcs_makeup = 'Your makeup is professional grade, covering up any and all imperfections and flawlessly complimenting the natural hues of your eyes, face, and hair'
 		$pcs_makeup_msg = 'Your makeup is professional grade, covering up any and all imperfections and flawlessly complimenting the natural hues of your eyes, face, and hair.'
 		$pcs_makeup_tooltip = 'Your makeup is professional grade.'
 	elseif pcs_makeup = 6:
-		$pc_desc['makeup'] = func($this, 'ChooseDescWord', 'bimbo', 'hawt', 'O M G', 'just, the best')
+		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'bimbo', 'hawt', 'O M G', 'just, the best')
 		$pc_descWordy['makeup'] = 'really fucking bimbo-y'
 		$pcs_makeup = 'You look, like super hawt and everyone is so jelly because their makeup is boring and ugly.'
 		$pcs_makeup_msg = 'You look, like super hawt and everyone is so jelly because their makeup is boring and ugly.'
@@ -807,24 +806,24 @@ end
 if $ARGS[0] = 'nipples':
 	if pcs_nips < 20:
 		$nipplesize = 'You have average <a href="exec:view''images/pc/body/nipples/nipples1.jpg''">nipples</a>.'
-		$pc_desc['nipples'] = func($this, 'ChooseDescWord', 'small', 'tiny', 'little')
+		$pc_desc['nipples'] = func('body_desc', 'ChooseDescWord', 'small', 'tiny', 'little')
 		$pc_descWordy['nipples'] = 'small, tiny'
 	elseif pcs_nips >= 20 and pcs_nips < 40:
 		$nipplesize = 'Your <a href="exec:view''images/pc/body/nipples/nipples2.jpg''">nipples</a> are slightly on the large side.'
-		$pc_desc['nipples'] = func($this, 'ChooseDescWord', 'slightly large', 'decently-sized')
+		$pc_desc['nipples'] = func('body_desc', 'ChooseDescWord', 'slightly large', 'decently-sized')
 		$pc_descWordy['nipples'] = 'slightly large'
 	elseif pcs_nips >= 40 and pcs_nips < 60:
 		$nipplesize = 'You have large, puffy <a href="exec:view''images/pc/body/nipples/nipples3.jpg''">nipples</a>.'
-		$pc_desc['nipples'] = func($this, 'ChooseDescWord', 'puffy', 'swollen', 'large')
+		$pc_desc['nipples'] = func('body_desc', 'ChooseDescWord', 'puffy', 'swollen', 'large')
 		$pc_descWordy['nipples'] = 'large, puffy'
 	elseif pcs_nips >= 60 and pcs_nips < 80:
 		$nipplesize = 'Your <a href="exec:view''images/pc/body/nipples/nipples4.jpg''">nipples</a> are the size of radio knobs.'
-		$pc_desc['nipples'] = func($this, 'ChooseDescWord', 'big', 'thick')
+		$pc_desc['nipples'] = func('body_desc', 'ChooseDescWord', 'big', 'thick')
 		$pc_descWordy['nipples'] = 'big, thick'
 	else
 		!! If greater or equal to 80
 		$nipplesize = 'You have huge <a href="exec:view''images/pc/body/nipples/nipples5.jpg''">nipples</a>.'
-		$pc_desc['nipples'] = func($this, 'ChooseDescWord', 'enormous', 'meaty', 'huge', 'unmistakably big')
+		$pc_desc['nipples'] = func('body_desc', 'ChooseDescWord', 'enormous', 'meaty', 'huge', 'unmistakably big')
 		$pc_descWordy['nipples'] = 'huge, meaty'
 	end
 end
@@ -832,23 +831,23 @@ end
 if $ARGS[0] = 'clit':
 	if clit_size < 20:
 		$pc_descWordy['clit'] = 'small, oft-hidden'
-		$pc_desc['clit'] = func($this, 'ChooseDescWord', 'small', 'tiny')
+		$pc_desc['clit'] = func('body_desc', 'ChooseDescWord', 'small', 'tiny')
 		$clitsize = 'You consider your <a href="exec:view''images/pc/body/clit/clit1.jpg''">clitoris</a> to be of an average size.'
 	elseif clit_size >= 20 and clit_size < 40:
 		$pc_descWordy['clit'] = 'big, easily-found'
-		$pc_desc['clit'] = func($this, 'ChooseDescWord', 'large', 'big', 'engorged')
+		$pc_desc['clit'] = func('body_desc', 'ChooseDescWord', 'large', 'big', 'engorged')
 		$clitsize = 'You feel your <a href="exec:view''images/pc/body/clit/clit2.jpg''">clitoris</a> is somewhat on the large side.'
 	elseif clit_size >= 40 and clit_size < 60:
 		$pc_descWordy['clit'] = 'thick, meaty'
-		$pc_desc['clit'] = func($this, 'ChooseDescWord', 'meaty', 'thick', 'swollen')
+		$pc_desc['clit'] = func('body_desc', 'ChooseDescWord', 'meaty', 'thick', 'swollen')
 		$clitsize = 'Your <a href="exec:view''images/pc/body/clit/clit3.jpg''">clit</a> is quite large.'
 	elseif clit_size >= 60 and clit_size < 80:
 		$pc_descWordy['clit'] = 'big, practically phallic'
-		$pc_desc['clit'] = func($this, 'ChooseDescWord', 'oversized', 'huge')
+		$pc_desc['clit'] = func('body_desc', 'ChooseDescWord', 'oversized', 'huge')
 		$clitsize = 'You have a big <a href="exec:view''images/pc/body/clit/clit4.jpg''">clit</a> that resembles a penis.'
 	else
 		!! If greater or equal to 80
-		$pc_desc['clit'] = func($this, 'ChooseDescWord', 'huge', 'massive', 'cock-like')
+		$pc_desc['clit'] = func('body_desc', 'ChooseDescWord', 'huge', 'massive', 'cock-like')
 		$pc_descWordy['clit'] = 'enormous, phallic'
 		$clitsize = 'Your <a href="exec:view''images/pc/body/clit/clit5.jpg''">clit</a> is so large it can be mistaken for a penis.'
 	end
@@ -860,19 +859,19 @@ if $ARGS[0] = 'pubes':
 		if pcs_pubes <= 3:
 			lobkoef = 3
 			$pcs_pubes = 'You have a smoothly <a href="exec:view''<<FUNC(''$pube_image'')>>''">shaved pussy</a>. <<$pirspiz>><br><<$clitsize>>'
-			$pc_desc['pubes'] = func($this, 'ChooseDescWord', 'silky', 'hairless', 'smooth-shaven', 'freshly-shaven')
+			$pc_desc['pubes'] = func('body_desc', 'ChooseDescWord', 'silky', 'hairless', 'smooth-shaven', 'freshly-shaven')
 			$pc_descWordy['pubes'] = 'silky, freshly-shaven'
 			$pube_style['word'] = 'shaved'
 		elseif pcs_pubes <= 10:
 			lobkoef = 0
 			$pcs_pubes = 'You have stubble growing around your <a href="exec:view''<<FUNC(''$pube_image'')>>''">pussy</a>. <<$pirspiz>><br><<$clitsize>>'
-			$pc_desc['pubes'] = func($this, 'ChooseDescWord', 'stubbly', 'scratchy', 'roughly-stubbled')
+			$pc_desc['pubes'] = func('body_desc', 'ChooseDescWord', 'stubbly', 'scratchy', 'roughly-stubbled')
 			$pc_descWordy['pubes'] = 'scratchy, roughly-stubbled'
 			$pube_style['word'] = 'stubble'
 		elseif pcs_pubes <= 15:
 			lobkoef = 0
 			$pcs_pubes = 'You have a tidy patch of hair growing above your <a href="exec:view''<<FUNC(''$pube_image'')>>''">pussy</a>. <<$pirspiz>><br><<$clitsize>>'
-			$pc_desc['pubes'] = func($this, 'ChooseDescWord', 'almost bare', 'barely-haired', 'well-kept')
+			$pc_desc['pubes'] = func('body_desc', 'ChooseDescWord', 'almost bare', 'barely-haired', 'well-kept')
 			$pc_descWordy['pubes'] = 'scratchy, roughly-stubbled'
 			$pube_style['word'] = 'patch'
 		elseif pcs_pubes <= 25:
@@ -910,23 +909,23 @@ if $ARGS[0] = 'pubes':
 					$pcs_pubes = 'You have a close-cropped lawn of pubic hair covering your <a href="exec:view''<<FUNC(''$pube_image'')>>''">pussy</a>. <<$pirspiz>><br><<$clitsize>>'
 				end
 			end
-			$pc_desc['pubes'] = func($this, 'ChooseDescWord', 'wispy-haired', 'lightly-furred', 'trimmed', 'well-maintained')
+			$pc_desc['pubes'] = func('body_desc', 'ChooseDescWord', 'wispy-haired', 'lightly-furred', 'trimmed', 'well-maintained')
 			$pc_descWordy['pubes'] = 'trimmed, well-kept'
 		elseif pcs_pubes <= 30:
 			lobkoef = 0
 			$pcs_pubes = 'You have a bushy but well-maintained mat of <a href="exec:view''<<FUNC(''$pube_image'')>>''">pubic hair</a>. <<$pirspiz>><br><<$clitsize>>'
-			$pc_desc['pubes'] = func($this, 'ChooseDescWord', 'furred', 'bushy', 'partially-maintained')
+			$pc_desc['pubes'] = func('body_desc', 'ChooseDescWord', 'furred', 'bushy', 'partially-maintained')
 			$pc_descWordy['pubes'] = 'bushy, thick'
 			$pube_style['word'] = 'bush'
 		elseif pcs_pubes >= 40:
 			lobkoef = 0
 			$pcs_pubes = 'You have a wild and unkempt jungle of <a href="exec:view''<<FUNC(''$pube_image'')>>''">pubic hair</a>. <<$pirspiz>><br><<$clitsize>>'
-			$pc_desc['pubes'] = func($this, 'ChooseDescWord', 'thickly-furred', 'very hairy', 'ill-maintained')
+			$pc_desc['pubes'] = func('body_desc', 'ChooseDescWord', 'thickly-furred', 'very hairy', 'ill-maintained')
 			$pc_descWordy['pubes'] = 'hairy, wild-maned'
 			$pube_style['word'] = 'untrimmed'
 		end
 	elseif lashair = 1:
-		$pc_desc['pubes'] = func($this, 'ChooseDescWord', 'hairless', 'smooth', 'bald', 'silky-smooth')
+		$pc_desc['pubes'] = func('body_desc', 'ChooseDescWord', 'hairless', 'smooth', 'bald', 'silky-smooth')
 		$pc_descWordy['pubes'] = 'eternally silky-smooth'
 		$pcs_pubes = 'You have a smooth, <a href="exec:view''<<FUNC(''$pube_image'')>>''">bald pussy</a>. <<$pirspiz>><br><<$clitsize>>'
 		$pube_style['word'] = 'shaved'
@@ -979,19 +978,19 @@ end
 
 if $ARGS[0] = 'legs':
 	if pcs_leghair <= 0:
-		$pc_desc['legs'] = func($this, 'ChooseDescWord', 'smooth', 'silky', 'soft')
+		$pc_desc['legs'] = func('body_desc', 'ChooseDescWord', 'smooth', 'silky', 'soft')
 		$pc_descWordy['legs'] = 'soft and silky-smooth'
 		$pcs_leghair = 'You have smooth legs.'
 	elseif pcs_leghair <= 3:
-		$pc_desc['legs'] = func($this, 'ChooseDescWord', 'slightly scratchy', 'faintly stubbly')
+		$pc_desc['legs'] = func('body_desc', 'ChooseDescWord', 'slightly scratchy', 'faintly stubbly')
 		$pc_descWordy['legs'] = 'slightly rough, invisibly-stubbled'
 		$pcs_leghair = 'You can''t see any hair, but your legs feel rough to the touch.'
 	elseif pcs_leghair <= 6:
-		$pc_desc['legs'] = func($this, 'ChooseDescWord', 'somewhat hairy', 'lightly-furred')
+		$pc_desc['legs'] = func('body_desc', 'ChooseDescWord', 'somewhat hairy', 'lightly-furred')
 		$pc_descWordy['legs'] = 'lightly-furred, soft-haired'
 		$pcs_leghair = 'You have light and just barely visible hair on your legs.'
 	else
-		$pc_desc['legs'] = func($this, 'ChooseDescWord', 'hairy', 'unshaven', 'ungroomed')
+		$pc_desc['legs'] = func('body_desc', 'ChooseDescWord', 'hairy', 'unshaven', 'ungroomed')
 		$pc_descWordy['legs'] = 'hairy, unshaven'
 		$pcs_leghair = 'Your legs are hairy.'
 	end
@@ -1033,22 +1032,22 @@ if $ARGS[0] = 'hair':
 	!Hair status - whether hair is tangled or combed
 	if pcs_hairbsh = -1:
 		$pcs_hairbsh = 'messy from sex. You should brush it so everyone doesn''t know you what you''ve been up to'
-		$pc_desc['hair status'] = func($this, 'ChooseDescWord', 'bed-tangled', 'sex-tousled', 'disheveled', 'mussed')
+		$pc_desc['hair status'] = func('body_desc', 'ChooseDescWord', 'bed-tangled', 'sex-tousled', 'disheveled', 'mussed')
 		$pc_descWordy['hair status'] = 'messy, just-fucked'
 	elseif pcs_hairbsh = 0:
 		if pcs_hairlng > 30:
 			$pcs_hairbsh = 'tangled. You should comb it to keep it healthy'
-			$pc_desc['hair status'] = func($this, 'ChooseDescWord', 'tangled', 'tousled', 'disheveled', 'mussed')
+			$pc_desc['hair status'] = func('body_desc', 'ChooseDescWord', 'tangled', 'tousled', 'disheveled', 'mussed')
 			$pcdesc_hairmessinsertive = ', tangled'
 			$pc_descWordy['hair status'] = 'tangled, poorly-kept'
 		else
 			$pcs_hairbsh = 'messy. You should style it to keep it looking good'
-			$pc_desc['hair status'] = func($this, 'ChooseDescWord', 'tangled', 'tousled', 'disheveled', 'mussed')
+			$pc_desc['hair status'] = func('body_desc', 'ChooseDescWord', 'tangled', 'tousled', 'disheveled', 'mussed')
 			$pc_descWordy['hair status'] = 'messy, poorly-kept'
 		end
 	else
 		$pcs_hairbsh = 'neatly styled'
-		$pc_desc['hair status'] = func($this, 'ChooseDescWord', 'tangled', 'tousled', 'disheveled', 'mussed')
+		$pc_desc['hair status'] = func('body_desc', 'ChooseDescWord', 'tangled', 'tousled', 'disheveled', 'mussed')
 		$pcdesc_hairmessinsertive = ', neat'
 		$pc_descWordy['hair status'] = 'neat, well-maintained'
 	end
@@ -1061,7 +1060,7 @@ if $ARGS[0] = 'hair':
 		$pc_descWordy['hair texture'] = 'locks'
 	else
 		$curly = 'curly '
-		$pc_desc['hair texture'] = func($this, 'ChooseDescWord', 'curls', 'ringlets')
+		$pc_desc['hair texture'] = func('body_desc', 'ChooseDescWord', 'curls', 'ringlets')
 		$pc_descWordy['hair texture'] = 'playfully curly'
 	end
 
@@ -1072,7 +1071,7 @@ if $ARGS[0] = 'hair':
 		$pc_descWordy['hair bang'] = 'forehead'
 	else
 		$hbangs = ', with a fringe covering your forehead'
-		$pc_desc['hair bang'] = func($this, 'ChooseDescWord', 'bangs', 'fringe')
+		$pc_desc['hair bang'] = func('body_desc', 'ChooseDescWord', 'bangs', 'fringe')
 		$pc_descWordy['hair bang'] = 'fringe'
 	end
 
@@ -1080,43 +1079,43 @@ if $ARGS[0] = 'hair':
 	!! Honestly, we probably do not need all the light medium dark colour splitting for the bright colours, but it is sadly too late to go back on them.
 	if pcs_haircol = 0:
 		$pcs_haircol = 'black'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'black', 'ebony', 'obsidian', 'jet-black', 'charcoal black', 'ravenblack','sable')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'black', 'ebony', 'obsidian', 'jet-black', 'charcoal black', 'ravenblack','sable')
 		$pc_descWordy['hair colour'] = 'dark, obsidian-black'
 
 	elseif pcs_haircol = 1:
 		$pcs_haircol = 'brown'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'brown', 'russet brown', 'chestnut brown')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'brown', 'russet brown', 'chestnut brown')
 		$pc_descWordy['hair colour'] = 'russet brown'
 
 	elseif pcs_haircol = 2:
 		$pcs_haircol = 'red'
 		!! Remember, this is not the vibrant dyed red colour, this is a natural red
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'fiery red', 'coppery red', 'ginger')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'fiery red', 'coppery red', 'ginger')
 		$pc_descWordy['hair colour'] = 'fiery red'
 
 	elseif pcs_haircol = 3:
 		$pcs_haircol = 'blonde'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'blonde', 'golden-blonde', 'golden', 'fair, blonde')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'blonde', 'golden-blonde', 'golden', 'fair, blonde')
 		$pc_descWordy['hair colour'] = 'beautiful golden-blonde'
 
 	elseif pcs_haircol = 4:
 		$pcs_haircol = 'light red'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'strawberry blonde', 'fire-engine red', 'scarlet')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'strawberry blonde', 'fire-engine red', 'scarlet')
 		$pc_descWordy['hair colour'] = 'glowing, pale red'
 
 	elseif pcs_haircol = 5:
 		$pcs_haircol = 'dark blue'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'dark blue', 'blurple', 'midnight blue')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'dark blue', 'blurple', 'midnight blue')
 		$pc_descWordy['hair colour'] = 'rich, purplish-blue'
 
 	elseif pcs_haircol = 6:
 		$pcs_haircol = 'blue'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'blue', 'electric blue')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'blue', 'electric blue')
 		$pc_descWordy['hair colour'] = 'vibrant, electric blue'
 
 	elseif pcs_haircol = 7:
 		$pcs_haircol = 'light blue'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'light blue', 'azure', 'pale blue', 'candy-floss blue')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'light blue', 'azure', 'pale blue', 'candy-floss blue')
 		$pc_descWordy['hair colour'] = 'pale, candy-coloured blue'
 
 	elseif pcs_haircol = 8:
@@ -1127,78 +1126,78 @@ if $ARGS[0] = 'hair':
 
 	elseif pcs_haircol = 9:
 		$pcs_haircol = 'green'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'green', 'forest green', 'fern-green')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'green', 'forest green', 'fern-green')
 		$pc_descWordy['hair colour'] = 'vibrant, forest-green'
 
 	elseif pcs_haircol = 10:
 		$pcs_haircol = 'light green'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'light green', 'pale green', 'leaf-green', 'minty green', 'candy-floss green')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'light green', 'pale green', 'leaf-green', 'minty green', 'candy-floss green')
 		$pc_descWordy['hair colour'] = 'pale, leaf-green'
 
 	elseif pcs_haircol = 11:
 		$pcs_haircol = 'dark pink'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'dark pink', 'purplish-pink')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'dark pink', 'purplish-pink')
 		$pc_descWordy['hair colour'] = 'dark, purplish-pink'
 
 	elseif pcs_haircol = 12:
 		$pcs_haircol = 'pink'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'bubblegum-pink', 'Barbie pink', 'fuchsia', 'pink', 'bright pink')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'bubblegum-pink', 'Barbie pink', 'fuchsia', 'pink', 'bright pink')
 		$pc_descWordy['hair colour'] = 'bright, bubblegum-pink'
 
 	elseif pcs_haircol = 13:
 		$pcs_haircol = 'light pink'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'light pink', 'pale pink', 'babydoll pink', 'China pink', 'cotton-candy pink', 'candy-floss pink')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'light pink', 'pale pink', 'babydoll pink', 'China pink', 'cotton-candy pink', 'candy-floss pink')
 		$pc_descWordy['hair colour'] = 'pale, cotton-candy pink'
 
 	elseif pcs_haircol = 14:
 		$pcs_haircol = 'dark purple'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'dark purple', 'deep purple', 'midnight purple', 'indigo')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'dark purple', 'deep purple', 'midnight purple', 'indigo')
 		$pc_descWordy['hair colour'] = 'deep, bluish-purple'
 
 	elseif pcs_haircol = 15:
 		$pcs_haircol = 'purple'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'purple', 'plum purple', 'royal purple')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'purple', 'plum purple', 'royal purple')
 		$pc_descWordy['hair colour'] = 'rich, royal purple'
 
 	elseif pcs_haircol = 16:
 		$pcs_haircol = 'light purple'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'light purple', 'pale purple', 'amethyst coloured', 'lavender')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'light purple', 'pale purple', 'amethyst coloured', 'lavender')
 		$pc_descWordy['hair colour'] = 'pale, floral purple'
 
 	elseif pcs_haircol = 17:
 		$pcs_haircol = 'light orange'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'light orange', 'pumpkin orange', 'bright orange')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'light orange', 'pumpkin orange', 'bright orange')
 		$pc_descWordy['hair colour'] = 'bright, fiery orange'
 
 	elseif pcs_haircol = 18:
 		$pcs_haircol = 'dark red'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'dark red', 'wine red', 'auburn')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'dark red', 'wine red', 'auburn')
 		$pc_descWordy['hair colour'] = 'deep, seductive red'
 
 	elseif pcs_haircol = 19:
 		$pcs_haircol = 'medium red'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'medium red', 'cherry red', 'bronze')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'medium red', 'cherry red', 'bronze')
 		$pc_descWordy['hair colour'] = 'strong, fiery red'
 
 	elseif pcs_haircol = 20:
 		$pcs_haircol = 'turquoise'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'turquoise', 'ultramarine', 'aquamarine', 'sea green')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'turquoise', 'ultramarine', 'aquamarine', 'sea green')
 		$pc_descWordy['hair colour'] = 'soft milky blue'
 
 	elseif pcs_haircol = 21:
 		$pcs_haircol = 'medium orange'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'medium orange', 'pumpkin orange', 'carrot orange')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'medium orange', 'pumpkin orange', 'carrot orange')
 		$pc_descWordy['hair colour'] = 'strong, fiery orange'
 
 	elseif pcs_haircol = 22:
 		$pcs_haircol = 'dark orange'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'dark orange', 'burnt Orange', 'rust')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'dark orange', 'burnt Orange', 'rust')
 		$pc_descWordy['hair colour'] = 'strong, burnt orange'
 
 		!! This below is a catch-all, it should not actually ever wind up occurring, but just in case it does...
 	else
 		$pcs_haircol = 'strangely-coloured'
-		$pc_desc['hair colour'] = func($this, 'ChooseDescWord', 'strangely-coloured', 'multicoloured')
+		$pc_desc['hair colour'] = func('body_desc', 'ChooseDescWord', 'strangely-coloured', 'multicoloured')
 		$pc_descWordy['hair colour'] = 'exceptionally variegated'
 	end
 
@@ -1239,17 +1238,17 @@ if $ARGS[0] = 'hair':
 	else
 		if pcs_hairlng <= 30:
 			$hair = 'You have very short <<$pcs_haircol>> hair. It doesn''t cover your ears, and looks a little masculine. Nevertheless, some people like this style as it''s easy to take care of.'
-			$pc_desc['hair length'] = func($this, 'ChooseDescWord', 'extremly short', 'boyishly short')
+			$pc_desc['hair length'] = func('body_desc', 'ChooseDescWord', 'extremly short', 'boyishly short')
 			$pc_descWordy['hair length'] = 'short, and altogether rather boyish'
 
 		elseif pcs_hairlng > 30 and pcs_hairlng <= 80:
 			$hair = 'You have short <<$pcs_haircol>> hair which just covers your ears to their lobes. It''s a modern, classy hairstyle. Currently your hair is <<$pcs_hairbsh>>.'
-			$pc_desc['hair length'] = func($this, 'ChooseDescWord', 'short', 'pixie-cut', 'androgynously short')
+			$pc_desc['hair length'] = func('body_desc', 'ChooseDescWord', 'short', 'pixie-cut', 'androgynously short')
 			$pc_descWordy['hair length'] = 'short, page-boy'
 
 		elseif pcs_hairlng > 80 and pcs_hairlng <= 160:
 			$hair = 'You have <<$curly>><<$pcs_haircol>> hair<<$hbangs>>. Your hair goes down to your chin line and can be considered of a medium length, which fits almost all face shapes. Your hair is <<$pcs_hairbsh>> at the moment. <<$hairstyle>>'
-			$pc_desc['hair length'] = func($this, 'ChooseDescWord', 'medium', 'average')
+			$pc_desc['hair length'] = func('body_desc', 'ChooseDescWord', 'medium', 'average')
 			$pc_descWordy['hair length'] = 'medium-length'
 
 		elseif pcs_hairlng > 160 and pcs_hairlng <= 260:
@@ -1259,22 +1258,22 @@ if $ARGS[0] = 'hair':
 
 		elseif pcs_hairlng > 260 and pcs_hairlng <= 400:
 			$hair = 'You have <<$curly>><<$pcs_haircol>> hair<<$hbangs>>. As your hair reaches your bra line, hairdressers would consider this a rather long style, yet beautiful looks are created with this length. Your hair is <<$pcs_hairbsh>>. <<$hairstyle>>'
-			$pc_desc['hair length'] = func($this, 'ChooseDescWord', 'long', 'lengthy')
+			$pc_desc['hair length'] = func('body_desc', 'ChooseDescWord', 'long', 'lengthy')
 			$pc_descWordy['hair length'] = 'long, past the shoulders'
 
 		elseif pcs_hairlng > 400 and pcs_hairlng <= 600:
 			$hair = 'You have <<$curly>><<$pcs_haircol>> hair<<$hbangs>>. As your hair reaches your back, hairdressers would consider this a rather long hair style, yet beautiful looks are created with this length. Your hair is <<$pcs_hairbsh>>. <<$hairstyle>>'
-			$pc_desc['hair length'] = func($this, 'ChooseDescWord', 'very long', 'rather lengthy', 'quite long', 'back-length')
+			$pc_desc['hair length'] = func('body_desc', 'ChooseDescWord', 'very long', 'rather lengthy', 'quite long', 'back-length')
 			$pc_descWordy['hair length'] = 'very long, back-length'
 
 		elseif pcs_hairlng > 600 and pcs_hairlng <= 800:
 			$hair = 'You have <<$curly>><<$pcs_haircol>> hair<<$hbangs>>. As your hair reaches your butt, hairdressers would consider this a very long hair style, yet beautiful looks are created with this length. Your hair is <<$pcs_hairbsh>>. <<$hairstyle>>'
-			$pc_desc['hair length'] = func($this, 'ChooseDescWord', 'extremely long', 'waist-length')
+			$pc_desc['hair length'] = func('body_desc', 'ChooseDescWord', 'extremely long', 'waist-length')
 			$pc_descWordy['hair length'] = 'extremely long and waist-length'
 
 		else
 			$hair = 'You have extremely long <<$pcs_haircol>> hair<<$hbangs>>. Reaching all the way past your butt, even Rapunzel would be jealous. Your hair is currently <<$pcs_hairbsh>>. <<$hairstyle>>'
-			$pc_desc['hair length'] = func($this, 'ChooseDescWord', 'exceptionally long', 'incredibly lengthy')
+			$pc_desc['hair length'] = func('body_desc', 'ChooseDescWord', 'exceptionally long', 'incredibly lengthy')
 			$pc_descWordy['hair length'] = 'exceptionally lengthy and princess-like'
 		end
 	end

+ 5 - 4
locations/booty_call_sms.qsrc

@@ -35,7 +35,7 @@ if $ARGS[0] = 'default_booty_call':
 	$VF['1a'] = 'what were you thinking about?'
 	
 	!! boy response 1
-	if npc_finance[$ARGS[1]] = 2 and ($home['current'] ! 'city_apartment' and $home['current'] ! 'niko_apartment' and $home['current'] ! 'university_dorm' and $home['current'] ! 'city_house' and $home['current'] ! 'maid_bedroom') and npc_residence[$ARGS[1]] >= 3:
+	if npc_finance[$ARGS[1]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[1]] >= 3:
 		$VM['2a'] = 'i booked a hotel room in Pav. why dont you come by?'
 	else
 		if $npc_fav_pos[$ARGS[1]] = 'blowjob' and rand(0,2) = 1:
@@ -69,7 +69,7 @@ if $ARGS[0] = 'default_booty_call':
 	$VF['1b'] = 'me too'
 	
 	!! boy response 2
-	if npc_finance[$ARGS[1]] = 2 and ($home['current'] ! 'city_apartment' and $home['current'] ! 'niko_apartment' and $home['current'] ! 'university_dorm' and $home['current'] ! 'city_house' and $home['current'] ! 'maid_bedroom') and npc_residence[$ARGS[1]] >= 3:
+	if npc_finance[$ARGS[1]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[1]] >= 3: 
 		$VM['2a'] = 'i booked a hotel room in Pav. why dont you come by?'
 	else
 		if $npc_fav_pos[$ARGS[1]] = 'blowjob' and rand(0,2) = 1:
@@ -366,7 +366,7 @@ if $ARGS[0] = 'V2ap':
 	$SMSMessage[ARGS[1]] = $trialSMS
 	gs 'telefon', 'show_sms', ARGS[1]
 	booty_call_invite[$SMSContact[ARGS[1]]] = daystart
-	if ($home['current'] = 'parents_home' or $home['current'] = 'meynold_household' or $home['current'] = 'shared_apartment') and npc_residence[$SMSContact[ARGS[1]]] >= 3: $booty_call_hotel[$SMSContact[ARGS[1]]] = 'pav'
+	if npc_finance[$ARGS[1]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[1]] >= 3: $booty_call_hotel[$ARGS[1]] = 'pav'
 end
 
 if $ARGS[0] = 'V2bn':
@@ -404,7 +404,8 @@ if $ARGS[0] = 'V2bp':
 	$SMSMessage[ARGS[1]] = $trialSMS
 	gs 'telefon', 'show_sms', ARGS[1]
 	booty_call_invite[$SMSContact[ARGS[1]]] = daystart
-	if ($home['current'] = 'parents_home' or $home['current'] = 'meynold_household' or $home['current'] = 'shared_apartment') and npc_residence[$SMSContact[ARGS[1]]] >= 3: $booty_call_hotel[$SMSContact[ARGS[1]]] = 'pav'
+!!	if ($home['current'] = 'parents_home' or $home['current'] = 'meynold_household' or $home['current'] = 'shared_apartment') and npc_residence[$SMSContact[ARGS[1]]] >= 3: 
+	if npc_finance[$ARGS[1]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[1]] >= 3: $booty_call_hotel[$ARGS[1]] = 'pav'
 !!	killvar '$VF'
 !!	killvar '$MF'
 end

+ 25 - 9
locations/boy.qsrc

@@ -26,21 +26,37 @@ if $ARGS[0] = 'details':
 	!!appearance
 	boybodyrand = rand(1, 3)
 
-	if boybodyrand = 1: $boybody = 'tall'
-	if boybodyrand = 2: $boybody = 'average'
-	if boybodyrand = 3: $boybody = 'short'
+	if boybodyrand = 1: 
+		$boybody = 'tall'
+		$boybody_pref = 'a tall'
+	elseif boybodyrand = 2: 
+		$boybody = 'average'
+		$boybody_pref = 'an average'
+	elseif boybodyrand = 3: 
+		$boybody = 'short'
+		$boybody_pref = 'a short'
+	end
 
 	boybodrand = rand(1, 4)
 
-	if boybodrand = 1: $boybod = 'thin'
-	if boybodrand = 2: $boybod = 'athletic'
-	if boybodrand = 3: $boybod = 'chunky'
-	if boybodrand = 4: $boybod = 'fat'
-
+	if boybodrand = 1: 
+		$boybod = 'thin'
+		$boybod_pref = 'a thin'
+	elseif boybodrand = 2: 
+		$boybod = 'athletic'
+		$boybod_pref = 'an athletic'
+	elseif boybodrand = 3: 
+		$boybod = 'chunky'
+		$boybod_pref = 'a chunky'
+	elseif boybodrand = 4: 
+		$boybod = 'fat'
+		$boybod_pref = 'a fat'
+	end
+	
 	boyfacerand = rand(1, 3)
 
 	if boyfacerand = 1: $boyface = 'black'
-	if boyfacerand = 2: $boyface = 'brunette'
+	if boyfacerand = 2: $boyface = 'brown'
 	if boyfacerand = 3: $boyface = 'blond'
 
 	!!Variables responsible for any features like

+ 56 - 43
locations/brothel.qsrc

@@ -509,7 +509,7 @@ if $ARGS[0] = 'section1_lobby':
 	'The section 1 lobby. A spacy hall-like room, leading to several smaller rooms.'
 	'A Comfortable couch is in the middle of the lobby, next to it are several cages sized just for a smaller person.'
 	'One of the doors also leads to a <a href="exec:gt ''brothel'', ''brothel_dressingroom'', ''1''">room</a> made for the girls. '
-	if (klismaday = daystart and (pcs_leghair <= 3 or pcs_pubes <= 3) and pcs_hairbsh = 1 and pcs_makeup >= 1 and pcs_lipbalm >= 1 and $pantyworntype = 'none' and $clothingworntype = 'nude' and (cumloc[1] = 0 and cumloc[4] = 0 and cumloc[8] = 0 and cumloc[9] = 0 and cumloc[10] = 0 and cumloc[11] = 0 and cumloc[15] = 0 and cumloc[16] = 0 and cumloc[17] = 0) and pcs_sweat < 40):
+	if (klismaday = daystart and pcs_leghair <= 3 and pcs_pubes <= 3 and pcs_hairbsh = 1 and pcs_makeup > 2 and pcs_lipbalm >= 1 and $pantyworntype = 'none' and $clothingworntype = 'nude' and (cumloc[1] = 0 and cumloc[4] = 0 and cumloc[8] = 0 and cumloc[9] = 0 and cumloc[10] = 0 and cumloc[11] = 0 and cumloc[15] = 0 and cumloc[16] = 0 and cumloc[17] = 0) and pcs_sweat < 40):
 		act 'Get in the cage': gt 'brothel', 'section1_cage'
 	else
 		'To be able to get working, you need to:'
@@ -519,7 +519,7 @@ if $ARGS[0] = 'section1_lobby':
 		if cumloc[11] > 0: '- wash your face'
 		if (pcs_leghair > 3 or pcs_pubes > 3): '- shave your pubes and legs.'
 		if pcs_hairbsh ! 1: '- brush your hair.'
-		if pcs_makeup < 1: '- put on some makeup.'
+		if pcs_makeup < 3: '- put on some makeup.'
 		if pcs_lipbalm < 1: '- apply some lipbalm.'
 		if $pantyworntype ! 'none': '- remove your panties.'
 		if $clothingworntype ! 'nude': '- strip off your clothes.'
@@ -539,13 +539,27 @@ if $ARGS[0] = 'brothel_dressingroom':
 	$location_type = 'bathroom'
 	$loc_arg = 'brothel_dressingroom'
 	'<h3>Girl room</h3>'
-	 '<center><img <<$set_imgh>> src="images/locations/shared/brothel/brothelroom.jpg"></center>'
-	 *nl
+	'<center><img <<$set_imgh>> src="images/locations/shared/brothel/brothelroom.jpg"></center>'
+	*nl
 	'A room made for the working girls, like yourself.'
 	'It is equipped with a shower, almost on every wall hangs a large <a href="exec:gt ''mirror'', ''start''">mirror</a>. There is a water cooler beside the door, and some light snacks on the table, in case the girls get hungry or thirsty between sessions.'
-	'From a box beneath a table you can take some '+iif(mc_inventory['cosmetics'] < 1,'<a href="exec: mc_inventory[''cosmetics''] += 5 & gt ''brothel'', $loc_arg">cosmetics</a>','cosmetics')+' (you have '+mc_inventory['cosmetics'] +') or, '+iif(shampoo < 1,'<a href="exec: mc_inventory[''shampoo''] +=  5 & gt ''brothel'', $loc_arg">shampoo</a>','shampoo')+', '+iif(mc_inventory['lipbalm'] < 1,'<a href="exec: mc_inventory[''lipbalm''] += 5 & gt ''brothel'', $loc_arg">lip balm</a>','lip balm')+' (you have '+mc_inventory['lipbalm']+'), or '+iif(mc_inventory['razor'] < 1,'<a href="exec: mc_inventory[''razor''] +=  5 & gt ''brothel'', $loc_arg">shaving</a>','shaving')+' equipment (you have '+mc_inventory['razor'] +'), if you don''t have any. <a href="exec:gs ''din_van'', ''shave_options''">Shave Options</a>'
-	'For obvious reasons there is also a box with an '+iif(mc_inventory['enema_kit'] < 1,'<a href="exec: mc_inventory[''enema_kit''] += 1 & gt ''brothel'', $loc_arg">enema kit</a>','enema kit')+'. A box with some '+iif(mc_inventory['painkillers'] < 1,'<a href="exec:mc_inventory[''painkillers''] += 5 & gt ''brothel'', $loc_arg">painkillers</a>','painkillers')+' (you have '+mc_inventory['painkillers']+') is there, in case someone needs pain relief.'
-	'On the table lies a list with instructions, in case you don''t already remember them:'
+
+	*p 'From a box beneath a table you can take some '
+	*p iif(mc_inventory['cosmetics'] < 2,'<a href="exec: mc_inventory[''cosmetics''] += 5 & gt ''brothel'', $loc_arg">cosmetics</a>','cosmetics')
+	*p ' (you have '+mc_inventory['cosmetics']+'), '
+	*p iif(mc_inventory['shampoo'] < 1,'<a href="exec: mc_inventory[''shampoo''] +=  5 & gt ''brothel'', $loc_arg">shampoo</a>','shampoo')
+	*p ' (you have '+mc_inventory['shampoo']+'), '
+	*p iif(mc_inventory['lipbalm'] < 1,'<a href="exec: mc_inventory[''lipbalm''] += 5 & gt ''brothel'', $loc_arg">lip balm</a>','lip balm')
+	*p ' (you have '+mc_inventory['lipbalm'] + '), or '
+	*p iif(mc_inventory['razor'] < 3,'<a href="exec: mc_inventory[''razor''] +=  5 & gt ''brothel'', $loc_arg">shaving</a>','shaving')
+	*pl ' equipment (you have '+mc_inventory['razor'] +'), if you don''t have any. <a href="exec:gs ''din_van'', ''shave_options''">Shave Options</a>'
+
+	*p 'For obvious reasons there is also a box with an '
+	*p iif(mc_inventory['enema_kit'] < 1,'<a href="exec: mc_inventory[''enema_kit''] += 1 & gt ''brothel'', $loc_arg">enema kit</a>','enema kit')
+	*p '. A box with some '
+	*p iif(mc_inventory['painkillers'] < 1,'<a href="exec:mc_inventory[''painkillers''] += 5 & gt ''brothel'', $loc_arg">painkillers</a>','painkillers')
+	*p ' (you have '+mc_inventory['painkillers']+') is there, in case someone needs pain relief.'
+	*pl 'On the table lies a list with instructions, in case you don''t already remember them:'
 	*nl
 	'-------------------------------------------------------------------------------------'
 	' 1) You are the Slave.'
@@ -633,11 +647,11 @@ if $ARGS[0] = 'section1_force_work':
 	'<center><img <<$set_imgh>> src="images/locations/shared/brothel/placeholder.jpg"></center>'
 	'<font color=#<<$rec_font>>>"Running off, again and again, whore? If you can''t make up your mind, maybe some training will help you."</font>'
 	if $clothingworntype ! 'nude':
-	  'With this, the receptionist grabs and undresses you, then locks you in a cage.'
+		'With this, the receptionist grabs and undresses you, then locks you in a cage.'
 	elseif $pantyworntype ! 'none':
-	  'With this, the receptionist grabs you, rips your panties off, then locks you in a cage.'
+		'With this, the receptionist grabs you, rips your panties off, then locks you in a cage.'
 	else
-	  'With this, the receptionist grabs you, then locks you in a cage.'
+		'With this, the receptionist grabs you, then locks you in a cage.'
 	end
 	'<font color=#<<$rec_font>>>"Stay there, someone will teach you a lesson in time. Hopefully you learn to be responsible."</font>'
 	!!Should be replaced in time with a special training event
@@ -701,12 +715,12 @@ if $ARGS[0] = 'section1_slave_chooses':
 	'<h3>Playroom</h3>'
 	'<h5>You decide to suggest what your Master should do with you...</h5>'
 	'You ask him: <font color=#<<$pcs_font>>>"Master, please..."</font>'
-	act '..I need to recharge my batteries': gt 'brothel', 'section1_pick', '1', '1'
-	act '..I''ve been a bad girl, I should be punished': gt 'brothel', 'section1_pick', '2', '1'
-	act '..just bind me and use my holes': gt 'brothel', 'section1_pick', '3', '1'
-	!!act '..let''s just have sex and see where it leads': gt 'brothel', 'section1_pick', '4', '1'
-	act '..I am so tight, I need some exercise': gt 'brothel', 'section1_pick', '5', '1'
-	act 'Reconsider and be quiet': gt 'brothel', 'section1_pick', '0', '0'
+	act '..I need to recharge my batteries': gt 'brothel', 'section1_pick', 1, 1
+	act '..I''ve been a bad girl, I should be punished': gt 'brothel', 'section1_pick', 2, 1
+	act '..just bind me and use my holes': gt 'brothel', 'section1_pick', 3, 1
+	!!act '..let''s just have sex and see where it leads': gt 'brothel', 'section1_pick', 4, 1
+	!!act '..I am so tight, I need some exercise': gt 'brothel', 'section1_pick', 5, 1
+	act 'Reconsider and be quiet': gt 'brothel', 'section1_pick', 0, 0
 end
 
 if $ARGS[0] = 'section1_pick':
@@ -714,7 +728,7 @@ if $ARGS[0] = 'section1_pick':
 	stage = 1
 	mas_accept = ARGS[2]
 	if (rageMeter <= 25 and mas_accept = 1):
-	  	'<center><img <<$set_imgh>> src="images/shared/sex/dom/kotovsub.jpg"></center>'
+		'<center><img <<$set_imgh>> src="images/shared/sex/dom/kotovsub.jpg"></center>'
 		'<font color=#'+$mas_font+'>As you wish, slut. We''ll do it your way.</font>'
 	elseif (rageMeter <= 50 and mas_accept = 1):
 		mas_accept = rand(0, 1)
@@ -728,39 +742,38 @@ if $ARGS[0] = 'section1_pick':
 		end
 	elseif (rageMeter >= 75 and mas_accept = 1):
 		'<center><video autoplay loop src="images/locations/city/residential/sauna/sex/slapface1.mp4"></video></center>'
-	  	rageMeter += 10
+		rageMeter += 10
 		'<font color=#'+$mas_font+'>You think you can order me around, slut? I''ll do with you what *I* want.</font>'
 		mas_accept = 0
 	end
 
-
 	if mas_accept = 1:
 		mas_dec = ARGS[1]
 	elseif mas_accept = 0:
 		mas_dec = rand(1, 3)
-	  	!!mas_dec = rand(1, 5)
+		!!mas_dec = rand(1, 5)
 	end
 
 	if mas_dec = 1:
-	  	'<center><video autoplay loop src="images/locations/shared/brothel/placeholder.mp4"></video></center>'
-	  	'The client puts the small shock device on the table in the center of the room. <font color=#'+$mas_font+'>This should give you a healthy glow in no time, slut.</font>'
-	  	act 'Begin the session': gt 'brothel', 'section1_play_electro'
+		'<center><video autoplay loop src="images/locations/shared/brothel/placeholder.mp4"></video></center>'
+		'The client puts the small shock device on the table in the center of the room. <font color=#'+$mas_font+'>This should give you a healthy glow in no time, slut.</font>'
+		act 'Begin the session': gt 'brothel', 'section1_play_electro'
 	elseif mas_dec = 2:
-	  	'<center><video autoplay loop src="images/locations/shared/brothel/placeholder.mp4"></video></center>'
-	  	'The client grabs a box full of smaller tools from a shelf and fetches a few wooden sticks. <font color=#'+$mas_font+'>Let''s make your tits beatiful, slut.</font>'
-	  	act 'Begin the session': gt 'brothel', 'section1_play_tits'
+		'<center><video autoplay loop src="images/locations/shared/brothel/placeholder.mp4"></video></center>'
+		'The client grabs a box full of smaller tools from a shelf and fetches a few wooden sticks. <font color=#'+$mas_font+'>Let''s make your tits beatiful, slut.</font>'
+		act 'Begin the session': gt 'brothel', 'section1_play_tits'
 	elseif mas_dec = 3:
-	  	'<center><video autoplay loop src="images/locations/shared/brothel/placeholder.mp4"></video></center>'
-	  	'The client grabs a box full of smaller tools from a shelf, with several ropes hanging out of it. <font color=#'+$mas_font+'>Sluts like you are much more agreeable when properly tied up. Don''t you think, slave?</font>'
-	  	act 'Begin the session': gt 'brothel', 'section1_play_tied'
+		'<center><video autoplay loop src="images/locations/shared/brothel/placeholder.mp4"></video></center>'
+		'The client grabs a box full of smaller tools from a shelf, with several ropes hanging out of it. <font color=#'+$mas_font+'>Sluts like you are much more agreeable when properly tied up. Don''t you think, slave?</font>'
+		act 'Begin the session': gt 'brothel', 'section1_play_tied'
 	elseif mas_dec = 4:
-	  	'<center><video autoplay loop src="images/locations/shared/brothel/placeholder.mp4"></video></center>'
-	  	'<font color=#'+$mas_font+'>Let us start nice and slow, little whore. I''ll have my fun, either way.</font> The clients proclaims, while undressing himself.'
-	  	act 'Begin the session': gt 'brothel', 'section1_play_sex'
+		'<center><video autoplay loop src="images/locations/shared/brothel/placeholder.mp4"></video></center>'
+		'<font color=#'+$mas_font+'>Let us start nice and slow, little whore. I''ll have my fun, either way.</font> The clients proclaims, while undressing himself.'
+		act 'Begin the session': gt 'brothel', 'section1_play_sex'
 	elseif mas_dec = 5:
-	  	'<center><video autoplay loop src="images/locations/shared/brothel/placeholder.mp4"></video></center>'
-	  	'<font color=#'+$mas_font+'>Don''t you think, you should be much more open to your clients needs, especially in your line if work, whore?</font> At this, the clients brings a massive dildo over. <font color=#'+$mas_font+'>Let me help you with that, slut.</font>'
-	  	act 'Begin the session': gt 'brothel', 'section1_play_stretch'
+		'<center><video autoplay loop src="images/locations/shared/brothel/placeholder.mp4"></video></center>'
+		'<font color=#'+$mas_font+'>Don''t you think, you should be much more open to your clients needs, especially in your line if work, whore?</font> At this, the clients brings a massive dildo over. <font color=#'+$mas_font+'>Let me help you with that, slut.</font>'
+		act 'Begin the session': gt 'brothel', 'section1_play_stretch'
 	end
 end
 
@@ -1793,7 +1806,7 @@ if $ARGS[0] = 'section1_vagfisting':
 	'<b>Orgasm meter: <<orgasmMeter>> / 100</b>'
 	'<b>Rage meter: <<rageMeter>> / 100</b>'
 	'<center><img <<$set_imgh>> src="images/locations/shared/brothel/placeholder.jpg"></center>'
-	'<font color=#<<$mas_font>>>"We''re getting somewhere, little whore. Now you''re only missing the proper gape  to please. Do you want me to help you out? Ask me for it, nicely."</font>'
+	'<font color=#<<$mas_font>>>"We''re getting somewhere, little whore. Now you''re only missing the proper gape to please. Do you want me to help you out? Ask me for it, nicely."</font>'
 	'<font color=#<<$pcs_font>>>"Please, Master, help me open my holes for you."</font>'
 	'<font color=#<<$mas_font>>>"Pah, good enough. Get ready, slave."</font>'
 	'With this he squirts lube on his hand, and pushes it into your pussy up to the wrist. You clench your teeth, hoping that the sudden pain will subside soon.'
@@ -2303,10 +2316,10 @@ if $ARGS[0] = 'section2_lobby':
 	'The section 2 lobby. This lobby is quite small, offering only enough room for a couch and a small table.'
 	'Only a single room is attached to the lobby by a wide door.Judging by the state of the floor, a lot of heavy equipment is regularly dragged in and out.'
 	'One of the doors also leads to a <a href="exec:gt ''brothel'', ''brothel_dressingroom'',''2''">room</a> made for the girls. '
-	if (klismaday = daystart and (pcs_leghair <= 3 or pcs_pubes <= 3) and pcs_hairbsh = 1 and pcs_makeup >= 1 and pcs_lipbalm >= 1 and $pantyworntype = 'none' and $clothingworntype = 'nude' and (cumloc[1] = 0 and cumloc[4] = 0 and cumloc[8] = 0 and cumloc[9] = 0 and cumloc[10] = 0 and cumloc[11] = 0 and cumloc[15] = 0 and cumloc[16] = 0 and cumloc[17] = 0) and pcs_sweat < 40 and alko < 3 and StrongNarkota = 0 or jointhigh = 0):
-	  	!!stage = 1
-	  	!!act 'Party with a client': gt 'brothel', 'section2_party'
-	  	!!act 'Have a bender': gt 'brothel', 'section2_bender'
+	if (klismaday = daystart and pcs_leghair <= 3 and pcs_pubes <= 3 and pcs_hairbsh = 1 and pcs_makeup > 2 and pcs_lipbalm >= 1 and $pantyworntype = 'none' and $clothingworntype = 'nude' and (cumloc[1] = 0 and cumloc[4] = 0 and cumloc[8] = 0 and cumloc[9] = 0 and cumloc[10] = 0 and cumloc[11] = 0 and cumloc[15] = 0 and cumloc[16] = 0 and cumloc[17] = 0) and pcs_sweat < 40 and alko < 3 and StrongNarkota = 0 or jointhigh = 0):
+		!!stage = 1
+		!!act 'Party with a client': gt 'brothel', 'section2_party'
+		!!act 'Have a bender': gt 'brothel', 'section2_bender'
 	else
 		'To be able to get working, you need to:'
 		if pcs_sweat >= 40: '- have a shower.'
@@ -2315,12 +2328,12 @@ if $ARGS[0] = 'section2_lobby':
 		if cumloc[11] > 0: '- wash your face'
 		if (pcs_leghair > 3 or pcs_pubes > 3): '- shave your pubes and legs.'
 		if pcs_hairbsh ! 1: '- brush your hair.'
-		if pcs_makeup < 1: '- put on some makeup.'
+		if pcs_makeup < 3: '- put on some makeup.'
 		if pcs_lipbalm < 1: '- apply some lipbalm.'
 		if $pantyworntype ! 'none': '- remove your panties.'
 		if $clothingworntype ! 'nude': '- strip off your clothes.'
-	  	if alko > 3: '- be not drunk'
-	  	if StrongNarkota > 0 or jointhigh > 0: '- be sober'
+		if alko > 3: '- be not drunk'
+		if StrongNarkota > 0 or jointhigh > 0: '- be sober'
 	end
 	act 'Go to the girl''s room':gt 'brothel', 'brothel_dressingroom', '2'
 	act 'Go to the reception': gt 'brothel', 'reception'

+ 8 - 7
locations/brother.qsrc

@@ -176,9 +176,13 @@ if $ARGS[0] = 'start':
 					'Kolka points at your outfit, "Oh, you can''t play dressed like that! Go put on some sportswear, or just watch us play if you want."'
 				else
 					'He adds, "Or you could just watch us."'
-					act 'Play football':
-						playfootball = 1
-						gt 'brother', 'playfootball'
+					if pcs_stam >= (5*mult * (10 - sport_clothes_exercise_bonus)) / 2:
+						act 'Play football':
+							playfootball = 1
+							gt 'brother', 'playfootball'
+						end
+					else
+						'You are too tired to play.'
 					end
 				end
 				act'Watch as they play':
@@ -399,12 +403,9 @@ if $ARGS[0] = 'playfootball':
 		end
 	else
 		*clr & cla
-		minut += 60
 		if npc_rel['A34'] <50:npc_rel['A34'] += rand(1,2)
-		gs 'exp_gain', 'agil', rand(0, 2)
-		gs 'sweat', 'add', 30
+		gs 'exercise', 'tier1', 60, 'agil', 'vital'
 		gs 'exp_gain', 'run', rand(0, 2)
-		fat -= rand(2, 7)
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/grounds/football3.jpg"></center>'
 		'You spend an hour running around, chasing the ball across the field with Kolka and his friends Mishan and Zhendos.'

+ 4 - 0
locations/brother2.qsrc

@@ -152,6 +152,7 @@ end
 
 if $ARGS[0] = 'DTR_yes':
 	cla & *clr
+	gs 'boystat', 'A34'
 	'<center><b><font color="maroon">Kolka</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/kolka/brother.jpg"></center>'
 	'The question takes you by surprise. Not what he said, but how it pierces through your chest, making you ache at just the thought of Kolka with another woman.'
@@ -673,6 +674,7 @@ if $ARGS[0] = 'nattalk':
 end
 
 if $ARGS[0] = 'kiss':
+	gs 'boystat', 'A34'
 	gs 'arousal', 'kiss', rand(1,5)
 	gs 'stat'
 	brotherkiss += 1
@@ -721,6 +723,7 @@ if $ARGS[0] = 'kiss_end':
 end
 
 if $ARGS[0] = 'cuni':
+	gs 'boystat', 'A34'
 	brothercuni += 1
 	npc_rel['A34'] += 1
 	cla & *clr
@@ -927,6 +930,7 @@ if $ARGS[0] = 'bj2':
 end
 
 if $ARGS[0] = 'wakeup':
+	gs 'boystat', 'A34'
 	cla & *clr
 	'<center><b><font color="maroon">Kolka</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/kolka/brother.jpg"></center>'

+ 1 - 1
locations/cafe_parco.qsrc

@@ -7,7 +7,7 @@ if $args[0]= 'start':
 	$menu_arg = 'start'
 	menu_off = 0
 	'<center><h4><font color="maroon">Cafe "Del Parco"</font></h4></center>'
-	'<center><img <<$set_imgh>> src="'+'images/locations/pavlovsk/park/cafe/caffe_del_parco'+iif(hour > 20 or hour < 7,'_night','')+'.jpg'+'"></center>'
+	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/park/cafe/caffe_del_parco'+iif(hour > 20 or hour < 7,'_night','')+'.jpg"></center>'
 	'The newly opened cafe "Del Parco", with its striking facade, there are lots of tables and a summer terrace. Opening hours between 14.00 to 21.00.'
 
 	act 'Return to the square': gt 'pav_park', 'start'

+ 1 - 1
locations/camera.qsrc

@@ -266,7 +266,7 @@ if $ARGS[0] = 'anya':
 		'You show her your photos and the one you finally decided on. "You sure my ass doesn''t look fat in this? I think it looks fat," she says with a pout.'
 		'You shake your head and reassure her. "Your ass looks perfect. That''s why I took this photo. Trust me."'
 		'"Fine!" she pouts before sitting back down on her bed. You put your camera away and join her.'
-		act 'Finish': gt 'sister_chat', 'sister_chat'
+		act 'Finish': gt 'sister_chat', 'talking'
 	end
 end
 

+ 39 - 45
locations/cikl.qsrc

@@ -77,6 +77,9 @@ gs 'daystart'
 
 gs 'yearstart'
 
+gs 'emp_functions', 'evt_day_suffix'
+$stat_day_suffix = $date_suffix
+killvar '$date_suffix'
 !!----------------------------------------------------------------------------
 
 !!Fame call to update all the fame variables
@@ -1012,22 +1015,8 @@ mosal_time = totminut
 !!also, the first thing you do in the morning is visiting your porcelain friend, no?
 killvar 'last_pee'
 
-if bcream_used >= 1:
-	bcream_used = 0
-	temp = rand(0,max(nbsize-genbsize+5,5)) / max(nbsize-genbsize,1)
-	if temp > 0: temp = 1
-	nbsize += temp
-	if temp > 0:'Feels like your breasts have grown slightly.'
-end
-if steroid_dose >= 1:
-	if lashair < 1:
-		pcs_pubes += steroid_dose
-		pcs_leghair += steroid_dose
-	end
-	steroid_dose = 0
-end
-if aphrodisiac_overdose = 1:aphrodisiac_overdose = 0
-if aphrodisiac_timer ! 0:aphrodisiac_timer	= 0
+if aphrodisiac_overdose = 1: aphrodisiac_overdose = 0
+if aphrodisiac_timer ! 0: aphrodisiac_timer	= 0
 
 if mentats_dose = 1:
 	mentats_dose = 0
@@ -1057,7 +1046,7 @@ if blizoruk < 0: blizoruk = 0
 
 
 !!------------------------------------------------------------------------------------------------------------------------
-!!C and b array cleaning 
+!!C and B array cleaning 
 
 if InSleep = 1: gs 'npc','cleanarrays'
 
@@ -1162,7 +1151,7 @@ if ml_onlinesongcount > 0:
 			ml_tempsong_hotcat[j] = ml_onlinesong_hotcat[i]
 			ml_tempsong_skilllevel[j] = ml_onlinesong_skilllevel[i]
 			ml_tempsong_uploaded[j] = ml_onlinesong_uploaded[i]
-			*nl
+
 			if ml_tempsong_lastcalcday[j] <= (daystart - 7) and ml_tempsong_uploaded = 1:
 				gs 'fame', 'city', 'music', rand(0, ml_tempsong_freshness[j]/100)
 				ml_tempsong_freshness[j] -= 10
@@ -1298,33 +1287,35 @@ if will_counter >= 20: will_counter -= 20 & willpowermax += 1
 
 !!-----------------webcam follower loss due to inactivity ------------------------------------------
 if camwhore = 1:
-	if cam_daystart < daystart:
-		if regviewReset < 3:
-			! Calculate follower loss More followers = more loss
-			if regview >= 500:
-				FollowersLost = rand(regview / 100, regview / 50)
-			else
-				FollowersLost = rand(1, 3)
-			end
-			cam_daystart = daystart + 4
-		else
-			if regview >= 300:
-				FollowersLost = rand(regview / 80, regview / 40)
-			else
-				FollowersLost = rand(2, 6)
-			end
-			cam_daystart = daystart + 2
-		end
-		! Increment the reset counter for follower loss
-		regviewReset += 1
-		FollowersLost = func('shortgs', 'clamp', FollowersLost, 0, regview)
-		totFollowersLost += FollowersLost
-		regview -= FollowersLost
-		killvar 'FollowersLost'
-	end
+    if cam_daystart < daystart:
+        engagementFactor = 1 + (CamBonus / 100)
+        popularityFactor = webpopular / 1000
+
+        if regviewReset < 3:
+            if regview >= 500:
+                FollowersLost = rand(regview / (100 * engagementFactor), regview / (50 * engagementFactor)) + popularityFactor
+            else
+                FollowersLost = rand(1, 3) + popularityFactor
+            end
+            cam_daystart = daystart + max(1, 3 - (CamBonus / 50))
+        else
+            if regview >= 300:
+                FollowersLost = rand(regview / (80 * engagementFactor), regview / (40 * engagementFactor)) + popularityFactor
+            else
+                FollowersLost = rand(2, 6) + popularityFactor
+            end
+            cam_daystart = daystart + max(1, 2 - (CamBonus / 50))
+        end
+        regviewReset += 1
+        FollowersLost = func('shortgs', 'clamp', FollowersLost, 0, regview)
+        totFollowersLost += FollowersLost
+        regview -= FollowersLost
+        killvar 'FollowersLost'
+    end
 end
 
 
+
 !!---------------Keeping track of missing court appearances-----------------------------
 if arrsize('policeQW_courthearing_dates') > 0 and daystart > policeQW_courthearing_dates[0]:
 	policeQW['missed_court_dates'] += 1
@@ -1356,9 +1347,12 @@ if policeQW['fine_deadline'] > 0:
 end
 
 
-gs 'shortgs', 'coupled_array_sort', 'policeQW_courtletter_dates', '$policeQW_courtletter_subjects'
-gs 'shortgs', 'coupled_array_sort', 'policeQW_courthearing_dates', '$policeQW_courthearing_subjects'
-
+if arrsize('policeQW_courtletter_dates') > 1:
+	gs 'shortgs', 'coupled_array_sort', 'policeQW_courtletter_dates', '$policeQW_courtletter_subjects'
+end
+if arrsize('policeQW_courthearing_dates') > 1:
+	gs 'shortgs', 'coupled_array_sort', 'policeQW_courthearing_dates', '$policeQW_courthearing_subjects'
+end
 
 --- cikl ---------------------------------
 

+ 2 - 2
locations/city_center.qsrc

@@ -225,7 +225,7 @@ end
 
 
 if Enable_tablemap = 0:
-	if nichTanya['Relationship'] = 1 and nichWork ! 2 and hour >= 16 and hour <= 21 and nichTanya['FuckLast'] ! daystart:'<a href="exec:gt ''nichApartment'', ''visitTanya''">Apartment where Tanya lives</a>.'
+	if nichTanya['Relationship'] > 0 and nichTanya['Relationship'] < 4 and nichWork ! 2 and hour >= 16 and hour <= 21 and nichTanya['FuckLast'] ! daystart:'<a href="exec:gt ''nichApartment'', ''visitTanya''">Apartment where Tanya lives</a>.'
 	if nichWork = 2:'<a href="exec:gt ''nichApartment''">Nicholas''s</a> apartment where you work as a live in maid.'
 	if izoldaQW >= 1:'Your friend <a href="exec:gt ''qwIzoldaApp''">Isolde''s</a> apartment.'
 	if mainQW >= 1:'<a href="exec:gt ''tatiana_lab'', ''start''">Tatiana''s</a> secret hideout.'
@@ -233,7 +233,7 @@ if Enable_tablemap = 0:
 	if peter > 0:'<a href="exec:gt ''peterroom'', ''start_door''">Peter</a> the sex shop owner''s apartment.'
 else
 	st_count=0 & $show_table=''
-	if nichTanya['Relationship'] = 1 and nichWork ! 2 and hour >= 16 and hour <= 21 and nichTanya['FuckLast'] ! daystart: gs 'show_table','<a href="exec:gt ''nichApartment'', ''visitTanya''">Apartment</a> where Tanya lives','3'
+	if nichTanya['Relationship'] > 0 and nichTanya['Relationship'] < 4 and nichWork ! 2 and hour >= 16 and hour <= 21 and nichTanya['FuckLast'] ! daystart: gs 'show_table','<a href="exec:gt ''nichApartment'', ''visitTanya''">Apartment</a> where Tanya lives','3'
 	if nichWork = 2: gs 'show_table','<a href="exec:gt ''nichApartment''">Nicholas''s</a> apartment','3'
 	if izoldaQW >= 1: gs 'show_table','<a href="exec:gt ''qwIzoldaApp''">Isolde''s</a> apartment','3'
 	if mainQW >= 1: gs 'show_table','<a href="exec:gt ''tatiana_lab'', ''start''">Tatiana''s</a> secret hideout','3'

+ 31 - 23
locations/city_clinic.qsrc

@@ -103,7 +103,15 @@ if $ARGS[0] = 'start':
 			act 'Return to the entrance': gt 'city_clinic', 'start'
 		end
 	end
-	
+
+	if experimentQW['discovered'] = 0:
+		*nl
+		'In the far corner you spot the entrance to a signup area for <a href="exec: experimentQW[''discovered''] = 1 & gt ''city_experimental_trials'', ''front_desk''">experimental trials</a>.'
+		*nl
+	else
+		act 'Go to the medical trials reception desk': gt 'city_experimental_trials', 'front_desk'
+	end
+
 	if preg = 2:
 		act 'Give birth':
 			*clr & cla
@@ -562,7 +570,7 @@ if $ARGS[0] = 'stdcheck':
 								'"You have genital herpes. The cure for this disease is very expensive, but it''s only active some of the time."'
 								if Gerpes >= 3:
 									if GerpesNapr = 0:
-										GerpesNapr = 3 & '"I''m going to put you on a course of herpes shots. You''ll need a total of 3 injections over the course of a few days. Each injection will cost 750 <b>₽</b>."'
+										GerpesNapr = 3 & '"I''m going to put you on a course of herpes shots. You''ll need a total of 3 injections over the course of a few days. Each injection will cost 450 <b>₽</b>."'
 									elseif GerpesNapr > 0:
 										'"You need to see the nurse for your herpes injections."'
 									end
@@ -1349,13 +1357,13 @@ if $ARGS[0] = 'cosmetic1':
 		else
 		'Eye reduction surgery - 90,000 <b>₽</b>' 
 	end
-	if money >= 75000 and salo > 40:
+	if money >= 75000 and pcs_mass['body'] > 40:
 		'<a href="exec:gt ''city_clinic'', ''lyposuction''">Liposuction</a> - 75,000 <b>₽</b>'
 		else
 		'Liposuction - 75,000 <b>₽</b>'
 	end
 	''
-	if money >= 90000 and silicone ! 0:
+	if money >= 90000 and bodyVars['bust_silicone'] ! 0:
 		'<a href="exec:brSurTemp = 0 & stringimplant = 0 & fillimplant = 0 & gt ''city_clinic'', ''bImplantA''">Remove breast implants</a> - 90,000 <b>₽</b>'
 		else
 		'Remove breast implants - 90,000 <b>₽</b>'
@@ -1380,17 +1388,17 @@ if $ARGS[0] = 'cosmetic1':
 		else
 		'Get XXL breast implants - 200,000 <b>₽</b>'
 	end
-	if money >= 200000 and silicone = 0 and fillimplant = 0 and stringimplant = 0:
+	if money >= 200000 and bodyVars['bust_silicone'] = 0 and fillimplant = 0 and stringimplant = 0:
 		'<a href="exec:brSurTemp = 20 & fillimplant = 1 & gt ''city_clinic'', ''bImplantA''">Get fillable implants</a> - 200,000 <b>₽</b>'
 		else
 		'Get fillable implants - 200,000 <b>₽</b>'
 	end
-	if money >= 250000 and silicone = 0 and fillimplant = 0 and stringimplant = 0:
+	if money >= 250000 and bodyVars['bust_silicone'] = 0 and fillimplant = 0 and stringimplant = 0:
 		'<a href="exec:brSurTemp = 20 & stringimplant = 1 & gt ''city_clinic'', ''bImplantA''">Get string implants</a> - 250,000 <b>₽</b>'
 		else
 		'Get string implants - 250,000 <b>₽</b>'
 	end
-	if stringimplant = 1 and silicone >= 30 and money >= 2000:'<a href="exec:silicone -= 10 & money -= 2000 & MSG ''You drain some of your string implant''">Drain string implant</a> - 2,000 <b>₽</b>'
+	if stringimplant = 1 and bodyVars['bust_silicone'] >= 30 and money >= 2000:'<a href="exec: bodyVars[''bust_silicone''] -= 10 & money -= 2000 & MSG ''You drain some of your string implant''">Drain string implant</a> - 2,000 <b>₽</b>'
 	''
 	if money >= 500:
 		'<a href="exec:siliconeBag += 1 & money -= 500 & MSG ''You buy a silicone bag.''">Buy silicone bag</a> - 500 <b>₽</b>'
@@ -1470,8 +1478,8 @@ end
 if $ARGS[0] = 'lyposuction':
 	*clr & cla
 	minut += 60
-	salo -= 40
-	if salo < 11: salo = 11
+	pcs_mass['body'] -= 40
+	if pcs_mass['body'] < 11: pcs_mass['body'] = 11
 	money -= 75000
 	gs 'body', 'softreset'
 	gs 'stat'
@@ -1485,7 +1493,7 @@ end
 if $ARGS[0] = 'bImplantA':
 	*clr & cla
 	minut += 60
-	silicone = brSurTemp
+	bodyVars['bust_silicone'] = brSurTemp
 	! Get String Implants
 	if stringimplant = 1:
 		money -= 250000
@@ -1493,19 +1501,19 @@ if $ARGS[0] = 'bImplantA':
 	elseif fillimplant = 1:
 		money -= 200000
 	! Get XXL Implants
-	elseif silicone = 40:
+	elseif bodyVars['bust_silicone'] = 40:
 		money -= 200000
 	! Get Large Implants
-	elseif silicone = 30:
+	elseif bodyVars['bust_silicone'] = 30:
 		money -= 190000
 	! Get Medium Implants
-	elseif silicone = 20:
+	elseif bodyVars['bust_silicone'] = 20:
 		money -= 180000
 	! Get Small Implants
-	elseif silicone = 10:
+	elseif bodyVars['bust_silicone'] = 10:
 		money -= 170000
 	! Remove any implants
-	elseif silicone = 0:
+	elseif bodyVars['bust_silicone'] = 0:
 		money -= 90000
 	end
 	gs 'stat'
@@ -1599,19 +1607,19 @@ if $ARGS[0] = 'milk_donation_room':
 					'<center><img <<$set_imgh>> src="images/locations/city/residential/clinic/milkbank/small_sample.jpg"></center>'
 					'The woman takes your pumped milk and signals you to cover up.'
 					'"Okay, we''ll have this sample checked and you can come back later."'
-					if salo > 40:
-						lact_ev['poli_sample_fat'] = (60 + rand(0,9))
-					elseif salo > 20:
-						lact_ev['poli_sample_fat'] = (45 + rand(0,9))
-					elseif salo > 15:
-						lact_ev['poli_sample_fat'] = (20 + rand(0,9))
+					if pcs_mass['body'] > 40:
+						lact_ev['poli_sample_fat'] = (60 + rand(0, 9))
+					elseif pcs_mass['body'] > 20:
+						lact_ev['poli_sample_fat'] = (45 + rand(0, 9))
+					elseif pcs_mass['body'] > 15:
+						lact_ev['poli_sample_fat'] = (20 + rand(0, 9))
 					else
-						lact_ev['poli_sample_fat'] = (10 + rand(0,9))
+						lact_ev['poli_sample_fat'] = (10 + rand(0, 9))
 					end
 					if pcs_energy > 30:
 						lact_ev['poli_sample_sugar'] = rand(69, 80)
 					elseif sick > 1:
-						lact_ev['poli_sample_sugar'] = rand(0,45)
+						lact_ev['poli_sample_sugar'] = rand(0, 45)
 					else
 						lact_ev['poli_sample_sugar'] = rand(45, 69)
 					end

+ 3 - 5
locations/city_coffee_hole.qsrc

@@ -24,13 +24,12 @@ if $ARGS[0]= 'inner':
 	menu_off = 0
 	gs 'katja_meynold_schedule'
 	!!gs 'albina_uni_schedule'
-	!!gs 'anushka_schedule'
+	gs 'anushka_konstantinov_schedule'
 	gs 'stat'
 	'<center><h4><font color="maroon">Cafe "Coffee Hole"</font></h4></center>'
 	'<center><img <<$set_imgh>> src="images/locations/city/island/coffee_hole/inside.jpg"></center>'
 	'The cafe looks like it was once some type of industrial building, with tall ceilings, exposed pipes, ductwork and lights. The counter is in the far corner, while the middle of the room contains several tables and chairs. Along the wall opposite the counter is an area with several couches for people to sit and relax. The menu board shows a wide range of flavoured coffees, teas, espressos and pastries, among other things.'
-	if yearstart >= 2 and (((week = 2 or week = 4 or week = 7) and hour >= 18) or (week = 5 and hour >= 10 and hour < 16)):
-		locat['A144'] = 9
+	if locat['A144'] = 9:
 		'You see a familiar face working behind the counter, your former classmate <a href="exec:gt ''city_coffee_hole'', ''anushka_work''">Anushka.</a>'
 	end
 	if locat['katja'] = 30 and (katjaQW['know_katja_uni'] = 1 or mid($start_type,1,2) = 'sg'):
@@ -39,7 +38,7 @@ if $ARGS[0]= 'inner':
 	!!if locat['albina'] = 17 and AlbinaQW['know_albina_uni'] > 0 or mid($start_type,1,2) = 'sg'):
 		!!'You see <a href="exec:gt ''city_coffee_hole'', ''albina''">Albina</a> sitting at a table with a woman who has her back turned to you.'
 	!!end
-	if mid($start_type,1,2) = 'sg' and yearstart >= 2 and day = 2 and nerd_game['fixed_uni_day'] = 0 and hour >= 18:
+	if mid($start_type,1,2) = 'sg' and yearstart >= 2 and week = 2 and nerd_game['fixed_uni_day'] = 0 and hour >= 18:
 		'You see some familiar faces sitting in one of the corners. Some of the <a href="exec:gt ''nerd_game_night'', ''crash_gamenight_uni''">nerds</a> you went to school with back in Pavlovsk are gathered around a table. It looks like they''re playing some sort of game.'
 	end
 
@@ -92,7 +91,6 @@ if $ARGS[0] = 'eat':
 	$menu_arg = 'eat'
 	!! Sending the player to Katja''s table if she is sitting with Katja.
 	if katjaQW['brunch_bought'] = 1:
-		katjaQW['brunch_bought'] = 0
 		gt 'katja_chat', 'coffee_hole_event'
 	end
 	*clr & cla

+ 135 - 0
locations/city_experimental_trials.qsrc

@@ -0,0 +1,135 @@
+# city_experimental_trials
+
+!!2023/09/20
+!! Content reused from the medical experiment mod by pchs and julzor.
+!! Inspiration taken from Clean Slate: https://tfgames.site/index.php?module=viewgame&id=2247
+
+
+
+$loc = 'city_experimental_trials'
+$location_type = 'private'
+$locM = 'city_experimental_trials'
+
+$doc1 = 'Doctor Sokolnikov'
+$doc2 = 'Doctor Ivanov'
+
+
+
+if $ARGS[0] = 'front_desk' or $ARGS[0] = '':
+	menu_off = 0
+	$menu_loc = 'city_experimental_trials'
+	$menu_arg = 'front_desk'
+	$loc_arg = 'front_desk'
+	minut += 2
+	gs 'stat'
+
+	temp_rand = rand(0, 3)
+	if temp_rand <= 1 or experimentQW['signed'] = 0:
+		'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\desk1.jpg"></center>'
+		*nl
+		'A young woman, dressed in office clothes and wearing glasses is sitting behind a desk.'
+
+	elseif temp_rand <= 2:
+		'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\nurse1.jpg"></center>'
+		*nl
+		'A young nurse is sitting behind a desk.'
+
+	else
+		'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\nurse2.jpg"></center>'
+		*nl
+		'An elderly nurse is sitting behind a desk.'
+	end
+
+	killvar 'temp_rand'
+
+	if experimentQW['signed'] ! 0:
+		'She looks up as you walk in and warmely welcomes you in, "Hello miss <<$pcs_lastname>>, how can I help you today?"'
+
+		if $experimentQW['trial_active'] = '':
+			act 'Ask to see which clinical trials are available': gt 'city_experimental_trials_list', 'see_trials'
+		else
+			if experimentQW['trial_duration'] > 0:
+				*nl
+				'You are currently already taking part in a clinical trial.'
+			else
+				act 'Report your findings':
+					cla
+					*nl
+					if pcs_intel < 50:
+						'You report your experience in as much detail as you can.'
+						'"Thank you for your participation, it is invaluable to our research."'
+					else
+						'You report your experience in great detail, noting the various side effects that you''ve noticed.'
+						'"That you so much for your help, you''ve helped us advance our research greatly!"'
+						if rand(0, 2) = 0:
+							temp_tip = 10 * (pcs_intel  * rand(1, 3) / 10)
+							'She adds, "I think your dedication should be rewarded", as she hands you various notes adding up to ₽<<temp_tip>>.'
+							money += temp_tip
+							killvar 'temp_tip'
+						end
+					end
+
+					$experimentQW['trial_active'] = ''
+					act 'Continue': gt 'city_experimental_trials', 'front_desk'
+				end
+			end
+		end
+
+		if experimentQW['times_participated_0'] >= 2 or experimentQW['times_participated_1'] ! 0 or experimentQW['times_participated_2'] ! 0 or experimentQW['times_participated_3'] ! 0:
+			*nl
+			'You also spot a small pharmaceutical stand to the side'
+			act 'Go to the experimental pharmacy': gt 'city_experimental_trials_pharmacy', 'counter'
+		end
+
+		act 'Leave': gt 'city_clinic', 'start'
+
+	else
+		'She looks up as you walk in and warmely welcomes you in, "Hello miss, how can I help you?"'
+		'"I read an advert that you are looking for people to test new treatments... And that you compensate the subjects for it." you reply.'
+		'"Yes, that is true. We are at the forefront of medical research, and you could help push the boundaries of modern medicine. Your contribution will help save countless lives.'
+		'If you want to apply, please read and fill in this form." As she hands over a clipboard.'
+		*nl
+
+		if pcs_intel < 10:
+			'The form is filled with legal jargon, but you''re pretty sure that you''ll be paid to be experimented on and those trials won''t harm your health.'
+		elseif pcs_intel < 50:
+			'The form is filled with a lot of legal jargon, but you manage to grasp the important parts.'
+			'The clinic will pay you to take an experimental treatment and any consequences are yours to bear.'
+			'They do guarantee your safety.'
+		elseif pcs_intel < 90:
+			'The form explains that you''ll get paid to take part in testing experimental treatments.'
+			'The clinic is not liable for any of the consequences, but they will not jeopardize your general health.'
+			'Finally you are prohibited from disclosing the methods and results of the treatments to anybody not affiliated with the clinic.'
+		else
+			'The form is filled with complicated legal jargon intended to confuse the reader, but your sharp mind pierces the veil.'
+			'You will get paid when you take part in testing experimental treatments which can result in permanent changes to your body and mind.'
+			'You are solely responsible in dealing with those consequences and you may not reveal the contents nor results of the treatments, if you do reveal them you can be sued for an exorbitant amount of money.'
+			'Finally, reading between the lines you also manage to grasp that some of these experiments aren''t fully ethical.'
+		end
+
+		*nl
+
+		'At the bottom of the document you need to write down your full name, age, and add your signature.'
+		
+		act 'Sign the document':
+			experimentQW['signed'] = 1
+			*clr & cla
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\desk.jpg"></center>'
+			*nl
+			'You hand the signed document back to the woman, who looks it over briefly.'
+			'"Thank you miss <<$pcs_lastname>>, we''ll add you to our database and from now on you can enter our various trials. The contract you signed is legally binding, you are not allowed to discuss your experiences with anybody outside of this clinic."'
+			'She must have noticed the look on your face as she follows this up with "It''s to protect our proprietary technology, so if you talk about what happens here you can leak our discoveries. Everything will be fine if you keep this to yourself."'
+
+			act 'Return to the front desk': gt 'city_experimental_trials', 'front_desk'
+		end
+		
+		act 'Put the contract down and leave': gt 'city_clinic', 'start'
+	end
+end
+
+
+
+killvar '$doc1'
+killvar '$doc2'
+
+--- city_experimental_trials ---------------------------------

+ 615 - 0
locations/city_experimental_trials_events.qsrc

@@ -0,0 +1,615 @@
+# city_experimental_trials_events
+
+
+expadj = func('_difficulty','getexpadj')
+
+	!!=========================!!
+	!!                         !!
+	!!       Random Pills      !!
+	!!                         !!
+	!!=========================!!
+
+
+!! Change tits
+if $experimentQW['trial_active'] = 'pill_cyan':
+	if experimentQW['random_option'] = 0:
+		if rand(0, 9) < 4:
+			experimentQW['random_option'] = 1
+		else
+			experimentQW['random_option'] = 2
+		end
+	end
+
+
+	if experimentQW['random_option'] = 1:
+		bodyVars['bust_other'] -= 2
+		'You notice that your breast have shrunk! This must have been that experimental pill you took.'
+	else
+		bodyVars['bust_other'] += 2
+		'You notice that your breast have grown! This must have been that experimental pill you took.'
+	end
+
+
+!! Change stren, vital, or agil
+elseif $experimentQW['trial_active'] = 'pill_red':
+	if experimentQW['random_option'] = 0:
+
+		temp_rand = rand(0, 29)
+		if temp_rand < 4:
+			experimentQW['random_option'] = 1
+
+		elseif temp_rand < 10:
+			experimentQW['random_option'] = 2
+
+		elseif temp_rand < 14:
+			experimentQW['random_option'] = 3
+
+		elseif temp_rand < 20:
+			experimentQW['random_option'] = 4
+
+		elseif temp_rand < 24:
+			experimentQW['random_option'] = 5
+
+		else
+			experimentQW['random_option'] = 6
+		end
+		killvar 'temp_rand'
+	end
+
+	if experimentQW['random_option'] = 1:
+		if stren_lvl > 11:
+			stren_exp -= 2 * stren_xpnxt
+		end
+
+		'You feel weaker, you''ve lost a lot of mussle mass! This must have been that experimental pill you took.'
+
+	elseif experimentQW['random_option'] = 2:
+		if stren_lvl < 99:
+			stren_exp += 2 * stren_xpnxt
+		end
+
+		'You feel stronger, you''ve gained a lot of mussle mass! This must have been that experimental pill you took.'
+
+	elseif experimentQW['random_option'] = 3:
+		if agil_lvl > 11:
+			agil_exp -= 2 * agil_xpnxt
+		end
+
+		'You feel slower, your agility has deminished! This must have been that experimental pill you took.'
+
+	elseif experimentQW['random_option'] = 4:
+		if agil_lvl < 99:
+			agil_exp += 2 * agil_xpnxt
+		end
+
+		'You feel faster, your agility have increased! This must have been that experimental pill you took.'
+	
+	elseif experimentQW['random_option'] = 5:
+		if vital_lvl > 11:
+			vital_exp -= 2 * vital_xpnxt
+		end
+
+		'You feel winded, your endurance has decreased! This must have been that experimental pill you took.'
+	
+	else
+		if vital_lvl < 99:
+			vital_exp += 2 * vital_xpnxt
+		end
+
+		'You feel calm, your endurance has increased! This must have been that experimental pill you took.'
+	end
+
+
+!! Change intel, cha, perception?
+elseif $experimentQW['trial_active'] = 'pill_blue':
+	if experimentQW['random_option'] = 0:
+		temp_rand = rand(0, 39)
+		if temp_rand < 4:
+			experimentQW['random_option'] = 1
+
+		elseif temp_rand < 10:
+			experimentQW['random_option'] = 2
+
+		elseif temp_rand < 14:
+			experimentQW['random_option'] = 3
+
+		elseif temp_rand < 20:
+			experimentQW['random_option'] = 4
+
+		elseif temp_rand < 24:
+			experimentQW['random_option'] = 5
+
+		elseif temp_rand < 30:
+			experimentQW['random_option'] = 6
+
+		elseif temp_rand < 34:
+			experimentQW['random_option'] = 7
+
+		else
+			experimentQW['random_option'] = 8
+		end
+		killvar 'temp_rand'
+	end
+
+	if experimentQW['random_option'] = 1:
+		if intel_lvl > 11:
+			intel_exp -= 2 * intel_xpnxt
+		end
+
+		'You feel dumber, your intelligence has decreased! This must have been that experimental pill you took.'
+
+	elseif experimentQW['random_option'] = 2:
+		if intel_lvl < 99:
+			intel_exp += 2 * intel_xpnxt
+		end
+
+		'You feel smarter, your intelligence has increased! This must have been that experimental pill you took.'
+
+	elseif experimentQW['random_option'] = 3:
+		if react_lvl > 11:
+			react_exp -= 2 * react_xpnxt
+		end
+
+		'You feel slower, your reactions have deminished! This must have been that experimental pill you took.'
+
+	elseif experimentQW['random_option'] = 4:
+		if react_lvl < 99:
+			react_exp += 2 * react_xpnxt
+		end
+
+		'You feel faster, your reactions have quickened! This must have been that experimental pill you took.'
+
+	elseif experimentQW['random_option'] = 5:
+		if chrsm_lvl > 11:
+			chrsm_exp -= 2 * chrsm_xpnxt
+		end
+
+		'You feel less charismatic! This must have been that experimental pill you took.'
+
+	elseif experimentQW['random_option'] = 6:
+		if chrsm_lvl < 99:
+			chrsm_exp += 2 * chrsm_xpnxt
+		end
+
+		'You feel more charismatic! This must have been that experimental pill you took.'
+
+	elseif experimentQW['random_option'] = 7:
+		if prcptn_lvl > 11:
+			prcptn_exp -= 2 * prcptn_xpnxt
+		end
+
+		'You feel less perceptive! This must have been that experimental pill you took.'
+
+	else
+		if prcptn_lvl < 99:
+			prcptn_exp += 2 * prcptn_xpnxt
+		end
+
+		'You feel more perceptive! This must have been that experimental pill you took.'
+	end
+
+
+!! Change skin
+elseif $experimentQW['trial_active'] = 'pill_yellow':
+	if experimentQW['random_option'] = 0:
+		temp_rand = rand(0, 9)
+		if temp_rand < 3:
+			experimentQW['random_option'] = 1
+
+		elseif temp_rand < 4:
+			experimentQW['random_option'] = 2
+
+		elseif temp_rand < 6:
+			experimentQW['random_option'] = 3
+
+		else
+			experimentQW['random_option'] = 4
+		end
+		killvar 'temp_rand'
+	end
+
+	if experimentQW['random_option'] = 1:
+		pcs_skin -= 50
+		if pcs_skin < 200: pcs_skin = 200
+
+		if pcs_tan > 0:
+			pcs_tan -= 2
+			if pcs_tan < 0: pcs_tan = 0
+
+			'You skin tingles and itches. You are covered with a bright red rash and your tan has faded, damaging it and worsening your looks. This must have been that experimental pill you took.'
+
+		else
+			*nl
+			'You skin tingles and itches. You are covered with a bright red rash, damaging it and worsening your looks. This must have been that experimental pill you took.'
+		end
+
+	elseif experimentQW['random_option'] = 2:
+		pcs_skin -= 50
+		if pcs_skin < 200: pcs_skin = 200
+
+		if pcs_tan > 0:
+			*nl
+			'You skin tingles and itches. You are covered with a bright red rash and your tan has deepened, damaging it and worsening your looks. This must have been that experimental pill you took.'
+		else
+			*nl
+			'You skin tingles and itches. You are covered with a bright red rash and your skin has become tanned, damaging it and worsening your looks. This must have been that experimental pill you took.'
+		end
+
+		pcs_tan += 2
+
+	elseif experimentQW['random_option'] = 3:
+		pcs_skin += 50
+		if pcs_skin > 900: pcs_skin = 900
+
+		if pcs_tan > 0:
+			pcs_tan -= 2
+			if pcs_tan < 0: pcs_tan = 0
+
+			*nl
+			'Your skin pleasantly tingles, blemishes and your tan have faded, increasing your looks. This must have been that experimental pill you took.'
+
+		else
+			*nl
+			'Your skin pleasantly tingles, blemishes have faded, increasing your looks. This must have been that experimental pill you took.'
+		end
+
+	else
+		pcs_skin += 50
+		if pcs_skin > 900: pcs_skin = 900
+
+		if pcs_tan > 0:
+			*nl
+			'Your skin pleasantly tingles, blemishes have faded and your tanned deepened, increasing your looks. This must have been that experimental pill you took.'
+
+		else
+			*nl
+			'Your skin pleasantly tingles, blemishes have faded and your skin has become tanned, increasing your looks. This must have been that experimental pill you took.'
+		end
+
+		pcs_tan += 2
+	end
+
+	gs 'body', 'UpdateBaseAppearnce'
+
+
+!! Change butt
+elseif $experimentQW['trial_active'] = 'pill_orange':
+	if experimentQW['random_option'] = 0:
+		if rand(0, 9) < 5:
+			experimentQW['random_option'] = 1
+		else
+			experimentQW['random_option'] = 2
+		end
+	end
+
+	if experimentQW['random_option'] = 1:
+		butt_tr_exp -= 10 * butt_tr_xpnxt
+		if butt_tr_exp < 0: butt_tr_exp = 0
+
+		*nl
+		'You notice that your ass has shrunk! This must have been that experimental pill you took.'
+
+	else
+		butt_tr_exp += butt_tr_xpnxt * 10
+
+		*nl
+		'You notice that your ass has grown! This must have been that experimental pill you took.'
+	end
+
+
+!! Change inhib
+elseif $experimentQW['trial_active'] = 'pill_violet':
+	if experimentQW['random_option'] = 0:
+		!! 40% chance of decreasing your inhib_exp
+		if rand(0, 9) < 4:
+			experimentQW['random_option'] = 1
+
+		!! 60% chance of increasing your tits
+		else
+			experimentQW['random_option'] = 2
+		end
+	end
+
+	if experimentQW['random_option'] = 1:
+		!! correct amount??
+		inhib_exp -= 50
+		*nl
+		'You feel less outgoing and more ashamed, your inhibition has lowered. This must have been that experimental pill you took.'
+
+	else
+		!! correct amount??
+		inhib_exp += 50
+		*nl
+		'You feel more outgoing and less ashamed, your inhibition has increased. This must have been that experimental pill you took.'
+	end
+
+
+!! Change min_arousal
+elseif $experimentQW['trial_active'] = 'pill_brown':
+	if experimentQW['random_option'] = 0:
+		if rand(0, 9) < 4 and min_arousal > 0:
+			experimentQW['random_option'] = 1
+		else
+			experimentQW['random_option'] = 2
+		end
+	end
+
+	if experimentQW['random_option'] = 1:
+		min_arousal -= 2
+		if min_arousal < 0: min_arousal = 0
+
+		*nl
+		'You feel a calm wash over you that you haven''t felt in a while. It seems that your arousal has reduced. This must have been that experimental pill you took.'
+	else
+		min_arousal += 5
+		if min_arousal > 100: min_arousal = 100
+
+		*nl
+		'You feel your pussy moisten as a wave of arousal washes over you. This must have been that experimental pill you took.'
+	end
+
+
+!! Change clit
+elseif $experimentQW['trial_active'] = 'pill_purple':
+	if experimentQW['random_option'] = 0:
+		!! 55% chance.
+		if rand(0, 19) < 11 or clit_size = 0:
+			experimentQW['random_option'] = 1
+		else
+			experimentQW['random_option'] = 2
+		end
+	end
+
+	if experimentQW['random_option'] = 1:
+		if rand(0, 1) = 0:
+			*nl
+			'You feel a tingle in your clit that quickly vanishes. This must have been that experimental pill you took.'
+
+		else
+			clit_size += 1
+			*nl
+			'You feel a tingle in your clit that lingers as it becomes engorged and permanently becomes larger. This must have been that experimental pill you took.'
+		end
+
+	else
+		if rand(0, 1) = 0:
+			*nl
+			'You feel a tingle in your clit that quickly vanishes. This must have been that experimental pill you took.'
+
+		else
+			clit_size -= 1
+			*nl
+			'You feel a tingle in your clit that lingers as it shrinks and permanently becomes smaller. This must have been that experimental pill you took.'
+		end
+	end
+
+
+!! Change alko_status
+elseif $experimentQW['trial_active'] = 'pill_green':
+	if pcs_traits['alko_status'] ! 1:
+		pcs_traits['alko_status'] = -1
+		*nl
+		'You feel a sharp pain in your liver as the experimental treatment takes hold. It passes moments later, though you have no doubt that this will impede your ability to hold your liquor.'
+
+	else
+		pcs_traits['alko_status'] = -1
+		*nl
+		'You feel a soothing warmth in your liver as the experimental treatment takes hold. It lingers a while and you suspect that you can hold your liquor much better now.'
+	end
+
+
+!! Give exhib level or change willwpower
+elseif $experimentQW['trial_active'] = 'pill_gray':
+	if pcs_traits['commando_lvl'] < 3:
+		pcs_traits['commando_lvl'] = 3
+
+		*nl
+		'Your skin feels extremely sensitive. This must have been that experimental pill you took.'
+		msg 'You have gained the 3rd level of the Commando trait! From now on any kind of underwear over your hips just feels <i>wrong</i>. You suffer mood penalties while wearing panties.'
+
+	else
+		*nl
+		temp_will_loss = rand(2, 5)
+		willpowermax -= temp_will_loss
+		pcs_willpwr -= temp_will_loss
+		will_counter = 0
+		killvar 'temp_will_loss'
+
+		*nl
+		'You feel your mental energy drain, and you permanently lose some willpower.'
+	end
+
+
+!! Give bimbo lvl or change willpower?
+elseif $experimentQW['trial_active'] = 'pill_pink':
+	if bimbolevel < 3:
+		bimbo += 10
+		bimbolevel += 1
+
+		*nl
+		'A pink mist fills your mind and clouds your thoughts, you want to giggle and be bubbly. This must have been that experimental pill you took.'
+
+	else
+		temp_will_loss = rand(2, 5)
+		willpowermax -= temp_will_loss
+		pcs_willpwr -= temp_will_loss
+		will_counter = 0
+		killvar 'temp_will_loss'
+		*nl
+		'You feel your mental energy drain, and you permanently lose some willpower.'
+	end
+end
+
+
+	!!=========================!!
+	!!                         !!
+	!!       Breast Cream      !!
+	!!                         !!
+	!!=========================!!
+
+
+if $experimentQW['trial_active'] = 'breast_cream':
+	bodyVars['bust_other'] += 2
+
+	if experimentQW['trial_duration'] > 1:
+		*nl
+		'You notice that your breast have grown! This must have been that experimental breast cream.'
+
+	else
+		if lactation['active'] <= 0:
+			!! Permanent lactation
+			func('lact_lib', 'lact_switch')
+			lactation['milkprod_type'] = 0
+			*nl
+			'Your breasts have grown and have a fullness to them. This must have been that experimental breast cream.'
+		else
+			*nl
+			'Your breasts have grown and have become fuller. This must have been that experimental breast cream.'
+		end
+	end
+end
+
+
+	!!=========================!!
+	!!                         !!
+	!!        Hair Cream       !!
+	!!                         !!
+	!!=========================!!
+
+
+if $experimentQW['trial_active'] = 'hair_cream':
+	pcs_hairlng += rand(20, 50)
+	defcurly = rand(0, 1)
+
+	if experimentQW['trial_duration'] > 1:
+		pcs_haircol = rand(0, 22)
+		*nl
+		'You notice that your hair has lengthened and changed in color! This must have been that experimental hair extension shampoo.'
+
+	else
+		pcs_haircol = 23
+		*nl
+		'You notice that your hair has lengthened and changed in color! This must have been that experimental hair extension shampoo.'
+	end
+end
+
+
+	!!=========================!!
+	!!                         !!
+	!!       Aphrodesiac       !!
+	!!                         !!
+	!!=========================!!
+
+
+if $experimentQW['trial_active'] = 'aphrodisiac_pill':
+	min_arousal += 10
+	pcs_horny += 10
+
+	if experimentQW['trial_duration'] > 1:
+		pcs_mood = 100
+		*nl
+		'You feel a warmth spreading from stomach moving towards your pussy, where it lingers for a few moments! This must have been that experimental aphrodisiac.'
+
+	else
+		min_arousal += 20
+		pcs_horny = 100
+		orgasm += 1
+		pcs_mood = 100
+		if pcs_traits['easy_orgams'] < 2: pcs_traits['easy_orgams'] = 2
+		
+		*nl
+		'You feel a heat spreading from stomach moving towards your pussy. The heat pulses and you find yourself in the grips of an intense orgasm! You feel like it''ll be easier to orgasm from now on. This must have been that experimental aphrodisiac.'
+	end
+end
+
+
+	!!=========================!!
+	!!                         !!
+	!!      Butt Injection     !!
+	!!                         !!
+	!!=========================!!
+
+
+if $experimentQW['trial_active'] = 'butt_injection':
+	pcs_horny += 10
+	butt_tr_exp += butt_tr_xpnxt * 2
+
+	if experimentQW['trial_duration'] >= 4:
+		*nl
+		'You feel a warmth pulsing in your ass and you can feel your bottom expanding. This must have been that experimental butt injection.'
+	else
+		min_arousal += 10
+		pcs_horny += 10
+
+		pcs_ass += rand(5, 10) + (3 - experimentQW['trial_duration'])
+		if pcs_ass > 30: pcs_ass = 30
+
+		ashrink -= rand(2, 4)
+		if ashrink < 0: ashrink = 0
+
+		ashrinkdays += rand(2, 4)
+		if ashrinkdays > 10: ashrinkdays = 10
+
+		agape[4] += rand(5, 10) + (3 - experimentQW['trial_duration'])
+		if agape[4] > 60: agape[4] = 60
+
+		*nl
+		'You feel a warmth pulsing in your ass, heat radiation from your puckered hole. You can feel your ass expanding and you crave anal. This must have been that experimental butt injection.'
+	end
+end
+
+
+	!!=========================!!
+	!!                         !!
+	!!      Fertility Shot     !!
+	!!                         !!
+	!!=========================!!
+
+
+if $experimentQW['trial_active'] = 'fertility_shot':
+	if experimentQW['trial_duration'] = 3:
+		if min_arousal < 20: min_arousal = 20
+		if pcs_horney < 20: pss_horny = 20
+		
+		*nl
+		'You feel a heat radiate from your womb, awakening your arousal. This must have been that experimental fertility shot.'
+	elseif experimentQW['trial_duration'] = 2:
+		if min_arousal < 40: min_arousal = 40
+		if pcs_horney < 40: pss_horny = 40
+		*nl
+		'You feel a heat radiate from your womb, awakening your arousal. This must have been that experimental fertility shot.'
+	else
+		if min_arousal < 50: min_arousal = 50
+		if pcs_horney < 50: pss_horny = 50
+		pcs_traits['hyper_fertile'] = 1
+		*nl
+		'You feel a heat radiate from your womb, awakening your arousal. This must have been that experimental fertility shot.'
+	end
+end
+
+
+	!!-------------------------!!
+	!!                         !!
+	!!    General Management   !!
+	!!                         !!
+	!!-------------------------!!
+
+
+experimentQW['trial_duration'] -= 1
+
+if experimentQW['trial_duration'] <= 0:
+	experimentQW['trial_duration'] = 0
+	experimentQW['random_option'] = 0
+	msg 'You should visit the clinical trial desk at the city clinic and report your experiences.'
+end
+
+killvar 'exppadj'
+
+gs 'stat'
+
+act 'Continue':
+	*nl
+	gs 'wakeup_events', 'event_end'
+end
+
+--- city_experimental_trials_events ---------------------------------

+ 512 - 0
locations/city_experimental_trials_list.qsrc

@@ -0,0 +1,512 @@
+# city_experimental_trials_list
+
+
+$loc = 'city_experimental_trials_list'
+$location_type = 'private'
+$locM = 'city_experimental_trials_list'
+
+$exp_docs[0] = 'Doctor Sokolnikov'
+$exp_docs[1] = 'Doctor Ivanov'
+
+
+$trial_names[0]     = 'Enhancement pill'
+ trial_pays[0]      = 500
+$trial_sections[0]  = 'enhancement_pill'
+ trial_maxs[0]      = -1
+!trial_durations[0] = Varies per pill.
+
+$trial_names[1]     = 'Breast Cream'
+ trial_pays[1]      = 5000
+$trial_sections[1]  = 'breast_cream'
+ trial_maxs[1]      = 1
+ trial_durations[1] = 4
+
+$trial_names[2]     = 'Hair Extension Shampoo'
+ trial_pays[2]      = 2500
+$trial_sections[2]  = 'hair_cream'
+ trial_maxs[2]      = 1
+ trial_durations[2] = 5
+
+$trial_names[3]     = 'Aphrodisiac pills'
+ trial_pays[3]      = 10000
+$trial_sections[3]  = 'aphrodisiac_pill'
+ trial_maxs[3]      = 1
+ trial_durations[3] = 5
+
+$trial_names[4]     = 'Butt Injection'
+ trial_pays[4]      = 10000
+$trial_sections[4]  = 'butt_injection'
+ trial_maxs[4]      = 1
+ trial_durations[4] = 5
+
+$trial_names[5]     = 'Fertility treatment'
+ trial_pays[5]      = 10000
+$trial_sections[5]  = 'fertility_shot'
+ trial_maxs[5]      = 1
+ trial_durations[5] = 3
+
+!{
+$trial_names[6]     = 'Growth Hormones'
+ trial_pays[6]      = 5000
+$trial_sections[6]  = 'growth_hormones'
+ trial_maxs[6]      = 1
+ trial_durations[6] = ?
+
+Drugs
+}
+
+if $ARGS[0] = 'see_trials':
+	$menu_loc = 'city_experimental_trials_list'
+	$menu_arg = 'see_trials'
+	menu_off = 0
+	$loc_arg = 'see_trials'
+	minut += 2
+	gs 'stat'
+
+	'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\experiment_form.jpg"></center>'
+	'You look through the long list of various available clinical trials and the following stick out:'
+	*nl
+	*nl
+	*pl '<center><table align="center" width=80%>'
+	cetl_i = 0
+	:loop_start
+		$temp_bgcolor = func('themes', 'alt_color', $temp_bgcolor)
+		$temp_text = ''
+		if trial_maxs[cetl_i] = -1 or experimentQW['times_participated_<<cetl_i>>'] < trial_maxs[cetl_i]:
+			$temp_text += '<tr><td bgcolor="<<$temp_bgcolor>>" align="center"><a href="exec: gt ''city_experimental_trials_list'', ''<<$trial_sections[cetl_i]>>''"><<$trial_names[cetl_i]>></a>'
+		else
+			$temp_text += '<tr><td bgcolor="<<$temp_bgcolor>>" align="center"><font color="black"><<$trial_names[cetl_i]>></font>'
+		end
+		$temp_text += '</td> <td bgcolor="<<$temp_bgcolor>>" align="right"><font color="black">₽<<trial_pays[cetl_i]>></font></td></tr>'
+
+		*pl '<<$temp_text>>'
+
+		cetl_i += 1
+	if cetl_i < arrsize('$trial_names'): jump 'loop_start'
+	*pl '</table></center>'
+
+	killvar '$temp_bgcolor'
+	killvar 'loop_start'
+	killvar '$temp_text'
+	killvar 'cetl_i'
+
+	act 'Go back': gs 'city_experimental_trials_list', 'killvars' & gt 'city_experimental_trials', 'front_desk'
+end
+
+
+
+
+
+!! Enhancement pill
+if $ARGS[0] = $trial_sections[0]:
+	$menu_loc = 'city_experimental_trials_list'
+	$menu_arg = $trial_sections[0]
+	menu_off = 0
+	$loc_arg = $trial_sections[0]
+
+	minut += 2
+	
+	!!Image of the desk, or a experimental trials folder.
+	'<center><img <<$set_imgh>> src="images\system\image_needed.png"></center>'
+
+	'We have developed a range of enhancement pills that are designed to improve body and mood. They''ve just been approved for human trials, so we''re still cataloguing the effects.'
+	'The following are expected: mood swings, aches, itches, rashes, and physical changes.'
+	
+	act 'Sign up':
+		$experimentQW['trial_active'] = $trial_names[0]
+
+		menu_off = 1
+		minut += 2
+		gs 'stat'
+
+		*clr & cla
+		if rand(0, 1) = 0:
+			$temp_doc = $exp_docs[0]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
+		else
+			$temp_doc = $exp_docs[1]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc2.jpg"></center>'
+		end
+
+		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		*nl
+		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where you take a seat in one of the free chairs available.'
+
+		temp_rand = rand(0, 89)
+		!! Change tits
+		if temp_rand < 10:
+			$temp_pill_color = 'cyan'
+			$experimentQW['trial_active']     = 'pill_cyan'
+			$experimentQW['pill_cyan_taken'] += 1
+			 experimentQW['trial_duration']   = rand(1, 3)
+
+		!! Change stren, vital, or agil
+		elseif temp_rand < 20:
+			$temp_pill_color = 'red'
+			$experimentQW['trial_active']    = 'pill_red'
+			$experimentQW['pill_red_taken'] += 1
+			 experimentQW['trial_duration']  = rand(2, 4)
+
+		!! Change intel, cha, perception?
+		elseif temp_rand < 30:
+			$temp_pill_color = 'blue'
+			$experimentQW['trial_active']     = 'pill_blue'
+			$experimentQW['pill_blue_taken'] += 1
+			 experimentQW['trial_duration']   = rand(2, 4)
+
+		!! Change skin
+		elseif temp_rand < 40:
+			$temp_pill_color = 'yellow'
+			$experimentQW['trial_active']       = 'pill_yellow'
+			$experimentQW['pill_yellow_taken'] += 1
+			 experimentQW['trial_duration']     = rand(2, 5)
+
+		!! Change butt
+		elseif temp_rand < 50:
+			$temp_pill_color = 'orange'
+			$experimentQW['trial_active']       = 'pill_orange'
+			$experimentQW['pill_orange_taken'] += 1
+			 experimentQW['trial_duration']     = rand(2, 4)
+
+		!! Change inhib
+		elseif temp_rand < 60:
+			$temp_pill_color = 'violet'
+			$experimentQW['trial_active']       = 'pill_violet'
+			$experimentQW['pill_violet_taken'] += 1
+			 experimentQW['trial_duration']     = 1
+
+		!! Change min_arousal
+		elseif temp_rand < 65:
+			$temp_pill_color = 'brown'
+			$experimentQW['trial_active']      = 'pill_brown'
+			$experimentQW['pill_brown_taken'] += 1
+			 experimentQW['trial_duration']    = rand(2, 4)
+		
+		!! Change clit
+		elseif temp_rand < 70:
+			$temp_pill_color = 'purple'
+			$experimentQW['trial_active']     = 'pill_purple'
+			$experimentQW['pill_cyan_taken'] += 1
+			 experimentQW['trial_duration']   = rand(2, 4)
+
+		!! Change alko_status
+		elseif temp_rand < 80:
+			$temp_pill_color = 'green'
+			$experimentQW['trial_active']      = 'pill_green'
+			$experimentQW['pill_green_taken'] += 1
+			 experimentQW['trial_duration']    = 1
+
+		!! Give exhib level or change willwpower
+		elseif temp_rand < 85:
+			$temp_pill_color = 'gray'
+			$experimentQW['trial_active']     = 'pill_gray'
+			$experimentQW['pill_gray_taken'] += 1
+			 experimentQW['trial_duration']   = 1
+
+		!! Give bimbo lvl or change willpower?
+		elseif temp_rand < 90:
+			$temp_pill_color = 'pink'
+			$experimentQW['trial_active']     = 'pill_pink'
+			$experimentQW['pill_pink_taken'] += 1
+			 experimentQW['trial_duration']   = 1
+		end
+
+		experimentQW['times_participated_0'] += 1
+
+
+		'<<$temp_doc>> briefly searches through a drawer, pulls out a nondescript <font color=<<$temp_pill_color>>><<$temp_pill_color>> pill</font> and hands it to you. "Please swallow this, and you''ll get paid."'
+
+		killvar '$temp_doc'
+		killvar 'temp_rand'
+
+		act 'Swallow the <font color=<<$temp_pill_color>>><<$temp_pill_color>> pill</font>':
+			minut += 3
+			*clr & cla
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\pill<<rand(2, 4)>>.jpg"></center>'
+			'The doctor observes as you swallow the pill and then makes a note on a clipboard. "Thank you for your participation miss <<$pcs_lastname>>, we''ll speak again soon."'
+			gs 'city_experimental_trials_list', 'act_return', trial_pays[0]
+		end
+	end
+	gs 'city_experimental_trials_list', 'act_go_back'
+
+
+
+!! Breast Cream
+elseif $ARGS[0] = $trial_sections[1]:
+	$menu_loc = 'city_experimental_trials_list'
+	$menu_arg = $trial_sections[1]
+	 menu_off = 0
+	$loc_arg = $trial_sections[1]
+
+	minut += 2
+	'We have developed a breast cream, based on natural hormones, which enhances the natural breast growth leading to fuller and natural looking breasts.'
+	'No side effects are listed for this clinical trial.'
+
+	act 'Sign up':
+		 experimentQW['times_participated_1'] += 1
+		$experimentQW['trial_active'] = $trial_sections[1]
+		 experimentQW['trial_duration'] = trial_durations[1]
+
+		menu_off = 1
+		minut += 2
+		gs 'stat'
+
+		*clr & cla
+		if rand(0, 1) = 0:
+			$temp_doc = $exp_docs[0]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
+		else
+			$temp_doc = $exp_docs[1]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc2.jpg"></center>'
+		end
+
+		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		*nl
+		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where he gestures you lie on the exam table. "Please lie down and expose your chest."'
+
+		act 'Undress and lie down':
+			minut += 1
+			pcs_horny += 5
+			gs 'stat'
+			*clr & cla
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\bustcream1.jpg"></center>'
+			'<<$temp_doc>> puts on a pair of latex gloves, grabs a generic white tube, squeezes a large amount of white cream in his hands, and starts massaging it into your breasts.'
+			'The massage continues for about a minute, at which point <<$temp_doc>> steps away and takes of his gloves. "Thank you for your participation miss <<$pcs_lastname>>, you can get dressed now and we''ll speak again soon."'
+
+			gs 'city_experimental_trials_list', 'act_return', trial_pays[1]
+		end
+	end
+
+	gs 'city_experimental_trials_list', 'act_go_back'
+
+
+
+!! Hair extension shampoo
+elseif $ARGS[0] = $trial_section[2]:
+	$menu_loc = 'city_experimental_trials_list'
+	$menu_arg = $trial_section[2]
+	 menu_off = 0
+	$loc_arg = $trial_section[2]
+
+	minut += 2
+	'We have developed a hair extension shampoo, which enhances your natural hair growth leading to longer, fuller and glossier hair.'
+	'No side effects are listed for this clinical trial.'
+
+	act 'Sign up':
+		 experimentQW['times_participated_2'] += 1
+		$experimentQW['trial_active']          = $trial_sections[2]
+		 experimentQW['trial_duration']        =  trial_duration[2]
+
+		menu_off = 1
+		minut += 2
+		gs 'stat'
+
+		*clr & cla
+		if rand(0, 1) = 0:
+			$temp_doc = $exp_docs[0]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
+		else
+			$temp_doc = $exp_docs[1]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc2.jpg"></center>'
+		end
+
+		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		*nl
+		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where he gestures you lie on the exam table. "Please lie down."'
+
+		act 'Lie down':
+			minut += 1
+			gs 'stat'
+			*clr & cla
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\haircream1.jpg"></center>'
+			'<<$temp_doc>> puts on a pair of latex gloves, grabs a generic chestnut brown tube, squeezes a large amount of beige cream in his hands, and starts massaging it into your hair and scalp.'
+			'The massage continues for about a minute, at which point <<$temp_doc>> steps away and takes of his gloves. "Thank you for your participation miss <<$pcs_lastname>>, you can get dressed now and we''ll speak again soon."'
+
+			gs 'city_experimental_trials_list', 'act_return', trial_pays[2]
+		end
+	end
+
+	gs 'city_experimental_trials_list', 'act_go_back'
+
+
+
+!! Aphrodisiac
+elseif $ARGS[0] = $trial_sections[3]:
+	$menu_loc = 'city_experimental_trials_list'
+	$menu_arg = $trial_sections[3]
+	 menu_off = 0
+	$loc_arg = $trial_sections[3]
+
+	minut += 2
+	'We have developed a general aphrodisiac to put you and your partner in the mood and ready to go for hours.'
+	'No side effects are listed for this clinical trial.'
+	*nl
+	'<sub><small>Warning! This is a strictly personal enhancer, the clinic is not liable for any criminal allegations if used on other subjects.</small></sub>'
+
+	act 'Sign up':
+		 experimentQW['times_participated_2'] += 1
+		$experimentQW['trial_active'] = $trial_sections[3]
+		 experimentQW['trial_duration'] = trial_durations[3]
+
+		menu_off = 1
+		minut += 2
+		gs 'stat'
+
+		*clr & cla
+		if rand(0, 1) = 0:
+			$temp_doc = $exp_docs[0]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
+		else
+			$temp_doc = $exp_docs[1]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc2.jpg"></center>'
+		end
+
+
+		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		*nl
+		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where you take a seat in one of the free chairs available.'
+
+
+		'<<$temp_doc>> briefly searches through a drawer, pulls out a brightly coloured pink pill and hands it to you. "Please swallow this, and you''ll get paid."'
+
+		killvar '$temp_doc'
+
+		act 'Swallow the aphrodisiac</font>':
+			minut += 3
+			*clr & cla
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\pill1.jpg"></center>'
+			'The doctor observes as you swallow the pill and then makes a note on a clipboard. "Thank you for your participation miss <<$pcs_lastname>>, we''ll speak again soon."'
+
+			gs 'city_experimental_trials_list', 'act_return', trial_pays[3]
+		end
+	end
+
+	gs 'city_experimental_trials_list', 'act_go_back'
+
+
+
+!! Butt injection
+elseif $ARGS[0] = $trial_sections[4]:
+	$menu_loc = 'city_experimental_trials_list'
+	$menu_arg = $trial_sections[4]
+	 menu_off = 0
+	$loc_arg  = $trial_sections[4]
+
+	minut += 2
+	'Dissapointed by your genetic disposition to a flat behind, but afraid of invasive surgery? We at Kardashian Medics have heard you and developed our patented<sup>*</sup> KBI treatment, get a behind like ours.'
+	'No side effects are listed for this clinical trial.'
+	'<br><br><br><br><br><br><br><br><br><br>'
+	'<sub><small>*Patent following. The Kardashian Butt Injection is not affiliated with Kardashian family.</small></sub>'
+
+	act 'Sign up':
+		 experimentQW['times_participated_2'] += 1
+		$experimentQW['trial_active'] = $trial_sections[4]
+		 experimentQW['trial_duration'] = trial_durations[4]
+		
+		menu_off = 1
+		minut += 2
+		gs 'stat'
+
+		*clr & cla
+		if rand(0, 1) = 0:
+			$temp_doc = $exp_docs[0]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
+		else
+			$temp_doc = $exp_docs[1]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc2.jpg"></center>'
+		end
+
+
+		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		*nl
+		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where he gestures you lie on the exam table. "Please expose your buttocks and lie face down on the exam table."'
+
+		act 'Undress and lie down':
+			minut += 3
+			*clr & cla
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\assinjection1.jpg"></center>'
+			'<<$temp_doc>> briefly searches through a drawer, pulls out a syringe filled with a light brownish liquid. A mild sting and a small injection in each bottock, and you are done.'
+			'"Thank you for your participation miss <<$pcs_lastname>>, we''ll speak again soon."'
+
+			gs 'city_experimental_trials_list', 'act_return', trial_pays[4]
+		end
+	end
+
+	gs 'city_experimental_trials_list', 'act_go_back'
+
+
+
+!! Fertility shot
+elseif $ARGS[0] = $trial_sections[5]:
+	$menu_loc = 'city_experimental_trials_list'
+	$menu_arg = $trial_sections[5]
+	 menu_off = 0
+	$loc_arg  = $trial_sections[5]
+
+	minut += 2
+	'Do you want a baby, but having problems getting pregnant? Fear not, for we have developed a new fertility treatment. One shot and your chances of bringing that sunshine into your life will quadrupple.'
+	'Side effects include: Hormonal imbalance, superovulation, and uncontroled arousal.'
+
+	act 'Sign up':
+		 experimentQW['times_participated_2'] += 1
+		$experimentQW['trial_active'] = $trial_sections[4]
+		 experimentQW['trial_duration'] = trial_durations[4]
+
+		menu_off = 1
+		minut += 2
+		gs 'stat'
+
+		*clr & cla
+		if rand(0, 1) = 0:
+			$temp_doc = $exp_docs[0]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
+		else
+			$temp_doc = $exp_docs[1]
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc2.jpg"></center>'
+		end
+
+
+		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		*nl
+		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where he gestures you lie on the exam table. "Please expose your stomach and lie face down on the exam table."'
+
+		act 'Lie down':
+			minut += 3
+			*clr & cla
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\pregshot1.jpg"></center>'
+			'<<$temp_doc>> briefly searches through a drawer, pulls out a syringe filled with a bubbling red liquid. A sharp sting and an injection into your lower stomach, and you are done.'
+			'"Thank you for your participation miss <<$pcs_lastname>>, we''ll speak again soon."'
+
+			gs 'city_experimental_trials_list', 'act_return', trial_pays[5]
+		end
+	end
+
+	gs 'city_experimental_trials_list', 'act_go_back'
+end
+
+
+if $ARGS[0] = 'act_go_back':
+	act 'Go back':
+		gt 'city_experimental_trials_list', 'see_trials'
+	end
+end
+
+if $ARGS[0] = 'act_return':
+	act 'Return to the clinic':
+		money += ARGS[1]
+		gs 'city_experimental_trials_list', 'killvars'
+		gt 'city_clinic', 'start'
+	end
+end
+
+if $ARGS[0] = 'killvars':
+	killvar '$trial_names'
+	killvar 'trial_pays'
+	killvar 'trial_codes'
+	killvar '$exp_docs'
+	killvar '$temp_doc'
+end
+
+
+
+--- city_experimental_trials_list ---------------------------------

+ 25 - 0
locations/city_experimental_trials_pharmacy.qsrc

@@ -0,0 +1,25 @@
+# city_experimental_trials_pharmacy
+
+if $ARGS[0] = 'counter':
+		'<center><B><font color="maroon">Experimental Pharmacy</font></B></center>'
+		if rand(0, 1) = 0:
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\pharmacist1.jpg"></center>'
+			*nl
+			'You approach the pharmacy front desk. The older pharmacist behind the counter looks up at you and gives you a smile.'
+			'"How can I help you?"'
+		else
+			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\pharmacist2.jpg"></center>'
+			*nl
+			'You approach the pharmacy front desk. The middle aged pharmacist behind the counter looks up at you and smiles.'
+			'"How can I help you".'
+		end
+		*nl
+
+		'There is currently nothing of note being sold here (yet).'
+		'More content will be added here in later updates.'
+
+		act 'Go back to the front desk': gt 'city_experimental_trials', 'front_desk'
+end
+
+
+--- city_experimental_trials_pharmacy ---------------------------------

+ 19 - 10
locations/city_library.qsrc

@@ -45,13 +45,13 @@ $downlibrary['BookStudy'] = {
 '<center><b><font color="maroon">National Library of Russia</font></b></center>'
 '<center><img <<$set_imgh>> src="images/locations/city/citycenter/library/downlibint.jpg"></center>'
 'A huge library with thousands upon thousands of books. You could spend years in here and probably still wouldn''t be able to read it all.'
-'There is a large IT section with gt ''Komp'',''start''">computers</a> available for public use.'
 
 act 'Leave': minut += 5 & gt 'city_center'
 
 if hour >= 8 and hour <= 18:
+	'There is a large IT section with <a href="exec: gs ''internet_mobile'', ''get_access'', ''free'', ''noporn'',''nocamshow'' & gs ''internet_mobile'', ''add_limitation'', ''general-text'', ''On this public computer all adult content sites are blocked'' & gt ''Komp'',''start''">computers</a> available for public use.'
 	act 'Read a book':
-		gt 'city_library', 'read'	
+		gt 'city_library', 'read'
 	end
 	
 	act 'Borrow a book':
@@ -198,15 +198,24 @@ if $ARGS[0] = 'loan':
 	end
 
 	if lib_debt > 0:
-		'You owe an outstanding debt of <<lib_debt>> <b>₽</b> to the library.'
-		if pcs_money >= lib_debt:
-			act 'Pay your debt':
-				pcs_money -= lib_debt
-				lib_debt = 0
-				gt 'city_library', 'Pay_debt'			
-			end
-		else
+		'You''ve owe an outstanding debt of <<lib_debt>> <b>₽</b> to the library.'
+		if money < lib_debt and karta < lib_debt:
 			act '<font color="red">Pay your debt</font>': '<br><font color="red">You don''t have enough money to pay your debt.</font>'
+		else
+			if money >= lib_debt:
+				act 'Pay your debt (cash)':
+					money -= lib_debt
+					lib_debt = 0
+					gt 'city_library', 'loan'
+				end
+			end
+			if karta >= lib_debt:
+				act 'Pay your debt (card)':
+					karta -= lib_debt
+					lib_debt = 0
+					gt 'city_library', 'loan'
+				end
+			end
 		end
 	end
 

+ 2 - 2
locations/city_market.qsrc

@@ -269,8 +269,8 @@ if $ARGS[0] = 'tailor':
 					act 'Continue': gt 'city_market', 'tailor'
 				end
 
-				act 'Take in different clothes':gt 'clothing', 'view_clothing_list', 'resize'
-				act 'Take in all the clothes':gt 'portnoi2'
+				act 'Take in different clothes': gt 'clothing', 'view_clothing_list', 'resize'
+				act 'Take in all the clothes': gt 'tailor'
 			end
 		else
 			'"Hello young lady. I am Jacob Solomonovich, but you can call me Yasha. And what is your name?"'

+ 2 - 2
locations/city_musicstore.qsrc

@@ -115,13 +115,13 @@ if $ARGS[0] = 'firstvisit':
 				act 'You have to think about it':
 					ml_didntbuyguitarthefirstvisit = 1
 					'You hesitate for a moment, unsure whether to buy it or not and finally decide to not do it, at least not now. "I will have to talk to my mum first" you say to Jimmy. '
-					'He just nods "Don''t worry <<$pcs_firstname>>. You know what, I will put it aside for you for a bit in case you change your mind". He scribbles something on a post-it note, and sticks it on the guitar "I will try to keep the price the same, 3,400 rubels."'
+					'He just nods "Don''t worry <<$pcs_firstname>>. You know what, I will put it aside for you for a bit in case you change your mind". He scribbles something on a post-it note, and sticks it on the guitar "I will try to keep the price the same, 3,400 <b>₽</b>."'
 					act 'Leave': gt 'torgcentr'
 				end
 			else
 				ml_didntbuyguitarthefirstvisit = 1
 				'While the guitar is not the best sounding one it''s comfortable. Unfortunately while it''s cheaper than the rest, it still costs more than you have. With a sigh you hand it back to Jimmy "I''m sorry, but, I can''t buy it now."'
-				'He just nods "Don''t worry, I tell you what, I will put it aside for you if you change your mind." He scribbles something on a post-it note, and sticks it on the guitar "I will try to keep the price the same, 3,400 rubels."'
+				'He just nods "Don''t worry, I tell you what, I will put it aside for you if you change your mind." He scribbles something on a post-it note, and sticks it on the guitar "I will try to keep the price the same, 3,400 <b>₽</b>."'
 				act 'Leave': gt 'torgcentr'
 			end				
 		end

+ 1 - 1
locations/city_nightclub.qsrc

@@ -218,7 +218,7 @@ if $ARGS[0] = 'dance':
 					gs 'npcgeneratec', 0, '', rand(18,55), rand(3,4)
 					gs 'boystat', $npclastgenerated
 
-					'While you''re dancing, you feel someone groping your ass. You turn around and see a <<$boybod>>, <<$boyface>> haired guy of <<$boybody>> height. He''s <<$boyClo>>'
+					'While you''re dancing, you feel someone groping your ass. You turn around and see <<$boybody_pref>>, <<$boybod>> guy with <<$boyface>> hair. He''s <<$boyClo>>'
 
 					act 'Stop dancing':gt 'city_nightclub', 'inside'
 

+ 1 - 0
locations/city_pharmacy.qsrc

@@ -64,6 +64,7 @@ if $ARGS[0] = 'buy_antifungal':
 		act 'Return': gt 'city_pharmacy', 'shop'
 	elseif Kandidoz < 30 and KandidozOnce > 0:
 		msg '<center>You don''t need medication right now. Your yeast infection is currently in remission and taking vitamins will ensure that it stays that way.</center>'
+		gt 'city_pharmacy', 'shop'
 	else
 		msg '<center>You don''t need any antifungal medication right now.</center>'
 		*nl

+ 3 - 3
locations/city_redlight.qsrc

@@ -31,9 +31,9 @@ if $ARGS[0] = 'start':
 	else
 		'The strip club is closed for the day and will reopen at 18:00.'
 	end
-	if pornstudio >= 1 and hour >= 10 and hour < 22:
-		'A <a href="exec:gt ''pornstudio'', ''start''">porn studio</a> is housed within one of the few warehouses that hasn''t been abandoned.'
-	elseif pornstudio >= 1 and (hour < 10 or hour >= 22):
+	if pornstudio = 1 and hour >= 10 and hour < 22:
+		'The <a href="exec:gt ''pornstudio'', ''start''">porn studio</a> is housed within one of the few warehouses that hasn''t been abandoned.'
+	elseif pornstudio = 1 and (hour < 10 or hour >= 22):
 		'The porn studio is closed and will reopen at 10:00.'
 	end
 	if hour < 3 or hour >= 11: 

+ 184 - 179
locations/city_trashplace.qsrc

@@ -4,101 +4,85 @@ $location_type = 'public_outdoors'
 $bomzstartqwestdi = {
 	menu_off = 1
 	gs 'stat'
-	'"Okay. I see you''re a good girl, but with finance problems. I''m here and have several times seen and heard this said about you."'
-	'"I know one part time job. Work is not dirty, but a bit risky. I can''t say much here, but do you have a passport and local residence permit?'
+	'"I see you''re a good girl who has some money problems. I have a job for you, but I can''t say much here. You do have a passport, yes?"'
 
 	gs 'willpower', 'misc', 'resist'
 	if will_cost <= pcs_willpwr:
-		act 'No it seems wrong (<<will_cost>> Willpower)': 
+		act 'This seems wrong (<<will_cost>> Willpower)': 
 			bomzQW = -1
 			minut += 1
 			gs 'willpower', 'pay', 'resist'
 			gt $loc, $loc_arg
 		end
 	else
-		act 'No it seems wrong (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		act 'This seems wrong (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 	end
 	
 	act 'Yes':
 		*clr & cla
 		minut += 15
 		gs 'stat'
-		'"Yes, I have them here. So when are you going to tell me about this job?"'
-		'"Not here. There is a place in the center, there everything will be explained."'
-		'One of the ways to the center passes near an abandoned construction site, and you''ve decided that if the man takes you that way, you can use the excuse of danger and escape.'
-		'However, to your surprise, the man walk toward the subway. You remind him about his financial problems, but he just smiles. In the subway he goes to the ticket office.'
-		'The cashier says, "Hi uncle Nick, here you go." and she opens the barrier to let him through.'
-		'"Thank you. I saw your mother, she worries, call her." Uncle Nick nods at you. "Can you help my young friend?'
-		'"No problem, just don''t tell anyone." She says, winking.'
-
-		act 'Enter subway':
+		'You nod. "Yes, so are you going to tell me about this job?"'
+		'"Not here," he replies. "Follow me and everything will be explained."'
+		'To your surprise, the man walks towards the subway. You remind him about his financial problems, but he just smiles and approaches the ticket office.'
+		'"Hi Uncle Nick," the cashier says and opens the barrier to let him through.'
+		'"Thank you. Your mother is worried about you. You should call her." He then nods at you. "Can you help my young friend here?"'
+		'"No problem. Just don''t tell anyone," she says with a wink.'
+
+		act 'Enter the subway':
 			*clr & cla
 			minut += 15
 			gs 'stat'
-			'You descended into the subway and go to the industrial area. You are lead to the porn studio.'
-
+			'You descend into the subway and head to the industrial area, where you are taken to the porn studio.'
 			if pfilmNO = 1:
-				'"I came here, but I was turned down."'
-				'"Sure you can earn money in a porn studio with your pussy, but it''s also great cover for pretty young women to come and go." Uncle Nick says with a smile.'
+				'"I came here looking for work, but I was turned down," you tell the man.'
+				'"Your pussy isn''t the only way to earn money in this business," he replies with a smile.'
 			elseif film > 0:
-				'"I already know how to earn money this way."'
-				'"Sure you can earn money in a porn studio with your pussy, but it''s also great cover for pretty young women to come and go." Uncle Nick says with a smile.'
+				'"I already earn money this way," you say with a laugh.'
+				'"I know, but your pussy isn''t the only way to earn money in this business," he replies with a smile.'
 			else
-				'"Not the porn studio, this is no place for a lady to be working."'
-				'"Sure you can earn money in a porn studio with your pussy, but it''s also great cover for pretty young women to come and go." Uncle Nick says with a smile.'
+				'"This is no place for a girl to be working!" you say in shock.'
+				'"Calm down, your pussy isn''t the only way to earn money in this business," he replies with a smile.'
 			end
 
-			act 'See the manager':
+			act 'Speak to the manager':
 				*clr & cla
 				minut += 15
-
-				if pornstudio = 0:pornstudio = 1
+				if pornstudio = 0: pornstudio = 1
 				gs 'stat'
-
 				if film > 0:
-					'"Hi <<$pfname>>."'
+					'You walk into Dimitri''s office and he stares at you. "<<$pfname>>? What brings you here?"'
 				else
-					'"You want someone to film you two, you''re going to have to find somewhere more niche."'
+					'"You''re not getting on camera Nick, no matter how hot, or desperate, the girl is," he says while looking you over.'
 				end
-
-				'You are interrupted by uncle Nick. "I remember you were having problems with your deliveries."'
-				'"Yes, we are." Says the manager, "and it''s not getting ant better. Our people are too well known making delivery risky."'
-				'"So, this girl is, I think, just the person to help you with this problem."'
-				'"What guarantee do I have?"'
-				'"Here''s her passport, I''m sure you can make some inquires."'
-
-				act 'What kind of work?':
-					*clr & cla
-					minut += 15
-					gs 'stat'
-					'"Transportation of goods, good pay. Show your passport and come next Thursday. If all goes well, we will discuss the details."'
+				'The man ignores him. "I remember you saying you were having problems with your deliveries?"'
+				'"Yes. Our people are becoming too well known."'
+				'"Then this girl is just the person to help you."'
+				
+				if film = 0:
+					act 'Inquire':
+						cla
+						minut += 15
+						gs 'stat'
+						'"What kind of work are we talking about here?" you ask.'
+						'"Transportation of goods," the manager replies. "Show me your passport and come here next Thursday. If all goes well, we will discuss the details."'
 					
-					gs 'willpower', 'misc', 'resist'
-					if will_cost <= pcs_willpwr:
-						act 'Refuse and leave (<<will_cost>> Willpower)':
-							bomzQW = -1
-							gs 'willpower', 'pay', 'resist'
-							gt 'city_industrial'
+						gs 'willpower', 'misc', 'resist'
+						if will_cost <= pcs_willpwr:
+							act 'Refuse and leave (<<will_cost>> Willpower)':
+								bomzQW = -1
+								gs 'willpower', 'pay', 'resist'
+								gt 'city_industrial'
+							end
+						else
+							act 'Refuse and leave (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 						end
-					else
-						act 'Refuse and leave (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
-					end
 					
-					act 'Show your passport':
-						*clr & cla
-						minut += 15
-						gs 'stat'
-
-						if $ARGS[1] = 'suspicious':
-							'Uncle Nick goes to the manager and whispers something in his ear.'
-
-							if film > 0:
-								'The manager laughs and says,'
-								'"What do you mean, everything has already been thoroughly verified. She''s very much a woman."'
-							else
-								'The manager seems surprised, he looks at you and says,'
-								'"We seem to have one more issue. Suspicions that you are not quite... as feminine as you appear.'
-
+						act 'Show him your passport':
+							cla
+							if $ARGS[1] = 'suspicious':
+								'The man walks over to the manager and whispers something in his ear.'
+								'The manager seems surprised and looks at you. "We seem to have one more issue. Suspicions that you are not quite... as feminine as you appear."'
 								gs 'willpower', 'exhib', 'resist'
 								if will_cost <= pcs_willpwr:
 									act 'Leave (<<will_cost>> Willpower)': gs 'willpower', 'pay', 'resist' & gt 'city_industrial'
@@ -106,24 +90,19 @@ $bomzstartqwestdi = {
 									act 'Leave (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 								end
 
-								act 'Show pussy':
+								act 'Show him your pussy':
 									*clr & cla
 									gs 'stat'
-
 									if PCloSkirt > 0:
-										'You raise your skirt and show your pussy.'
+										'You raise your skirt and show him your pussy.'
 										gs 'arousal', 'flash', 5, 'sub'
 										gs 'stat'
 									else
-										'You lower your pants and show your pussy.'
+										'You lower your pants and show him your pussy.'
 										gs 'arousal', 'flash', 5, 'sub'
 										gs 'stat'
 									end
 
-									if tatvag = 3:
-										'I see that you love black dicks.'
-									end
-
 									if pcs_pubes <= 3:
 										if PCloSkirt > 0:
 											'<center><img <<$set_imgh>> src="images/locations/city/residential/sauna/sex/sauna_pussy1.jpg"></center>'
@@ -131,7 +110,7 @@ $bomzstartqwestdi = {
 											'<center><img <<$set_imgh>> src="images/locations/city/residential/sauna/sex/sauna_pussy1.jpg"></center>'
 										end
 
-										'"How schoolgirl, the manager spends way too long checking, do not forget to come on Thursday.'
+										'"Clean shaven. Cute. Don''t forget to come back here on Thursday."'
 									elseif pcs_pubes <= 10:
 										if PCloSkirt > 0:
 											'<center><img <<$set_imgh>> src="images/locations/city/residential/sauna/sex/sauna_pussy2.jpg"></center>'
@@ -139,7 +118,7 @@ $bomzstartqwestdi = {
 											'<center><img <<$set_imgh>> src="images/locations/city/residential/sauna/sex/sauna_pussy3.jpg"></center>'
 										end
 
-										'"A lovely well kept garden, the manager checks you out, do not forget to come on Thursday."'
+										'"A well kept garden. Don''t forget to come back here on Thursday."'
 									else
 										if PCloSkirt > 0:
 											'<center><img <<$set_imgh>> src="images/locations/city/residential/sauna/sex/sauna_pussy4.jpg"></center>'
@@ -147,19 +126,27 @@ $bomzstartqwestdi = {
 											'<center><img <<$set_imgh>> src="images/locations/city/residential/sauna/sex/sauna_pussy5.jpg"></center>'
 										end
 
-										'"You do realise a bird has made a nest in your panties? Might want to find it a new home. Do not forget to come on Thursday."'
+										'"You do realise a bird has made a nest in your panties? Might want to find it a new home. Don''t forget to come back here on Thursday."'
 									end
 
-									act 'Leave':bomzQW = 1 & gt 'city_industrial'
+									act 'Leave': bomzQW = 1 & gt 'city_industrial'
 								end
 								exit
+							else
+								'The manager takes your details and passport. "Remember. Come back here on Thursday."'
 							end
-						else
-							'Manager takes your details and passport. They will be waiting for you on Thursday.'
 						end
 						gs 'arousal', 'end'
 						gs 'stat'
-						act 'Leave':bomzQW = 1 & gt 'city_industrial'
+						act 'Leave': bomzQW = 1 & gt 'city_industrial'
+					end
+				else
+					act 'Inquire':
+						cla
+						'"What kind of work are we talking about here?" you ask.'
+						'"It doesn''t matter. I can''t use one of my girls for this, so you''re free to go. I''ll see you next time you''re shooting, <<$pfname>>."'
+						'Dimitri waves you out of his office and you leave the studio.'
+						act 'Leave': gt 'city_redlight', 'start'
 					end
 				end
 			end
@@ -169,82 +156,72 @@ $bomzstartqwestdi = {
 
 $workbomzdi = {
 	*clr & cla
-	minut += 15
 	menu_off = 1
 	gs 'stat'
-	'We made inquiries about you, and everything seems in order. Essentially, we give you a thumb drive, you deliver it to the sauna, they give you an envelope and you bring it to us. Immediately.'
-	'Upon delivery of envolope you get 5,000 <b>₽</b>. You do deliveries every Friday, after the studio has opened. If you agree, then visit any Friday, choose a safe mode of transport.'
+	'"We made inquiries about you, and everything seems to be in order. Essentially, we give you a thumb drive, you deliver it to the sauna and they give you an envelope that you bring back to us. Immediately. Upon delivery of the envolope, you get 5,000 <b>₽</b>. You do deliveries every Friday, after the studio has opened. Remember to choose a safe mode of transport."'
 	
 	gs 'willpower', 'misc', 'resist', 'hard'
 	if will_cost <= pcs_willpwr:
-		act 'No, I don''t think it''s for me (<<will_cost>> Willpower)':
+		act 'Refuse (<<will_cost>> Willpower)':
 			bomzQW = -1
 			gs 'willpower', 'pay', 'resist'
 			gt 'city_industrial'
 		end
 	else
-		act 'No, I don''t think it''s for me (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		act 'Refuse (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 	end
 	
-	act 'Agree to work':
-		*clr & cla
-		minut += 15
-		gs 'stat'
-		'Just this time, we will take you. In the future you''ll have to make your onwn way, because Fridays are getting risky for us, but we need to intruduce you to our colleagues.'
+	act 'Agree':
+		cla
+		'You agree to take the job.'
+		'"We''ll take you this time, but in the future you''ll have to make your own way."'
 
-		act 'Let''s go':
+		act 'Head out':
 			*clr & cla
 			workDisk = 1
 			minut += 15
 			gs 'stat'
-			'You slip into a jeep by the entrance, and are driven to the sauna.'
+			'You climb into a car and are driven to a sauna.'
 
 			if saunasex = 1:
 				'You recall going to this sauna. You had some pretty energetic sex here.'
 			elseif sauna > 0:
-				'Oh, it''s the sauna near your home.'
+				'It''s the sauna near your home.'
 			else
-				'This sauna is located near your home, it is strange that you did not notice it before.'
+				'This sauna is located near your home. You find it strange that you didn''t notice it before.'
 			end
+			'Upon arrival, you''re introduced to the managers and it is explained to you whom you need to deliver to, and are reminded that it is necessary to return the envelope the same day you receive it.'
+			'"Don''t forget to use secure transport and don''t fuck this up."'
 
-			'You go to the sauna, and you''re introduced to the local managers. It is explained to you to whom you need to deliver to, and reminded that it is necessary to return the envelope the same day you receive it.'
-			'"Don''t forget to use secure transport. We''ll see you on Fridays and don''t fuck up."'
-
-			act 'Leave':bomzQW = 2 & minut += 1 & gt $loc, $loc_arg
+			act 'Leave': bomzQW = 2 & minut += 1 & gt $loc, $loc_arg
 		end
 	end
 }
 
 clr
-gs'stat'
-
-'<center><b>Trashcan</b></center>'
+gs 'stat'
 '<center><img <<$set_imgh>> src="images/locations/city/residential/musorka.jpg"></center>'
 'A long line of trash cans for all the local apartments, shamefully hidden behind a corrugated iron fence.'
 
-if bumtolik = 2 and rand(0, 1) = 1:
+if bumtolik = 2 and rand(0,1) = 1:
 	*clr & cla
 	menu_off = 1
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/musorka.jpg"></center>'
-	'You see the homeless person who you gave money to last time. He smiles, waving at you to stay and he comes up to you to say something.'
-	'"Girl, please excuse me, do not be afraid, hear me out."'
-
-	act 'Listen to him':gt'city_trashplaceevents','pos8'
+	'You see the homeless person who you gave money to last time. He smiles, waving at you as he walks over to say something.'
+	'"Don''t be afraid, hear me out."'
+	act 'Listen to him': gt 'city_trashplaceevents','pos8'
 end
 
-if bumtolik = 3 and hour >= 6 and hour <= 20 and rand(0, 1) = 1:
+if bumtolik = 3 and hour >= 6 and hour <= 20 and rand(0,1) = 1:
 	*clr & cla
 	menu_off = 1
-	gs'stat'
-
+	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/bumt2.jpg"></center>'
 	'You see a girl feeding the homeless.'
-	'"Hey, I''m sorry but can you please take a picture of me, as I help this unfortunate.'
-	*nl
-	'You find it uncomfortable and refuse to photograph the girl.'
-		
-	act 'Ask what she''s upto':gt'city_trashplaceevents','pos9'
+	'"Hey, can you take a picture of me as I help this unfortunate soul?"'
+	'You find the situation uncomfortable and refuse to photograph the girl.'
+	act 'Ask what she''s up to': gt 'city_trashplaceevents','pos9'
 end
 
 if musor > 3:
@@ -257,142 +234,169 @@ if musor > 3:
 		'You throw your trash into one of the bins.'
 		
 		if bomjqw > 0:
-			'"Hey, babe, come over here, show an old man some service!" you hear in an impudent rattle.'
-			'This is an old homeless man, you saw him last time.'
-			act 'See the homeless man':gt'city_trashplaceevents','pos10'
+			'"Hey babe, come over here and show an old man some service!"'
+			'It''s s the old bum you saw last time.'
+			act 'Speak to him': gt 'city_trashplaceevents','pos10'
 		end
-			
+	
 		if bumtolik = 0:
-			'"Hey, there!" You hear from the bins.'
-			'You are scared and surprised.'
-
-			act 'See who spoke':gt'city_trashplaceevents','pos2'
+			'"Hey there!" you hear a voice call out from the bins.'
+			act 'See who spoke': gt'city_trashplaceevents','pos2'
 		elseif bumtolik = 1:
-			'"Hey, babe, come here, do an old man a favor!"'
-			'Wheezes the old bum you saw last time.'
-
-			act 'Listen to the homeless man':gt'city_trashplaceevents','pos3'
+			'"Hey babe, come here and do an old man a favor!"'
+			'It''s the old bum you saw last time.'
+			act 'Listen to him': gt'city_trashplaceevents','pos3'
 		end
 
-		act 'Move away from the tank':gt $loc, $loc_arg
+		act 'Move away': gt $loc, $loc_arg
 	end
 end
 
-if bomzQW = 0 and rand(1, 10) >= 8 and hour <= 16 and week ! 4:
+if bomzQW = 0 and rand(1,10) >= 8 and hour <= 16 and week ! 4:
 	*clr & cla
 	menu_off = 1
-	gs'stat'
+	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/bum.jpg"></center>'
-	'When you start to move away from the bins, a man comes up to you and drunkenly croaks,'
-	'"Girl, it''s national give 300 <b>₽</b> to a bum day, so come on then.'
+	'As you''re about to leave, a drunk old man stumbles up to you. He looks and smells like he hasn''t washed in weeks.'
+	'"It''s national give 300 <b>₽</b> to a bum day, so come on then!" he drunkenly demands.'
 
 	if money >= 300:
-		act 'Yeah, that''s a thing':
+		act 'Give him money':
 			*clr & cla
 			money -= 300
-			gs'stat'
-
-			'You give money to the homeless man, and he walks away thanking you. He also appears to be laughing.'
-
+			gs 'stat'
+			'You give him some money and he thanks you before walking away. You swear you can hear him laughing...'
 			act 'Leave': minut += 1 & gt $loc, $loc_arg
 		end
 	end
 
-	act 'No':
+	act 'Refuse':
 		*clr & cla
 		gs 'stat'
-
 		if $start_type[1] = 'tg':
 			if daystart < 10 or stat['vaginal'] <= 2:
 				'"I''d love to, but I don''t have much money." Hell, you''re not even accustomed to your new body, but you take care not to say anything.'
-				'"Are you alright?" He looks you up and down.'
+				'"Are you alright?" he asks as he looks you up and down.'
 
 				act 'No':
 					*clr & cla
 					gs'stat'
 					podozrenie += 1
-
 					'"No, you just ogle away."'
 					'The bum looks at you with suspicion.'
-
 					dynamic $bomzstartqwestdi
 				end
 			else
-				'"I''d love to, but I don''t have that kind of money, who does?"'
-
+				'"I''d love to, but I don''t have that kind of money."'
 				dynamic $bomzstartqwestdi
 			end
 		else
 			'"I''m sorry mister, but I don''t have that kind of money."'
-
 			dynamic $bomzstartqwestdi
 		end
 	end
-	act 'Get lost':
+	act 'Chase him off':
 		*clr & cla
 		bomzQW = -10
-		gs'stat'
-
-		'"You should not be so rude to me. I meet a lot of people, and I know a lot of things. This may come back to haunt you, when you least expect it.'
-		'With these words, the man leaves.'
-
+		gs 'stat'
+		'"Get lost, you drunk old freak!" you shout at him.'
+		'"You shouldn''t be so rude to me. I meet a lot of people and know a lot of things. This will come back to haunt you when you least expect it!" he replies before leaving.'
 		act 'Leave': minut += 1 & gt $loc, $loc_arg
 	end
 	exit
 end
 
-!Hobos gangbang
+!!Hobo gangbang
 if bomzQW = -10 and rand(0,5) = 0:
-	*clr
-	cla
+	*clr & cla
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/street/drinkinghobos.jpg"></center>'
-	'On your way home, you decide to enjoy a little walk between the buildings of the residential area, everything goes well, you can hear passerbys hubbub, a few domestic squarrels too, which just makes you smile as you continue your walk, soon enough you decide you should be going back home now. You then start walking towards the main alley, happy with your stroll until you turn at a corner and find yourself face to face with a group of four hobos drinking beers on the floor.'
-	'You decide not to look at them and continue on your way, not willing to let them feel like you''re judging them, and just when you were starting to think they''re not paying attention to you feel a strong hand firmly holding your left upper arm.'
-	'"What''s wrong, cunt ? Nobody taught you it''s only normal to salute people ?" says the man holding your arm as you instinctively struggle to break free from his grip, and when you turn your head to face him, you''re utterly disgusted by his face, he must be about 40 years old, dark rings under his eyes, messy dark hair and beard, rotten teeth, and his breath... god it stinks !'
-	'The grimace on your face doesn''t go unnoticed and he angrily frowns at you, clenching his fingers harder around your arm, it hurts...'
-	'"I think this whore needs some education guys" he says before turning towards his friends, they are all grinning in some wicked way and drunkenly standing up to circle you.'
-	act 'Beg them to forgive you':
+	'On your way home, you decide to take a walk between the buildings of the residential area, only to find yourself face to face with a group of four hobos drinking beer.'
+	'You decide to ignore them and continue on your way, but suddenly feel a hand firmly gripping your arm.'
+	'"Hey, bitch! Nobody teach you to say hello?" one of them barks as you instinctively struggle to break free from his grip. He angrily frowns at you, clenching his fingers harder around your arm.'
+	'"I think this whore needs to learn some manners!" he says before turning towards his friends, who all drunkenly stand up to circle you.'
+	
+	if pcs_agil >= 50:
+		gs 'willpower', 'humiliation', 'self'
+		if will_cost > pcs_willpwr:
+			act 'Try to slip away (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		else
+			act 'Try to slip away (<<will_cost>> Willpower)':
+				gs 'willpower', 'humiliation', 'self'
+				gs 'willpower', 'pay', 'self'
+				*clr & cla
+				minut += 2
+				gs 'stat'
+				'You contort your limber body and manage to slip out of his grasp. Seizing the opportunity, you quickly run all the way to your apartment without looking back.'
+				act 'Continue': gt 'korr'
+			end
+		end
+	end
+	
+	if pcs_stren >= 60:
+		gs 'willpower', 'rape', 'resist'
+		if will_cost > pcs_willpwr:
+			act 'Elbow him in the face (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		else
+			act 'Elbow him in the face (<<will_cost>> Willpower)':
+				gs 'willpower', 'rape', 'resist'
+				gs 'willpower', 'pay', 'self'
+				*clr & cla
+				minut += 2
+				gs 'stat'
+				'Your elbow makes contact with his nose and he reels back in pain, letting you go. You hear him loudly cursing about how you''ve broken his nose as you quickly run away, not stopping until you reach your apartment.'
+				act 'Continue': gt 'korr'
+			end
+		end
+	end
+	
+	act 'Beg':
 		*clr & cla
 		gs 'npcgeneratec', 0, 'hobo', rand(35,55)
 		gs 'boyStat', $npclastgenerated
 		'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosdeepthroat.jpg"></center>'
-		'"Please, I''m really sorry..." you stammer, your heart beating like never before in a mixture of angst and disgust as the dirty men are looking at you as if you were some kind of food.'
-		'One of the boozed hobos burps loudly while another moves towards a back alley and starts emptying his bladder on a wall. "We''ll have to make sure you understand your lesson, bitch." says the one holding your arm before dragging you in the same back alley than the hobbo who went pissing, followed by the two others who grin at you while rubbing the bulge in their pants.'
-		'You can''t resist and before you realize it you have reached your destination, the hobo who was pissing sees his friends dragged you and makes a ridiculous show as he drops his pants and starts stroking his ugly, but still well sized member in front of you and his friends. "I can''t remember when I last cleaned up my bad boy down here, mind if I put that slut''s mouth to proper use guys ?" he asks in a sneaky tone.'
-		'The three others start laughing drunkenly and forcefully undress you "Let me go !" you protest as you struggle in vain while they expose your body to their friend and force you get on your knees before him.'
-		'The guy in front of you grins devilishly, as he steps forwards and brushes his disgusting boner over the tears running down your cheeks. "No teeth bitch, or you''ll truly be sorry" he threatens before bringing his tip against your lips, you sob and reluctantly part your lips to let his tip slip in your mouth and rest on your tongue, the taste of urine and filth makes you nauseous and you look up at him with pleading eyes, which only makes him smirk.'
-		'Another one of the hobos tightly grabs your hair in one hand and roughly pushes your head forwards, your eyes wide opened in shock as the man''s cock gets forced down your throat in one thrust, your nose brushing in his pubic hair, you do your best to overcome your gag reflex and relax your throat muscles.'
-		'All you can see now is the bottom of the man'' t-shirt, but you hear them laughing at your situation very clearly. "That bitch isn''t so proud anymore !" one of them says, but soon enough you''re forced to focus on your task when the hobo starts moving his cock back and forth, his friend still tightly holding your head by your hair, you can only endure the rough treatment you''re being given, he fucks your face steadily for about five minutes before you can see two other hobos moving around you and dropping their pant to reveal their cocks. "Don''t forget about us, fuckmeat." one of them say.'
+		'"Please let me go! I''m sorry!" you plead, your heart pounding as the dirty old men look at you with clear lust in their eyes.'
+		'"We have to make sure you understand your lesson, bitch!" the one holding your arm says as the men drag you in a dark back alley.'
+		'"Let''s put this slut''s mouth to proper use," one of them says and they all start laughing and forcefully undressing you.'
+		*nl		
+		'"Let me go!" you protest as you struggle in vain before they force you on your knees.'
+		'One of the men grins devilishly as he steps forwards and brushes his disgusting cock against your lips. "No teeth bitch, or you''ll truly be sorry!" he threatens. You reluctantly part your lips to let him into your mouth, the taste making you nauseous as you look up at him with pleading eyes, which only makes him smirk.'
+		'One of the hobos tightly grabs your hair in one hand and roughly pushes your head forwards, your eyes opening wide in shock as the man''s cock is forced down your throat in one thrust. You do your best to overcome your gag reflex and relax your throat.'
+		'You hear them laughing at you. "This bitch isn''t so snooty anymore!" one of them says as you''re forced to suck the disgusting cock in your mouth. After a few minutes, you see two of the other hobos moving around you and dropping their pants to reveal their cocks. "Don''t forget about the rest of us, bitch!"'
 		gs 'arousal', 'bj', 5, 'rough'
 		gs 'stat'
-		act 'Submit and serve them':
+		
+		act 'Submit':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosbj.jpg"></center>'
-			'The hobo who has been fucking your throat grins at his friend''s words then pulls out from your mouth, moving away from you to grab a can of beer before he sits against a wall and watches. The two hobos who just stripped move in front of you and insistently press their cocks against your lips, do they want you to suck them both at once ? Gosh, they''re too big you think to yourself before the man holding your head in place roughly spanks your bare ass and shoves his index finger in your anus. "Don''t make these gentlemen waiting, whore." he crudely commands.'
-			'You groan from the harsh spank and wince at the finger enterign your ass but decide fighting back is useless and nod. You open your mouth as big as you can stick out your tongue, allowing the two hobos to push their filthy tips past your lips, at least they don''t taste like urine like their friend''s did you think to yourself, but still their girth is definitely something, and you doubt they cleaned their cocks recently either...'
-			'"Looks like this slut can''t handle us two at once." one of them comments, "Maybe we''ll have more luck with her other holes" replies the other with a chuckle.'
-			'"Guys ! Look what I''ve found !" says the drunk hobo who fucked your throat, you have no idea what it is, but you''re pretty sure you won''t like it...'
+			'The hobo who has been fucking your throat pulls out of your mouth and grabs a can of beer before he sits against a wall and watches. The other two hobos move in front of you and insistently press their cocks against your lips, seemingly wanting you to suck them both at once. The man holding your head roughly spanks your bare ass and shoves his index finger in your anus. "Don''t keep these gentlemen waiting, whore!" he crudely commands.'
+			'You groan and wince, but decide fighting back is useless and nod. You open your mouth as wide as you can and stick out your tongue, allowing the two hobos to shove their filthy cocks inside.'
+			'"Looks like this slut can''t handle us two at once," one of them comments.'
+			'"Maybe we''ll have more luck with her other holes?" the other replies with a chuckle.'
+			'"Guys, look what I found!" says the hobo who fucked your throat. You have no idea what it is, but you''re pretty sure you won''t like it...'
 			gs 'arousal', 'bj', 10, 'rough', 'group', 'sub'
 			gs 'stat'
+			
 			act 'Continue':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosgb.jpg"></center>'
-				'"What a lucky find" says the hobo holding you in place while the two others pull out from your mouth and move to their drunk friend, you still have no idea about what they''re talking about, but you''re suddenly lifted up and the free of them come back to you and you can see what this big discovery was, a rope !'
-				'"I don''t know if that cunt is into bondage, but I''m getting bored of holding her" comments the one behind you. "That''s fine dude, leave it to us, you can have her ass when we''re done" retorts the hobo holding the rope while his two friends start pawing at your vulnerable tits "You will thank us after we''re done with you, bitch" one of them teases, and you remain speechless as the three men start tying you up with the rope, locking your arms in your back and painfully squeezing your breasts.'
-				'Soon enough they are done and all admire your vulnerable form, "Lets get this party started guys" says the one behind you, and the three others enthusiastically agree, one of them lays down on his back and the others lift you up, spread your legs and lower you on top of him, he then playfully slap your ass before reaching for his cock and guiding it against your snatch "Here we go" he teases before roughly thrusting upwards, hilting his cock balls deep in one go.'
-				'You wince at the sudden penetration but gather your thoughts, you know they''re only getting started, and you''re damn right, soon you feel a hand grabbing hold of your bonds. "I''m going in dry, slut" is the only warning you get before you feel a cock forcefully pushing against your vulnerable anus and making its way in your ass. The pain rapidly overcomes you and you scream, tears forming in your eyes while your whole body is frozen in shock.'
-				'"Be silent, fucking bitch." mutters one of the two other hobos who just moved in frond of you, he grabs your hair in one hand and roughly slaps your face with the other. "You''re gonna be a good girl and make me feel good with that mouth." he then calmly explains, you do your best to put yourself together and obediently nob before leaning forward to engulf the head of his cock in your mouth, doing your best to make it an enjoyable experience for him.'
+				'"What a lucky find!" the hobo holding you in place says while the two others pull out of your mouth and you''re suddenly lifted up. You then see what this big discovery is. A rope...'
+				'"I don''t know if this cunt is into bondage, but I''m getting tired of keeping her still," the one holding you says.' 
+				'"Leave it to us. You can have her ass when we''re done!" retorts the hobo holding the rope while his two friends start pawing at your breasts.' 
+				'"You''ll thank us after we''re done with you, bitch!" one of them laughs, but you remain speechless as the three men start tying you up with the rope, locking your arms behind your back and painfully squeezing your breasts.'
+				*nl
+				'Once they''re finished, they all admire your vulnerable form before one of them lays down on his back and the others lift you up, spread your legs and lower you on top of him. He playfully slaps your ass before reaching for his cock and rubs it against your labia before roughly thrusting upwards, hilting his cock balls deep in one go.'
+				'You wince at the sudden penetration as you feel a hand grabbing hold of your bonds. "I''m going in dry, slut..." is the only warning you get before you feel a cock forcefully pushing against your anus and forcing its way into your ass. The pain quickly overwhelms you and you scream as tears form in your eyes.'
+				'"Shut the fuck up, bitch!" one of them shouts as he grabs your hair in one hand and roughly slaps your face with the other. "You''re gonna be a good girl and make me feel good with that mouth." You obediently nod before leaning forward to take his cock into your mouth.'
 				gs 'arousal', 'bj', 20, 'rough', 'group', 'submissive', 'gangbang'
 				gs 'npcgeneratec', 0, 'hobo', rand(35,55)
 				gs 'boyStat', $npclastgenerated
 				gs 'arousal', 'anal', -20, 'rough', 'group', 'submissive', 'gangbang'
 				gs 'npcgeneratec', 0, 'hobo', rand(35,55)
 				gs 'boyStat', $npclastgenerated
-				$orgasm_txt = 'The three hobos all start fucking you in unison, and they''re definitely not tender with you, the fourth man is stroking himself next to you and encouraging his friends to fuck you brains out, which they gladly do. The fucking lasts for a good 40 minutes and your holes are as sore as they can be, they all randomly swap and mercilessly abuse you for their own pleasure, your mind clouds from the intense stimulation, and it happens, your whole body is shaking in a powerful orgasm, your pussy and anus tightly clenching around the two cocks fucking you. The hobos all start laughing at you and crudely tell you how much of a filthy slut you are...'
-				$orgasm_or = 'yes'
 				gs 'arousal', 'vaginal', -20, 'rough', 'group', 'submissive', 'gangbang'
 				gs 'arousal', 'end'
 				gs 'stat'
+				
 				act 'Continue':
 					*clr & cla
 					minut +=5
@@ -402,9 +406,10 @@ if bomzQW = -10 and rand(0,5) = 0:
 					rape += 1
 					gs 'stat'
 					'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosfacial.jpg"></center>'
-					'"I think it''s time to give our little bitch a reward" one of them pants, and they all agree, they casually pull out from your abused holes and force you on your knees before removing your bonds, then they all stand up in circle around you and all start stroking themselves to orgasm.'
-					'Before long, the four hobos are all breathing heavily and you see their cocks twitching in their hands, they all start to orgasm, one of them aims for the inside of your mouth while the others shoot their disgusting loads all over your face.'
-					'"Holy Filicophyte" exclaims one of them as you gulp down the disgusting sperm that ended in your mouth, you have no idea what that means, but you don''t bother asking. As soon as they''re done painting your face with their cum, they hand you your clothes and get dressed before returning to their cans of beer. "We hope you will show us more respect in the future, slut, now leave.", you quickly get dressed and stumble without a word towards the street.'
+					'"I think it''s time to give our little bitch a reward!" one of them pants and they all pull out of your abused holes and force you onto your knees before removing your bonds. They then circle around you and start stroking their cocks.'
+					'Before long, the four hobos are all breathing heavily and you see their cocks twitching in their hands as they all start to cum. One of them aims for your mouth while the others shoot their disgusting loads all over your face.'
+					'"Holy shit, this bitch swallows!" one of them exclaims as you gulp down the disgusting sperm that ended in your mouth. As soon as they''re done, they all return to their cans of beer. "We hope you''ll show us more respect in the future, slut."'
+					'You quickly get dressed and stumble away towards the street without replying.'
 					act 'Leave': minut += 1 & gt $loc, $loc_arg
 				end
 			end

+ 78 - 119
locations/city_trashplaceevents.qsrc

@@ -5,12 +5,10 @@ if $ARGS[0] = 'pos2':
 	bumtolik = 1
 	minut += 5
 	menu_off = 1
-	gs'stat'
-
+	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/bum.jpg"></center>'
-	'You see a hungover homeless man. He looks at you and you give him an angry look.'
-
-	act 'Leave':gt'city_residential'
+	'You see a hungover homeless man. He looks at you and you give him an angry stare in return.'
+	act 'Leave': gt 'city_residential'
 end
 
 if $ARGS[0] = 'pos3':
@@ -18,32 +16,27 @@ if $ARGS[0] = 'pos3':
 	bumtolik = 2
 	minut += 5
 	menu_off = 1
-	gs'stat'
-
+	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/bum.jpg"></center>'
-	'You are standing in front of a hungover homeless man.'
-	'"Is that you, young lady? Do not fear the old man!" The bum says with a predatory smile.'
-
-	act 'Ask what he needs':gt'city_trashplaceevents','pos4'
-	act 'Leave':gt'city_residential'
+	'You''re standing in front of a hungover homeless man.'
+	'"Is that you, young lady? Don''t be scared..." he says with a predatory smile.'
+	act 'Ask what he wants': gt 'city_trashplaceevents','pos4'
+	act 'Leave': gt 'city_residential'
 end
 
 if $ARGS[0] = 'pos4':
 	*clr & cla
 	minut += 5
 	menu_off = 1
-	gs'stat'
-
+	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/bum.jpg"></center>'
-	'You are standing in front of a hungover homeless man.'
-	'"What do you want from me?"'
-	'"Ah, good lady. Just nothing, you know, there this thing, today is a holiday, and it''s traditional to help those less fortunate...'
-	'"In short, you want money."'
-	'"Yeah, yeah. Money."'
-
-	act 'Give him a trifle (20 <b>₽</b>)':gt'city_trashplaceevents','pos5'
-	act 'Give him 100 <b>₽</b>':gt'city_trashplaceevents','pos6'
-	act 'Leave':gt'city_trashplace'
+	'"What do you want from me?" you ask.'
+	'"Nothing..." he mumbles at first before looking at you. "You know that today is a holiday right? It''s traditional to help those less fortunate on holidays..."'
+	'"In short, you want money," you reply while rolling your eyes.'
+	'"Yeah."'
+	act 'Give him 20 <b>₽</b>': gt 'city_trashplaceevents','pos5'
+	act 'Give him 100 <b>₽</b>': gt 'city_trashplaceevents','pos6'
+	act 'Leave': gt 'city_trashplace'
 end
 
 if $ARGS[0] = 'pos5':
@@ -52,15 +45,11 @@ if $ARGS[0] = 'pos5':
 	bumtolik = 2
 	money -= 20
 	menu_off = 1
-	gs'stat'
-
-	'You are standing in front of a hungover homeless man.'
-	'"Oh, lady, that''s so touching. Nobody ever helps. I am so unhappy. My whole life I was beaten. Can I, in gratitude, kiss your hand?"'
-	'"I am an old man, it might be the last time in my life?"'
-	'He looks at you with her tearful eyes.'
-
-	act 'Allow him to kiss your hand':gt'city_trashplaceevents','pos7'
-	act 'Of course not! Fuck the nasty old man!':gt'city_residential'
+	gs 'stat'
+	'"Oh, that''s so touching! Nobody ever helps me! May I kiss your hand in thanks?"'
+	'He looks at you with pleading eyes.'
+	act 'Yes': gt 'city_trashplaceevents','pos7'
+	act 'No': gt 'city_residential'
 end
 
 if $ARGS[0] = 'pos6':
@@ -69,35 +58,26 @@ if $ARGS[0] = 'pos6':
 	bumtolik = 2
 	money -= 100
 	menu_off = 1
-	gs'stat'
-
+	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/bum.jpg"></center>'
-	'You are standing in front of a hungover homeless man.'
-	'"Wow, so much. So much booze... uh, I mean, now I can buy gifts for the grandchildren, cough, cough.'
-
-	act 'Leave':gt'city_residential'
+	'"Wow, you''re so generous! So much booze... Uh, I mean, now I can buy some food for myself..." he mumbles before quickly walking away.'
+	act 'Leave': gt 'city_residential'
 end
 
 if $ARGS[0] = 'pos7':
 	*clr & cla
 	minut += 5
 	menu_off = 1
-	gs'stat'
-
+	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/bum_kiss.jpg"></center>'
-	'You are standing in front of a hungover homeless man.'
-	'The bum, gently and in disbelief, stretches his wet lips to your snow-white hand and kisses it. He''s quite charming and closes his eyes in pleasure.'
-	'But when they open, you notice the bad light behind his eyes ...'
-
+	'The bum, gently and in disbelief, pulls your hand up to his lips and kisses it. He''s quite charming and closes his eyes in pleasure.'
+	
 	act 'Further':
 		*clr & cla
-		gs'stat'
-
+		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/city/residential/bum_gra.jpg"></center>'
-		'Suddenly, pulling your hand to him, he grabs you by the buttocks and starts, right through your clothes, kissing and sniffing furiously between your legs.'
-		'"Argh, sniff, sniff, what a beauty!'
-		
-		act 'Slap the freak and run away':gt'city_residential'
+		'He then suddenly grabs you and starts sniffing furiously between your legs.'
+		act 'Slap him and run away': gt 'city_residential'
 	end
 end
 
@@ -106,15 +86,11 @@ if $ARGS[0] = 'pos8':
 	minut += 5
 	bumtolik = 3
 	menu_off = 1
-	gs'stat'
-
+	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/bum.jpg"></center>'
-	'You are standing in front of a hungover homeless man.'
-	'"You know you''re a kind person. How do I say this.'
-	'"I gathered some money and spend some of it on drink, but nothing on food. I''ve been watching you, you''re the business girl. Besides being beautiful, you''re trying to make a living."'
-	'"Now, I''m a man, not that young anymore, but I still appreciate the pleasure of female beauty."'
-	'You interrupt, "What are you hinting at?"'
-	'"Nothing like that, I just wanted to offer money in exchange for beauty. You show me something, and I just look. Easy, and I will give you all that I gathered during the week. As much as 50 <b>₽</b>!"'
+	'"How do I say this?" he asks. "I, uh, gathered some money and spent some of it on drink, but nothing on food. I''ve been watching you and appreciate your beauty."'
+	'"What are you getting at?" you interrupt.'
+	'"Nothing like that!" he stammers. "I just wanted to offer you money in exchange for your beauty. You show me something, and I just look. I''ll give you everything that I gathered during the week. As much as 50 <b>₽</b>!"'
 
 	act 'Agree':
 		*clr & cla
@@ -122,24 +98,19 @@ if $ARGS[0] = 'pos8':
 		money += 50
 		bomjshet += 1
 		inhib_exp += 5
-		gs'stat'
-
+		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/city/residential/bumt1.jpg"></center>'
 		'Looking around to make sure that no one else can see, you show the homeless man your breasts and panties.'
-		'The bum looks at you with round eyes and violently jerks his penis. You get scared, what if someone comes to empty their trash.'
-		'"Argh, wait let me finish!"'
-		'Finally with a loud puff, the homeless man collapses on his cardboard box.'
-		'"Give me my money!" You cry as you grab all the bums money and run away.'
-
+		'The bum looks at you with wide eyes as he violently jerks his dick. With a loud groan, the homeless man collapses on his cardboard box.'
+		'You quickly grab his money and run away.'
 		gs 'arousal', 'flashlite', 10
 		gs 'arousal', 'flash', -10
 		gs 'arousal', 'end'
 		gs 'stat'
-		
-		act 'Leave':gt'city_residential'
+		act 'Leave': gt 'city_residential'
 	end
 
-	act 'Leave':gt'city_residential'
+	act 'Leave': gt 'city_residential'
 end
 
 if $ARGS[0] = 'pos9':
@@ -147,127 +118,115 @@ if $ARGS[0] = 'pos9':
 	minut += 5
 	bumtolik = 4
 	menu_off = 1
-	gs'stat'
-
+	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/bumt4.jpg"></center>'
-	'It turned, that a girl named Olga. And it works in the service of the disadvantaged.'
-	'Olga: - I certainly never thought, that I will do it. I was sent here Court, for public works, as a punishment for an administrative offense. Although in principle the right thing, and for the karma helpful, help people. If you''re interested, Take a business card, people we really need.'
-	'(On the business card is written "Mercy Clinic". Address indicates the city industrial region.'
-
-	act 'Leave':gt'city_residential'
+	'The girl introduces herself as Olga and states that she works to help the homeless of the city.'
+	'"I certainly never thought that I would actually do it!" she says.	"I was sent here by the court as a punishment for an offense, although I guess helping these bums helps my karma. If you''re interested in helping out, then we could use people here."'
+	'She hands you a business card that has "Mercy Clinic" written on it. The address indicates that it''s located in the city''s industrial region.'
+	act 'Leave': gt 'city_residential'
 end
 
 if $ARGS[0] = 'pos10':
 	*clr & cla
 	minut += 5
 	menu_off = 1
-	gs'stat'
+	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/bum.jpg"></center>'
-	'You are standing in front of a hungover homeless man.'
-	'"You know you''re a kind person. How do I say this.'
-	'"I gathered some money and spend some of it on drink, but nothing on food. I''ve been watching you, you''re the business girl. Besides being beautiful, you''re trying to make a living."'
-	'"Now, I''m a man, not that young anymore, but I still appreciate the pleasure of female beauty."'
-	'You interrupt, "What are you hinting at?"'
-	'"Nothing like that, I just wanted to offer money in exchange for beauty. You show me something, and I just look. Easy, and I will give you all that I gathered during the week. As much as 50 <b>₽</b>!"'
+	'"How do I say this?" he asks. "I, uh, gathered some money and spent some of it on drink, but nothing on food. I''ve been watching you and appreciate your beauty."'
+	'"What are you getting at?" you interrupt.'
+	'"Nothing like that!" he stammers. "I just wanted to offer you money in exchange for your beauty. You show me something, and I just look. I''ll give you everything that I gathered during the week. As much as 50 <b>₽</b>!"'
 
 	act 'Agree':
 		*clr & cla
 		money += 50
-		gs'stat'
+		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/city/residential/bumt1.jpg"></center>'
 		'Looking around to make sure that no one else can see, you show the homeless man your breasts and panties.'
-		'The bum looks at you with round eyes and violently jerks his penis. You get scared, what if someone comes to empty their trash.'
-		'"Argh, wait let me finish!"'
-		'Finally with a loud puff, the homeless man collapses on his cardboard box.'
-		'"Give me my money!" You cry as you grab the bums money and prepare to make a quick get away.'
-		
+		'The bum looks at you with wide eyes as he violently jerks his dick. With a loud groan, the homeless man collapses on his cardboard box.'
+		'You quickly grab his money and prepare to make a run for it.'
 		gs 'arousal', 'flashlite', 10
 		gs 'arousal', 'flash', -10
 		gs 'stat'
 		
 		if bomjqw > 0:
-			'The homeless man asks, "Thank you very much once again, but if you agree to one more service...'
-			'"What service?"'
-			'"Could you help an old man with your lovely mouth? I''ll pay 150 <b>₽</b>, well, what do you say?"'
+			'"Thank you very much once again," he starts. "But if you agree to one more service?"'
+			'"What?" you ask suspiciously.'
+			'"Could you help an old man with your lovely mouth? I''ll pay 150 <b>₽</b>!"'
 			if pcs_horny < 50:
 				*clr & cla
 				gs 'arousal', 'end'
-				'"No, that''s disgusting!"'
-				'You turn around and walk away from the trash.'
-				act 'Leave': gt'city_residential'
+				'"No, that''s disgusting!" you reply before turning around and walking away.'
+				act 'Leave': gt 'city_residential'
 			else
-				gs 'npcgeneratec', 0, 'Homeless', rand(25,55)
+				gs 'npcgeneratec', 0, 'Homeless man', rand(25,55)
 				gs 'boyStat', $npclastgenerated
 				act 'Get on your knees':
 					*clr & cla
-					money += 150
 					bomjshet += 1
-					gs'stat'
+					gs 'stat'
 					'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/old0,'+rand(0,3)+'.jpg"></center>'
-					'"It is so disgusting." You think to yourself. You need the money, and what''s wrong with that? Once you can bear.'
-					'You go down on your knees before the old, smelly homeless. Amazed by his luck, he leisurely pulls out his member.'
-					'His member is dirty and stinks so bad, as if it has not been washed in a few centuries.'
-					'You take the vagabonds member in your mouth and begin to suck leisurely.'
-					
+					'"This is so disgusting..." you think to yourself, but you need the money.'
+					'You get down on your knees in front of him. Amazed by his luck, he leisurely pulls out his filthy cock, which looks and smells like it hasn''t been washed in months.'
+					'You hold in your gag reflex as you take his cock into your mouth and start sucking.'
 					gs 'arousal', 'bj', 3, 'prostitution'
 					gs 'stat'
 		
 					act 'Suck harder':
 						cla
-						'You start sucking enthusiastically, and your efforts are paying off. The old man is ready to cum.'
+						'You start sucking harder and your efforts are paying off. The old man is ready to cum...'
 						act 'In your mouth':
 							*clr & cla
+							minut += 1
+							money += 150
 							gs 'cum_call', 'mouth_swallow', 'hobo'
 							'<center><video autoplay loop src="images/shared/sex/cum/mouth/cum1,'+rand(0,10)+'.mp4"></video></center>'
-							'A few minutes later he finishes, your mouth fills with nasty stinking sperm that you quickly swallow.'
-							
+							'A few seconds later, your mouth fills with nasty tasting cum that you force yourself to quickly swallow. You take your money and quickly leave before someone sees you.'
 							gs 'arousal', 'bj', 3, 'prostitution'
 							gs 'arousal', 'end'
 							gs 'stat'
 							
-							act 'Leave': gt'city_residential'
+							act 'Leave': gt 'city_residential'
 						end
 						act 'On your face':
 							*clr & cla
 							minut += 1
-							
+							money += 150
 							gs 'cum_call', 'face', 'hobo'
-							
 							'<center><img <<$set_imgh>> src="images/shared/sex/public/cum0,'+rand(0,3)+'.jpg"></center>'
-							'A few minutes later he finishes, your face is coated by nasty stinking sperm.'
-							
+							'A few seconds later, your face is covered in nasty smelling cum. You take your money and quickly leave before someone sees you.'
 							gs 'arousal', 'end'
 							gs 'stat'
 							
-							act'Leave':gt'city_residential'
+							act 'Leave': gt 'city_residential'
 						end
 					end
 				end
 				if bomjshet >= 10:
-					act'Give yourself to the homeless man':
+					act 'Give yourself to the homeless man':
 						*clr & cla
 						dick = 14
 						money += 300
 						bomjshet += 1
-						gs 'cum_call', 'vaginal', 'hobo'
+						gs 'cum_call', 'butt', 'hobo'
 						'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/old1,'+rand(0,2)+'.jpg"></center>'
-						'It is not your first time dealing with such people. You have already learned to overcome any aversion. So you decide to give the homeless man something a little better to just a blowjob.
-						You take off your panties and throw them to the homeless. He is, of course, shocked by this. But the shock does not last long. After throwing off his pants full of holes, the old man moves to you.'
-						
+						'This isn''t your first time dealing with such people and you''ve already learned to overcome any aversion, so you decide to give him something a little better than just a blowjob.'
+						'You take off your panties and throw them at him. A smile appears on his face and after throwing off his pants, the old man moves towards you.'
+						'You get down on all fours and feel the tip of his cock pushing into your pussy. He starts vigorously fucking you, but only lasts a few seconds before he pulls out and splatters his cum over your ass.'
+						'You then quickly get dressed, take your money, and run away before anyone sees you.'
 						gs 'arousal', 'vaginal', 15, 'prostitution'
 						gs 'arousal', 'end'
 						gs 'stat'
 					
-						act'Leave':gt'city_residential'
+						act 'Leave': gt 'city_residential'
 					end
 				end
 			end
 		end
 
-		act 'Leave':gt'city_residential'
+		act 'Leave': gt 'city_residential'
 	end
 
-	act 'Leave':gt'city_residential'
+	act 'Leave': gt 'city_residential'
 end
 
 --- city_trashplaceevents ---------------------------------

+ 1 - 1
locations/clothing.qsrc

@@ -452,7 +452,7 @@ if $ARGS[0] = 'clothing_list':
 	if $args[1] = 'misc' or $args[1] = 'all':
 		if $args[1] ! 'all':
 			$ward_list_store = $args[1]
-			'<center><img src="img src="images/pc/items/misc/misc.png"></center>'
+			'<center><img src="images/pc/items/misc/misc.png"></center>'
 			gs 'clothing_QV', 'filter_header', 'store'
 			gs 'clothing', 'clothinglist_header'
 			!!To filter just this set

+ 199 - 0
locations/core_library.qsrc

@@ -0,0 +1,199 @@
+# core_library
+
+
+!! Date Created: 17th Sept, 2022
+!! Modified date: 
+!! Version: .01 - initial release
+!! Version: .02 - refactoring to streamline content start, new standardised locations function for kitchen and bathroom test code
+!! Author: Hooded Silence
+!!
+
+!! Ballet School Initiator - This class is to act as a gateway to the various locations for the ballet school
+
+if $ARGS[0] = 'init':
+
+    !!  Summer School
+    
+     !! alterstrtimg is the mc backstry, mod_ballet[beta] is a test variable to initiate regardless
+    if alterstrtimg = 13 or mod_ballet['beta'] = 1: 
+        if daystart = 1:
+            mod_ballet['blocker'] = 1
+        end    
+        !! Parents Home Triggers
+        if $loc = 'kuhrPar':
+            if daystart < 6 and  mod_ballet['blocker'] = 1:
+                gs 'pushkin_ballet_init', 'init'
+            end
+    
+            if  (daystart > 6 and mod_ballet['letter'] = 0) or daystart > 45:	
+                gs 'pushkin_ballet_init', 'start'
+            end 
+        end
+    
+        !! Pavlovsk
+        if $loc = 'gdksport':
+            !! Close down Starlets
+            if mod_ballet['letter'] = 1 and (month = 7 or (month = 6 and day > 6)):
+                if AlbinaQW['StarletsJoined'] > 0 and AlbinaQW['StarletsShutDown'] = 0 and npc_pregtalk['A23'] = 0 and AlbinaQW['startletsday'] ! daystart:
+                    if hour = 15 and starlets_on = 1:
+                        act 'Tell Albina about the letter' : gt 'pushkin_ballet_evt', 'starlets'
+                    end
+                end
+            end
+            !! Dance job?
+    
+        end
+    
+        if $loc = 'pav_commcenter':
+            if month = 7 and day = 3 and (hour >= 16 and hour < 17) and mod_ballet['letter'] = 1:
+                ! Pre-flight - travel to school dorms
+                act '<font color="#80E656">Get on the bus</font>': gs 'shortgs', 'remove_array_element', 'mod_ballet', 'letter' & gt 'pushkin_ballet_res', 'start'	
+            end
+        end
+    
+        !! Pushkin
+    
+        !! Theatre 
+    
+        !! Other Events
+    end
+ end
+    
+!! --- Generic shared Locations and classes ---
+
+
+!! like SetLoc, to reduce code bloat and memorisation of header title and images.
+!! Project: allow for scene changes on the fly rather than static content based on story?
+!! Set two var, third if you need to change the ext.: 
+
+!! $setloc[''StageTitle'']: Var to set up $loc h1 header
+!! $setloc[''StageImage'']: Var to set up $loc image - set 1 to randomise
+if $ARGS[0] = 'stage_title':
+    if $ARGS[1] = '1': 
+        $temp_StageExt = 'gif'
+    elseif $ARGS[1] = '2':
+        $temp_StageExt = 'mp4'
+    else 
+        $temp_StageExt = 'jpg'
+    end
+    
+    if $ARGS[2] = '2':
+    !! Randomise header image	
+        !!dummyr
+    end
+    *clr & cla
+    '<center><h2><<$setloc[''StageTitle'']>></h2></center>'
+    '<center><img <<$set_imgh>> src="images/<<$setloc[''StageImage'']>>.<<$temp_StageExt>>"></center>'
+
+    !! Clean up
+    killvar '$setloc'
+    killvar '$temp_StageExt'
+
+    !! set indoor or outdoor location specific variables
+
+    !!
+
+    !! set standardised location variables such as kitchen, bathroom, personal bedroom
+    
+    !! npc location tracker - if tracking npc locations add them here.
+
+    
+end
+    
+if $ARGS[0] = 'corridor':
+    if frost > 0: frost = 0
+    music_loop = 0
+    menu_off = 0
+    CLOSE ALL
+    if $location_type = 'private':
+    elseif $location_type = 'public':
+    end
+    
+end
+
+if $ARGS[0] = 'bathroom':
+    !! Location facilities
+    if $location_type = 'private':
+        'Your accommodation for the week has the luxury of a private shower and a bath. There''s a poster on the wall promoting the health benefits of ice baths and other advice on looking after your body.' 
+        *nl  
+            'There is a shower, toilet, sink, and a <a href="exec:gt ''mirror'',''start''">mirror</a> where you can ' + iif(pcs_hairbsh = 0,'<a href="exec:gt ''mirror'',''brush''">brush</a>','brush') + ' your hair.'
+
+        gs 'din_van', 'private'
+    elseif $location_type = 'public':
+        act 'Take a shower':
+            *clr & cla
+            pcs_hairbsh = 0
+            pcs_makeup = 1
+            minut += 10
+            pcs_mood += 10
+            noShampoo = 1
+            dynamic $showerdin	
+            gs 'stat'
+            'You grab a quick shower, but you wish you could stay longer in the shower to let the heat soak into your muscles.'
+                'There is a shower and <a href="exec:gt ''mirror'',''start''">mirrors</a> where you can ' + iif(pcs_hairbsh = 0,'<a href="exec:gt ''mirror'',''brush''">brush</a>','brush') + ' your hair.'
+
+            act 'Continue' : gt $loc, $loc_arg
+        end
+    elseif $location_type = 'communal':
+
+    end
+!! Default facilities    
+    dynamic $basin
+    dynamic $tampon
+    if pcs_hairbsh = 0: act 'Brush your hair': gt 'mirror', 'brush'
+    if deodorant > 0 and deodorant_on = 0:
+        'Your deodorant will last you for <b><<deodorant>></b> more '+iif(deodorant = 1, 'application.', 'applications.')
+        act 'Apply deodorant (0:01)':
+            *clr & cla
+            menu_off = 1
+            minut += 1
+            deodorant -= 1
+            gs 'sweat', 'deo'
+            iif(func('body_din','pregnancyVisibility') = 1, '<center><img <<$set_imgh>> src="images/shared/home/bathroom/deodorant_preg.jpg"></center>', '<center><img <<$set_imgh>> src="images/shared/home/bathroom/deodorant.jpg"></center>')
+            'You apply deodorant to your armpits. It will keep you feeling fresh and clean for longer.'
+            act 'Continue': menu_off = 0 & gt $loc, $loc_arg
+        end
+    end  
+end
+
+if $ARGS[0] = 'kitchen':
+    !! Location facilities
+    if $location_type = 'private':
+        !! Home or parents kitchen
+        dynamic $edasnack
+        dynamic $sandwich
+        dynamic $pranik
+        dynamic $fatdel
+        dynamic $lekarstvo
+        dynamic $vitamin 
+    elseif $location_type = 'public_indoors':
+        !! canteen type location
+    elseif $location_type = 'communal':
+        !! shared or communal kitchen
+        dynamic $edasnack
+        dynamic $sandwich
+        dynamic $pranik
+        dynamic $vitamin 
+    end    
+    !! Default facilities
+    dynamic $driwater
+    dynamic $dritea
+    dynamic $fill_bottle
+end
+
+if $ARGS[0] = 'bedroom':
+!! Default facilities
+    if $location_type = 'private':   
+        if pcs_horny >= 50:
+            act 'Masturbate':gt 'selfplay', 'start'
+        end
+    elseif $location_type = 'guest':
+    elseif $location_type = 'private_shared': 
+    end
+    act 'Relax on your bed': gt 'bed', 'start'
+    act 'Open wardrobe': gt 'wardrobe', 'start'
+    gs 'events', 'read'
+    gs 'exercise', 'start'
+
+end
+--- core_library ---------------------------------

+ 20 - 1
locations/counter.qsrc

@@ -1,7 +1,26 @@
 # counter
 
+if $notification_message[0] ! '' and _n_counter['shown'] = 1 and _n_counter['lock'] = 0:
+	_n_counter['lock'] = 1
+
+	if _n_counter['timer'] >= 0:
+		_n_counter['timer'] -= 500
+	else
+		if $notification_message[1] ! '':
+			$stat_msg = replace($stat_msg, $notification_message[0], $notification_message[1])
+			_n_counter['timer'] = _n_counter['duration']
+		else
+			$stat_msg = replace($stat_msg, $notification_message[0])
+			_n_counter['shown'] = 0
+		end
+		clr & pl '<<$stat_msg>>'
+		killvar '$notification_message', 0
+	end
+
+	_n_counter['lock'] = 0
+end
+
 if music_loop = 1 and $track_loop ! '': play $track_loop, volume
-gs 'notification', 'counter'
 
 --- counter ---------------------------------
 

+ 6 - 8
locations/courtletter.qsrc

@@ -10,11 +10,8 @@ if $ARGS[0] = 'letter':
 	menu_off = 1
 	minut += 5
 
-	killvar 'policeQW_courtletter_dates', 0
-
 	if (policeQW['missed_court_dates'] + policeQW['missed_fine_deadlines']) > 1:
 		if (policeQW['tot_court_dates_missed'] + policeQW['tot_fines_deadlines_missed']) > 30 and policeQW['tot_arrested'] > 10:
-			killvar 'policeQW_courtletter_subjects', 0
 			policeQW['tot_arrested'] += 1
 			if policeQW['arrest_gameover_flag'] = 1:
 				gt 'sentence', 'police_arrest', 2
@@ -24,7 +21,6 @@ if $ARGS[0] = 'letter':
 			end
 
 		elseif (policeQW['missed_court_dates'] + policeQW['missed_fine_deadlines']) > 3:
-			killvar 'policeQW_courtletter_subjects', 0
 			policeQW['tot_arrested'] += 1
 			gt 'sentence', 'police_arrest', 0
 		end
@@ -153,7 +149,7 @@ if $ARGS[0] = 'letter':
 		end
 
 
-	elseif mid('policeQW_courtletter_subjects', 1, 12) = 'missed_court':
+	elseif mid($policeQW_courtletter_subjects[0], 1, 12) = 'missed_court':
 		if week = 6:
 			policeQW_courthearing_dates[] = daystart + 9
 		elseif week = 7:
@@ -172,7 +168,7 @@ if $ARGS[0] = 'letter':
 			'As you enter your home you notice an envelope from the court. You anxiously look at it and take a deep breath before opening the envelope.'
 
 			temp_fine = 500 * rand(5, 10)
-			gs 'sentence', 'letter_add_fine', 'missed_court', temp_fine
+			gs 'sentence', 'add_fine', temp_fine
 			if week < 6:
 				'Going through the letter you read that you''ve missed your court hearing. A new court hearing has been scheduled a week from now and you''ve been fined <<temp_rand>> <b>₽</b>.'
 			else
@@ -185,7 +181,7 @@ if $ARGS[0] = 'letter':
 
 		else
 			temp_fine = 500 * rand(10, 20)
-			gs 'sentence', 'letter_add_fine', 'missed_court', temp_fine
+			gs 'sentence', 'add_fine', temp_fine
 			'As you come home you see the familiar envelope from the court. You already know the gist of it, <i>missed court, <<temp_rand>> <b>₽</b> fine, failure to show up will have dire consequences,</i> yadda yadda...'
 			'You glance through the letter seeing the same information once again and as you finish you throw it to the side and continue further on inside your apartment...'
 		end
@@ -224,9 +220,11 @@ if $ARGS[0] = 'letter':
 		end
 	end
 
-	act 'Continue': gt $loc, $loc_arg
 	killvar 'temp_fine'
+	killvar 'policeQW_courtletter_dates', 0
 	killvar 'policeQW_courtletter_subjects', 0
+
+	act 'Continue': gt $loc, $loc_arg
 end
 
 

+ 1 - 1
locations/crossfit_north_girlmeet.qsrc

@@ -11,7 +11,7 @@ if $ARGS[0] = 'start':
 	minut += 5
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/characters/shared/headshots_generic/'+lover_picrand+'.jpg"></center>'
-	'As you enter the crossfit box, you notice a girl of <<$boybody>> height with a <<$boybod>> body and <<$boyface>> hair. 
+	'As you enter the crossfit box, you notice <<$boybody_pref>> girl with <<$boybod_pref>> body and <<$boyface>> hair. 
 	She is <<$boyClo>>'
 	'As she notices you, she greets you "Hi. My name is <<$boydesc>>. I heard you beat my old record, very impressive!"'
 	act 'Thank her':

+ 4 - 4
locations/dateF.qsrc

@@ -22,7 +22,7 @@ if $ARGS[0] = 'start':
 	!!1) Sveta in a school uniform
 	if PCloStyle2 = 4:
 		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_generic/'+lover_picrand+'.jpg"></center>'
-		'You notice a girl of <<$boybody>> height with a <<$boybod>> body and <<$boyface>> hair approaching you. She is wearing <<$boyClo>>'
+		'You notice <<$boybody_pref>> girl with <<$boybod_pref>> body and <<$boyface>> hair approaching you. She is wearing <<$boyClo>>'
 		'As she nears you, she presents herself; "Hi. My name is <<$boydesc>>. What are you doing here all by yourself?"'
 		act 'Greet her':
 			*clr & cla
@@ -94,7 +94,7 @@ if $ARGS[0] = 'start':
 	!!2) Gopnik Sveta
 	elseif gruptipe = 4:
 		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_generic/'+lover_picrand+'.jpg"></center>'
-		'You notice a girl of <<$boybody>> height with a <<$boybod>> body and <<$boyface>> hair approaching you. She is wearing <<$boyClo>>'
+		'You notice <<$boybody_pref>> girl with <<$boybod_pref>> body and <<$boyface>> hair approaching you. She is wearing <<$boyClo>>'
 		'As she nears you, you hear her say, "Hey baby, you seem like a girl that likes to have fun. What do you say, wanna hang out?"'
 		act 'Look at her':
 			*clr & cla
@@ -152,7 +152,7 @@ if $ARGS[0] = 'start':
 	!!3 - unattractive or average Sveta
 	elseif hotcat < 6:
 		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_generic/'+lover_picrand+'.jpg"></center>'
-		'You notice a girl of <<$boybody>> height with a <<$boybod>> body and <<$boyface>> hair approaching you. She is wearing <<$boyClo>>'
+		'You notice <<$boybody_pref>> girl with <<$boybod_pref>> body and <<$boyface>> hair approaching you. She is wearing <<$boyClo>>'
 		'As she nears you, she reaches out her hand for a handshake. "Hi. My name is <<$boydesc>>."'
 		act 'Refuse and walk away':
 			*clr & cla
@@ -199,7 +199,7 @@ if $ARGS[0] = 'start':
 		end 
 	else
 		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_generic/'+lover_picrand+'.jpg"></center>'
-		'You notice a girl of <<$boybody>> height with a <<$boybod>> body and <<$boyface>> hair approaching you. She is wearing <<$boyClo>>'
+		'You notice <<$boybody_pref>> girl with <<$boybod_pref>> body and <<$boyface>> hair approaching you. She is wearing <<$boyClo>>'
 		'She walks up to full of confidence, "Damn, baby, on a scale from 1 to 10, you''re an 11. How about a date?"'
 		act 'Excuse me?':
 			*clr & cla

+ 2 - 2
locations/dimaRevenge.qsrc

@@ -158,7 +158,7 @@ if ARGS[0] = 3:
 							act 'Look for Feofan':
 								*clr & cla
 								'<center><b><font color="maroon">School Hallway</font></b></center>'
-								'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<Rand(0,2)>>.jpg"></center>'
+								'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<rand(0,2)>>.jpg"></center>'
 								'You search the hallway for Feofan. The hallway is crowded with students preparing to leave school. You spot him at the end of the hall talking to Zinaida. He must be hitting on her again. All the nerd boys ask her out.
 								You swear you even saw Julia asking her out once. She always turns them down. Feofan is an incorrigible flirt though and doesn''t let rejection dampen his spirit. You almost envy that about him. You approach him as Zinaida turns him down yet again.'
 								act 'Talk to Feofan':
@@ -1128,7 +1128,7 @@ if dimaRevChoice = 6:
 		!!fourth day in the hall!!
 		gs 'fame', 'pav', 'sex', 60
 		'<center><b><font color="maroon">School Hallway</font></b></center>'
-		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<Rand(0,2)>>.jpg"></center>'
+		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<rand(0,2)>>.jpg"></center>'
 		'You see Artem in the hall talking with Ivan. When you greet him he says "Don''t worry, <<$pcs_nickname>>. I have a plan. I can''t talk about it now, though." Saying that he rushes off. What is he up to?'
 		act 'Continue': gt 'gschool_lessons', 'short_break'
 	end

+ 179 - 292
locations/din_van.qsrc

@@ -310,10 +310,11 @@ $SkinCare = {
 }
 
 $brit = {
-	if lashair ! 1:
-		if shave_menu = 1 and (mc_inventory['razor'] > 1 or pcs_shave['free_razor'] = 1):
-			if pcs_leghair > 3 or (pubestyle > 0 and pcs_pubes >= shave_trigger):
-				if pcs_leghair > 3 and (pubestyle > 0 and pcs_pubes >= shave_trigger):
+	if lashair ! 1 and (pcs_shave['free_razor'] = 1 or mc_inventory['razor'] > 0):
+		!! if shave_menu = 1: legs and pussy
+		if shave_menu = 1 and mc_inventory['razor'] > 2:
+			if pcs_leghair >= 3 or (pubestyle > 0 and pcs_pubes >= shave_trigger):
+				if pcs_leghair >= 3 and (pubestyle > 0 and pcs_pubes >= shave_trigger):
 					if daystart < 10 and $start_type[1] = 'tg':
 						$shave_act = 'Shave your legs and pussy'
 						$shave_txt1 = 'You can''t shake off the fact that you''re a girl now, so you decide it''d be best to shave your legs. You begin to lather your legs, still marveling at how soft and round they are. Then you take the razor in your hand and begin to shave your legs.'
@@ -368,17 +369,15 @@ $brit = {
 						act '<<$shave_act>> (0:15)':
 							menu_off = 1
 							*clr & cla
-	!!						if $locM = 'uni_dorm' and $loc ='vann' and rand(0, 5) = 0:gt 'vann', 'brit1'
-							if $loc ='gadbana':
-								'<center><video autoplay loop src="images/shared/home/bathroom/shave.mp4"></center>'
-							elseif pcs_pubes <= 10 and shave_length = 2:
-								'<center><video autoplay loop src="images/shared/home/bathroom/shave_stubble.mp4"></center>'
-							elseif shave_length = 2:
-								'<center><video autoplay loop src="images/shared/home/bathroom/shave_bush.mp4"></center>'
-							elseif shave_length > 2:
-								'<center><video autoplay loop src="images/shared/home/bathroom/trim_bush.mp4"></center>'
+							!! if $locM = 'uni_dorm' and $loc ='vann' and rand(0, 5) = 0:gt 'vann', 'brit1'
+							if shave_length < 2:
+								if pcs_pubes <= 10:
+									'<center><video autoplay loop src="images/shared/home/bathroom/shave_stubble.mp4"></center>'
+								else
+									'<center><video autoplay loop src="images/shared/home/bathroom/shave_bush.mp4"></center>'
+								end
 							else
-								'<center><img <<$set_imgh>> src="images/shared/home/bathroom/shave3.jpg"></center>'
+								'<center><video autoplay loop src="images/shared/home/bathroom/trim_bush.mp4"></center>'
 							end
 							*nl
 							'<<$shave_txt1>>'
@@ -393,11 +392,11 @@ $brit = {
 							if pcs_shave['free_razor'] = 1:
 								pcs_shave['free_razor'] = 0
 							else
-								mc_inventory['razor'] -=  2
+								mc_inventory['razor'] -= 3
 							end
 							dynamic $dryOff
-							gs'selfplay','bathtub_dildo_check'
-							gs'selfplay','shower_dildo_check'
+							gs 'selfplay', 'bathtub_dildo_check'
+							gs 'selfplay', 'shower_dildo_check'
 						end
 					end
 				end
@@ -405,16 +404,15 @@ $brit = {
 				'<br>You don''t need to shave.'
 			end
 		end
-		
 
-		if (shave_menu = 2 or shave_menu = 1) and (mc_inventory['razor'] > 0 or pcs_shave['free_razor'] = 1):
+		!! if shave_menu = 2: pussy only
+		if (shave_menu = 2 or shave_menu = 1):
 			if pubestyle > 0 and pcs_pubes >= shave_trigger:
 				if pubestyle = 1:
 					$shave_act = 'Shave your pussy'
 					if pcs_pubes <= 10:
 						$shave_txt1 = 'You lather up yourself up, and grab your razor, carefully scraping away stubble that is growing from your crotch.' 
 						$shave_txt2 = 'After a few minutes of work, you take a moment to inspect yourself, making sure you got every last pube and there isn''t even a bit of stubble hiding in the folds of your crotch somewhere. Satisfied, you rinse yourself off, smiling in relief that your pussy is silky smooth once again.'
-						
 					else
 						$shave_txt1 = 'You lather up your crotch and take a razor to the hair growing there. After a few minutes of shaving, you take a moment to inspect yourself, making sure you got every last pube and there isn''t even a bit of stubble hiding in the folds of your crotch somewhere. Satisfied, you rinse yourself off, enjoying the newfound smoothness of your pussy.'
 					end
@@ -456,14 +454,14 @@ $brit = {
 					act '<<$shave_act>> (0:10)':
 						menu_off = 1
 						*clr & cla
-						if pcs_pubes <= 10 and shave_length = 2:
-							'<center><video autoplay loop src="images/shared/home/bathroom/shave_stubble.mp4"></center>'
-						elseif shave_length = 2:
-							'<center><video autoplay loop src="images/shared/home/bathroom/shave_bush.mp4"></center>'
-						elseif shave_length > 2:
-							'<center><video autoplay loop src="images/shared/home/bathroom/trim_bush.mp4"></center>'
+						if shave_length < 2:
+							if pcs_pubes <= 10:
+								'<center><video autoplay loop src="images/shared/home/bathroom/shave_stubble.mp4"></center>'
+							else
+								'<center><video autoplay loop src="images/shared/home/bathroom/shave_bush.mp4"></center>'
+							end
 						else
-							'<center><img <<$set_imgh>> src="images/shared/home/bathroom/shave3.jpg"></center>'
+							'<center><video autoplay loop src="images/shared/home/bathroom/trim_bush.mp4"></center>'
 						end
 						*nl
 						minut += 10
@@ -479,15 +477,16 @@ $brit = {
 						*nl
 						'<<$shave_txt2>>'
 						dynamic $dryOff
-						gs'selfplay','bathtub_dildo_check'
-						gs'selfplay','shower_dildo_check'
+						gs 'selfplay', 'bathtub_dildo_check'
+						gs 'selfplay', 'shower_dildo_check'
 					end
 				end
 			end
 		end
-		
-		if (shave_menu = 3 or shave_menu = 1) and (mc_inventory['razor'] > 0 or pcs['free_razor'] = 1):
-			if pcs_leghair > 3:
+
+		!! if shave_menu = 3: legs only
+		if (shave_menu = 3 or shave_menu = 1) and mc_inventory['razor'] > 1:
+			if pcs_leghair >= 3:
 				act 'Shave your legs (0:05)':
 					menu_off = 1
 					*clr & cla
@@ -501,8 +500,8 @@ $brit = {
 					else
 						mc_inventory['razor'] -= 2
 					end
-					!!				if $locM = 'uni_dorm' and rand(0, 5) = 5:gt 'vann', 'brit1'
-					'<center><img <<$set_imgh>> src="images/shared/home/bathroom/shave2.jpg"></center>'
+					!! if $locM = 'uni_dorm' and rand(0, 5) = 5:gt 'vann', 'brit1'
+					'<center><img <<$set_imgh>> src="images/shared/home/bathroom/shave.jpg"></center>'
 					*nl
 					if daystart < 10 and $start_type[1] = 'tg':
 						'You can''t shake off the fact that you''re a girl now, so you decide it''d be best to shave your legs. You begin to lather your legs, still marveling at how soft and round they are. Then you take the razor in your hand and begin to shave your legs.'
@@ -514,162 +513,8 @@ $brit = {
 						'You lather your legs up with some soapy water and shave your legs. After a few swift movements, your legs are smooth as silk. The feeling of your smooth legs turns you on a little.'
 					end
 					dynamic $dryOff
-					gs'selfplay','bathtub_dildo_check'
-					gs'selfplay','shower_dildo_check'
-				end
-			end
-		end
-		
-		if shave_menu > 0 and (mc_inventory['razor'] > 0 or pcs['free_razor'] = 1) and (pcs_leghair > 0 or (pcs_pubes < shave_trigger and pcs_pubes > shave_trigger - 3)):
-			act'Shave early':
-				cla
-				if shave_menu = 1 and pcs_leghair > 0 and pcs_leghair < 4 and pcs_pubes < shave_trigger and pcs_pubes > shave_trigger - 3:
-					if pubestyle = 1:
-						$shave_both_act = 'Shave early - legs and pussy'
-						$shave_txt1 = 'Inspecting yourself, it''s not quite time for you to shave yet, but you''re not sure if you''ll be able to get to it later and decide to do some early maintenance now. You lather up your legs and crotch, grabbing your razor and carefully scrape the blade across your still-smooth skin.' 
-						$shave_txt2 = 'After a few minutes of work, the razor has tiny little bits of hair and skin stuck in it and your shaving areas are clean. Satisfied, you rinse off, pleased with the extra smooth feeling of your legs and pussy.'
-					elseif (pubestyle >= 2 and pubestyle <= 8) or pubestyle >= 12:
-						$shave_both_act = 'Trim early - legs and bush'
-						$shave_txt1 = 'Inspecting your pubes, it''s not quite time for you to shave the stubble at the edges, but you''re not sure if you''ll be able to get to it later and decide to do some early maintenance. Might as well do your legs too while you''re at it. You lather up and grab your razor, carefully scraping the blade around the edges of your bush and up and down your legs.' 
-						$shave_txt2 = 'After a few minutes of work, the razor has tiny little bits of hair and skin stuck in it and your trim has well maintained edges. Satisfied, you rinse off, feeling clean, neat, and tidy.'
-					elseif pubestyle = 9:
-						$shave_both_act = 'Trim early - legs and bush'
-						$shave_txt1 = 'Inspecting your bush, it''s not quite time for you to shave yet, but you''re not sure if you''ll be able to get to it later and decide to do some early maintenance. Might as well do your legs too while you''re at it. You lather up and grab your razor, carefully scraping the blade around the edges of your bush and up and down your legs.' 
-						$shave_txt2 = 'After a few minutes of work, the razor has tiny little bits of hair and skin stuck in it and your pubes are a nice even lawn between your smooth legs. Satisfied, you rinse off, feeling clean, neat, and tidy.'
-					elseif pubestyle = 10:
-						$shave_both_act = 'Trim early - legs and bush'
-						$shave_txt1 = 'Inspecting your bush, it''s not quite time for you to shave yet, but you''re not sure if you''ll be able to get to it later and decide to do some early maintenance. Might as well do your legs too while you''re at it. You lather up and grab your razor, carefully scraping the blade around the edges of your bush and up and down your legs.' 
-						$shave_txt2 = 'After a few minutes of work, the razor has tiny little bits of hair and skin stuck in it and your bush is a well shaped hedge. Satisfied, you rinse off, feeling clean, neat, and tidy.'
-					elseif pubestyle = 11:
-						$shave_both_act = 'Shave early - legs and pussy'
-						$shave_txt1 = 'Inspecting yourself, it''s not quite time for you to shave yet and you''re usually too lazy to get to it before it starts growing into actual hair, but you''re feeling motivated so you might as well do it right now. You lather up your legs and crotch, grabbing your razor and carefully scrape the blade across your still-smooth skin.' 
-						$shave_txt2 = 'After a few minutes of work, the razor has tiny little bits of hair and skin stuck in it and your shaving areas are clean. Satisfied, you rinse off, pleased with the extra smooth feeling of your legs and pussy.'
-					else
-						$shave_both_act = ''
-					end
-					
-					if $shave_both_act ! '':
-						act '<<$shave_both_act>> (0:10)':
-							menu_off = 1
-							*clr & cla
-							if $locM = 'uni_dorm' and rand(0, 5) = 0:gt 'vann', 'brit1'
-							if $loc ='gadbana':
-								'<center><video autoplay loop src="images/shared/home/bathroom/shave.mp4"></center>'
-							elseif pcs_pubes <= 10 and shave_length = 2:
-								'<center><video autoplay loop src="images/shared/home/bathroom/shave_stubble.mp4"></center>'
-							elseif shave_length = 2:
-								'<center><video autoplay loop src="images/shared/home/bathroom/shave_bush.mp4"></center>'
-							elseif shave_length > 2:
-								'<center><video autoplay loop src="images/shared/home/bathroom/trim_bush.mp4"></center>'
-							else
-								'<center><img <<$set_imgh>> src="images/shared/home/bathroom/shave3.jpg"></center>'
-							end
-							*nl
-							'<<$shave_txt1>>'
-							*nl
-							'<<$shave_txt2>>'
-							minut += 10
-							pcs_leghair = 0
-							stat['leg_hair_growth_timer'] = totminut
-							pcs_pubes = shave_length
-							stat['pube_growth_timer'] = totminut
-							pcs_horny += 5
-							if pcs_shave['free_razor'] = 1:
-								pcs_shave['free_razor'] = 0
-							else
-								mc_inventory['razor'] -=  2
-							end
-							dynamic $dryOff
-							gs'selfplay','bathtub_dildo_check'
-							gs'selfplay','shower_dildo_check'
-						end
-					end
-				end
-				
-				if (shave_menu = 2 or shave_menu = 1) and pcs_pubes < shave_trigger and pcs_pubes > shave_trigger - 3:
-					if pubestyle = 1:
-						$shave_act = 'Shave early - pussy only'
-						$shave_txt1 = 'Inspecting yourself, it''s not quite time for you to shave yet, but you''re not sure if you''ll be able to get to it later and decide to do some early maintenance now. You lather up your crotch, grabbing your razor and carefully scrape the blade across your still-smooth skin.' 
-						$shave_txt2 = 'After a few minutes of work, the razor has tiny little bits of hair and skin stuck in it and your shaving areas are clean. Satisfied, you rinse off, pleased with the extra smooth feeling of your pussy.'
-					elseif (pubestyle >= 2 and pubestyle <= 8) or pubestyle >= 12:
-						$shave_act = 'Trim early - pubes only'
-						$shave_txt1 = 'Inspecting your pubes, it''s not quite time for you to shave the stubble at the edges, but you''re not sure if you''ll be able to get to it later and decide to do some early maintenance. You lather up and grab your razor, carefully scraping the blade around the edges of your pubes.' 
-						$shave_txt2 = 'After a few minutes of work, the razor has tiny little bits of hair and skin stuck in it and your trim has well maintained edges. Satisfied, you rinse off, feeling clean, neat, and tidy.'
-					elseif pubestyle = 9:
-						$shave_act = 'Trim early - bush only'
-						$shave_txt1 = 'Inspecting your bush, it''s not quite time for you to shave yet, but you''re not sure if you''ll be able to get to it later and decide to do some early maintenance. You lather up and grab your shaving implements and start carefully clipping and trimming around the edges of your bush.' 
-						$shave_txt2 = 'After a few minutes of work, the razor has tiny little bits of hair and skin stuck in it and your pubes are a nice even lawn between your legs. Satisfied, you rinse off, feeling clean, neat, and tidy.'
-					elseif pubestyle = 10:
-						$shave_act = 'Trim early - bush only'
-						$shave_txt1 = 'Inspecting your bush, it''s not quite time for you to shave yet, but you''re not sure if you''ll be able to get to it later and decide to do some early maintenance. You lather up and grab your shaving implements and start carefully clipping and trimming around the edges of your bush.' 
-						$shave_txt2 = 'After a few minutes of work, the razor has tiny little bits of hair and skin stuck in it and your bush is a well shaped hedge. Satisfied, you rinse off, feeling clean, neat, and tidy.'
-					elseif pubestyle = 11:
-						$shave_act = 'Shave early - pussy only'
-						$shave_txt1 = 'Inspecting yourself, it''s not quite time for you to shave yet and you''re usually too lazy to get to it before it starts growing into actual hair, but you''re feeling motivated so you might as well do it right now. You lather up your crotch, grab your razor, and carefully scrape the blade across your still-smooth skin.' 
-						$shave_txt2 = 'After a few minutes of work, the razor has tiny little bits of hair and skin stuck in it and your pussy is perfectly cleanshaven. Satisfied, you rinse off, pleased with the extra smooth feeling between your legs.'
-					else
-						$shave_act = ''
-					end
-						
-					if $shave_act ! '':
-						act '<<$shave_act>> (0:05)':
-							menu_off = 1
-							*clr & cla
-							if $locM = 'uni_dorm' and rand(0, 5) = 0:gt 'vann', 'brit1'
-							if $loc ='gadbana':
-								'<center><video autoplay loop src="images/shared/home/bathroom/shave.mp4"></center>'
-							elseif pcs_pubes <= 10 and shave_length = 2:
-								'<center><video autoplay loop src="images/shared/home/bathroom/shave_stubble.mp4"></center>'
-							elseif shave_length = 2:
-								'<center><video autoplay loop src="images/shared/home/bathroom/shave_bush.mp4"></center>'
-							elseif shave_length > 2:
-								'<center><video autoplay loop src="images/shared/home/bathroom/trim_bush.mp4"></center>'
-							else
-								'<center><img <<$set_imgh>> src="images/shared/home/bathroom/shave3.jpg"></center>'
-							end
-							*nl
-							'<<$shave_txt1>>'
-							*nl
-							'<<$shave_txt2>>'
-							minut += 5
-							pcs_leghair = 0
-							stat['leg_hair_growth_timer'] = totminut
-							pcs_pubes = shave_length
-							stat['pube_growth_timer'] = totminut
-							pcs_horny += 5
-							if pcs_shave['free_razor'] = 1:
-								pcs_shave['free_razor'] = 0
-							else
-								mc_inventory['razor'] -=  2
-							end
-							dynamic $dryOff
-							gs'selfplay','bathtub_dildo_check'
-							gs'selfplay','shower_dildo_check'
-						end
-					end
-				end
-				
-				if (shave_menu = 3 or shave_menu = 1) and pcs_leghair > 0:
-					act'Shave early - Legs only (0:03)':
-						menu_off = 1
-						*clr & cla
-						minut += 3
-						pcs_leghair = 0
-						stat['leg_hair_growth_timer'] = totminut
-						pcs_horny += 5
-						if pcs_shave['free_razor'] = 1:
-							pcs_shave['free_razor'] = 0
-						else
-							mc_inventory['razor'] -= 1
-						end
-						if $locM = 'uni_dorm' and rand(0, 5) = 5:gt 'vann', 'brit1'
-						'<center><img <<$set_imgh>> src="images/shared/home/bathroom/shave2.jpg"></center>'
-						*nl
-						'Inspecting your legs, it''s not really time to shave them yet, but there''s no reason you can''t just do a quick pass right now and save effort later. You lather your legs up and grab your razor. After spending a few minutes methodically shaving away every last hair, your legs are smooth and clean. The feeling of your silky skin turns you on a little.'
-						dynamic $dryOff
-						gs'selfplay','bathtub_dildo_check'
-						gs'selfplay','shower_dildo_check'
-					end
+					gs 'selfplay', 'bathtub_dildo_check'
+					gs 'selfplay', 'shower_dildo_check'
 				end
 			end
 		end
@@ -1252,9 +1097,15 @@ if $ARGS[0] = 'private':
 
 	if pirsA + pirsB + pirsC + pirsD + pirsE + pirsF + pirsN + pirsG > 0:'<a href="exec:*clr & cla & dynamic $pirManage">Manage your piercings</a>'
 
-	if fillimplant = 1 and siliconeBag >= 1:'<a href="exec:cls & siliconeBag -= 1 & silicone += 10 & gt $loc, $loc_arg">Inject silicone into your breast implants.</a>'
-	if fillimplant = 1 and silicone >= 20:'<a href="exec:cls & silicone -= 10 & gt $loc, $loc_arg">Drain silicone from your breast implants.</a>'
+	if fillimplant = 1:
+		if siliconeBag >= 1:
+			'<a href="exec:cls & siliconeBag -= 1 & bodyVars[''bust_silicone''] += 10 & gt $loc, $loc_arg">Inject silicone into your breast implants.</a>'
+		end
 
+		if bodyVars['bust_silicone'] >= 20:
+			'<a href="exec:cls & bodyVars[''bust_silicone''] -= 10 & gt $loc, $loc_arg">Drain silicone from your breast implants.</a>'
+		end
+	end
 	dynamic $bteeth
 
 	dynamic $tampon
@@ -1291,7 +1142,7 @@ if $ARGS[0] = 'private':
 		dynamic $toymanage
 	end
 
-	'<a href="exec:msg ''<center>Your weight is <<pcs_weight>> kg<br>Your body mass index (BMI) is <<pcs_bmi>>.<br><<$bmi_desc>></center>''">Check weight on the scales</a>'
+	'<a href="exec:msg ''<center>Your weight is <<pcs_weight[0]>>.<<pcs_weight[1]>> kg<br>Your body mass index (BMI) is <<pcs_bmi[0]>>.<<pcs_bmi[1]>>.<br><<$bmi_desc>></center>''">Check weight on the scales</a>'
 
 	gs 'din_van', 'prvt_pee'
 
@@ -1832,118 +1683,154 @@ if $ARGS[0] = 'shave_options':
 	*clr & cla
 	if shave_img_hgt = 0:shave_img_hgt = 100
 	!! images handled using FUNC(''$pube_image'')
-	'<h3><center><b>Shaving optons</b></h3><br><center>Here you can choose your style for pubic hair and which body parts you wish to shave.</center>'
-	'<br><center><table border=0 cellspacing=<<shave_img_hgt/25>> cellpadding=5>'
-	*P '<TR><TD><center><a href="exec:view''images/pc/body/pussy/hair/pussy.jpg''"><img Height = <<shave_img_hgt>> src="images/pc/body/pussy/hair/pussy.jpg"></a></center></TD><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],2)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],2)>>"></a></center></TD><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],3)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],3)>>"></a></center></TD><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],4)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],4)>>"></a></center></TD><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],5)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],5)>>"></a></center></TD>'
-	'<TR><TD><center>'
-	if pubestyle ! 1:
-		'<a href="exec:pubestyle = 1 & shave_length = 1 & shave_trigger = 4 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Clean Shave</a>'
-	else
-		'Clean Shave'
-	end
-	'</center></TD><TD><center>'
-	if pubestyle ! 2 and pcs_pubes > 15:
-		'<a href="exec:pubestyle = 2 & shave_length = 16 & shave_trigger = 21 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">V-shaped</a>'
-	else
-		'V-shaped'
-	end
-	'</center></TD><TD><center>'
-	if pubestyle ! 3 and pcs_pubes > 15:
-		'<a href="exec:pubestyle = 3 & shave_length = 16 & shave_trigger = 21 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Triangle-shaped</a>'
-	else
-		'Triangle-shaped'
-	end
-	'</center></TD><TD><center>'
-	if pubestyle ! 4 and pcs_pubes > 15:
-		'<a href="exec:pubestyle = 4 & shave_length = 16 & shave_trigger = 21 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Landing-strip</a>'
-	else
-		'Landing-strip'
-	end
-	'</center></TD><TD><center>'
-	if pubestyle ! 5 and pcs_pubes > 15:
-		'<a href="exec:pubestyle = 5 & shave_length = 16 & shave_trigger = 21 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Heart-shaped</a>'
-	else
-		'Heart-shaped'
-	end
-	'</center></TD>'
-	*P '<TR><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],6)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],6)>>"></a></center></TD><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],7)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],7)>>"></a></center></TD><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],8)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],8)>>"></a></center></TD><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],9)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],9)>>"></a></center></TD><TD><center><a href="exec:view''<<FUNC(''$pube_image'',26,pcs_pubecol[2],10)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',26,pcs_pubecol[2],10)>>"></a></center></TD>'
-	'<TR><TD><center>'
-	if pubestyle ! 6 and pcs_pubes > 15:
-		'<a href="exec:pubestyle = 6 & shave_length = 16 & shave_trigger = 21 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Flame-shaped</a>'
-	else
-		'Flame-shaped'
-	end
-	'</center></TD><TD><center>'
-	if pubestyle ! 7 and pcs_pubes > 15:
-		'<a href="exec:pubestyle = 7 & shave_length = 16 & shave_trigger = 21 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Cross-Shaped</a>'
-	else
-		'Cross-Shaped'
-	end
-	'</center></TD><TD><center>'
-	if pubestyle ! 8 and pcs_pubes > 16:
-		'<a href="exec:pubestyle = 8 & shave_length = 16 & shave_trigger = 21 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Trimmed</a>'
-	else
-		'Trimmed'
-	end
-	'</center></TD><TD><center>'
-	if pubestyle ! 9 and pcs_pubes > 20:
-		'<a href="exec:pubestyle = 9 & shave_length = 20 & shave_trigger = 26 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Small Bush</a>'
-	else
-		'Small Bush'
-	end
-	'</center></TD><TD><center>'
-	if pubestyle ! 10:
-		'<a href="exec:pubestyle = 10 & shave_length = 26 & shave_trigger = 31 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Full Bush</a>'
-	else
-		'Full Bush'
-	end
-	*P '<TR><TD><center><a href="exec:view''<<FUNC(''$pube_image'',5,pcs_pubecol[2],11)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',5,pcs_pubecol[2],11)>>"></a></center></TD><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],12)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],12)>>"></a></center></TD>'
+	*p '<center><h3><b>Shaving optons</b></h3>'
+	'Here you can choose your style for pubic hair and which body parts you wish to shave.'
 	*nl
-	'<TR><TD><center>'
-	if pubestyle ! 11 and pcs_pubes > 10:
-		'<a href="exec:pubestyle = 11 & shave_length = 2 & shave_trigger = 8 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Lazy</a>'
-		'(don''t immediately shave stubble)'
-	else
-		'Lazy'
-		'(don''t immediately shave stubble)'
-	end
-	'</center></TD><TD><center>'
-	if pubestyle ! 12 and pcs_pubes > 15:
-		'<a href="exec:pubestyle = 12 & shave_length = 16 & shave_trigger = 21 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Mini Bush</a>'
-	else
-		'Mini Bush'
-	end
-	
-	'</center></TD><TR><center>'
-	'Your razor will last for <b><<mc_inventory[''razor'']>></b> more shaves.'
+	'Your razor will last for&nbsp;<b><<mc_inventory[''razor'']>></b>&nbsp;more shaves.'
+	*nl
+	'<b>Change your shaving routine:'
 	*nl
-	'<center><b>Change your shaving routine:</b></center>'
-	'<center><b>Note: Choosing to never shave, or to shave legs only, will remove your chosen shave style.<br> You can only choose a style if you currently have enough hair to support it.</b></center>'
+	'Note: Choosing to never shave, or to shave legs only, will remove your chosen shave style.'
+	'You can only choose a style if you currently have enough hair to support it.</b>'
 	*nl
 	!if shave_menu = 0:nothing
 	!if shave_menu = 1:legs and pussy
 	!if shave_menu = 2:pussy only
 	!if shave_menu = 3:legs only
+	if pubestyle = 0:
+		*p iif(shave_menu = 1, 'Everything&nbsp;|&nbsp;', '<a href="exec: msg ''You must choose a shave style before you can choose to shave everything.''">Everything</a>&nbsp;|&nbsp;')
+		*p iif(shave_menu = 2, 'Pussy only&nbsp;|&nbsp;', '<a href="exec: msg ''You must choose a shave style before you can choose to shave your pussy.''">Pussy only</a>&nbsp;|&nbsp;')
+		*p iif(shave_menu = 3, 'Legs only&nbsp;|&nbsp;', '<a href="exec:shave_menu = 3 & pubestyle = 0 & gs ''din_van'', ''shave_options''">Legs only</a>&nbsp;|&nbsp;')
+		*p iif(shave_menu = 0, 'Never shave', '<a href="exec:shave_menu = 0 & pubestyle = 0 & gs ''din_van'', ''shave_options''">Never shave</a>')
+	else
+		*p iif(shave_menu = 1, 'Everything&nbsp;|&nbsp;', '<a href="exec:shave_menu = 1 & gs ''din_van'', ''shave_options''">Everything</a>&nbsp;|&nbsp;')
+		*p iif(shave_menu = 2, 'Pussy only&nbsp;|&nbsp;', '<a href="exec:shave_menu = 2 & gs ''din_van'', ''shave_options''">Pussy only</a>&nbsp;|&nbsp;')
+		*p iif(shave_menu = 3, 'Legs only&nbsp;|&nbsp;', '<a href="exec:shave_menu = 3 & pubestyle = 0 & gs ''din_van'', ''shave_options''">Legs only</a>&nbsp;|&nbsp;')
+		*p iif(shave_menu = 0, 'Never shave', '<a href="exec:shave_menu = 0 & pubestyle = 0 & gs ''din_van'', ''shave_options''">Never shave</a>')
+	end
+	*nl
+	*nl
 	if shave_menu = 0:
-		$shave_chosen = 'doesn''t include any shaving options.'
-		$shave_time = ''
-		'Never shave | '+iif(pubestyle = 0,'<a href="exec: msg ''You must choose a shave style before you can choose to shave everything.''">Everything</a>','<a href="exec:shave_menu = 1 & gs ''din_van'', ''shave_options''">Everything</a>')+' | '+iif(pubestyle = 0,'<a href="exec: msg ''You must choose a shave style before you can choose to shave your pussy.''">Pussy only</a>','<a href="exec:shave_menu = 2 & gs ''din_van'', ''shave_options''">Pussy only</a>')+' | <a href="exec:shave_menu = 3 & pubestyle = 0 & gs ''din_van'', ''shave_options''">Legs only</a>'
+		'Your current routine doesn''t include any shaving options.'
+		$temp_toggle = 'shave_menu = 2'
 	elseif shave_menu = 1:
-		$shave_chosen = 'involves shaving your legs and maintaining your current pubic style.'
-		$shave_time = 'It takes 15 minutes to complete this routine.'
-		'<a href="exec:shave_menu = 0 & pubestyle = 0 & gs ''din_van'', ''shave_options''">Never shave</a> | Everything | '+iif(pubestyle = 0,'<a href="exec: msg ''You must choose a shave style before you can choose to shave your pussy.''">Pussy only</a>','<a href="exec:shave_menu = 2 & gs ''din_van'', ''shave_options''">Pussy only</a>')+' | <a href="exec:shave_menu = 3 & pubestyle = 0 & gs ''din_van'', ''shave_options''">Legs only</a>'
+		'Your current routine involves shaving your legs and maintaining your current pubic style.'
+		'It takes 15 minutes to complete this routine.'
+		$temp_toggle = 'shave_menu = 2'
 	elseif shave_menu = 2:
-		$shave_chosen = 'involves not shaving your legs and maintaining your current pubic style.'
-		$shave_time = 'It takes 10 minutes to complete this routine.'
-		'<a href="exec:shave_menu = 0 & pubestyle = 0 & gs ''din_van'', ''shave_options''">Never shave</a> | '+iif(pubestyle = 0,'<a href="exec: msg ''You must choose a shave style before you can choose to shave everything.''">Everything</a>','<a href="exec:shave_menu = 1 & gs ''din_van'', ''shave_options''">Everything</a>')+' | Pussy only | <a href="exec:shave_menu = 3 & pubestyle = 0 & gs ''din_van'', ''shave_options''">Legs only</a>'
+		'Your current routine involves not shaving your legs and maintaining your current pubic style.'
+		'It takes 10 minutes to complete this routine.'
+		$temp_toggle = 'shave_menu = 2'
 	elseif shave_menu = 3:
-		$shave_chosen = 'involves shaving your legs and not maintaining any chosen pubic style.'
-		$shave_time = 'It takes 5 minutes to complete this routine.'
-		'<a href="exec:shave_menu = 0 & pubestyle = 0 & gs ''din_van'', ''shave_options''">Never shave</a> | '+iif(pubestyle = 0,'<a href="exec: msg ''You must choose a shave style before you can choose to shave everything.''">Everything</a>','<a href="exec:shave_menu = 1 & gs ''din_van'', ''shave_options''">Everything</a>')+' | '+iif(pubestyle = 0,'<a href="exec: msg ''You must choose a shave style before you can choose to shave your pussy.''">Pussy only</a>','<a href="exec:shave_menu = 2 & gs ''din_van'', ''shave_options''">Pussy only</a>')+' | Legs only'
+		'Your current routine involves shaving your legs and not maintaining any chosen pubic style.'
+		'It takes 5 minutes to complete this routine.'
+		$temp_toggle = 'shave_menu = 1'
 	end
 	*nl
-	'<center>Your current routine <<$shave_chosen>> <br><<$shave_time>></center>'
-	'</table></center>'
+	*p '<table border=0 cellspacing=<<shave_img_hgt/25>> cellpadding=5>'
+
+	!! ROW 1: IMAGES
+		*P '<TR><TD><center><a href="exec:view''images/pc/body/pussy/hair/pussy.jpg''"><img Height = <<shave_img_hgt>> src="images/pc/body/pussy/hair/pussy.jpg"></a></center></TD>'
+		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],2)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],2)>>"></a></center></TD>'
+		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],3)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],3)>>"></a></center></TD>'
+		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],4)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],4)>>"></a></center></TD>'
+		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],5)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],5)>>"></a></center></TD></TR>'
+
+	!! ROW 1: TEXT
+		*p '<TR><TD><center>'
+		if pubestyle ! 1:
+			*p '<a href="exec:pubestyle = 1 & shave_length = 0 & shave_trigger = 3 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Clean Shave</a>'
+		else
+			*p 'Clean Shave'
+		end
+		*p '</center></TD><TD><center>'
+		if pubestyle ! 2 and pcs_pubes > 15:
+			*p '<a href="exec:pubestyle = 2 & shave_length = 16 & shave_trigger = 21 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">V-shaped</a>'
+		else
+			*p 'V-shaped'
+		end
+		*p '</center></TD><TD><center>'
+		if pubestyle ! 3 and pcs_pubes > 15:
+			*p '<a href="exec:pubestyle = 3 & shave_length = 16 & shave_trigger = 21 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Triangle-shaped</a>'
+		else
+			*p 'Triangle-shaped'
+		end
+		*p '</center></TD><TD><center>'
+		if pubestyle ! 4 and pcs_pubes > 15:
+			*p '<a href="exec:pubestyle = 4 & shave_length = 16 & shave_trigger = 21 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Landing-strip</a>'
+		else
+			*p 'Landing-strip'
+		end
+		*p '</center></TD><TD><center>'
+		if pubestyle ! 5 and pcs_pubes > 15:
+			*p '<a href="exec:pubestyle = 5 & shave_length = 16 & shave_trigger = 21 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Heart-shaped</a>'
+		else
+			*p 'Heart-shaped'
+		end
+		*p '</center></TD></TR>'
+
+	!! ROW 2: IMAGES
+		*P '<TR><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],6)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],6)>>"></a></center></TD>'
+		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],7)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],7)>>"></a></center></TD>'
+		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],8)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],8)>>"></a></center></TD>'
+		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],9)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],9)>>"></a></center></TD>'
+		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',26,pcs_pubecol[2],10)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',26,pcs_pubecol[2],10)>>"></a></center></TD></TR>'
+	
+	!! ROW 2: TEXT
+		*p '<TR><TD><center>'
+		if pubestyle ! 6 and pcs_pubes > 15:
+			*p '<a href="exec:pubestyle = 6 & shave_length = 16 & shave_trigger = 21 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Flame-shaped</a>'
+		else
+			*p 'Flame-shaped'
+		end
+		*p '</center></TD><TD><center>'
+		if pubestyle ! 7 and pcs_pubes > 15:
+			*p '<a href="exec:pubestyle = 7 & shave_length = 16 & shave_trigger = 21 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Cross-Shaped</a>'
+		else
+			*p 'Cross-Shaped'
+		end
+		*p '</center></TD><TD><center>'
+		if pubestyle ! 8 and pcs_pubes > 16:
+			*p '<a href="exec:pubestyle = 8 & shave_length = 16 & shave_trigger = 21 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Trimmed</a>'
+		else
+			*p 'Trimmed'
+		end
+		*p '</center></TD><TD><center>'
+		if pubestyle ! 9 and pcs_pubes > 20:
+			*p '<a href="exec:pubestyle = 9 & shave_length = 20 & shave_trigger = 26 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Small Bush</a>'
+		else
+			*p 'Small Bush'
+		end
+		*p '</center></TD><TD><center>'
+		if pubestyle ! 10:
+			*p '<a href="exec:pubestyle = 10 & shave_length = 26 & shave_trigger = 31 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Full Bush</a>'
+		else
+			*p 'Full Bush'
+		end
+		*p '</center></TD></TR>'
+
+	!! ROW 3: IMAGES
+		*P '<TR><TD><center><a href="exec:view''<<FUNC(''$pube_image'',5,pcs_pubecol[2],11)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',5,pcs_pubecol[2],11)>>"></a></center></TD>'
+		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],12)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],12)>>"></a></center></TD></TR>'
+
+	!! ROW 3: TEXT
+		*p '<TR><TD><center>'
+		if pubestyle ! 11 and pcs_pubes > 10:
+			*p '<a href="exec:pubestyle = 11 & shave_length = 0 & shave_trigger = 8 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Lazy</a>'
+		else
+			*p 'Lazy'
+		end
+		*p '</center></TD><TD><center>'
+		if pubestyle ! 12 and pcs_pubes > 15:
+			*p '<a href="exec:pubestyle = 12 & shave_length = 16 & shave_trigger = 21 & <<$temp_toggle>> & gt ''din_van'', ''shave_options''">Mini Bush</a>'
+		else
+			*p 'Mini Bush'
+		end
+
+	*p '</center></TD></TR></table>'
+	*p '<sub><small>Lazy - (don''t immediately shave stubble)</small></sub></center>'
+
+	killvar '$temp_toggle'
 
 	act 'Return':menu_off = 0 & gt $loc, $loc_arg
 	act 'Set image height for this view':

+ 4 - 6
locations/dream_events.qsrc

@@ -1,11 +1,10 @@
 # dream_events
-$sleep_loc = 'dream_events'
 menu_off = 1
 
 !! Dream events trigger after deciding to go to sleep, but before any time has advanced.
 !! Note that dreams are supposed to stick on the screen during the sleep cycle. So only use xgt and gs!!
 !!
-!! Moved here from pre_sleep
+!! Moved here from sleep
 !! When done: Move to sleep
 
 	!!=====================================!!
@@ -57,7 +56,7 @@ end
 
 if $ARGS[0] = 'mod_sleepevents':
 	!! This location is here to allow mods to hook into the system.
-	!! Either check for: if $sleep_loc = 'dream_events' and $ARGS[0] = 'mod_sleepevents'
+	!! Either check for: if $ARGS[0] = 'dream_events' and $ARGS[1] = 'mod_sleepevents'
 	!!
 	!! You can add events as: $sleep_events[] = 'gs ''mod_loc'' ''mod_args0'' '
 	!! A random event will be chosen from amongst the added ones.
@@ -71,6 +70,7 @@ if $ARGS[0] = 'mod_sleepevents':
 	!! DO NOT DIRECTLY GOTO/GOSUB OUTOF THIS LOCATION. ALWAYS ADD IT TO THE QUEUEs!!!!
 	!! IT WILL ALMOST CERTIANLY END BADLY WHEN MORE THAN 1 MOD IS INVOLVED.
 
+	gs 'LOCA', 'dream_events', 'mod_sleepevents'
 	gt 'dream_events', 'event_handler'
 end
 
@@ -120,7 +120,6 @@ end
 
 if $ARGS[0] = 'exit':
 	sleepVars['events_done'] = 0
-	killvar '$sleep_loc'
 	killvar '$sleep_events'
 	killvar '$sleep_events_priority'
 	killvar 'temp_slev_id'
@@ -129,13 +128,12 @@ end
 
 if $ARGS[0] = 'continue':
 	sleepVars['events_done'] = 0
-	killvar '$sleep_loc'
 	killvar '$sleep_events'
 	killvar '$sleep_events_priority'
 	killvar 'temp_slev_id'
 	killvar '$temp_sleep_event_chosen'
 
-	xgt 'sleep', 'start'
+	xgt 'sleep', 'post_dream'
 end
 
 

+ 3 - 2
locations/emp_functions.qsrc

@@ -14,7 +14,7 @@
 
 if $ARGS[0] = 'gen_schedule':
 	*clr & cla 
-		if night_mode = 1 or night_mode = 2:
+	if theme['is_dark'] = 1:
 		$header_theme = '#91B0B4'
 		$body_theme = '#303030'
 		$body_theme_alt  = '#474747'
@@ -98,7 +98,7 @@ if $ARGS[0] = 'gen_schedule':
 				elseif function_sw = 2:
                     flag_active  = 1
                     j_id = emp_rota_week[i_day +  '_' + i_hour]
-                    if emp_rota_week[i_day +  '_' + i_hour] ! 0:							
+                    if emp_rota_week[i_day +  '_' + i_hour] ! '0':							
                         $transient_tb =  '<a  href="exec:gs ''emp_functions'', ''job_info'', <<j_id>>">' + $emp_job_title[j_id] + '</a>'
                     else
                         $transient_tb  = 'Free'
@@ -523,6 +523,7 @@ if $ARGS[0] = 'evt_day_chk':
 			if month = evt_month and day = evt_day: evt_chk = 1
 			job_idx += 1
 		if job_idx < arrsize('evt_event') : jump 'evt_day_chk'
+		killvar 'job_idx'
 	end
 end
 !! --------------------- End Event Generator

+ 8 - 8
locations/exercise.qsrc

@@ -530,7 +530,7 @@ if $ARGS[0] = 'tier1':
 	mcnt = 0
 	:timeexploop1
 	if $ARGS[3] = '':
-		gs 'exp_gain', $ARGS[2], 1, steroid_dose
+		gs 'exp_gain', $ARGS[2], 1
 		if $ARGS[2] = 'vital' or $ARGS[2] = 'stren':
 			gs 'exp_gain', $ARGS[2], rand(0,steroid_dose)
 			if steroid_dose > 0 and rand(1,5) <= steroid_dose:clit_size += rand(0,1)
@@ -539,7 +539,7 @@ if $ARGS[0] = 'tier1':
 		i = 2
 		:exploop1
 		if $ARGS[i] ! '':
-			gs 'exp_gain', $ARGS[i], rand(0,1), steroid_dose
+			gs 'exp_gain', $ARGS[i], rand(0,1)
 			if $ARGS[i] = 'vital' or $ARGS[i] = 'stren': 
 				gs 'exp_gain', $ARGS[i], rand(0,steroid_dose)
 				steroidcheck = 1
@@ -578,7 +578,7 @@ if $ARGS[0] = 'tier2':
 	mcnt = 0
 	:timeexploop2
 	if $ARGS[3] = '':
-		gs 'exp_gain', $ARGS[2], rand(2,3), steroid_dose
+		gs 'exp_gain', $ARGS[2], rand(2,3)
 		if $ARGS[2] = 'vital' or $ARGS[2] = 'stren':
 			gs 'exp_gain', $ARGS[2], rand(0,steroid_dose)
 			if steroid_dose > 0 and rand(1,5) <= steroid_dose:clit_size += rand(0,1)
@@ -587,7 +587,7 @@ if $ARGS[0] = 'tier2':
 		i = 2
 		:exploop2
 		if $ARGS[i] ! '':
-			gs 'exp_gain', $ARGS[i], rand(1,2), steroid_dose
+			gs 'exp_gain', $ARGS[i], rand(1,2)
 			if $ARGS[i] = 'vital' or $ARGS[i] = 'stren': 
 				gs 'exp_gain', $ARGS[i], rand(0,steroid_dose)
 				steroidcheck = 1
@@ -626,7 +626,7 @@ if $ARGS[0] = 'tier3':
 	mcnt = 0
 	:timeexploop3
 	if $ARGS[3] = '':
-		gs 'exp_gain', $ARGS[2], rand(3,5), steroid_dose
+		gs 'exp_gain', $ARGS[2], rand(3,5)
 		if $ARGS[2] = 'vital' or $ARGS[2] = 'stren':
 			gs 'exp_gain', $ARGS[2], rand(0,steroid_dose)
 			if steroid_dose > 0 and rand(1,5) <= steroid_dose:clit_size += rand(0,1)
@@ -635,7 +635,7 @@ if $ARGS[0] = 'tier3':
 		i = 2
 		:exploop3
 		if $ARGS[i] ! '':
-			gs 'exp_gain', $ARGS[i], rand(2,3), steroid_dose
+			gs 'exp_gain', $ARGS[i], rand(2,3)
 			if $ARGS[i] = 'vital' or $ARGS[i] = 'stren': 
 				gs 'exp_gain', $ARGS[i], rand(0,steroid_dose)
 				steroidcheck = 1
@@ -674,7 +674,7 @@ if $ARGS[0] = 'tier4':
 	mcnt = 0
 	:timeexploop4
 	if $ARGS[3] = '':
-		gs 'exp_gain', $ARGS[2], rand(7,10), steroid_dose
+		gs 'exp_gain', $ARGS[2], rand(7,10)
 		if $ARGS[2] = 'vital' or $ARGS[2] = 'stren':
 			gs 'exp_gain', $ARGS[2], rand(0,steroid_dose)
 			if steroid_dose > 0 and rand(1,5) <= steroid_dose:clit_size += rand(0,1)
@@ -683,7 +683,7 @@ if $ARGS[0] = 'tier4':
 		i = 2
 		:exploop4
 		if $ARGS[i] ! '':
-			gs 'exp_gain', $ARGS[i], rand(3,5), steroid_dose
+			gs 'exp_gain', $ARGS[i], rand(3,5)
 			if $ARGS[i] = 'vital' or $ARGS[i] = 'stren': 
 				gs 'exp_gain', $ARGS[i], rand(0,steroid_dose)
 				steroidcheck = 1

+ 51 - 43
locations/exp_gain.qsrc

@@ -1,54 +1,62 @@
 # exp_gain
 !2022/08/07
 
-!gosup that exp gain is run through to be able to modify exp gain by conditions of the player character
+! gosub that exp gain is run through to be able to modify exp gain by conditions of the player character
+
+! use: gs 'exp_gain', 'skill', exp
+! example: gs 'exp_gain', 'photoskl', rand(1,2)
+! example: gs 'exp_gain', $ARGS[2], rand(3,5)
 
-!Modify exp gain if Sveta does not get enough sleep.
 if ARGS[1] > 0:
-	if $ARGS[0] = 'stren_plus' and ARGS[2] = 0 and stren_plus_lvl > 50:
-		!!This is so that exp only is awarded to additional strength if it is high when you use steroids
-	else
-		if pcs_traits['new_again'] > 0: ARGS[1] *= 2
-		if pcs_stam <= 0:
-			if pcs_condition['lack_of_sleep'] >= 20:
-				dynamic "<<$ARGS[0]>>_exp += <<ARGS[1]>>/8"
-			elseif pcs_condition['lack_of_sleep'] >= 10:
-				dynamic "<<$ARGS[0]>>_exp += <<ARGS[1]>>/4"
-			elseif pcs_condition['lack_of_sleep'] >= 5:
-				dynamic "<<$ARGS[0]>>_exp += (<<ARGS[1]>>*3)/8"
-			elseif pcs_condition['lack_of_sleep'] >= 2:
-				dynamic "<<$ARGS[0]>>_exp += (<<ARGS[1]>>*9)/20"
-			else
-				dynamic "<<$ARGS[0]>>_exp += <<ARGS[1]>>/2"
-			end
-		elseif pcs_stam < stammax / 5:
-			if pcs_condition['lack_of_sleep'] >= 20:
-				dynamic "<<$ARGS[0]>>_exp += (<<ARGS[1]>>*3)/16"
-			elseif pcs_condition['lack_of_sleep'] >= 10:
-				dynamic "<<$ARGS[0]>>_exp += (<<ARGS[1]>>*3)/8"
-			elseif pcs_condition['lack_of_sleep'] >= 5:
-				dynamic "<<$ARGS[0]>>_exp += (<<ARGS[1]>>*9)/16"
-			elseif pcs_condition['lack_of_sleep'] >= 2 and ARGS[1] > 1:
-				dynamic "<<$ARGS[0]>>_exp += (<<ARGS[1]>>*27)/40"
-			elseif ARGS[1] > 1:
-				dynamic "<<$ARGS[0]>>_exp += (<<ARGS[1]>>*3)/4"
-			else
-				dynamic "<<$ARGS[0]>>_exp += <<ARGS[1]>>"
-			end
+!!	Prevents EXP gain for stren_plus if its 50 or higher and Sveta ISNT using steroids
+	if $ARGS[0] = 'stren_plus' and stren_plus_lvl >= 50 and steroid_dose = 0:
+		exit
+	end
+
+!!	Traits:
+!!	- New Again
+	if pcs_traits['new_again'] > 0: ARGS[1] *= 2
+
+!!	Stats:
+!!	- Exhaustion (lack of sleep and stamina)
+	if pcs_stam <= 0:
+		if pcs_condition['lack_of_sleep'] >= 20:
+			ARGS[1] /= 8
+		elseif pcs_condition['lack_of_sleep'] >= 10:
+			ARGS[1] /= 4
+		elseif pcs_condition['lack_of_sleep'] >= 5:
+			ARGS[1] = ARGS[1] * 3 / 8
+		elseif pcs_condition['lack_of_sleep'] >= 2:
+			ARGS[1] = ARGS[1] * 9 / 20
 		else
-			if pcs_condition['lack_of_sleep'] >= 20:
-				dynamic "<<$ARGS[0]>>_exp += <<ARGS[1]>>/4"
-			elseif pcs_condition['lack_of_sleep'] >= 10:
-				dynamic "<<$ARGS[0]>>_exp += <<ARGS[1]>>/2"
-			elseif pcs_condition['lack_of_sleep'] >= 5:
-				dynamic "<<$ARGS[0]>>_exp += (<<ARGS[1]>>*3)/4"
-			elseif pcs_condition['lack_of_sleep'] >= 2 and ARGS[1] > 1:
-				dynamic "<<$ARGS[0]>>_exp += (<<ARGS[1]>>*9)/10"
-			else
-				dynamic "<<$ARGS[0]>>_exp += <<ARGS[1]>>"
-			end
+			ARGS[1] /= 2
+		end
+	elseif pcs_stam < stammax / 5:
+		if pcs_condition['lack_of_sleep'] >= 20:
+			ARGS[1] = ARGS[1] * 3 / 16
+		elseif pcs_condition['lack_of_sleep'] >= 10:
+			ARGS[1] = ARGS[1] * 3 / 8
+		elseif pcs_condition['lack_of_sleep'] >= 5:
+			ARGS[1] = ARGS[1] * 9 / 16
+		elseif pcs_condition['lack_of_sleep'] >= 2 and ARGS[1] > 1:
+			ARGS[1] = ARGS[1] * 27 / 40
+		elseif ARGS[1] > 1:
+			ARGS[1] = ARGS[1] * 3 / 4
+		end
+	else
+		if pcs_condition['lack_of_sleep'] >= 20:
+			ARGS[1] /= 4
+		elseif pcs_condition['lack_of_sleep'] >= 10:
+			ARGS[1] /= 2
+		elseif pcs_condition['lack_of_sleep'] >= 5:
+			ARGS[1] = ARGS[1] * 3 / 4
+		elseif pcs_condition['lack_of_sleep'] >= 2 and ARGS[1] > 1:
+			ARGS[1] = ARGS[1] * 9 / 10
 		end
 	end
+
+!!	EXP Assignment
+	dynamic "<<$ARGS[0]>>_exp += <<ARGS[1]>>"
 end
 
 --- exp_gain ---------------------------------

+ 2 - 2
locations/fame.qsrc

@@ -777,8 +777,8 @@ end
 
 if $ARGS[0] = 'church_reduction':
 !! Special gs for reducing sex and prostitution fame by doing activities at the local church 
-	dynamic 'fame[''<<$ARGS[1]>>_sex''] += ARGS[2]'
-	dynamic 'fame[''<<$ARGS[1]>>_prostitute''] += ARGS[2]'
+	dynamic 'fame[''<<$ARGS[1]>>_sex''] += <<ARGS[2]>>'
+	dynamic 'fame[''<<$ARGS[1]>>_prostitute''] += <<ARGS[2]>>'
 
 	if dyneval('RESULT = fame[''<<$ARGS[1]>>_sex'']') < 0: dynamic 'fame[''<<$ARGS[1]>>_sex''] = 0'
 	if dyneval('RESULT = fame[''<<$ARGS[1]>>_prostitute'']') < 0: dynamic 'fame[''<<$ARGS[1]>>_prostitute''] = 0'

+ 281 - 16
locations/fight.qsrc

@@ -483,8 +483,7 @@ AttackMax[2] = 3
 AttackTime[2] = 15
 
 !!{Attack a target
-	$ARGS[0] = Attack Type
-	$ARGS[1] = Target Type
+	$ARGS[1] = Attack Type (Kick, Hard Punch, Jab)
 	 ARGS[2] = Which target
 	 ARGS[3] = Which Attacker
 }
@@ -545,26 +544,20 @@ if $ARGS[0] = 'Attack':
 	fightAtk['TargetHealthLoss'] = fightAtk['TargetHealthBefore'] - dyneval('result = <<$fightAtk_TargetType>>_health[<<fightAtk_TargetNumber>>]')
 	!! If blow does over half health in damage, causes stun
 	if fightAtk['TargetHealthLoss']*2 > fightAtk['TargetHealthBefore']:
-		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
-			'It is a devastating blow. You are stunned.'
-		else
-			'It is a devastating blow. <<$fightAtk["DefenderName"]>> is stunned.'
-		end
-		dynamic '<<$fightAtk_TargetType>>_stun[<<fightAtk_TargetNumber>>] += 1'
-		dynamic '<<$fightAtk_TargetType>>_timer[<<fightAtk_TargetNumber>>] += AttackTime[<<fightAtk_Type>>]'
+		gs 'fight', 'devastating'
 	!! Very hard hit
 	elseif fightAtk['TargetHealthLoss'] > 50:
-		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
-			'The hit is hard and you reel in pain.'
-		else
-			'The hit is hard and <<$fightAtk["DefenderName"]>> reels in pain.'
-		end
+		gs 'fight', 'hard'
 	!! Does physical damage, but not a lot
 	elseif fightAtk['TargetHealthLoss'] > 0:
-		'It''s a glancing blow, but still hurts.'
+		gs 'fight', 'light'
 	!! No physical damage was done.
 	else
-		'Defenses were not pierced.'
+		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
+			'You avoid their attack.'
+		else
+			'They avoid your attack.'
+		end
 	end
 
 	dynamic "<<$fightAtk_AttackerType>>_timer[<<fightAtk_AttackerNumber>>] += AttackTime[<<fightAtk_Type>>]"
@@ -582,6 +575,278 @@ if $ARGS[0] = 'Attack':
 	killvar 'fightAtk_AttackerNumber'
 end
 
+if $ARGS[0] = 'devastating':
+	if fightAtk_Type = 0:
+		if rand(0,2) = 0:
+			$bodypart = 'head'
+		else
+			$bodypart = 'stomach'
+		end
+		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
+			'They land a devastating kick to your <<$bodypart>>. You are stunned.'
+			if $bodypart = 'head':
+				gs 'pain', 7, 'head', 'kick'
+			else
+				gs 'pain', 7, 'tummy', 'kick'
+			end
+		else
+			'You deliver a devastating kick to their <<$bodypart>>. <<$fightAtk["DefenderName"]>> is stunned.'
+		end
+	elseif fightAtk_Type = 1:
+		if rand(0,3) = 0:
+			$bodypart = 'head'
+		elseif rand(0,2) = 0:
+			$bodypart = 'chest'
+		elseif rand(0,1) = 0:
+			$bodypart = 'ribs'
+		else
+			$bodypart = 'stomach'
+		end
+		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
+			'They land a devastating punch to your <<$bodypart>>. You are stunned.'
+			if $bodypart = 'head':
+				gs 'pain', 7, 'head', 'hit'
+			elseif $bodypart = 'chest':
+				gs 'pain', 5, 'chest', 'hit'
+				gs 'pain', 5, 'breast', 'hit'
+			elseif $bodypart = 'ribs':
+				gs 'pain', 7, 'ribs', 'hit'
+			else
+				gs 'pain', 7, 'tummy', 'hit'
+			end
+		else
+			'You deliver a devastating punch to their <<$bodypart>>. <<$fightAtk["DefenderName"]>> is stunned.'
+		end
+	elseif fightAtk_Type = 2:
+		if rand(0,3) = 0:
+			$bodypart = 'head'
+		elseif rand(0,2) = 0:
+			$bodypart = 'chest'
+		elseif rand(0,1) = 0:
+			$bodypart = 'ribs'
+		else
+			$bodypart = 'stomach'
+		end
+		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
+			'They land a devastating jab to your <<$bodypart>>. You are stunned.'
+			if $bodypart = 'head':
+				gs 'pain', 7, 'head', 'hit'
+			elseif $bodypart = 'chest':
+				gs 'pain', 5, 'chest', 'hit'
+				gs 'pain', 5, 'breast', 'hit'
+			elseif $bodypart = 'ribs':
+				gs 'pain', 7, 'ribs', 'hit'
+			else
+				gs 'pain', 7, 'tummy', 'hit'
+			end
+		else
+			'You deliver a devastating jab to their <<$bodypart>>. <<$fightAtk["DefenderName"]>> is stunned.'
+		end
+	end
+	dynamic '<<$fightAtk_TargetType>>_stun[<<fightAtk_TargetNumber>>] += 1'
+	dynamic '<<$fightAtk_TargetType>>_timer[<<fightAtk_TargetNumber>>] += AttackTime[<<fightAtk_Type>>]'
+end
+
+if $ARGS[0] = 'hard':
+	if fightAtk_Type = 0:
+		if rand(0,2) = 0:
+			$bodypart = 'head'
+		else
+			$bodypart = 'stomach'
+		end
+		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
+			'They land a hard kick to your <<$bodypart>>. You are stunned.'
+			if $bodypart = 'head':
+				gs 'pain', 4, 'head', 'kick'
+			else
+				gs 'pain', 4, 'tummy', 'kick'
+			end
+		else
+			'You deliver a hard kick to their <<$bodypart>>. <<$fightAtk["DefenderName"]>> is stunned.'
+		end
+	elseif fightAtk_Type = 1:
+		if rand(0,5) = 0:
+			$bodypart = 'head'
+		elseif rand(0,5) = 0:
+			$bodypart = 'cheeks'
+		elseif rand(0,5) = 0:
+			$bodypart = 'nose'
+		elseif rand(0,5) = 0:
+			$bodypart = 'mouth'
+		elseif rand(0,2) = 0:
+			$bodypart = 'chest'
+		elseif rand(0,1) = 0:
+			$bodypart = 'ribs'
+		else
+			$bodypart = 'stomach'
+		end
+		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
+			'They land a hard punch to your <<$bodypart>>. You are stunned.'
+			if $bodypart = 'head':
+				gs 'pain', 4, 'head', 'hit'
+			elseif $bodypart = 'cheeks':
+				gs 'pain', 4, 'cheeks', 'hit'
+			elseif $bodypart = 'nose':
+				gs 'pain', 4, 'nose', 'hit'
+			elseif $bodypart = 'mouth':
+				gs 'pain', 4, 'mouth', 'hit'
+			elseif $bodypart = 'chest':
+				gs 'pain', 3, 'chest', 'hit'
+				gs 'pain', 3, 'breast', 'hit'
+			elseif $bodypart = 'ribs':
+				gs 'pain', 4, 'ribs', 'hit'
+			else
+				gs 'pain', 4, 'tummy', 'hit'
+			end
+		else
+			'You deliver a hard punch to their <<$bodypart>>. <<$fightAtk["DefenderName"]>> is stunned.'
+		end
+	elseif fightAtk_Type = 2:
+		if rand(0,5) = 0:
+			$bodypart = 'head'
+		elseif rand(0,5) = 0:
+			$bodypart = 'cheeks'
+		elseif rand(0,5) = 0:
+			$bodypart = 'nose'
+		elseif rand(0,5) = 0:
+			$bodypart = 'mouth'
+		elseif rand(0,2) = 0:
+			$bodypart = 'chest'
+		elseif rand(0,1) = 0:
+			$bodypart = 'ribs'
+		else
+			$bodypart = 'stomach'
+		end
+		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
+			'They land a hard jab to your <<$bodypart>>.'
+			if $bodypart = 'head':
+				gs 'pain', 4, 'head', 'hit'
+			elseif $bodypart = 'cheeks':
+				gs 'pain', 4, 'cheeks', 'hit'
+			elseif $bodypart = 'nose':
+				gs 'pain', 4, 'nose', 'hit'
+			elseif $bodypart = 'mouth':
+				gs 'pain', 4, 'mouth', 'hit'
+			elseif $bodypart = 'chest':
+				gs 'pain', 3, 'chest', 'hit'
+				gs 'pain', 3, 'breast', 'hit'
+			elseif $bodypart = 'ribs':
+				gs 'pain', 4, 'ribs', 'hit'
+			else
+				gs 'pain', 4, 'tummy', 'hit'
+			end
+		else
+			'You deliver a hard jab to their <<$bodypart>>.'
+		end
+	end
+end
+
+if $ARGS[0] = 'light':
+	if fightAtk_Type = 0:
+		if rand(0,2) = 0:
+			$bodypart = 'leg'
+		else
+			$bodypart = 'arm'
+		end
+		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
+			'They only manage a glancing kick to your <<$bodypart>>.'
+			if $bodypart = 'leg':
+				if rand(0,1) = 0:
+					gs 'pain', 1, 'legL', 'kick'
+				else
+					gs 'pain', 1, 'legR', 'kick'
+				end
+			else
+				if rand(0,1) = 0:
+					gs 'pain', 1, 'armL', 'kick'
+				else
+					gs 'pain', 1, 'armR', 'kick'
+				end
+			end
+		else
+			'Your kick just glances their <<$bodypart>>.'
+		end
+	elseif fightAtk_Type = 1:
+		if rand(0,5) = 0:
+			$bodypart = 'leg'
+		elseif rand(0,5) = 0:
+			$bodypart = 'arm'
+		elseif rand(0,5) = 0:
+			$bodypart = 'nose'
+		elseif rand(0,5) = 0:
+			$bodypart = 'mouth'
+		elseif rand(0,2) = 0:
+			$bodypart = 'chest'
+		else
+			$bodypart = 'stomach'
+		end
+		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
+			'They punch you but it just glances your <<$bodypart>>.'
+			if $bodypart = 'leg':
+				if rand(0,1) = 0:
+					gs 'pain', 1, 'legL', 'kick'
+				else
+					gs 'pain', 1, 'legR', 'kick'
+				end
+			elseif $bodypart = 'arm':
+				if rand(0,1) = 0:
+					gs 'pain', 1, 'armL', 'kick'
+				else
+					gs 'pain', 1, 'armR', 'kick'
+				end
+			elseif $bodypart = 'nose':
+				gs 'pain', 1, 'nose', 'hit'
+			elseif $bodypart = 'mouth':
+				gs 'pain', 1, 'mouth', 'hit'
+			elseif $bodypart = 'chest':
+				gs 'pain', 1, 'chest', 'hit'
+				gs 'pain', 1, 'breast', 'hit'
+			else
+				gs 'pain', 1, 'tummy', 'hit'
+			end
+		else
+			'You hard punch just glaces their <<$bodypart>>. <<$fightAtk["DefenderName"]>> is stunned.'
+		end
+	elseif fightAtk_Type = 2:
+		if rand(0,5) = 0:
+			$bodypart = 'head'
+		elseif rand(0,5) = 0:
+			$bodypart = 'cheeks'
+		elseif rand(0,5) = 0:
+			$bodypart = 'nose'
+		elseif rand(0,5) = 0:
+			$bodypart = 'mouth'
+		elseif rand(0,2) = 0:
+			$bodypart = 'chest'
+		elseif rand(0,1) = 0:
+			$bodypart = 'ribs'
+		else
+			$bodypart = 'stomach'
+		end
+		if $fightAtk_TargetType = 'pcs' and fightAtk_TargetNumber = 0:
+			'They jab you but it just glances your <<$bodypart>>.'
+			if $bodypart = 'head':
+				gs 'pain', 1, 'head', 'hit'
+			elseif $bodypart = 'cheeks':
+				gs 'pain', 1, 'cheeks', 'hit'
+			elseif $bodypart = 'nose':
+				gs 'pain', 1, 'nose', 'hit'
+			elseif $bodypart = 'mouth':
+				gs 'pain', 1, 'mouth', 'hit'
+			elseif $bodypart = 'chest':
+				gs 'pain', 1, 'chest', 'hit'
+				gs 'pain', 1, 'breast', 'hit'
+			elseif $bodypart = 'ribs':
+				gs 'pain', 1, 'ribs', 'hit'
+			else
+				gs 'pain', 1, 'tummy', 'hit'
+			end
+		else
+			'Your jab just glaces their <<$bodypart>>.'
+		end
+	end
+end
+
 !! Make a list of targets that still have health
 !  $ARGS[1] = Target Type ('pcs','opp')
 if $ARGS[0] = 'AvailableTargets':

+ 199 - 195
locations/fit.qsrc

@@ -311,7 +311,6 @@ if $ARGS[0] = 'tanyaIntroduction':
 	gs 'panties', 'dispose'
 	gs 'clothing', 'wear_last_worn'
 	nichTanya['Relationship'] = 1
-	nichTanya['RelationshipState'] = 10
 	nichTanya['Known'] = 1
 	npc_rel['A218'] += 5
 	nichTanya['FuckLast'] = daystart
@@ -349,7 +348,7 @@ if $ARGS[0] = 'gym':
 
 	gs 'fit', 'exercise_end'
 
-	if pcs_energy >= 15 and pcs_stam >= stammax / 5:
+	if pcs_energy >= 20 and pcs_stam >= stammax / 5:
 		act 'Aerobics (Burn fat)':
 			cla
 			*clr
@@ -477,7 +476,7 @@ if $ARGS[0] = 'gym':
 			end
 		end
 		act 'Go to the kickboxing gym':gt 'fit', 'kickboxing'
-	elseif pcs_energy >= 15:
+	elseif pcs_energy >= 20:
 		act 'Aerobics (Burn fat)': '<br><font color="red">You are to exhausted to do this. Recover your stamina before trying to train.</font>'
 		act 'Free weights (Build muscle)': '<br><font color="red">You are to exhausted to do this. Recover your stamina before trying to train.</font>'
 		act 'Cross trainer (endurance)': '<br><font color="red">YYou are to exhausted to do this. Recover your stamina before trying to train.</font>'
@@ -638,106 +637,70 @@ if $ARGS[0] = 'kickboxing':
 
 	act 'Return to dressing room': gt 'fit', 'dressing_room'
 
-	act 'Work on your jabs':
-		cla
-		*clr
-		abonement -= 1
-		gs 'exercise', 'tier3', 30, 'jab', 'react'
-		if pcs_inhib < 30:inhib_exp += rand(1,2)
-		'<center><img <<$set_imgh>> src="images/locations/city/citycenter/gym/kickboxing/kik1.jpg"></center>'
-		'You practice your jabs on the speed bag and double-end bag, straight punches with a step forward. These strikes are not so powerful, but they are fast.'
-
-		act 'Leave':gt 'fit', 'kickboxing'
-	end
+	if pcs_energy >= 20 and pcs_stam >= stammax / 5:
+		act 'Work on your jabs':
+			cla
+			*clr
+			abonement -= 1
+			gs 'exercise', 'tier3', 30, 'jab', 'react'
+			if pcs_inhib < 30:inhib_exp += rand(1,2)
+			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/gym/kickboxing/kik1.jpg"></center>'
+			'You practice your jabs on the speed bag and double-end bag, straight punches with a step forward. These strikes are not so powerful, but they are fast.'
 
-	act 'Work on your heavy punches':
-		cla
-		*clr
-		abonement -= 1
-		gs 'exercise', 'tier3', 30, 'stren', 'punch'
-		if pcs_inhib < 30:inhib_exp += rand(1,2)
-		'<center><img <<$set_imgh>> src="images/locations/city/citycenter/gym/kickboxing/kik1.jpg"></center>'
-		'You practice your power punches on the heavy bag. These are high impact and powerful, but they are hard to get to their target.'
-
-		act 'Leave':gt 'fit', 'kickboxing'
-	end
+			act 'Leave':gt 'fit', 'kickboxing'
+		end
 
-	act 'Work on your kicking':
-		cla
-		*clr
-		abonement -= 1
-		gs 'exercise', 'tier3', 30, 'stren', 'kick'
-		if pcs_inhib < 30:inhib_exp += rand(1,2)
-		'<center><img <<$set_imgh>> src="images/locations/city/citycenter/gym/kickboxing/kik1.jpg"></center>'
-		'You practice your powerful kicks on a kickboxing bag. These impacts are very powerful and able to cut down an opponant, but are very difficult to hit with.'
-
-		act 'Leave':gt 'fit', 'kickboxing'
-	end
+		act 'Work on your heavy punches':
+			cla
+			*clr
+			abonement -= 1
+			gs 'exercise', 'tier3', 30, 'stren', 'punch'
+			if pcs_inhib < 30:inhib_exp += rand(1,2)
+			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/gym/kickboxing/kik1.jpg"></center>'
+			'You practice your power punches on the heavy bag. These are high impact and powerful, but they are hard to get to their target.'
 
-	act 'Work on defence':
-		cla
-		*clr
-		abonement -= 1
-		gs 'exercise', 'tier3', 30, 'def', 'agil'
-		if pcs_inhib < 30:inhib_exp += rand(1,2)
-		'<center><img <<$set_imgh>> src="images/locations/city/citycenter/gym/kickboxing/kik1.jpg"></center>'
-		'You practice your defense movements.'
-
-		act 'Leave':gt 'fit', 'kickboxing'
-	end
+			act 'Leave':gt 'fit', 'kickboxing'
+		end
 
-	act 'Sparring (training bout in the ring)':
-		cla
-		*clr
-		'You need to choose a partner for sparring'
-		if pcs_inhib < 30:inhib_exp += rand(1,2)
-		act 'Pick a random partner':
+		act 'Work on your kicking':
+			cla
+			*clr
 			abonement -= 1
-			pcs_mood += 2
-			gs 'exercise', 'tier3', 30, 'jab', 'punch', 'kick', 'def'
-			pointKik = 0
-			pointKikV = 0
-			round = 1
-			minround = 0
-
-			gs 'npcgeneratec', 0, 'sparring partner', rand(19,45)
-			gs 'boyStat', $npclastgenerated
-			strenV = rand(10, 20)
-			speedV = rand(10, 20)
-			agilV = rand(10, 20)
-			reactV = rand(10, 20)
-			vitalV = rand(10, 20)
-			intelV = 10
-			willV = 10
-			!!skills
-			JabV = rand(5, 20)
-			PunchV = rand(5, 20)
-			KikV = rand(5, 20)
-			KikDefV = rand(5, 20)
-			!!parameters
-			healthV = vitalV * 10 + strenV * 5
-			formula = 3
-			sparing = 1
-			gt 'kikbox', 'start'
-		end
-	end
+			gs 'exercise', 'tier3', 30, 'stren', 'kick'
+			if pcs_inhib < 30:inhib_exp += rand(1,2)
+			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/gym/kickboxing/kik1.jpg"></center>'
+			'You practice your powerful kicks on a kickboxing bag. These impacts are very powerful and able to cut down an opponant, but are very difficult to hit with.'
 
-	if week = 6 and kickbox['amateur_fight_day'] ! daystart:
-		'You can take part in an amateur fight.'
+			act 'Leave':gt 'fit', 'kickboxing'
+		end
 
-		act 'Amateur fight':
-			kickbox['amateur_fight_day'] = daystart
-			pcs_mood += 2
-			gs 'exercise', 'tier3', 30, 'jab', 'punch', 'kick', 'def'
-			pointKik = 0
-			pointKikV = 0
-			round = 1
-			minround = 0
+		act 'Work on defence':
+			cla
+			*clr
+			abonement -= 1
+			gs 'exercise', 'tier3', 30, 'def', 'agil'
+			if pcs_inhib < 30:inhib_exp += rand(1,2)
+			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/gym/kickboxing/kik1.jpg"></center>'
+			'You practice your defense movements.'
 
-			kickbox['opponent'] = kickbox['sash'] + rand(0, 1)
+			act 'Leave':gt 'fit', 'kickboxing'
+		end
 
-			if kickbox['opponent'] = 0:
-				gs 'npcgeneratec', 0, 'Useless rival', rand(19,45)
+		act 'Sparring (training bout in the ring)':
+			cla
+			*clr
+			'You need to choose a partner for sparring'
+			if pcs_inhib < 30:inhib_exp += rand(1,2)
+			act 'Pick a random partner':
+				abonement -= 1
+				pcs_mood += 2
+				gs 'exercise', 'tier3', 30, 'jab', 'punch', 'kick', 'def'
+				pointKik = 0
+				pointKikV = 0
+				round = 1
+				minround = 0
+
+				gs 'npcgeneratec', 1, 'sparring partner', rand(19,45)
 				gs 'boyStat', $npclastgenerated
 				strenV = rand(10, 20)
 				speedV = rand(10, 20)
@@ -747,113 +710,154 @@ if $ARGS[0] = 'kickboxing':
 				intelV = 10
 				willV = 10
 				!!skills
-				JabV = rand(10, 30)
-				PunchV = rand(10, 30)
-				KikV = rand(10, 30)
-				KikDefV = rand(10, 30)
-				!!parameters
-				healthV = vitalV * 10 + strenV * 5
-				formula = 3
-				kickbox['amateur'] = 1
-			elseif kickbox['opponent'] = 1:
-				gs 'npcgeneratec', 0, '3rd class rival', rand(19,45)
-				gs 'boyStat', $npclastgenerated
-				strenV = rand(15, 25)
-				speedV = rand(15, 25)
-				agilV = rand(15, 25)
-				reactV = rand(15, 25)
-				vitalV = rand(15, 25)
-				intelV = 10
-				willV = 10
-				!!skills
-				JabV = rand(15, 35)
-				PunchV = rand(15, 35)
-				KikV = rand(15, 35)
-				KikDefV = rand(15, 35)
-				!!parameters
-				healthV = vitalV * 10 + strenV * 5
-				formula = 3
-				kickbox['amateur'] = 1
-			elseif kickbox['opponent'] = 2:
-				gs 'npcgeneratec', 0, '2rd class rival', rand(19,45)
-				gs 'boyStat', $npclastgenerated
-				strenV = rand(20, 30)
-				speedV = rand(20, 30)
-				agilV = rand(20, 30)
-				reactV = rand(20, 30)
-				vitalV = rand(20, 30)
-				intelV = 10
-				willV = 10
-				!!skills
-				JabV = rand(30, 50)
-				PunchV = rand(30, 50)
-				KikV = rand(30, 50)
-				KikDefV = rand(30, 50)
+				JabV = rand(5, 20)
+				PunchV = rand(5, 20)
+				KikV = rand(5, 20)
+				KikDefV = rand(5, 20)
 				!!parameters
 				healthV = vitalV * 10 + strenV * 5
 				formula = 3
-				kickbox['amateur'] = 1
-			elseif kickbox['opponent'] = 3:
-				gs 'npcgeneratec', 0, '1st class rival', rand(19,45)
-				gs 'boyStat', $npclastgenerated
-				strenV = rand(30, 40)
-				speedV = rand(30, 40)
-				agilV = rand(30, 40)
-				reactV = rand(30, 40)
-				vitalV = rand(30, 40)
-				intelV = 10
-				willV = 10
-				!!skills
-				JabV = rand(40, 60)
-				PunchV = rand(40, 60)
-				KikV = rand(40, 60)
-				KikDefV = rand(40, 60)
-				!!parameters
-				healthV = vitalV * 10 + strenV * 5
-				formula = 3
-				kickbox['amateur'] = 1
-			elseif kickbox['opponent'] = 4:
-				gs 'npcgeneratec', 0, 'Excellent rival', rand(19,45)
-				gs 'boyStat', $npclastgenerated
-				strenV = rand(40, 60)
-				speedV = rand(40, 60)
-				agilV = rand(40, 60)
-				reactV = rand(40, 60)
-				vitalV = rand(40, 60)
-				intelV = 10
-				willV = 10
-				!!skills
-				JabV = rand(60, 80)
-				PunchV = rand(60, 80)
-				KikV = rand(60, 80)
-				KikDefV = rand(60, 80)
-				!!parameters
-				healthV = vitalV * 10 + strenV * 5
-				formula = 3
-				kickbox['amateur'] = 1
-			elseif kickbox['opponent'] >= 5:
-				gs 'npcgeneratec', 0, 'Best rival in the gym', rand(19,45)
-				gs 'boyStat', $npclastgenerated
-				strenV = rand(60, 100)
-				speedV = rand(60, 100)
-				agilV = rand(60, 100)
-				reactV = rand(60, 100)
-				vitalV = rand(60, 100)
-				intelV = 10
-				willV = 10
-				!!skills
-				JabV = rand(80, 110)
-				PunchV = rand(80, 110)
-				KikV = rand(80, 110)
-				KikDefV = rand(80, 110)
-				!!parameters
-				healthV = vitalV * 10 + strenV * 5
-				formula = 3
-				kickbox['amateur'] = 1
+				sparing = 1
+				gt 'kikbox', 'start'
 			end
+		end
+
+		if week = 6 and kickbox['amateur_fight_day'] ! daystart:
+			'You can take part in an amateur fight.'
+
+			act 'Amateur fight':
+				kickbox['amateur_fight_day'] = daystart
+				pcs_mood += 2
+				gs 'exercise', 'tier3', 30, 'jab', 'punch', 'kick', 'def'
+				pointKik = 0
+				pointKikV = 0
+				round = 1
+				minround = 0
+
+				kickbox['opponent'] = kickbox['sash'] + rand(0, 1)
 
-			gt 'kikbox', 'start'
+				if kickbox['opponent'] = 0:
+					gs 'npcgeneratec', 1, 'Useless rival', rand(19,45)
+					gs 'boyStat', $npclastgenerated
+					strenV = rand(10, 20)
+					speedV = rand(10, 20)
+					agilV = rand(10, 20)
+					reactV = rand(10, 20)
+					vitalV = rand(10, 20)
+					intelV = 10
+					willV = 10
+					!!skills
+					JabV = rand(10, 30)
+					PunchV = rand(10, 30)
+					KikV = rand(10, 30)
+					KikDefV = rand(10, 30)
+					!!parameters
+					healthV = vitalV * 10 + strenV * 5
+					formula = 3
+					kickbox['amateur'] = 1
+				elseif kickbox['opponent'] = 1:
+					gs 'npcgeneratec', 1, '3rd class rival', rand(19,45)
+					gs 'boyStat', $npclastgenerated
+					strenV = rand(15, 25)
+					speedV = rand(15, 25)
+					agilV = rand(15, 25)
+					reactV = rand(15, 25)
+					vitalV = rand(15, 25)
+					intelV = 10
+					willV = 10
+					!!skills
+					JabV = rand(15, 35)
+					PunchV = rand(15, 35)
+					KikV = rand(15, 35)
+					KikDefV = rand(15, 35)
+					!!parameters
+					healthV = vitalV * 10 + strenV * 5
+					formula = 3
+					kickbox['amateur'] = 1
+				elseif kickbox['opponent'] = 2:
+					gs 'npcgeneratec', 1, '2rd class rival', rand(19,45)
+					gs 'boyStat', $npclastgenerated
+					strenV = rand(20, 30)
+					speedV = rand(20, 30)
+					agilV = rand(20, 30)
+					reactV = rand(20, 30)
+					vitalV = rand(20, 30)
+					intelV = 10
+					willV = 10
+					!!skills
+					JabV = rand(30, 50)
+					PunchV = rand(30, 50)
+					KikV = rand(30, 50)
+					KikDefV = rand(30, 50)
+					!!parameters
+					healthV = vitalV * 10 + strenV * 5
+					formula = 3
+					kickbox['amateur'] = 1
+				elseif kickbox['opponent'] = 3:
+					gs 'npcgeneratec', 1, '1st class rival', rand(19,45)
+					gs 'boyStat', $npclastgenerated
+					strenV = rand(30, 40)
+					speedV = rand(30, 40)
+					agilV = rand(30, 40)
+					reactV = rand(30, 40)
+					vitalV = rand(30, 40)
+					intelV = 10
+					willV = 10
+					!!skills
+					JabV = rand(40, 60)
+					PunchV = rand(40, 60)
+					KikV = rand(40, 60)
+					KikDefV = rand(40, 60)
+					!!parameters
+					healthV = vitalV * 10 + strenV * 5
+					formula = 3
+					kickbox['amateur'] = 1
+				elseif kickbox['opponent'] = 4:
+					gs 'npcgeneratec', 1, 'Excellent rival', rand(19,45)
+					gs 'boyStat', $npclastgenerated
+					strenV = rand(40, 60)
+					speedV = rand(40, 60)
+					agilV = rand(40, 60)
+					reactV = rand(40, 60)
+					vitalV = rand(40, 60)
+					intelV = 10
+					willV = 10
+					!!skills
+					JabV = rand(60, 80)
+					PunchV = rand(60, 80)
+					KikV = rand(60, 80)
+					KikDefV = rand(60, 80)
+					!!parameters
+					healthV = vitalV * 10 + strenV * 5
+					formula = 3
+					kickbox['amateur'] = 1
+				elseif kickbox['opponent'] >= 5:
+					gs 'npcgeneratec', 1, 'Best rival in the gym', rand(19,45)
+					gs 'boyStat', $npclastgenerated
+					strenV = rand(60, 100)
+					speedV = rand(60, 100)
+					agilV = rand(60, 100)
+					reactV = rand(60, 100)
+					vitalV = rand(60, 100)
+					intelV = 10
+					willV = 10
+					!!skills
+					JabV = rand(80, 110)
+					PunchV = rand(80, 110)
+					KikV = rand(80, 110)
+					KikDefV = rand(80, 110)
+					!!parameters
+					healthV = vitalV * 10 + strenV * 5
+					formula = 3
+					kickbox['amateur'] = 1
+				end
+
+				gt 'kikbox', 'start'
+			end
 		end
+	else
+		*nl
+		'You are too hunger or fatigued to do anymore exercises now.'
 	end
 end
 

+ 38 - 11
locations/food_menu.qsrc

@@ -12,7 +12,6 @@
 !!Step 4: call this location with gs 'food_menu', 'mod'
 
 menu_off = 1
-gs 'themes', 'food_menu'
 
 if $ARGS[0] ! 'mod':
 	*clr & cla
@@ -563,10 +562,14 @@ elseif $loc = 'city_nightclub':
 	$_drink['9,name'] = 'Fancy cocktail'
 	$_drink['9,type'] = 'bev_cocktail'
 	$_drink['9,price'] = 300
-elseif $loc = 'katja_nightclub':
+elseif $loc = 'katja_nightclub' or $loc = 'katja_nightclub_sex':
 	'<center><b><font color="maroon">Bar "Nightclub"</font></b></center>'
 	*nl
-	'<center><img <<$set_imgh>> src="images/shared/drinks/bardrinks.jpg"</center><br>'
+	if $loc = 'katja_nightclub_sex':
+		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/katja/uni/nightclub/hot_bartender.jpg"></center>'
+	else
+		'<center><img <<$set_imgh>> src="images/shared/drinks/bardrinks.jpg"</center><br>'
+	end
 	$_drink['0,name'] = 'Water'
 	$_drink['0,type'] = 'only_cost_wat'
 	$_drink['0,price'] = 'Free'
@@ -602,19 +605,43 @@ end
 $_str = '<center><table border="0" width="800" cellpadding="0" cellspacing="1">'
 food_loop = 0
 :loop_diner_drinks
-$_str += '<tr><td bgcolor='+iif(food_loop mod 2 = 0,'<<$bcolor1>>','<<$bcolor2>>')+' height="30" width="40%" align="center"><font color="<<$fcolor1>>">'+$_eat['<<food_loop>>,name']+'</td><td bgcolor='+iif(food_loop mod 2 = 0,'<<$bcolor1>>','<<$bcolor2>>')+' height="30" width="10%" align="right">'+iif(money >= val($_eat['<<food_loop>>,price']),'<a href="exec:pcs_ate += 1 & gt''food'',$_eat[''<<food_loop>>,type''],<<food_loop>>">'+$_eat['<<food_loop>>,price']+'</a>',$_eat['<<food_loop>>,price'])+''+iif($_eat['<<food_loop>>,price'] ! '','<font color="<<$fcolor1>>"><b> ₽. </b>', '')+'</td><td bgcolor=<<$bcolor3>> border="0" width="50" cellpadding="0" cellspacing="0" ></td><td bgcolor='+iif(food_loop mod 2 = 0,'<<$bcolor1>>','<<$bcolor2>>')+' height="30" width="40%" align="center"><font color="<<$fcolor1>>">'+$_drink['<<food_loop>>,name']+'</td><td bgcolor='+iif(food_loop mod 2 = 0,'<<$bcolor1>>','<<$bcolor2>>')+' height="30" width="10%" align="right">'+iif(money >= val($_drink['<<food_loop>>,price']),'<a href="exec:pcs_drank += 1 & gt''beverage'',$_drink[''<<food_loop>>,type''],<<food_loop>>">'+$_drink['<<food_loop>>,price']+'</a>',$_drink['<<food_loop>>,price'])+''+iif($_drink['<<food_loop>>,price'] ! '','<font color="<<$fcolor1>>"><b> ₽. </b>', '')+'</td></tr>'
-food_loop += 1
+	$temp_bcolor = func('themes', 'alt_color', $temp_bcolor)
+
+	$_str += '<tr>'
+!!  column 1 - food
+	$_str += '<td bgcolor='+$temp_bcolor+' height="30" width="40%" align="center">' + $_eat['<<food_loop>>,name'] + '</td>'
+	$_str += '<td bgcolor='+$temp_bcolor+' height="30" width="10%" align="right">'
+	if money >= val($_eat['<<food_loop>>,price']):
+		$_str += '<a href="exec:pcs_ate += 1 & gt ''food'', $_eat[''<<food_loop>>,type''], <<food_loop>>">' + $_eat['<<food_loop>>,price'] + '</a>'
+	else
+		$_str += $_eat['<<food_loop>>,price']
+	end
+	$_str += iif(val($_eat['<<food_loop>>,price']) ! 0, '<b>&ensp;₽&ensp;</b>', '&ensp;&emsp;') + '</td>'
+
+!!  separator
+	$_str += '<td bgcolor=<<$bcolor>> border="0" width="50" cellpadding="0" cellspacing="0"></td>'
+
+!!  column 2 - drinks
+	$_str += '<td bgcolor='+$temp_bcolor+' height="30" width="40%" align="center">' + $_drink['<<food_loop>>,name'] + '</td>'
+	$_str += '<td bgcolor='+$temp_bcolor+' height="30" width="10%" align="right">'
+	if money >= val($_drink['<<food_loop>>,price']):
+		$_str += '<a href="exec:pcs_drank += 1 & gt ''beverage'', $_drink[''<<food_loop>>,type''], <<food_loop>>">' + $_drink['<<food_loop>>,price'] + '</a>'
+	else
+		$_str += $_drink['<<food_loop>>,price']
+	end
+	$_str += iif(val($_drink['<<food_loop>>,price']) ! 0, '<b>&ensp;₽&ensp;</b>', '&ensp;&emsp;') + '</td>'
+
+	$_str += '</tr>'
+	food_loop += 1
 if food_loop < arrsize('$_drink')/3:jump 'loop_diner_drinks'
-$_str += '</table></center></font>'
-'<center>Please place your order</center>:<br><br>'+$_str
+
+$_str += '</table></center>'
+'<center>Please place your order</center><br><br>'+$_str
 
 
 killvar '$_str'
 killvar 'food_loop'
-killvar '$fcolor1'
-killvar '$bcolor1'
-killvar '$bcolor2'
-killvar '$bcolor3'
+killvar '$temp_bcolor'
 
 --- food_menu ---------------------------------
 

+ 4 - 3
locations/foto.qsrc

@@ -1193,7 +1193,7 @@ end
 
 if $ARGS[0] = 'model_profile':
 	cla & *nl
-	'"We''ll also need some additional details, so our readers can learn a little about you. Doesn''t have to be true, '
+	'"We''ll also need some additional details, so our readers can learn a little about you. Doesn''t have to be true," '
 	act'Continue':
 		cla & *nl
 		$model['likes1'] = input("Write one thing you like. <br>Examples: reading, rainy days, sleeping")
@@ -1247,11 +1247,12 @@ if $ARGS[0] = 'gave_passport':
 		model['age'] = age
 	end
 	model['start_year'] = year
-	act'Leave the studio':gt'city_center'
+	act'Leave the studio':gs 'clothing', 'wear_last_worn' & gt 'city_center'
 	act'Head to the back':gt'foto','start'
 end
 
 if $ARGS[0] = 'wandering_models':
+	gs 'anushka_konstantinov_schedule'
 	if hour <= 21 and hour >= 7:
 		'In various parts of the studios, you can see some of the other models who work here.'
 		if anastasia['busy_cooldown_day'] ! daystart or anastasia['busy_cooldown'] <= hour:
@@ -1296,7 +1297,7 @@ if $ARGS[0] = 'wandering_models':
 			end
 		end
 		
-		if day < 8 and week = 6 and hour >= 9 and hour < 16:'<a href="exec:gt ''foto_models2'',''anushka_1''">Anushka</a>'
+		if locat['A144'] = 11:'<a href="exec:gt ''foto_models2'',''anushka_1''">Anushka</a>'
 	else
 		'The studio is fairly empty. Most of the other models have gone home for the night.'
 	end

+ 1 - 1
locations/foto_shoot.qsrc

@@ -806,7 +806,7 @@ if $ARGS[0] = 'nude':
 			modelfoto['bush'] += 1
 			'Already naked, you step onto the set and begin the shoot immediately.'
 			*nl
-			'You spend two hours posing confidently for a photographer taking pictures of you, your <<$pcdesc_pubes>> pussy providing a nice contrast to the rest of your smooth body. When the shoot ends, both you and the photographers are very proud of the results and you are paid <<modelpayfin>> <b>₽</b> for your work.'
+			'You spend two hours posing confidently for a photographer taking pictures of you, your <<$pc_desc[''pubes'']>> pussy providing a nice contrast to the rest of your smooth body. When the shoot ends, both you and the photographers are very proud of the results and you are paid <<modelpayfin>> <b>₽</b> for your work.'
 		end
 	else
 		if pcs_pubes < 16:

+ 1 - 1
locations/gadfield.qsrc

@@ -159,7 +159,7 @@ if $ARGS[0] = 'cow':
 			gs 'exp_gain', 'hndiwrk', rand(0,3)
 			gs 'stat'
 
-			act 'Continue':gt'gadfield','cow'
+			act 'Continue':gt'gadukino'
 		end
 	end
 	if grandpaQW['chore_herd_cattle'] = 1:

+ 3 - 3
locations/gadforest_event.qsrc

@@ -365,7 +365,7 @@ if $ARGS[0] = 'basket':
 		'Wandering in the forest, you find a basket full of mushrooms. Strange, someone must have left it here or lost it.'
 
 		if boletus + boletus_cooked + bilberry < 5:
-			act 'Steal and empty them into your basket':boletus += 5
+			act 'Steal and empty them into your basket':boletus += 5 & gt 'gadforest','forest_center'
 		else
 			'Unfortunately, your basket is full, and you cannot carry any more mushrooms.'
 		end
@@ -375,7 +375,7 @@ if $ARGS[0] = 'basket':
 		'Wandering in the forest, you find a basket full of berries. Strange, someone must have left it here or lost it.'
 
 		if boletus + boletus_cooked + bilberry < 5:
-			act 'Steal and empty them into your basket':bilberry += 5
+			act 'Steal and empty them into your basket':bilberry += 5 & gt 'gadforest','forest_center'
 		else
 			'Unfortunately, your basket is already full, and you cannot carry any more berries.'
 		end
@@ -456,7 +456,7 @@ if $ARGS[0] = 'forest_hunters':
 				'Don''t be surprised, <<$pcs_nickname>>, you look a lot like your mother when she was younger. I... Hmmm... very good to know. I''m also from Gadukino." said Andrei.'
 				*nl
 				'After chatting with them for about half an hour, the hunters begin to get up and gather their things.'
-				'"Okay, Sveta, it''s time for us to go," said Andrei.'
+				'"Okay, <<$pcs_nickname>>, it''s time for us to go," said Andrei.'
 				'"If you want, we will show you our camp," he added after a short pause. "From there, we have made a path back to the village. We can show it to you if you come with us. Or you can stay with us for a bit if you want."'
 				act 'Stay in the forest':gt 'gadforest', $ReturnAdr
 				act 'Go with them': minut += 60 & gt 'swamp_yard', 'start'

+ 1 - 1
locations/gadhouse.qsrc

@@ -311,7 +311,7 @@ if $ARGS[0] = 'main':
 	*nl
 	'A fairly simple cottage in the village of Gadukino which your grandparents call home. In the main room there is a huge <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> (where you can choose outfits and organize your clothing), and a <a href="exec:gad = 1 & gt ''bed'', ''start''">bed</a> where you can rest. The bed is more comfortable than it looks.'
 	'There is an old <a href="exec:gt ''TV'',''gad''">television</a> in the living room. It''s positioned next to a body length <a href="exec:gt ''mirror'', ''start''">mirror</a>.'
-	'You can check your weight on your grandma''s old mechanical <a href="exec:msg ''<center>Your weight is <<pcs_weight>> kg<br>Your body mass index (BMI) is <<pcs_bmi>>.<br><<$bmi_desc>></center>''">scales</a>.'
+	'You can check your weight on your grandma''s old mechanical <a href="exec:msg ''<center>Your weight is <<pcs_weight[0]>>.<<pcs_weight[1]>> kg<br>Your body mass index (BMI) is <<pcs_bmi[0]>>.<<pcs_bmi[1]>>.<br><<$bmi_desc>></center>''">scales</a>.'
 
 	if hour < 8:
 		temp = rand(0,9)

+ 0 - 1
locations/gadmarket.qsrc

@@ -8,7 +8,6 @@ $menu_loc = 'gadmarket'
 $menu_arg = ''
 menu_off = 0
 $location_type = 'public_indoors'
-gs 'stat'
 
 frost = 0
 

+ 1 - 1
locations/gadroad.qsrc

@@ -75,7 +75,7 @@ if $ARGS[0] = '':
 				elseif month=9 or month=10 or month=4 or month=5:
 					'<center><img <<$set_imgh>> src="images/locations/gadukino/village/gadbeg3.jpg"></center>'
 				else
-					if strenbuf >= salo:
+					if strenbuf >= pcs_mass['body']:
 						'<center><img <<$set_imgh>> src="images/locations/gadukino/village/gadbeg1.jpg"></center>'
 					else
 						'<center><img <<$set_imgh>> src="images/locations/gadukino/village/gadbeg2.jpg"></center>'

+ 4 - 15
locations/gas_station_gp_117.qsrc

@@ -60,6 +60,9 @@ if $ARGS[0] = 'shop' or $gas_shop_inside = 'yes':
 	CLOSE ALL
 	if sound = 0:PLAY 'sound/highway.mp3',5
 	$loc_arg = 'shop'
+	$loc_s = 'gas_station_gp_117'
+	$args_s = 'shop'
+	$menu_loc = 'gas_station_gp_117'
 	$menu_arg = 'shop'
 	menu_off = 0
 
@@ -79,7 +82,7 @@ if $ARGS[0] = 'shop' or $gas_shop_inside = 'yes':
 		'Tomas isn''t working on Sundays. Another guy you don''t know is standing behind the counter.'
 	end
 	*nl
-	act 'Buy something': gt 'gas_station_gp_117', 'cart'
+	gs 'item_cart', 'shoppping_aisle', 'prost_shop'
 	gs 'stat'
 
 	act 'Go outside': $gas_shop_inside = 'no' & minut += 1 & gt 'gas_station_gp_117', 'outside'
@@ -156,20 +159,6 @@ if $ARGS[0] = 'shop' or $gas_shop_inside = 'yes':
 		act 'Continue': gt 'gas_station_gp_117', 'shop'
 	end
 end
-if $ARGS[0] = 'cart':
-	*clr & cla
-	$menu_loc = 'gas_station_gp_117'
-	$menu_arg = 'cart'
-	$loc_s = 'gas_station_gp_117'
-	$args_s = 'cart'
-	
-	gs 'item_cart', 'shoppping_aisle', 'prost_shop'
-	gs 'stat'
-	gs 'themes', 'indoors'
-	$backimage = 'images/locations/highway/gas_station_gp_117/gas_interior.jpg'
-
-	act 'Exit shopping cart':gt 'gas_station_gp_117', 'shop'
-end
 
 ! [x] First check over
 if $ARGS[0] = 'restroom':

+ 2 - 0
locations/gdksport.qsrc

@@ -160,6 +160,8 @@ if $ARGS[0] = 'start':
 				else
 					act 'Train with Starlets': gt 'albina_starlets', 'starlets'
 				end
+				!! ballet career
+				gs 'core_library', 'init'
 				'Tell Albina you want to <a href="exec:gt ''albina_starlets'',''Quit''">quit</a> the Starlets.'
 			end
 		end

+ 4 - 4
locations/gloryhole.qsrc

@@ -302,22 +302,22 @@ if $ARGS[0] = 'blowjob':
 	stat['gloryhole'] += 1
 	temp = rand(1,5)
 
-	$bjVideoSource = 'images/locations/shared/gloryhole/sex/dressed'
-	'<center><video autoplay loop src="<<$bjVideoSource>>/bj<<rand(1,5)>>.mp4"></video></center>'
+	
+	'<center><video autoplay loop src="images/locations/shared/gloryhole/sex/dressed/bj<<rand(1,5)>>.mp4"></video></center>'
 	'You wrap your lips around his dick and take his <<npc_dick[$npclastgenerated]>>cm long <<$npc_thdick[$npclastgenerated]>> cock in your mouth and start to suck it, you suck the cock enthusiastically.'
 	gs 'arousal', 'bj', 5, 'unknown', 'sub'
 	gs 'stat'
 	if stat['vaginal'] > 0 or stat['anal'] > 0:act 'Undress':gt 'gloryhole', 'ghsex'
 	act 'Continue to Suck':
 		*clr & cla
-		'<center><video autoplay loop src="<<$bjVideoSource>>/bj<<rand(1,5)>>.mp4"></video></center>'
+		'<center><video autoplay loop src="images/locations/shared/gloryhole/sex/dressed/bj<<rand(1,5)>>.mp4"></video></center>'
 		'You suck on his dick, bobbing your head, sometimes using your hands to stroke his shaft at the same time, other times your hands massage his balls. Before to long you hear the guy moan in pleasure, "I''m cuming."'
 		gs 'arousal', 'bj', 5, 'unknown', 'sub'
 		gs 'stat'
 		
 		act 'Keep sucking':
 			*clr & cla
-			'<center><video autoplay loop src="<<$bjVideoSource>>/bj<<rand(1,5)>>.mp4"></video></center>'
+			'<center><video autoplay loop src="images/locations/shared/gloryhole/sex/dressed/bj<<rand(1,5)>>.mp4"></video></center>'
 			'Despite what he says you keep sucking his dick, you are looking forward to him filling your mouth up with his tasty sperm. Moments later hot spurts of cum fill your mouth.'
 			act 'Swallow':
 				cla

+ 1 - 1
locations/gopnew.qsrc

@@ -17,7 +17,7 @@ if $ARGS[0] = 'start':
 		gt 'gopnew', 'succubus_1'
 	elseif gopnew['fight'] > 0:
 		gt 'gopnew', 'mistress_1'
-	elseif gopnew['ran'] >= 1:
+	elseif gnewQW = 0 and gopnew['ran'] >= 1:
 		gt 'gopnew', 'coward_1'
 	else
 		if gnewQW = 0:

+ 1 - 1
locations/grandpahelp.qsrc

@@ -30,7 +30,7 @@ if $ARGS[0] = 'start':
 			end
 			'You put on warm clothes and run to the barn to collect firewood.'
 			'"I''ve brought some firewood, grandfather," you said to your grandfather.'
-			'"You are very quick, Sveta," he replies with a smile. "That''s today''s youth for ya. There is no more work today."'
+			'"You are very quick, <<$pcs_nickname>>," he replies with a smile. "That''s today''s youth for ya. There is no more work today."'
 			grandpaQW['chore_fetch_firewood'] = 0
 			minut += 20
 			grandmaQW['help_amount'] += 1

+ 1 - 1
locations/gschool_boys_bathroom.qsrc

@@ -1768,7 +1768,7 @@ if $ARGS[0] = 'boy7':
 		'Within seconds, the two of you are chatting away about school, movies, sports, music and anything else that strikes your fancy. Before you know it, the bell rings amd you both stop and gather your things before bidding each other farewell and heading to your next class.'
 		act 'Go to class':gt 'gschool_lessons', 'short_break'
 	end
-	if igorstrap = 1 and strapon > 0 and dildonumber > 0:
+	if igorstrap >= 1 and strapon > 0 and dildonumber > 0:
 		act 'I brought my strapon...':
 			*clr & cla
 			'<center><b><font color="maroon">Boy''s bathroom</font></b></center>'

+ 2 - 2
locations/gschool_cheerleading.qsrc

@@ -253,7 +253,7 @@ if $ARGS[0] = 'afterschool_game':
 	*clr & cla
 	cheerleadingQW['day'] = daystart
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/grounds/field.jpg"></center>'
-    'There is a football game at 14:15 on the sports field behind the school today.'
+	'There is a football game at 14:15 on the sports field behind the school today.'
 	*nl
 	if cheerleadingQW['skipped'] = 0:
 		'You recall how angry Albina was at that Karine girl, and that was just for skipping practice. It probably wouldn''t be a good idea to skip a game.'
@@ -535,7 +535,7 @@ if $ARGS[0] = 'shower':
 	minut += 10
 	dynamic $showerdin
 	if deodorant_on = 1: gs 'sweat', 'remove_deo' & 'Your deodorant gets washed away in the shower.'
-    '<center><video autoplay loop src="images/shared/home/bathroom/dush.mp4"></video></center>'
+	'<center><video autoplay loop src="images/shared/home/bathroom/dush.mp4"></video></center>'
 	'You head back to the locker room, where you strip and head into the showers. You find an empty stall and step inside before turning the water on and enjoying the sensation of it on your skin.'
 	act 'Finish your shower':
 		minut += 5

+ 7 - 6
locations/gschool_events.qsrc

@@ -327,13 +327,14 @@ if $ARGS[0] = 'break_events':
 		cla
 		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big9.jpg"></center>'
 		if AlbinaQW['Friends'] >= 1 and SchoolGossip > 0 and rand(0,1) = 0:
-			AlbinaBlockHumiliation = 1
+			AlbinaQW['Protect'] = 1
 			minut += 60
-			'During the break, you''re approached by Vitek and some other gopniks. "I know why you look so glum <<$pcs_nickname>>, you miss our cocks! Ain''t that right, cocksucker? Don''t worry, you can come with us and we''ll give you all the dick you want."'
-			'They tightly grab your arms and begin to drag you to the restrooms. Your futile attempts to resist are met with laughter and you are forcefully pulled along, hoping for some miracle to get you out of this nightmare. When you arrive at the restrooms, Albina suddenly blocks the doorway. They try to shove her out the way and pull you into the restroom, but she stands firm and doesn''t budge an inch, which annoys Vitek. "Get the fuck out of my way rich bitch! Or do you want to join us? I know you''d love having my dick in your ass, right between those big juicy cheeks of yours!" he says with a laugh and the others join in.' 
+			'During the break, you''re approached by Vitek and some other gopniks. "I know why you look so glum, <<$pcs_nickname>>. You miss our cocks! Don''t worry, you can come with us and we''ll give you all the dick you want."'
+			'They tightly grab your arms and start dragging you to the restroom. Your futile attempts to resist are met with laughter and you''re forcefully pulled along, hoping for some miracle to get you out of this nightmare. When you arrive at the restroom, Albina suddenly blocks the doorway. They try to shove her out the way, but she stands firm and doesn''t budge, which annoys Vitek. "Get the fuck out of my way, rich bitch! Or do you want to join us? I know you''d love having my dick in your ass, right between those big juicy cheeks of yours!" he says with a laugh and the others join in.' 
 			*nl
-			'Albina is not amused and gets right up in Vitek''s face. "Like I''d actually feel anything. My pinky finger is bigger than your micro dick. Now let <<$pcs_nickname>> go and fuck off! If I see you pestering her again, I''ll cut your little balls off and feed them to your sister. Got it!?'
-			'The other gopniks look at each other for a second, both amused and stunned by what Albina said as Vitek stands fuming, his fists clenched in anger before he loudly scoffs and storms off. "Come on boys, these whores aren''t worth it. Let''s find a girl who actually knows what she''s good for!" The gopniks quickly let you go and follow Vitek away. You give Albina a weak smile in gratitude and she returns an encouraging nod and a pat on the shoulder before continuing on her way.'
+			'Albina isn''t amused. "Like I''d actually feel anything with your micro dick," she replies while holding up her pinky finger. "Now fuck off and leave <<$pcs_nickname>> alone. If I see any of you pestering her again, then I''ll kick your balls back up inside you. Got it!?"'
+			'Vitek stands fuming, his fists clenched in anger before he loudly scoffs and storms off. "Come on boys, these whores aren''t worth it. Let''s find a girl who actually knows what she''s good for!"' 
+			'The other gopniks let you go and follow Vitek away. You give Albina a weak smile in gratitude and she gives you a pat on the shoulder before continuing on her way.'
 			gs 'gschool_events', 'leave_break_events'
 		else
 			'During the break, you''re approached by some gopniks. "<<$pcs_firstname>>, I hear you''re an amazing cocksucker. I think you should show us. Come on, let''s go to a restroom and you can show us your skills."'
@@ -600,7 +601,7 @@ if $ARGS[0] = 'break_events':
 	elseif break_rand = 12 and hotcat > 5 and PCloSkirt > 0:
 		cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/events/skirtpulledup.jpg"></center>'
-		if pcs_butt > 8:
+		if func('pcs_has_attr', 'body_ass_big') or func('pcs_has_attr', 'body_ass_bubble'):
 			'As you walk down the hallway, you feel someone moving in behind you and quickly pulling your skirt up. Your skirt is barely in the air before you feel a hand firmly squeezing your ass. As you move to turn around, the hand quickly pulls away. You can tell from his admiring expression that Lazar was the one groping your ass. All the workouts you''ve been doing have made your ass big and firm enough to impress him.'
 		else
 			'As you walk down the hallway, you feel someone moving in behind you and quickly pulling your skirt up. Your skirt is barely in the air before you feel hands pawing at your ass. As you move to turn around, the hand quickly pulls away. You can tell from his disappointed expression that Lazar was the one groping your ass. Perhaps he was expecting something firmer after hanging out with the athletic girls so much? Maybe you should work out more...'

+ 1 - 1
locations/gschool_grounds.qsrc

@@ -883,7 +883,7 @@ if $ARGS[0] = 'Family extension':
 					'After showering and changing, you head out and greet your mother. "Thanks for coming. It means a lot to me."'
 					'"Of course I''d come <<$pcs_nickname>>! I just want the best for you and I''m proud of you and your win. Come on, let''s go out for a bite to eat. I think we need to have a chat."'
 					'"You don''t have to <<$npc_nickname[''A29'']>>, I''m so glad you came and I know money is tight."'
-					'"That''s fine, so long as you don''t mind the station cafe. I want to see if we can''t patch things up between us."'
+					'"That''s fine, so long as you don''t mind the station cafe. I want to see if we can patch things up between us."'
 					minut += 10
 					gs 'stat'
 

+ 6 - 8
locations/gschool_groups.qsrc

@@ -2,8 +2,6 @@
 !2021/05/02
 ! 14/09/22 - edited link to work with new hournal. 
 
-gs 'themes', 'food_menu'
-
 !npc_grupTipe[i] - social group
 !1 - popular
 !2 - jocks
@@ -25,7 +23,7 @@ if $ARGS[0] = 'teachers':
 	:teach_loop
 		if npc_grupTipe['A<<i>>'] = 6 and schoolenable['A<<i>>'] = 1:
 
-			$teach_text += '<td><table bgcolor=<<$bcolor2>>><tr><td align="center"><a href="exec:numnpc = <<i>> & gt ''Snpc'' "><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table></td>'
+			$teach_text += '<td><table bgcolor=<<$theme[''table_bg_alt'']>>><tr><td align="center"><a href="exec:numnpc = <<i>> & gt ''Snpc'' "><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table></td>'
 
 			teach_count += 1
 			if teach_count = 6:
@@ -53,7 +51,7 @@ if $ARGS[0] = 'nerds':
 	:nerd_loop
 		if npc_grupTipe['A<<i>>'] = 3 and schoolenable['A<<i>>'] = 1:
 			$lcase_nerd = $lcase($npc_usedname['A<<i>>'])
-			$nerd_text += '<td><table bgcolor=<<$bcolor2>>><tr><td align="center"><a href="exec:gt ''gschool_nerd_chats'', ''<<$lcase_nerd>>'' "><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table></td>'
+			$nerd_text += '<td><table bgcolor=<<$theme[''table_bg_alt'']>>><tr><td align="center"><a href="exec:gt ''gschool_nerd_chats'', ''<<$lcase_nerd>>'' "><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table></td>'
 
 			nerd_count += 1
 			if nerd_count = 6:
@@ -83,7 +81,7 @@ if $ARGS[0] = 'jocks':
 	:jock_loop
 		if npc_grupTipe['A<<i>>'] = 2 and schoolenable['A<<i>>'] = 1:
 			$lcase_jock = $lcase($npc_usedname['A<<i>>'])
-			$jock_text += '<td><table bgcolor=<<$bcolor2>>><tr><td align="center"><a href="exec:gt ''gschool_jock_chats'', ''<<$lcase_jock>>'' "><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table></td>'
+			$jock_text += '<td><table bgcolor=<<$theme[''table_bg_alt'']>>><tr><td align="center"><a href="exec:gt ''gschool_jock_chats'', ''<<$lcase_jock>>'' "><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table></td>'
 
 			jock_count += 1
 			if jock_count = 6:
@@ -113,7 +111,7 @@ if $ARGS[0] = 'popular':
 	:pop_loop
 		if npc_grupTipe['A<<i>>'] = 1 and schoolenable['A<<i>>'] = 1:
 			$lcase_pop = $lcase($npc_usedname['A<<i>>'])
-			$pop_text += '<td><table bgcolor=<<$bcolor2>>><tr><td align="center"><a href="exec:gt ''gschool_coolkid_chats'', ''<<$lcase_pop>>'' "><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table></td>'
+			$pop_text += '<td><table bgcolor=<<$theme[''table_bg_alt'']>>><tr><td align="center"><a href="exec:gt ''gschool_coolkid_chats'', ''<<$lcase_pop>>'' "><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table></td>'
 
 			pop_count += 1
 			if pop_count = 6:
@@ -143,7 +141,7 @@ if $ARGS[0] = 'gopniks':
 	:gop_loop
 		if npc_grupTipe['A<<i>>'] = 4 and schoolenable['A<<i>>'] = 1:
 			$lcase_gop = $lcase($npc_usedname['A<<i>>'])
-			$gop_text += '<td><table bgcolor=<<$bcolor2>>><tr><td align="center"><a href="exec:gt ''gschool_gopnik_chats'', ''<<$lcase_gop>>''"><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table>' + '</td>'
+			$gop_text += '<td><table bgcolor=<<$theme[''table_bg_alt'']>>><tr><td align="center"><a href="exec:gt ''gschool_gopnik_chats'', ''<<$lcase_gop>>''"><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table>' + '</td>'
 
 			gop_count += 1
 			if gop_count = 6:
@@ -173,7 +171,7 @@ if $ARGS[0] = 'outcasts':
 	:oc_loop
 		if npc_grupTipe['A<<i>>'] = 5 and schoolenable['A<<i>>'] = 1:
 			$lcase_oc = $lcase($npc_usedname['A<<i>>'])
-			$oc_text += '<td><table bgcolor=<<$bcolor2>>><tr><td align="center"><a href="exec:gt ''gschool_outcast_chats'', ''<<$lcase_oc>>'' "><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table>' + '</td>'
+			$oc_text += '<td><table bgcolor=<<$theme[''table_bg_alt'']>>><tr><td align="center"><a href="exec:gt ''gschool_outcast_chats'', ''<<$lcase_oc>>'' "><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"></a></td></tr><tr><td align="center"><<$npc_usedname[''A<<i>>'']>></td></tr></table>' + '</td>'
 
 			oc_count += 1
 			if oc_count = 6:

+ 1 - 1
locations/gschool_jock_chats.qsrc

@@ -1118,7 +1118,7 @@ if $ARGS[0] = 'lina':
 			'You see the other jocks starting to look your way, and decide it''s best to leave.'
 		else
 			'"Why do you people always get tattoos? Christina says they look awful."'
-			if tatarm = 0 or tatass = 0 or tatback = 0 or tatblly = 0 or tatbrst = 0 or tatchst = 0 or tatfce = 0 or tatankle = 0 or tathand = 0 or tatleg = 0 or tatlip = 0 or tatneck = 0 or tatvag = 0 or tatlech = 0 or tatside = 0 or tatupb = 0 or tatunder = 0 or tatwrist = 0:
+			if tattCount = 0:
 				'"What are you talking about? I don''t have any tattoos."'
 				'"It''s just a matter of time then."'
 				'"Wow. Okay, bye bitch." With that said, you just walk away.'

+ 5 - 5
locations/gschool_lessons.qsrc

@@ -58,7 +58,7 @@ if $ARGS[0] = 'morning':
 		end
 	else
 		'<center><b><font color="maroon">School Hallway</font></b></center>'
-		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<Rand(0,2)>>.jpg"></center>'
+		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<rand(0,2)>>.jpg"></center>'
 		'Walking down the halls, you barely notice the poor state of the school anymore, having grown used to it. Approaching your locker, you see several of your classmates and wave at them.'
 		act 'Go to first period': school_period = 0 & gt 'gschool_lessons', 'schedule'
 		act 'Skip first period': school_period = 1 & gt 'gschool_lessons', 'skip'
@@ -226,7 +226,7 @@ if $ARGS[0] = 'short_break':
 	if school_period = 2:
 		if $ARGS[1] ! 'nopict':
 			'<center><b><font color="maroon">School Hallway</font></b></center>'
-			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<Rand(0,2)>>.jpg"></center>'
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<rand(0,2)>>.jpg"></center>'
 			nl
 			gs 'gschool', 'schedule'
 		end
@@ -234,7 +234,7 @@ if $ARGS[0] = 'short_break':
 	elseif school_period = 5:
 		if $ARGS[1] ! 'nopict':
 			'<center><b><font color="maroon">School Hallway</font></b></center>'
-			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<Rand(0,2)>>.jpg"></center>'
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<rand(0,2)>>.jpg"></center>'
 			nl
 			gs 'gschool', 'schedule'
 		end
@@ -242,7 +242,7 @@ if $ARGS[0] = 'short_break':
 	elseif (school_period < 8):
 		if $ARGS[1] ! 'nopict':
 			'<center><b><font color="maroon">School Hallway</font></b></center>'
-			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<Rand(0,2)>>.jpg"></center>'
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<rand(0,2)>>.jpg"></center>'
 			gs 'gschool_gossip', 'gossip'
 			nl
 			gs 'gschool', 'schedule'
@@ -260,7 +260,7 @@ if $ARGS[0] = 'short_break':
 		end
 	elseif Kuznetsov_punishment = 1:
 		'<center><b><font color="maroon">School Hallway</font></b></center>'
-		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<Rand(0,2)>>.jpg"></center>'
+		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/building/gschool_hall0<<rand(0,2)>>.jpg"></center>'
 		act 'Go to Kuznetsov''s classroom': gt 'gschool_lessonsev2','shop_punishment'
 		act 'Leave the school': gt 'gschool_lessons', 'schedule'
 	else

Some files were not shown because too many files changed in this diff