1
0

436 Revīzijas 85c64b16be ... 1b4fcc0970

Autors SHA1 Ziņojums Datums
  DSX93459 1b4fcc0970 Merge branch 'master' into DSXClothingTweaks 5 mēneši atpakaļ
  rachels 0a52e7714a [fixed] typos 5 mēneši atpakaļ
  Kevin_Smarts 752d66b665 Merge remote-tracking branch 'Anjuna/master' 5 mēneši atpakaļ
  anjuna krokus ab4c4b5864 [added] Assbook, the #1 social media site in Russia. Extrapolated from existing content (blackmailing somebody you took a picture of) and added the absolute minimum (let's be honest, even less than that) to make it work. In the future you can upload pictures and selfies to your page, and maybe even earn some money from your lonely fans 5 mēneši atpakaļ
  Hooded Silence 278756c17a [Fixes - Dance School] All images should now work, numerous bugs, QOL and text fixes. Residential Dance school should now be release complete. Further School content will be added next release. 5 mēneši atpakaļ
  Kevin_Smarts e211657947 Merge remote-tracking branch 'Hornguy6/master' 5 mēneši atpakaļ
  hornguy6 d03721adf8 [added] teeth description to the mirror 5 mēneši atpakaļ
  anjuna krokus 6de71b60a0 [fixed] small bugs related to the new additions to the phone_selfies 5 mēneši atpakaļ
  anjuna krokus 4278e19bd4 [changed] small changes to phone_selfies in preparation to upload/send selfies 5 mēneši atpakaļ
  anjuna krokus bfb0a24179 [changed] some tiny layout changes in city_residential, tatiana_lab, and telefon 5 mēneši atpakaļ
  anjuna krokus e722bfbfda [fixed] some bugs in the experimental trials 5 mēneši atpakaļ
  anjuna krokus 8a90fe3b7b [fixed] an issue in the city residential appartment hallway not being marked as public indoor 5 mēneši atpakaļ
  anjuna krokus c0cf8bf6d2 [fixed/added] Fixed a softlock in pav_pool which happend if you're nude without any swimwear left. Added remaining content surrounding (un)dressing in the pav pool locker room 5 mēneši atpakaļ
  Kevin_Smarts 13cc5e3bee Merge remote-tracking branch 'Hornguy6/master' 5 mēneši atpakaļ
  hornguy6 11a9c14fb3 [fixed] commented out WIP content 5 mēneši atpakaļ
  anjuna krokus 462e09c5ef [changed/fixed] fixed vhips not updating properly... Whoops... Changed the frequency at which the "your breasts/butt seem fuller/smaller" messeges fire. 5 mēneši atpakaļ
  Kevin_Smarts aa75d1da03 [fixed] Logic holes giving no actions and a typo, both reported on F95 5 mēneši atpakaļ
  Kevin_Smarts 20e69c1979 Merge remote-tracking branch 'Felix/master' 5 mēneši atpakaļ
  Kevin_Smarts 12d244344f Merge remote-tracking branch 'Hooded_Silence/master' 5 mēneši atpakaļ
  LinaHirata 11eee57c59 [fixed] clothing now uses new themes system 5 mēneši atpakaļ
  Hooded Silence 59258a862b [Feature Update, code fixes] Now restored the ability to actually attend the dance school from the residence. Residence, Class and Journal code refactored. Numerous bug fixes including image paths fixed. Fixed minor display discrepancy for makeQSP. 5 mēneši atpakaļ
  Kevin_Smarts 508baadeec Merge remote-tracking branch 'Anjuna/master' 5 mēneši atpakaļ
  anjuna krokus 357ca41974 [fixed] booty_call not working as intended 5 mēneši atpakaļ
  anjuna krokus 4639ba6e32 [changed] $body_image now uses bmi instead of salocat. BMI values have been calibrated to fall at the same salocat values 5 mēneši atpakaļ
  hornguy6 2dbf0e9d47 [changed] testing new form of morning after pill which functions more like real life - delays ovulation by a certain amount of time, if you are already ovulating you are SOL 5 mēneši atpakaļ
  hornguy6 328d704f3d [fixed] location of pickup was the wrong string 5 mēneši atpakaļ
  hornguy6 8c64865e98 [changed] blue color to orange 5 mēneši atpakaļ
  hornguy6 de25d12866 [changed] birth control msg text edits 5 mēneši atpakaļ
  hornguy6 5bc2fbb2a3 [added] stat tracking for cigarettes 5 mēneši atpakaļ
  hornguy6 70370a4283 [fixed] 1 should be 0, > should be >= 5 mēneši atpakaļ
  hornguy6 e28abf022d [fixed] added two styles back in 5 mēneši atpakaļ
  hornguy6 16e8e4aa18 [added] some more strings to keep track of pubic shaving patterns 5 mēneši atpakaļ
  anjuna krokus 070d828dc6 [fixed] bug in intro_customization related to butt genetics 5 mēneši atpakaļ
  anjuna krokus 2104c0db77 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 5 mēneši atpakaļ
  anjuna krokus 6fb8f3bfe0 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 5 mēneši atpakaļ
  Kevin_Smarts 56ec2f0c4e Merge branch 'master' of https://git.tfgames.site/anjuna/Girl-Life-Anjuna 5 mēneši atpakaļ
  anjuna krokus a4a4157901 [fixed] made pre_planned_booty_call work 5 mēneši atpakaļ
  Kevin_Smarts e167083083 [fixed] I dun't speel gud 5 mēneši atpakaļ
  anjuna krokus 90a65bd75a Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 5 mēneši atpakaļ
  Kevin_Smarts 6a338ca132 [fixed] File path for parcer wasn't correct 5 mēneši atpakaļ
  anjuna krokus 3bca9f3e6f [changed/fixed] Updated the outdated variable names to increase readability. Fixed some bugs in booty_all_sms 5 mēneši atpakaļ
  Kevin_Smarts a07475678a [update] New version of parcer added 5 mēneši atpakaļ
  Kevin_Smarts aaa47cd1b1 Merge remote-tracking branch 'Hornguy6/master' 5 mēneši atpakaļ
  hornguy6 3f1443ef91 [fixed] added else location if you do have a home in the city 5 mēneši atpakaļ
  LinaHirata 54eab93636 [fixed] interacting with `Show Debug` toggle now also sets `debug_warning_closed` var 5 mēneši atpakaļ
  anjuna krokus 3faf39f0cc [added/fixed] Updated saveupdater to use the correct calculation for bodymass. Should prevent large jumps in weights. Updated all intros to use the new body weight values. Added the option to set your genetic butt size in intro_customization. Removed a floating tab from intro_sg_select_custom 5 mēneši atpakaļ
  anjuna krokus 4bbc08b075 [fixed] a gamebreaking bug, and updated the cheatmenu bodyfat setting to better update your bodyfat with the new system 5 mēneši atpakaļ
  anjuna krokus d77e3b66f2 [fixed] Should ensure that bust and butt don't shrink when you have a healthy weight 5 mēneši atpakaļ
  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 mēneši atpakaļ
  anjuna krokus e237c668d9 [change] Decided to move the steroid pube and leghair growth to body 5 mēneši atpakaļ
  anjuna krokus 1dfbc106fa [removed] forgot to remove the duplicate steroid manager from body 5 mēneši atpakaļ
  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 mēneši atpakaļ
  anjuna krokus 594b70d028 [fixed] breast cream now properly (and for now permanently) affects breast growth. Added some comments to body. 5 mēneši atpakaļ
  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 mēneši atpakaļ
  Kevin_Smarts 6de3bab267 Merge remote-tracking branch 'Felix/master' 5 mēneši atpakaļ
  Kevin_Smarts 0be83d8712 Merge remote-tracking branch 'Anjuna/master' 5 mēneši atpakaļ
  LinaHirata a8556c6d70 [fixed] qsp analyzer warning 5 mēneši atpakaļ
  LinaHirata b78dc0db67 [fixed] incorrect `killvar` usage and `gs 'arousal'` calls in `pav_park_sex` 5 mēneši atpakaļ
  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 mēneši atpakaļ
  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 mēneši atpakaļ
  hornguy6 9602cf410d [fixed] missing value 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 763ee6a4d1 [fixed] Code mistake. 6 mēneši atpakaļ
  Kevin_Smarts e3d1c42981 Merge remote-tracking branch 'Hooded_Silence/master' 6 mēneši atpakaļ
  Hooded Silence 7377b5a5a5 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  Hooded Silence 34addc00a5 [Fix] Missing hour in logic check. 6 mēneši atpakaļ
  anjuna krokus 819c9d62a6 [fixed/changed] Fixed missing closing ] in hardreset. Changed mass updates and vhips update 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 1f427e2636 [changed] Added aother situation in which Katja opens her dorm room door for you. 6 mēneši atpakaļ
  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 mēneši atpakaļ
  bgkjdgbizgblzdgbr 9a2c5b90f0 [fixed/added] Added coments to Katja's schedule, and fixed a bug in it. 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 3eca5d4990 [fixed] Typo in variable name. 6 mēneši atpakaļ
  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 mēneši atpakaļ
  Hooded Silence 968c332d74 [Code Fixes] Assigned correct variable types. 6 mēneši atpakaļ
  Kevin_Smarts 6b5b8d9040 Merge branch 'master' of https://git.tfgames.site/HoodedSilence/glife 6 mēneši atpakaļ
  Kevin_Smarts e0cab5ade5 Merge remote-tracking branch 'Derryth_Love/master' 6 mēneši atpakaļ
  Kevin_Smarts 42ff1e42bd Merge remote-tracking branch 'Anjuna/master' 6 mēneši atpakaļ
  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 mēneši atpakaļ
  Derryth_Love bec404eb21 [Rewrite] First meeting with Tamara(Vicky's Path) 6 mēneši atpakaļ
  anjuna krokus 97f74745ba [fixed] better calculation of pcs_weight 6 mēneši atpakaļ
  Hooded Silence 92dfd3ce4e [Code Factoring] Removed GIT message within code! 6 mēneši atpakaļ
  Hooded Silence 2d7c103d8e More fixes 6 mēneši atpakaļ
  Kevin_Smarts 6792b0cabc Merge remote-tracking branch 'Felix/master' 6 mēneši atpakaļ
  Kevin_Smarts bf54d2400d Merge remote-tracking branch 'Anjuna/master' 6 mēneši atpakaļ
  Kevin_Smarts e1a9ce7372 Merge remote-tracking branch 'Hooded_Silence/master' 6 mēneši atpakaļ
  LinaHirata 97f9ad77e8 [fixed] missing closing tag in shaving options table 6 mēneši atpakaļ
  LinaHirata 05715f122e Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  anjuna krokus 8c05e81d22 [fixed] forgotten if-statements in saveupdater 6 mēneši atpakaļ
  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 mēneši atpakaļ
  Hooded Silence 6538cd38da [Fix] Fixed ballet start for non-dancer starts - misplaced if end and repair previous broken commit. 6 mēneši atpakaļ
  Hooded Silence 6b4d8d87f1 [broken link] Stop your sister talking to herself 6 mēneši atpakaļ
  anjuna krokus 4f5c2cd01f [changed] Complete body overhaul. New variable, new systems, new you. 6 mēneši atpakaļ
  anjuna krokus bf82f784c4 [changed] portnoi2 (resize all clothing) to tailor (finding the costs) and tailor2 (actually resizing all the clothes). 6 mēneši atpakaļ
  hornguy6 198210f1ae [added] yes option for if he asks if you want a cigarette 6 mēneši atpakaļ
  hornguy6 6a6dbd946d [changed] new method of checking for pav home for booty calls 6 mēneši atpakaļ
  hornguy6 13ae89e23e [fixed] variables need to be toggled 6 mēneši atpakaļ
  hornguy6 cf717b08a3 [fixed] sugar daddies and prostitution sessions overlapping 6 mēneši atpakaļ
  hornguy6 618bdae03d [fixed] didn't know option was disabled 6 mēneši atpakaļ
  hornguy6 ad38087b83 [added] consistency flags 6 mēneši atpakaļ
  hornguy6 8a2b6b479e [fixed] wrong location 6 mēneši atpakaļ
  hornguy6 c330187d91 [changed] stats and dialogue 6 mēneši atpakaļ
  hornguy6 b8c9cd3c5e [added] cum on tits yum 6 mēneši atpakaļ
  hornguy6 20806d597c [fixed] not equals should have been equals 6 mēneši atpakaļ
  hornguy6 0c697b7b3e [changed] npc more likely to creampie based on certain conditions 6 mēneši atpakaļ
  hornguy6 fe132b91f5 [added] new coffee dialogue 6 mēneši atpakaļ
  hornguy6 fe0804babb [changed] pullout variable name 6 mēneši atpakaļ
  hornguy6 914cc8cf5f [added/changed/fixed] birth control and creampie related dialogue options 6 mēneši atpakaļ
  hornguy6 009c6f7b57 [changed] reworked the shower_sex file so it isn't repetitive and 3000 lines long 6 mēneši atpakaļ
  anjuna krokus 480fa2f574 [changed] smoothed out pcs_sleep gain in sleep and sleep_simple 6 mēneši atpakaļ
  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 mēneši atpakaļ
  anjuna krokus da7c479020 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  Kevin_Smarts 324d323dae [fixed] Skirt length set incorrectly 6 mēneši atpakaļ
  LinaHirata e3e320c7bc a bit more fixes for `brothel.qsrc` 6 mēneši atpakaļ
  LinaHirata 6462a9593e [fixed] reset `call_trace_manual` on save load 6 mēneši atpakaļ
  LinaHirata bad66a7295 [fixed] unresolved git conflict 6 mēneši atpakaļ
  LinaHirata add786efb3 [fixed] missing comma 6 mēneši atpakaļ
  LinaHirata 26bfe6df6e [fixed]?? dont ever rebase 6 mēneši atpakaļ
  LinaHirata 24b095153a [fixed] `sister_chat` dead ends 6 mēneši atpakaļ
  anjuna krokus e58a90abfc [fixed] Missing colon, removed floating tab and replaced indenting spaces with tabs 6 mēneši atpakaļ
  Kevin_Smarts f7ad9b4683 Merge remote-tracking branch 'Felix/master' 6 mēneši atpakaļ
  LinaHirata 4fdb2b40e9 [refactor] themes 6 mēneši atpakaļ
  LinaHirata f1faaf7e4a [fixed] minor fixes for `brothel.qsrc` 6 mēneši atpakaļ
  LinaHirata 2d690984ba [fixed] `food_menu` is now a bit less fucked up 6 mēneši atpakaļ
  LinaHirata 0d24b611e6 [changed] moved runtime version check forward a bit 6 mēneši atpakaļ
  LinaHirata 7c7c40b69e [changed] slightly optimized notifications system 6 mēneši atpakaļ
  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 mēneši atpakaļ
  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 mēneši atpakaļ
  LinaHirata 93b5610def [changed] act placement in alarm clock and intro 6 mēneši atpakaļ
  Kevin_Smarts 0acecb7bad Merge remote-tracking branch 'Anjuna/master' 6 mēneši atpakaļ
  anjuna krokus 9b3b546c70 [fixed] multiple unintended empty lines, fix proposed by Felix 6 mēneši atpakaļ
  anjuna krokus b9f54b028a [fixed] dead-ends in natbel_chat due to wrong goto's 6 mēneši atpakaļ
  anjuna krokus e5576e1520 [fixed] missing colon 6 mēneši atpakaļ
  anjuna krokus 915ac2a7d6 [fixed] missing colon and removed trailing tabs 6 mēneši atpakaļ
  anjuna krokus fcae2cf288 [fixed] missing rand function 6 mēneši atpakaļ
  anjuna krokus 458319de6e Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  Hooded Silence b340c49e92 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 4cdff4a9c2 [fixed] Inequalities, the bane of my existence. 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr f78e72d1a9 [fixed] Still two different guys. 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 37afec4a29 [fixed] I need to learn to code. 6 mēneši atpakaļ
  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 mēneši atpakaļ
  hornguy6 5c98858d91 [fixed] added in new file I forgot 6 mēneši atpakaļ
  Kevin_Smarts adaf25c8be [fixed] I should have put these on new lines. Sorry! 6 mēneši atpakaļ
  Kevin_Smarts e3e0752355 [changed] Fights now hit various body parts and apply pain if they are Sveta's 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 93a37ccf22 [fixed] Missing : pointed out be Chimrod. 6 mēneši atpakaļ
  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 mēneši atpakaļ
  Derryth_Love 8eb0305d89 [typo] Missing do-do 6 mēneši atpakaļ
  hornguy6 2cc4570f6c [fixed] no message for bumming cigarettes 6 mēneši atpakaļ
  anjuna krokus 2b8135f561 [removed] forgotten image placeholders that should no longer be there 6 mēneši atpakaļ
  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 mēneši atpakaļ
  hornguy6 710c008520 [fixed] did not push update sister chats to new location in other file 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 8bf79a67bb [fixed] Errors with the clothes Kataj presents to you at pussy cats 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 4fa1df2bc1 [Added] Katja will now tell you she needs to go and not just disappear from the Coffee Hole. 6 mēneši atpakaļ
  LinaHirata 6372ef0884 [changed] cosmetic (and couple functional) changes to `item_cart` 6 mēneši atpakaļ
  LinaHirata 770ec5fe41 [added] `rgb_to_hex` func 6 mēneši atpakaļ
  LinaHirata 1bc2d5942d [fixed] daylight duration, commented the code for future reading, hope it helps 6 mēneši atpakaļ
  LinaHirata 0283b56d7d [fixed] indent 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr c92703717a [changed/added] Added schedule for Nush and the band mates for the school year. 6 mēneši atpakaļ
  LinaHirata 5deff6c4f7 [added] runtime version check, the game will not load in incompatible players 6 mēneši atpakaļ
  LinaHirata 08dfd27a39 [fixed] redundant text in hardware store 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 4ed65261bb [fixed] Missing loc and loc_arg 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr d11ff3024c [fixed] Wrong image link. 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr d81ffe030c [fixed] The two guys do have different names. 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 5d4b7a2718 [fixed] Pegging Igor is not supposed to be a one time thing. 6 mēneši atpakaļ
  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 mēneši atpakaļ
  hornguy6 813d76e327 [added] seeding stat tracking for virginity and body count checks 6 mēneši atpakaļ
  hornguy6 d94a424380 [added] stat tracking to check if you orgasmed when you lost your virginity 6 mēneši atpakaļ
  hornguy6 45e133114a [changed] reorganized the sister_chat file 6 mēneši atpakaļ
  hornguy6 3f5eaca010 [added] The Graduate reference 6 mēneši atpakaļ
  hornguy6 254ffc8a80 [fixed] prostituion 6 mēneši atpakaļ
  hornguy6 ca38a5ba74 [changed] the fuck_cum thing 6 mēneši atpakaļ
  hornguy6 bc236ea05c [fixed] if statement should include no_condom guys 6 mēneši atpakaļ
  hornguy6 d92865313d [changed] updated the stat tracking 6 mēneši atpakaļ
  hornguy6 e4f18418b0 [fixed] more of the undressing arg changes 6 mēneši atpakaļ
  hornguy6 4cd2e70ec2 [changed] boy now slightly less likely to pull you into his favorite position 6 mēneši atpakaļ
  hornguy6 51320ffd70 [fixed] variable stuff 6 mēneši atpakaļ
  hornguy6 8b3126abc8 [added] WIP dialogue about your first creampie 6 mēneši atpakaļ
  hornguy6 01a540edac [changed] text edits and stuff 6 mēneši atpakaļ
  hornguy6 72483a182d [added] new conversation about starting birth control to abandon condoms 6 mēneši atpakaļ
  hornguy6 e3f7a2eb08 [changed] moved the undress arg out of foreplay and into start 6 mēneši atpakaļ
  hornguy6 30f527b25c [added] can wake up your sugar daddy for your sugar 6 mēneši atpakaļ
  hornguy6 978e0ed34a [fixed] prostitution, not prostituion 6 mēneši atpakaļ
  hornguy6 e27d32c53a [added] special dialogue if you lost your virginity to a guy 6 mēneši atpakaļ
  hornguy6 af0ba39ede [changed] should be able to say you prefer positions you didn't do it in now 6 mēneši atpakaļ
  hornguy6 3c0ba9e614 [added] can ask for your sugar money while preparing to leave 6 mēneši atpakaļ
  hornguy6 c1b6bb6dcb [fixed] changed if statement to make more sense 6 mēneši atpakaļ
  hornguy6 f005a2de58 [added] new creampie mechanics 6 mēneši atpakaļ
  hornguy6 459191081b [fixed] carrot facing wrong way :3 6 mēneši atpakaļ
  hornguy6 6e975efb69 [fixed] some variable seeding 6 mēneši atpakaļ
  hornguy6 64a72cf29b [added] a wip conversation 6 mēneši atpakaļ
  hornguy6 b818063fff [changed] trying a new way of checking boy conversation topics 6 mēneši atpakaļ
  hornguy6 7f718db521 [fixed] calling wrong location 6 mēneši atpakaļ
  anjuna krokus 4821be42b5 [fixed/changed] invert_color function in shortgs 6 mēneši atpakaļ
  anjuna krokus de84dea062 [changed] Significant simplification of int_to_hex_str and hex_str_to_int functions. Credits to Sword and Felix 6 mēneši atpakaļ
  anjuna krokus 4138b30c1a [fixed] Crash related to journal_npc_information 6 mēneši atpakaļ
  Vengeance_11 9f9125dcc1 Nursing degree and related NPCs added to university 6 mēneši atpakaļ
  Kevin_Smarts 0760f7b4d2 [changed] Collated some Tanya variables and adjusted number of sex visits to unlock overnight stays and maid job offer 6 mēneši atpakaļ
  Derryth_Love 0388216749 [Fix] Invisible Pussy in Modeling Studio. 6 mēneši atpakaļ
  Kevin_Smarts 32b63803fe [fixed] Abortion talk on wrong line so onlt showed if not first pregnancy 6 mēneši atpakaļ
  Kevin_Smarts 6e983b2bb4 [fixed] spelling error in image links 6 mēneši atpakaļ
  Kevin_Smarts dd9d38776a [added] Abortion talk with mother from BBZ01 6 mēneši atpakaļ
  anjuna krokus a4cdccc7b6 [fixed] small fix to city residential gopniks not functioning correctly if you ran away first 6 mēneši atpakaļ
  anjuna krokus dc65565333 [fixed] forgotten end in shortgs 6 mēneši atpakaļ
  anjuna krokus 4a8f56ebb8 [added] invert color function to shortgs 6 mēneši atpakaļ
  anjuna krokus 8111b926bc [added] mod support to sentence.qsrc to allow mods to create their own crimes 6 mēneši atpakaļ
  anjuna krokus 0eaaaaa529 [fixed] Repeating arrests due to improper cleaning and moving of subjects and dates. 6 mēneši atpakaļ
  LinaHirata 3f00e0dd53 [fixed] `DayStage` 6 and 1 using white `fcolor` 6 mēneši atpakaļ
  LinaHirata 79cdd19f1b [fixed] kevin broke the game.... missing `end` in `natbel_chat` 6 mēneši atpakaļ
  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 mēneši atpakaļ
  anjuna krokus 37ae373da3 [fixed] dot instead of komma. My bad 6 mēneši atpakaļ
  anjuna krokus a6641e51f3 [fixed] mods working in the sleep cycle. Update to how mods check for being in the cycle. 6 mēneši atpakaļ
  anjuna krokus c3f3acfac2 [fixed] forgotten clearing of $sleep_loc in 'sleep_simple' and fixed the problematic file wide $sleep_loc 6 mēneši atpakaļ
  anjuna krokus 6bb0af45bd [added] Link explaining the doy function 6 mēneši atpakaļ
  anjuna krokus cf5f5fb517 [fixed] Error in nichServantSleepEvents_handler in the pre_sleep_events location. 6 mēneši atpakaļ
  hornguy6 6e595ecd13 [fixed] dead end missing call 6 mēneši atpakaļ
  hornguy6 1e61461c46 [fixed] calling wrong file 6 mēneši atpakaļ
  hornguy6 c8410c209d [fixed] hopefully can break up with sugar daddies correctly now 6 mēneši atpakaļ
  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 mēneši atpakaļ
  bgkjdgbizgblzdgbr dc2cc838eb [fixed] Inequalities, the bane of my existence. 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr c141f18737 [fixed] Still two different guys. 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 71f47b9e31 [fixed] I need to learn to code. 6 mēneši atpakaļ
  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 mēneši atpakaļ
  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 mēneši atpakaļ
  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 mēneši atpakaļ
  bgkjdgbizgblzdgbr cbfe4606f2 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  hornguy6 e3fb719fb3 [fixed] added in new file I forgot 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr d8481205d5 [fixed] Missing : pointed out be Chimrod. 6 mēneši atpakaļ
  Kevin_Smarts e310a80262 [fixed] I should have put these on new lines. Sorry! 6 mēneši atpakaļ
  Kevin_Smarts 5821dc4ef5 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  Kevin_Smarts 6ab217bf2b [changed] Fights now hit various body parts and apply pain if they are Sveta's 6 mēneši atpakaļ
  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 mēneši atpakaļ
  Kevin_Smarts 74a3d2a8dd Merge remote-tracking branch 'Derryth_Love/master' 6 mēneši atpakaļ
  Kevin_Smarts ac5b8a1d3c Merge remote-tracking branch 'Hornguy6/master' 6 mēneši atpakaļ
  Derryth_Love 4bef8ef060 [typo] Missing do-do 6 mēneši atpakaļ
  hornguy6 a015d58cbb [fixed] no message for bumming cigarettes 6 mēneši atpakaļ
  anjuna krokus 621a889ee9 [removed] forgotten image placeholders that should no longer be there 6 mēneši atpakaļ
  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 mēneši atpakaļ
  Kevin_Smarts 085d37bd4a Merge remote-tracking branch 'Hornguy6/master' 6 mēneši atpakaļ
  hornguy6 1597731621 [fixed] did not push update sister chats to new location in other file 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 3d23b9f636 [fixed] Errors with the clothes Kataj presents to you at pussy cats 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 4bcca64bed [Added] Katja will now tell you she needs to go and not just disappear from the Coffee Hole. 6 mēneši atpakaļ
  LinaHirata d99fa5519a [changed] cosmetic (and couple functional) changes to `item_cart` 6 mēneši atpakaļ
  LinaHirata 20c0265946 [added] `rgb_to_hex` func 6 mēneši atpakaļ
  LinaHirata f0e008f3e5 [fixed] daylight duration, commented the code for future reading, hope it helps 6 mēneši atpakaļ
  LinaHirata c3dafc33ab [fixed] indent 6 mēneši atpakaļ
  LinaHirata 9a054b2071 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr e2153f5b39 [changed/added] Added schedule for Nush and the band mates for the school year. 6 mēneši atpakaļ
  LinaHirata b8be0ff344 [added] runtime version check, the game will not load in incompatible players 6 mēneši atpakaļ
  LinaHirata 65aaff46e8 [fixed] redundant text in hardware store 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 310805e56a [fixed] Missing loc and loc_arg 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr db17fdc286 [fixed] Wrong image link. 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr c1e9fb31cb [fixed] The two guys do have different names. 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 1642986d99 [fixed] Pegging Igor is not supposed to be a one time thing. 6 mēneši atpakaļ
  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 mēneši atpakaļ
  Kevin_Smarts cfd067215b Merge remote-tracking branch 'Hornguy6/master' 6 mēneši atpakaļ
  hornguy6 d7bf5a3fe7 [added] seeding stat tracking for virginity and body count checks 6 mēneši atpakaļ
  hornguy6 e96b167041 [added] stat tracking to check if you orgasmed when you lost your virginity 6 mēneši atpakaļ
  anjuna krokus 12ec61c40d [fixed/changed] invert_color function in shortgs 6 mēneši atpakaļ
  anjuna krokus 123b82601b [changed] Significant simplification of int_to_hex_str and hex_str_to_int functions. Credits to Sword and Felix 6 mēneši atpakaļ
  anjuna krokus 2b36b16ee3 [fixed] Crash related to journal_npc_information 6 mēneši atpakaļ
  anjuna krokus 92280d4c8d Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  Vengeance_11 2be8fe7384 Nursing degree and related NPCs added to university 6 mēneši atpakaļ
  Kevin_Smarts d7b2e76440 [changed] Collated some Tanya variables and adjusted number of sex visits to unlock overnight stays and maid job offer 6 mēneši atpakaļ
  Kevin_Smarts 05d9dc4889 Merge remote-tracking branch 'Derryth_Love/master' 6 mēneši atpakaļ
  Derryth_Love 4f3cf041e4 [Fix] Invisible Pussy in Modeling Studio. 6 mēneši atpakaļ
  anjuna krokus 7e10bcf144 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  anjuna krokus 0192df10f5 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  anjuna krokus 4ef865c06c Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  Kevin_Smarts b6a1a64d18 [fixed] Abortion talk on wrong line so onlt showed if not first pregnancy 6 mēneši atpakaļ
  Kevin_Smarts 896b91db76 Merge remote-tracking branch 'Anjuna/master' 6 mēneši atpakaļ
  Kevin_Smarts 9a81b0dbfe [fixed] spelling error in image links 6 mēneši atpakaļ
  hornguy6 70428f9b1e [changed] reorganized the sister_chat file 6 mēneši atpakaļ
  hornguy6 cd2e088310 [added] The Graduate reference 6 mēneši atpakaļ
  hornguy6 0c094073c9 [fixed] prostituion 6 mēneši atpakaļ
  hornguy6 8f3048a9dc [changed] the fuck_cum thing 6 mēneši atpakaļ
  hornguy6 3de78a01dd [fixed] if statement should include no_condom guys 6 mēneši atpakaļ
  hornguy6 7d8fc9a85a [changed] updated the stat tracking 6 mēneši atpakaļ
  hornguy6 9d934fc915 [fixed] more of the undressing arg changes 6 mēneši atpakaļ
  hornguy6 eb9e9bacf5 [changed] boy now slightly less likely to pull you into his favorite position 6 mēneši atpakaļ
  hornguy6 b7154334fc [fixed] variable stuff 6 mēneši atpakaļ
  hornguy6 cdd78ff849 [added] WIP dialogue about your first creampie 6 mēneši atpakaļ
  hornguy6 e4329fbed7 [changed] text edits and stuff 6 mēneši atpakaļ
  hornguy6 0a4909ee5f [added] new conversation about starting birth control to abandon condoms 6 mēneši atpakaļ
  hornguy6 ce4a37b2c4 [changed] moved the undress arg out of foreplay and into start 6 mēneši atpakaļ
  hornguy6 6a8adf68ff [added] can wake up your sugar daddy for your sugar 6 mēneši atpakaļ
  hornguy6 fdefd0cff7 [fixed] prostitution, not prostituion 6 mēneši atpakaļ
  hornguy6 f81fcb21d1 [added] special dialogue if you lost your virginity to a guy 6 mēneši atpakaļ
  hornguy6 aef73d2aa1 [changed] should be able to say you prefer positions you didn't do it in now 6 mēneši atpakaļ
  hornguy6 76f9f35cf9 [added] can ask for your sugar money while preparing to leave 6 mēneši atpakaļ
  hornguy6 ad0a1f69e5 [fixed] changed if statement to make more sense 6 mēneši atpakaļ
  hornguy6 e8bd6f00cd [added] new creampie mechanics 6 mēneši atpakaļ
  hornguy6 8832429ffb [fixed] carrot facing wrong way :3 6 mēneši atpakaļ
  hornguy6 521b666a2b [fixed] some variable seeding 6 mēneši atpakaļ
  hornguy6 c098c1a5a7 [added] a wip conversation 6 mēneši atpakaļ
  hornguy6 3962eeb75b [changed] trying a new way of checking boy conversation topics 6 mēneši atpakaļ
  hornguy6 f91c291ec9 [fixed] calling wrong location 6 mēneši atpakaļ
  Kevin_Smarts 1ecb103e89 Merge remote-tracking branch 'Anjuna/master' 6 mēneši atpakaļ
  anjuna krokus 9f0ca864d8 [fixed] small fix to city residential gopniks not functioning correctly if you ran away first 6 mēneši atpakaļ
  Kevin_Smarts 9f9d334ca3 [added] Abortion talk with mother from BBZ01 6 mēneši atpakaļ
  anjuna krokus ecc2314898 [fixed] forgotten end in shortgs 6 mēneši atpakaļ
  anjuna krokus ec7f201d16 [added] invert color function to shortgs 6 mēneši atpakaļ
  anjuna krokus 308c62045d [added] mod support to sentence.qsrc to allow mods to create their own crimes 6 mēneši atpakaļ
  anjuna krokus fa73d5ef56 [fixed] Repeating arrests due to improper cleaning and moving of subjects and dates. 6 mēneši atpakaļ
  LinaHirata 925737548f [fixed] `DayStage` 6 and 1 using white `fcolor` 6 mēneši atpakaļ
  LinaHirata dbd13f0161 [fixed] kevin broke the game.... missing `end` in `natbel_chat` 6 mēneši atpakaļ
  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 mēneši atpakaļ
  anjuna krokus 295f287f49 [fixed] dot instead of komma. My bad 6 mēneši atpakaļ
  anjuna krokus c642619c98 [fixed] mods working in the sleep cycle. Update to how mods check for being in the cycle. 6 mēneši atpakaļ
  anjuna krokus 89fbc756ec [fixed] forgotten clearing of $sleep_loc in 'sleep_simple' and fixed the problematic file wide $sleep_loc 6 mēneši atpakaļ
  anjuna krokus 5d8aded6e1 [added] Link explaining the doy function 6 mēneši atpakaļ
  Kevin_Smarts f5a2c13082 Merge branch 'master' of https://git.tfgames.site/anjuna/Girl-Life-Anjuna 6 mēneši atpakaļ
  Kevin_Smarts a1c69f746d Merge remote-tracking branch 'Hornguy6/master' 6 mēneši atpakaļ
  anjuna krokus 06722c6c96 [fixed] Error in nichServantSleepEvents_handler in the pre_sleep_events location. 6 mēneši atpakaļ
  Kevin_Smarts 521eeba044 Merge remote-tracking branch 'Hooded_Silence/master' 6 mēneši atpakaļ
  hornguy6 05cfd39f0e [fixed] dead end missing call 6 mēneši atpakaļ
  hornguy6 337aab68cd [fixed] calling wrong file 6 mēneši atpakaļ
  Hooded Silence 1f535603b6 Fixed bracket time travel. 6 mēneši atpakaļ
  hornguy6 e23f1d9894 [fixed] hopefully can break up with sugar daddies correctly now 6 mēneši atpakaļ
  Kevin_Smarts 101fb7feed Merge remote-tracking branch 'Felix/master' 6 mēneši atpakaļ
  Kevin_Smarts f235a02908 Merge remote-tracking branch 'Hooded_Silence/master' 6 mēneši atpakaļ
  LinaHirata 11c4cab85e [revert] `gs 'npc', 'cleanarrays'` breaking change, what i assumed to be a typo probably wasnt one 3KEKW 6 mēneši atpakaļ
  LinaHirata 2b39d1f9f8 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  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 mēneši atpakaļ
  LinaHirata f3897d77be [fixed] Pyaterochka `Buy Ski` giving you skates instead 6 mēneši atpakaļ
  netuttki 34400998e6 Merge remote-tracking branch 'Kevin-upstream/master' 6 mēneši atpakaļ
  Kevin_Smarts b36613939b Merge remote-tracking branch 'Anjuna/master' 6 mēneši atpakaļ
  Kevin_Smarts 8338da6549 Merge remote-tracking branch 'Felix/master' 6 mēneši atpakaļ
  anjuna krokus e52a0b5fc1 [changed] renamed 'body', '' to 'body', 'Update_Body', nuked the persistent vhtmp variable, and further split up the DailyUpdate function. 6 mēneši atpakaļ
  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 mēneši atpakaļ
  LinaHirata 840a8ae776 [fixed] `cikl` generating `<br>`s and couple other minor fixes 6 mēneši atpakaļ
  LinaHirata e1395d2a68 [fixed] workaround for `pornstack` desyncing from `pfilmday` 6 mēneši atpakaļ
  netuttki 2bc757188d Moved "Can't do camshow" and "Can't watch porn" texts in the right place 6 mēneši atpakaļ
  netuttki cf2e94c553 Fixed gas station to display the shopping list properly. 6 mēneši atpakaļ
  netuttki 501dab068f Merge remote-tracking branch 'Kevin-upstream/master' 6 mēneši atpakaļ
  Kevin_Smarts a8a81ebb4e Merge remote-tracking branch 'Felix/master' 6 mēneši atpakaļ
  LinaHirata 8580d89937 [fixed] quick save/load buttons now also change their size according to icon height setting 6 mēneši atpakaļ
  anjuna krokus fbedb1dae4 [changed] simplified logic and added a comment 6 mēneši atpakaļ
  anjuna krokus 7ee03c719a [changed] minor change to increase readability since 55 < hration < 61 6 mēneši atpakaļ
  anjuna krokus bfb259ab2f [removed] useless code. My bad 6 mēneši atpakaļ
  anjuna krokus b5250770f6 [fixed] Forgotten label 6 mēneši atpakaļ
  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 mēneši atpakaļ
  LinaHirata 7a2b2a8bb3 [fixed] syntax error in `pushkin_ballet_class` 6 mēneši atpakaļ
  LinaHirata 0593bd1423 [fixed] loc name `Journal` (should be lower case) 6 mēneši atpakaļ
  LinaHirata 7bb124588c [fixed] syntax errors in `city_trashplace` 6 mēneši atpakaļ
  LinaHirata d23d0533ae [fixed] setting `stren_plus` via cheat menu now correctly updates appearance 6 mēneši atpakaļ
  Kevin_Smarts f2c0b3cef0 [removed] cleared most of the unused files as not required anymore 6 mēneši atpakaļ
  Kevin_Smarts 2be9807e0d Merge remote-tracking branch 'Awesome/master' 6 mēneši atpakaļ
  Kevin_Smarts 6358a2d95b Merge remote-tracking branch 'Felix/master' 6 mēneši atpakaļ
  Awesome 37db215357 [Fixed] City trashplace and pornstudio 6 mēneši atpakaļ
  LinaHirata d8021497f0 [purged] `$this` 6 mēneši atpakaļ
  anjuna krokus 2cd6856d69 [added] razors and tampons to Gad market 6 mēneši atpakaļ
  anjuna krokus b8148f13a1 [fixed][added] Fixed the library debt and added the option to pay it with your card. 6 mēneši atpakaļ
  anjuna krokus eac96984d4 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  Kevin_Smarts 4a9889e1ac Merge remote-tracking branch 'Netuttki/master' 6 mēneši atpakaļ
  Kevin_Smarts 148e8def2b Merge remote-tracking branch 'Awesome/master' 6 mēneši atpakaļ
  Kevin_Smarts 9f45889048 Merge remote-tracking branch 'Anya/master' 6 mēneši atpakaļ
  netuttki 8d59ce06b3 Merge remote-tracking branch 'Kevin-upstream/master' 6 mēneši atpakaļ
  netuttki 0797238803 Set the correct location type for the guest bedroom to make music work. 6 mēneši atpakaļ
  Vengeance_11 c116572d56 Proofreading and variable updates 6 mēneši atpakaļ
  Vengeance_11 c91bf731cf Fixed machine translation in trash place 6 mēneši atpakaļ
  Awesome eeaa157220 [fixed] missing boystat calls for Kolka 6 mēneši atpakaļ
  Anya 0bb7e8b9f5 [fixed] julia shower dead end 6 mēneši atpakaļ
  Anya 9020fe920c [fixed] more accurate tat count for Lina convo 6 mēneši atpakaļ
  anjuna krokus 859785fbb7 [added] option to set npc_preferences directly with numbers. Use this only if you know what you're doing 6 mēneši atpakaļ
  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 mēneši atpakaļ
  Kevin_Smarts 8e94f962c2 Merge remote-tracking branch 'Hornguy6/master' 6 mēneši atpakaļ
  netuttki 90215a3d92 Merge remote-tracking branch 'Kevin-upstream/master' 6 mēneši atpakaļ
  anjuna krokus 4f0e69f19a [fixed] a bug in npc_set_preference which prevented the entire system from working.... WOOPS... 6 mēneši atpakaļ
  hornguy6 00d76b17ab [added] [changed] [fixed] lots and lots of changes and additions that were made while waiting for feature lock to end :P 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 658df55402 [fixed] igorstrap is not a binary variable, and should not be checked as one. 6 mēneši atpakaļ
  Kevin_Smarts 2bb088a76f [text edit from anjuna 6 mēneši atpakaļ
  LinaHirata d55d9bba01 [fixed] journal, ballet section 6 mēneši atpakaļ
  LinaHirata dbb0fcc059 LSP hates `'string'+ +'string'` statements; i do to AngryFroge 6 mēneši atpakaļ
  LinaHirata 82785889e7 [added] manual call trace snippet 6 mēneši atpakaļ
  LinaHirata 4618c67ff6 [added] call trace, auto mode 6 mēneši atpakaļ
  LinaHirata ff552fea84 [fixed] redundant `result` and `killvar` in `hex to int` and `int to hex` funcs 6 mēneši atpakaļ
  LinaHirata 9e9798aa58 [changed] no longer sendind `steroid_dose` as an ARG since it isnt required anymore 6 mēneši atpakaļ
  LinaHirata 065b6e414f [changed] minor `exp_gain` refactor 6 mēneši atpakaļ
  LinaHirata 006490e285 [changed] made mirror routines dynamic 6 mēneši atpakaļ
  LinaHirata cefeb9379b [removed] redundant `photography_start = 1` check 6 mēneši atpakaļ
  LinaHirata 55d33ee355 [optimized] reduced var count in `notifications.qsrc` by 1 COGGERS 6 mēneši atpakaļ
  LinaHirata 21ef12d3a7 [added] provisions for `git_hash` build tagging and call trace 6 mēneši atpakaļ
  LinaHirata 02975fc574 [changes] minor cosmetic changes to `item_cart` 6 mēneši atpakaļ
  LinaHirata 46e9475df3 [fixed] `pcs_energy` and `pcs_hydra` checks in `hourly_events` 6 mēneši atpakaļ
  LinaHirata 43d199d816 [changed] training in gym now requires atleast 20 hunger 6 mēneši atpakaļ
  LinaHirata b8a7c42020 [fixed] assign $stat_day_suffix after the date change 6 mēneši atpakaļ
  LinaHirata 3887b4e900 [fixed] broken ballet doesnt compile 6 mēneši atpakaļ
  LinaHirata d13cf97658 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 6 mēneši atpakaļ
  Kevin_Smarts e6ff795e53 [fixed] Doc gives wrong price for herpes shots 6 mēneši atpakaļ
  LinaHirata 7dac581bfd [fixed] indent 6 mēneši atpakaļ
  Kevin_Smarts 13e5bd59b6 Merge remote-tracking branch 'Awesome/master' 6 mēneši atpakaļ
  Kevin_Smarts f7baa9fb06 Merge remote-tracking branch 'Hooded_Silence/master' 6 mēneši atpakaļ
  Kevin_Smarts 4d23b4ae6e [text edit] couple of missing spaces 6 mēneši atpakaļ
  Awesome f3e6925012 [Changed] New design for the alarm clock 6 mēneši atpakaļ
  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 mēneši atpakaļ
  Hooded Silence f7e20fe945 Optimisation: Cache date suffix into $stat_day_suffix in stat_display to reduce execution calls. 6 mēneši atpakaļ
  Kevin_Smarts 613b8bc17d [fixed] error spotted by analyser 6 mēneši atpakaļ
  Kevin_Smarts 4bab9aea74 Merge remote-tracking branch 'Derryth_Love/master' 6 mēneši atpakaļ
  Kevin_Smarts 248553ba27 Merge remote-tracking branch 'Awesome/master' 6 mēneši atpakaļ
  Kevin_Smarts a901a50da6 [added] Changelog update and version update in preperation for bug fix release 6 mēneši atpakaļ
  Derryth_Love e04bc4a99a [fix]The END my only Friend 6 mēneši atpakaļ
  Awesome 9358ec9bf7 [Fixed] Female sparring partners having male names 6 mēneši atpakaļ
  Kevin_Smarts dcd95ba19d [fixed] Mum chat could drop you in Pav Market even if it started in St Pete's 6 mēneši atpakaļ
  Kevin_Smarts c5fc754187 Merge remote-tracking branch 'Derryth_Love/master' 6 mēneši atpakaļ
  Derryth_Love 01a4602e8c [fix]Removed redundant ELSE 6 mēneši atpakaļ
  Kevin_Smarts 7203f05cc2 Merge remote-tracking branch 'Awesome/master' 6 mēneši atpakaļ
  Awesome e72a5710ac [fixed] Volleyball icon 6 mēneši atpakaļ
  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 mēneši atpakaļ
  Derryth_Love e9062dc69c [fix]Missing $ in $ARGS 6 mēneši atpakaļ
  Derryth_Love 923f6c5f1d [fix]syntax error 6 mēneši atpakaļ
  Derryth_Love 63fd076bb2 [fix]Meynold house not showing up after sveta is told she can visit whenever she wants. 6 mēneši atpakaļ
  Derryth_Love f6c396c4ac [fix]Added Meynold key to the kitchen, so it can be aquired when school is not in session. 6 mēneši atpakaļ
  Derryth_Love 2f444a7e82 [fix]You now can get an invite to Vicky's house during the summer after the beach scene. 6 mēneši atpakaļ
  Derryth_Love 5e10527187 [add]added text to advertisements on first floor 6 mēneši atpakaļ
  Derryth_Love d7e0101d8d [fix] Sveta walking out naked from the Studio no longer 6 mēneši atpakaļ
  Anya 29b3cccd03 [fixed] Christina caught one too many times 6 mēneši atpakaļ
  hornguy6 5db6987d05 [fixed] made asking for a creampie and getting panicked or angry mutually exclusive 6 mēneši atpakaļ
  hornguy6 b701cb7158 [fixed] WIP event was not blocked off 6 mēneši atpakaļ
  anjuna krokus b1c0526c8f [fixed] forgot to include the check for schoolgirl start w.r.t. vacation 6 mēneši atpakaļ
  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 mēneši atpakaļ
  anjuna krokus 83bed94bac [fixed] unnecessary sorting in cikl 6 mēneši atpakaļ
  anjuna krokus ed3276ca03 Revert "[fixed] prevent unnecessary sorting" 6 mēneši atpakaļ
  anjuna krokus 49702f8ec5 [fixed] prevent unnecessary sorting 6 mēneši atpakaļ
  anjuna krokus 14971c2776 [fixed] Actual Issues surrounding courtletter stuff 6 mēneši atpakaļ
  anjuna krokus d5056abddd Revert "[fixed] issues with the court system if you miss a courthearing repeatedly" 6 mēneši atpakaļ
  anjuna krokus 7198cd6fc8 [fixed] issues with the court system if you miss a courthearing repeatedly 6 mēneši atpakaļ
  LinaHirata 1c86514cd1 [fixed] computors availably in city library when its closed 6 mēneši atpakaļ
  LinaHirata f6c363d524 [fixed] city library no internet access; added restrictions 6 mēneši atpakaļ
  LinaHirata effe3bc14f [fixed] printing `dynamic` code instead of running it `3Head` 6 mēneši atpakaļ
  netuttki f5a003fda6 Merge remote-tracking branch 'Kevin-upstream/master' 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 6a06e9d114 Reverting changes 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 9db7c679e7 [added] A flle that should not have been removed. 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 79e472a391 Revert "[removed] Old unused file" 6 mēneši atpakaļ
  Awesome 3ece4e75ab [fixed] more npcs not using the custom name of sveta and some changes to camgirl arousal calls 6 mēneši atpakaļ
  Awesome 5802c6e4c0 [fixed] npcs calling sveta sveta instead of the custom name and some more nerfs for camgirl 6 mēneši atpakaļ
  Awesome a93022af3f [Fixed] nerfed camgirl stuff 6 mēneši atpakaļ
  bgkjdgbizgblzdgbr 86456d5996 [fixed] File removed from glife.qproj that should not have been removed. 6 mēneši atpakaļ
  Awesome 2f0b452f61 [fixed] forgot to add the .mp4 to the video link :Distressed: 6 mēneši atpakaļ
  Awesome be42807b36 [fixed] infinite mushroom/berry baskets 6 mēneši atpakaļ
100 mainītis faili ar 5586 papildinājumiem un 2271 dzēšanām
  1. 48 17
      MakeQSP.bat
  2. 25 1
      glife.qproj
  3. 19 20
      locations/AppearanceSystem.qsrc
  4. 51 44
      locations/Cheatmenu_din.qsrc
  5. 41 73
      locations/Club2.qsrc
  6. 12 7
      locations/Komp.qsrc
  7. 51 1
      locations/LOCA.qsrc
  8. 55 75
      locations/Peterroom.qsrc
  9. 8 8
      locations/UnitAppearance.qsrc
  10. 69 69
      locations/_attributes_danilovich_outfits.qsrc
  11. 1 1
      locations/_attributes_school.qsrc
  12. 55 24
      locations/_body_image.qsrc
  13. 68 38
      locations/alarmclock.qsrc
  14. 8 6
      locations/albina_chat.qsrc
  15. 87 42
      locations/anushapt.qsrc
  16. 286 55
      locations/anushka_konstantinov_schedule.qsrc
  17. 86 27
      locations/arkadi_fyodorov_schedule.qsrc
  18. 67 2
      locations/arousal.qsrc
  19. 24 21
      locations/artemhome.qsrc
  20. 3 0
      locations/ballet_global_evt.qsrc
  21. 97 0
      locations/ballet_npc.qsrc
  22. 74 0
      locations/ballet_secrets.qsrc
  23. 1 1
      locations/bank.qsrc
  24. 3 3
      locations/bed.qsrc
  25. 2 2
      locations/bed2.qsrc
  26. 2 4
      locations/bed_events.qsrc
  27. 2 3
      locations/bed_get_out.qsrc
  28. 2 4
      locations/bed_get_out_events.qsrc
  29. 7 5
      locations/bedrPar.qsrc
  30. 618 276
      locations/body.qsrc
  31. 142 139
      locations/body_desc.qsrc
  32. 1 2
      locations/booty_call.qsrc
  33. 601 342
      locations/booty_call_sms.qsrc
  34. 56 43
      locations/brothel.qsrc
  35. 4 0
      locations/brother2.qsrc
  36. 1 1
      locations/camera.qsrc
  37. 33 42
      locations/cikl.qsrc
  38. 9 8
      locations/city_apt_building.qsrc
  39. 2 2
      locations/city_center.qsrc
  40. 31 23
      locations/city_clinic.qsrc
  41. 3 5
      locations/city_coffee_hole.qsrc
  42. 135 0
      locations/city_experimental_trials.qsrc
  43. 615 0
      locations/city_experimental_trials_events.qsrc
  44. 512 0
      locations/city_experimental_trials_list.qsrc
  45. 25 0
      locations/city_experimental_trials_pharmacy.qsrc
  46. 17 8
      locations/city_library.qsrc
  47. 2 2
      locations/city_market.qsrc
  48. 3 3
      locations/city_redlight.qsrc
  49. 1 1
      locations/city_residential.qsrc
  50. 184 179
      locations/city_trashplace.qsrc
  51. 78 119
      locations/city_trashplaceevents.qsrc
  52. 3 5
      locations/clothing.qsrc
  53. 195 0
      locations/core_library.qsrc
  54. 20 1
      locations/counter.qsrc
  55. 0 2
      locations/courtletter.qsrc
  56. 5 5
      locations/dateM.qsrc
  57. 4 4
      locations/din_bad.qsrc
  58. 57 21
      locations/din_van.qsrc
  59. 2 4
      locations/dream_events.qsrc
  60. 1 0
      locations/drugs.qsrc
  61. 1 1
      locations/emp_functions.qsrc
  62. 8 8
      locations/exercise.qsrc
  63. 51 43
      locations/exp_gain.qsrc
  64. 281 16
      locations/fight.qsrc
  65. 10 11
      locations/fit.qsrc
  66. 38 11
      locations/food_menu.qsrc
  67. 4 3
      locations/foto.qsrc
  68. 1 1
      locations/foto_shoot.qsrc
  69. 2 2
      locations/gadforest_event.qsrc
  70. 1 1
      locations/gadhouse.qsrc
  71. 1 1
      locations/gadroad.qsrc
  72. 4 15
      locations/gas_station_gp_117.qsrc
  73. 2 0
      locations/gdksport.qsrc
  74. 1 1
      locations/gopnew.qsrc
  75. 1 1
      locations/grandpahelp.qsrc
  76. 1 1
      locations/gschool_boys_bathroom.qsrc
  77. 2 2
      locations/gschool_cheerleading.qsrc
  78. 7 6
      locations/gschool_events.qsrc
  79. 6 8
      locations/gschool_groups.qsrc
  80. 1 1
      locations/gschool_jock_chats.qsrc
  81. 3 6
      locations/gschool_post_shower.qsrc
  82. 1 1
      locations/gschool_socialchg1.qsrc
  83. 2 2
      locations/hourly_events.qsrc
  84. 1 1
      locations/hunterLoveSex.qsrc
  85. 1 1
      locations/igorhome.qsrc
  86. 0 1
      locations/initg.qsrc
  87. 79 63
      locations/intro_city_select.qsrc
  88. 103 49
      locations/intro_customization.qsrc
  89. 2 2
      locations/intro_initialization.qsrc
  90. 1 1
      locations/intro_initialization_city.qsrc
  91. 112 96
      locations/intro_sg_select.qsrc
  92. 43 42
      locations/intro_sg_select_custom.qsrc
  93. 3 2
      locations/intro_sg_tg.qsrc
  94. 36 60
      locations/item_cart.qsrc
  95. 19 0
      locations/item_stock_db.qsrc
  96. 54 7
      locations/journal.qsrc
  97. 40 3
      locations/journal_NPC_information.qsrc
  98. 35 10
      locations/journal_quests.qsrc
  99. 1 1
      locations/journal_school.qsrc
  100. 13 0
      locations/journal_uni.qsrc

+ 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\Parser\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)alidate (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

+ 25 - 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"/>
@@ -329,6 +330,7 @@
 		<Location name="kompMFCanal"/>
 		<Location name="kompMFCoral"/>
 		<Location name="komp_HF_or_not"/>
+		<Location name="komp_assbook"/>
 		<Location name="mirror"/>
 		<Location name="stol"/>
 		<Location name="kit_din"/>
@@ -488,6 +490,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 +958,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 +1356,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>

+ 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
 

+ 51 - 44
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>'
@@ -2149,9 +2156,9 @@ $cheatmenu['display'] = {
 	end
 	*nl
 	if loadg_show_debug = 0:
-		'Show Debug window on save load: Currently OFF - <a href="exec:loadg_show_debug = 1 & showobjs 1 & dynamic $cheatmenu[''display'']">Turn ON</a>'
+		'Show Debug window on save load: Currently OFF - <a href="exec:loadg_show_debug = 1 & debug_warning_closed = 1 & showobjs 1 & dynamic $cheatmenu[''display'']">Turn ON</a>'
 	else
-		'Show Debug window on save load: Currently ON - <a href="exec:loadg_show_debug = 0 & showobjs 0 & dynamic $cheatmenu[''display'']">Turn OFF</a>'
+		'Show Debug window on save load: Currently ON - <a href="exec:loadg_show_debug = 0 & debug_warning_closed = 1 & showobjs 0 & dynamic $cheatmenu[''display'']">Turn OFF</a>'
 	end
 	'</tr></table></b></center>'
 }

+ 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 ---------------------------------

+ 12 - 7
locations/Komp.qsrc

@@ -56,9 +56,7 @@ if $ARGS[0] = 'browse':
 	gs 'stat'
 	menu_off = 0
 	
-	act 'Close the browser':
-		gt 'komp','start'
-	end
+	act 'Close the browser': gt 'komp','start'
 	
 	!! TODO: Update
 	!! check if the original account still valid?
@@ -82,7 +80,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'
@@ -99,13 +102,15 @@ if $ARGS[0] = 'browse':
 
 		act 'Search for cable TV services (1:00)': gt 'komp', 'kabtv'
 		act 'Play an online game': gt 'KGstart'
+		act 'Check social media on Assbook': gt 'komp_assbook', 'main'
+		if shantfoto > 0: act 'Find the girl you took photos of in the park': gt 'komp_assbook', 'blackmail'
+
 		if fuckornot = 3: act 'Visit ''Fuckable or not'' site': $view_location = 'komp' & gt 'komp_HF_or_not', 'fuckornot'
 		if hotornot >= 2: act 'Visit ''Hot or not'' site': $view_location = 'komp' & gt 'komp_HF_or_not', 'hotornot'
-!!new code make sure it will work please
+
 		if fuckornot_uni = 1: act 'Visit ''Fuckable or not'' University site': $view_location = 'komp' & gt 'komp_HF_or_not', 'fuckornot_uni'
 		if hotornot_uni = 1: act 'Visit ''Hot or not'' University site': $view_location = 'komp' & gt 'komp_HF_or_not', 'hotornot_uni'
 		!!if bankAccount > 0: act 'Visit your bank, maybe to purchase more online time': gt 'komp', 'bank'
-		if shantfoto > 0: act 'Find the girl you took photos of in the park on "Assbook"': gt 'komp', 'foto'
 		if gor_dorm = 7: act 'Read letter from Eugene': gt 'etoexhib', 'pos91'
 		if camwhore = 1 and access['nocamshow'] = 0 and mc_inventory['tech_webcam'] = 1: act 'Go to MyFreeCams.org': gt 'komp_camgirl', 'start'
 		if (mid($start_type,1,2) = 'sg' and SchoolAtestat = 0) or func('uniutil', 'student', 'enrolled'): act 'Spend time studying': gt 'komp', 'study'
@@ -114,7 +119,7 @@ if $ARGS[0] = 'browse':
 end
 
 if $ARGS[0] = 'sale':
-	*clr & cla	
+	*clr & cla
 	!! TODO: Update time and internet
 	
 	!! IMPORTANT: What happens if an activity takes more time than the minutes Sveta has? We just say "You tried, but could not finish"?

+ 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 ---------------------------------
 

+ 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>>'

+ 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:

+ 55 - 24
locations/_body_image.qsrc

@@ -3,34 +3,65 @@
 !for example, you can   VIEW FUNC('$body_image', 'body')   to view body image in popup window, and
 !pl $body_image_msg     to display extra texts
 
+!{
+if $ARGS[0] = 'BMI':
+	!!BMI Descriptions
+	if pcs_bmi < 16:
+		$bmi_desc = 'You are severely underweight.'
+	elseif pcs_bmi < 19:
+		$bmi_desc = 'You are underweight'
+	elseif pcs_bmi < 25:
+		$bmi_desc = 'You have a normal, healthy weight.'
+	elseif pcs_bmi < 30:
+		$bmi_desc = 'You are overweight.'
+	elseif pcs_bmi < 35:
+		$bmi_desc = 'You are moderately obese.'
+	elseif pcs_bmi < 40:
+		$bmi_desc = 'You are severely obese.'
+	elseif pcs_bmi < 45:
+		$bmi_desc = 'You are very severely obese.'
+	else
+		$bmi_desc = 'You are morbidly obese.'
+	end
+end
+}
+
 $body_image_msg = ''
 if $ARGS[0] = 'body':
 !!	This displays the body image; $bodimgsets[x9] is the folder name
 	if (knowpreg = 1 or (preg = 1 and thinkpreg = 1) or (preg = 1 and PregChem > 3600)) and bodset = 3:
-                if PregChem > 6216:
-                        $RESULT = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10)+9)]>>/8.jpg'
-                elseif PregChem < 2688:
-                        $RESULT = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10)+9)]>>/0.jpg'
-                else
-                        $RESULT = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10)+9)]>>/<<((PregChem - 2184)/504)>>.jpg'
-                end
-        elseif salocatnow >= 1 and salocatnow <= 5:
-                $RESULT = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/<<salocatnow>>.jpg'
-        elseif salocatnow <= 0:
-                $RESULT = 'images/pc/body/shape/0.jpg'
-        elseif salocatnow = 6:
-                if imgset6ovr[bodset] = 1:
-                        $RESULT = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/6.jpg'
-                else
-                        $RESULT = 'images/pc/body/shape/6.jpg'
-                end
-        else
-                if imgset7ovr[bodset] = 1:
-                        $RESULT = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/7.jpg'
-                else
-                        $RESULT = 'images/pc/body/shape/7.jpg'
-                end
-        end
+		if PregChem > 6216:
+			$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10)+9)]>>/8.jpg'
+		elseif PregChem < 2688:
+			$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10)+9)]>>/0.jpg'
+		else
+			$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10)+9)]>>/<<((PregChem - 2184)/504)>>.jpg'
+		end
+	elseif pcs_bmi < 15 or (pcs_bmi = 15 and pcs_bmi[1] <= 1):
+		$result = 'images/pc/body/shape/0.jpg'
+	elseif pcs_bmi < 19 or (pcs_bmi = 19 and pcs_bmi[1] = 0):
+		$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/1.jpg'
+	elseif pcs_bmi < 22 or (pcs_bmi = 22 and pcs_bmi[1] < 5):
+		$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/2.jpg'
+	elseif pcs_bmi < 26:
+		$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/3.jpg'
+	elseif pcs_bmi < 29 or (pcs_bmi = 29 and pcs_bmi[1] < 5):
+		$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/4.jpg'
+	elseif pcs_bmi < 32 or (pcs_bmi = 32 and pcs_bmi[1] < 9):
+		$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/5.jpg'
+	elseif pcs_bmi < 36 or (pcs_bmi = 36 and pcs_bmi[1] < 4):
+		if imgset6ovr[bodset] = 1:
+			$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/6.jpg'
+		else
+			$result = 'images/pc/body/shape/6.jpg'
+		end
+	else
+		if imgset7ovr[bodset] = 1:
+			$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/7.jpg'
+		else
+			$result = 'images/pc/body/shape/7.jpg'
+		end
+	end
 	$body_image_msg += 'You are <<pcs_hgt>>cm tall and <<$body>>'
 end
 

+ 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 ---------------------------------

+ 8 - 6
locations/albina_chat.qsrc

@@ -31,16 +31,18 @@ if $ARGS[0] = 'small_talk2':
 		
 	else
 		!! Albina takes the lead
-		AlbinaQW['chat_rand'] = rand(1,2)
+		AlbinaQW['chat_rand'] = rand(1,3)
 		if AlbinaQW['chat_rand'] = 1:
 			gs 'albina_chat','job_talk1'
 		elseif AlbinaQW['chat_rand'] = 2:
-			if AlbinaQW['commando_know'] = 0:
+		!!	if AlbinaQW['commando_know'] = 0:
 				gs 'albina_chat','underwear_talk'
-			else
-				gs 'albina_chat','commando_talk'
-			end
-		elseif AlbinaQW['chat_rand'] = 3:
+		!!	else
+		!!		gs 'albina_chat','commando_talk'
+		!!	end
+		elseif AlbinaQW['chat_rand'] = 3 and $AlbinaQW['porn_talk'] ! '':
+			gs 'albina_chat2','recurrent_porn_talk1'
+		elseif AlbinaQW['chat_rand'] = 4:
 			gs 'albina_chat','pube_talk2'
 		else
 	!!		'Which girl do you think is the best dressed in our class?'

+ 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'

+ 24 - 21
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
@@ -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
 

+ 2 - 2
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,10 +25,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 = 'bed2' and $ARGS[0] = 'mod_sleeptriggers'
+	!! Either check for: if $ARGS[0] = 'bed2' and $ARGS[1] = 'mod_sleeptriggers'
 	!!
 	!! This is NOT for events!!
 
+	gs 'LOCA', 'bed2', 'mod_sleeptriggers'
 	gt 'bed2', 'main'
 end
 

+ 2 - 4
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'

+ 2 - 3
locations/bed_get_out.qsrc

@@ -1,5 +1,4 @@
 # bed_get_out
-$sleep_loc = 'bed_get_out'
 
 
 if $ARGS[0] = 'start' or $ARGS[0] = '':
@@ -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'

+ 2 - 4
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
@@ -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'

+ 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

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 618 - 276
locations/body.qsrc


+ 142 - 139
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:
@@ -882,10 +881,13 @@ if $ARGS[0] = 'pubes':
 				$pube_style['shape'] = 'bush'
 				$pcs_pubes = 'You have neatly trimmed section of hair around your <a href="exec:view''<<FUNC(''$pube_image'')>>''">pussy</a>. <<$pirspiz>><br><<$clitsize>>'
 			elseif pubestyle = 12:
+				$pube_style['word'] = 'patch'
 				$pcs_pubes = 'You have cute little patch of bush at the top of your <a href="exec:view''<<FUNC(''$pube_image'')>>''">pussy</a>. <<$pirspiz>><br><<$clitsize>>'
 			elseif pubestyle = 13:
+				$pube_style['shape'] = 'strip'
 				$pcs_pubes = 'You have tidy strip of bush covering your <a href="exec:view''<<FUNC(''$pube_image'')>>''">pussy</a>. <<$pirspiz>><br><<$clitsize>>'
 			elseif pubestyle = 14:
+				$pube_style['shape'] = 'rectangle'
 				$pcs_pubes = 'You have neatly trimmed rectangle of hair just above your <a href="exec:view''<<FUNC(''$pube_image'')>>''">pussy</a>. <<$pirspiz>><br><<$clitsize>>'
 			else
 				if pubestyle = 2:
@@ -895,7 +897,7 @@ if $ARGS[0] = 'pubes':
 					$pube_style['shape'] = 'triangle'
 					$pcs_pubes = 'You have a cleanly trimmed mat of pubic hair in the <a href="exec:view''<<FUNC(''$pube_image'')>>''">shape of a triangle</a>. <<$pirspiz>><br><<$clitsize>>'
 				elseif pubestyle = 4:
-					$pube_style['shape'] = 'landing_strip'
+					$pube_style['shape'] = 'landing strip'
 					$pcs_pubes = 'You have a cleanly trimmed <a href="exec:view''<<FUNC(''$pube_image'')>>''">landing strip</a> between your legs. <<$pirspiz>><br><<$clitsize>>'
 				elseif pubestyle = 5:
 					$pube_style['shape'] = 'heart'
@@ -907,26 +909,27 @@ if $ARGS[0] = 'pubes':
 					$pube_style['shape'] = 'cross'
 					$pcs_pubes = 'You have a cleanly trimmed mat of pubic hair in the <a href="exec:view''<<FUNC(''$pube_image'')>>''">shape of a cross</a>. <<$pirspiz>><br><<$clitsize>>'
 				elseif pubestyle = 8:
+					$pube_style['shape'] = 'bush'
 					$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 +982,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 +1036,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 +1064,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 +1075,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 +1083,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 +1130,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 +1242,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 +1262,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

+ 1 - 2
locations/booty_call.qsrc

@@ -93,7 +93,6 @@ if $ARGS[0] = 'SMS raiser':
 	if i < arrsize('$FuckBuddy'):
 		if booty_call_time[$FuckBuddy[i]] < ((hour * 60) + minut) and npc_no_booty_call[$FuckBuddy[i]] ! daystart and npc_last_booty_call[$FuckBuddy[i]] ! daystart:
 			gs 'booty_call_sms', 'start', $FuckBuddy[i]
-			gs 'booty_call_sms', 'Add SMS', $FuckBuddy[i]
 			booty_call_time[$FuckBuddy[i]] = 2399
 			!! this is a bit superfluous, but it makes the code run faster.
 			booty_call_invite[$FuckBuddy[i]] = daystart
@@ -466,7 +465,7 @@ if $ARGS[0] = 'draw':
 	if booty_call['A0'] ! daystart :
 		$lover_drawn = $fuckbuddy[rand(0,arrsize('$fuckbuddy')-1)]
 		gs 'booty_call_sms', 'start',$lover_drawn
-		gs 'booty_call_sms', 'Add SMS', $lover_drawn
+!		gs 'booty_call_sms', 'Add SMS', $lover_drawn
 		booty_call['A0'] = daystart
 	end
 end

+ 601 - 342
locations/booty_call_sms.qsrc

@@ -1,415 +1,674 @@
 # booty_call_sms
 
-$SMSFrM = '<table width=80%><tr><td collspan=2 bgcolor="#D4CEF9"><font color=black> '
-$SMSBkM = '</font></td><td width=10%></td></tr></table>'
-$SMSFrF = '<table width=80%><tr><td width=10%></td><td collspan=2 bgcolor=pink><font color=black>'
-$SMSBkF = '</font></td></tr></table>'
+!!=====   Layout stuff   =====================================================================================!!
+!! Open and close receiving text
+$SMS_open_receiving = '<table width=80%><tr><td collspan=2 bgcolor="#D4CEF9"><font color=black>'
+$SMS_close_receiving = '</font></td><td width=10%></td></tr></table>'
+
+!! Open and close sending text
+$SMS_open_sending = '<table width=80%><tr><td width=10%></td><td collspan=2 bgcolor=pink><font color=black>'
+$SMS_close_sending = '</font></td></tr></table>'
+
+!! Start reply
+$SMS_open_replies = '<table><tr><th> Reply</th></tr><tr><td>'
+$SMS_next_reply = '</td></tr><tr><td>'
+$SMS_close_replies = '</td></tr></table>'
+!!=====   END Layout stuff   =====================================================================================!!
+
+
+
+
+!!=====   Reply example here =================================================================================!!
+
+!!  $temp_SMStext += $SMS_open_replies
+!!  	$temp_SMStext += '<a href="exec: gs ''>>Name of the location<<'', ''>>Name of the SMS Branch<<'', ''>>Name of the Choice<<'', telefon[''SMSid'']">' + 'TEXT' + '</a>'
+!!  	$temp_SMStext += $SMS_next_reply
+!!  	$temp_SMStext += '<a href="exec: gs ''>>Name of the location<<'', ''>>Name of the SMS Branch<<'', ''>>Name of the Choice<<'', telefon[''SMSid'']">' + 'TEXT' + '</a>'
+!!  	....
+!!  $temp_SMStext += $SMS_close_replies
+
+!!=====   END Reply example here =================================================================================!!
+
+
+!!=====   Adding Images to SMS ===============================================================================!!
+
+!!    You can add images at the end by manually setting:
+!!    $SMSPicture1[telefon['SMSid']] = Path to picture 1
+!!    $SMSPicture2[telefon['SMSid']] = Path to picture 2
+!!    $SMSPicture3[telefon['SMSid']] = Path to picture 3
+!!    $SMSPicture4[telefon['SMSid']] = Path to picture 4
+
+! You can also always add a picture to the text, scaling is an issue though
+
+
+!!=====   END Adding Images to SMS ===============================================================================!!
+
+
+
 
 if $ARGS[0] = 'start':
-	$booty_call_daily_id[i] = $FuckBuddy[i]
-!!	if npc_booty_call[$ARGS[1]] = daystart:
-!!		gs 'booty_call_sms', 'pre_planned_booty_call', $FuckBuddy[i]
-!!	elseif sugar_daddy_call[$FuckBuddy[i]] = 1:
-	if sugar_daddy_call[$FuckBuddy[i]] = 1:
-		gs 'booty_call_sms', 'sugar_daddy_booty_call', $FuckBuddy[i]
-	elseif npc_std_test[$FuckBuddy[i]] = 1:
-		gs 'booty_call_sms', 'std_free', $FuckBuddy[i]
-!!	elseif npc_booty_call[$FuckBuddy[i]] = daystart:
-!!		gs 'booty_call_sms', 'pre_planned_booty_call', $FuckBuddy[i]
+	$booty_call_daily_id[i] = $ARGS[1]
+
+	if npc_booty_call[$ARGS[1]] = daystart:
+		gs 'booty_call_sms', 'Add SMS2', 'pre_planned_booty_call', $ARGS[1]
+	elseif sugar_daddy_call[$ARGS[1]] = 1:
+		gs 'booty_call_sms', 'Add SMS', 'sugar_daddy_booty_call', $ARGS[1]
+	elseif npc_std_test[$ARGS[1]] = 1:
+		gs 'booty_call_sms', 'Add SMS', 'std_free', $ARGS[1]
 	else
-		gs 'booty_call_sms', 'default_booty_call', $FuckBuddy[i]
+		gs 'booty_call_sms', 'Add SMS', 'default_booty_call', $ARGS[1]
 	end
 end
 
-if $ARGS[0] = 'default_booty_call':	
+if $ARGS[0] = 'default_booty_call':
 	!! boy
-	$VM['0'] = dyneval('$result=''hey <<$pcs_nickname>>'' ')
-	
-	!! player
-	$VF[$ARGS[1]+'0'] = dyneval('$result=''hey <<$npc_nickname[$ARGS[1]]>>'' ')
-	
-	!! boy
-	$VM['1'] = 'ive been thinking about you'
-	
-	!! player response 1 option 1
-	$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:
-		$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:
-			$VM['2a'] = 'your mouth around my cock'
-		elseif npc_know_virgin[$ARGS[1]] ! 1:
-			if $npc_cum_pref[$ARGS[1]] = 'creampie' and (npc_condom_conscious[$ARGS[1]] = 0 or npc_bareback[$ARGS[1]] = 1) and rand(0,2) = 1:
-				$VM['2a'] = 'your pussy filled with my cum'
-			elseif npc_sex_speed[$ARGS[1]] = 3 and rand(0,2) = 1:
-				$VM['2a'] = 'fucking you bowlegged'
-			elseif $npc_cum_pref[$ARGS[1]] = 'facial' and rand(0,2) = 1:
-				$VM['2a'] = 'your pretty face covered in my cum'
-			elseif $npc_cum_pref[$ARGS[1]] = 'mouth' and rand(0,2) = 1:
-				$VM['2a'] = 'watching you swallow my cum'
-			elseif $npc_cum_pref[$ARGS[1]] = 'tits' and rand(0,2) = 1:
-				$VM['2a'] = 'my cum all over your tits'
-			elseif $npc_fav_pos[$ARGS[1]] = 'doggy' and rand(0,2) = 1:
-				$VM['2a'] = 'pounding you on all fours'
-			elseif $npc_fav_pos[$ARGS[1]] = 'cowgirl' and rand(0,2) = 1:
-				$VM['2a'] = 'you riding my cock like crazy'			
-			else
-				if rand(0,1) = 1:
-					$VM['2a'] = 'you naked on my bed'
-				else
-					$VM['2a'] = 'want to come over and have some fun?'
-				end
-			end
-		end
-	end
-	
-	!! player response 1 option 2
-	$VF['1b'] = 'me too'
+	$SMSTree['0'] = dyneval('$result=''hey <<$pcs_nickname>>'' ')
+
+		!! player
+		$SMSTree['1'] = dyneval('$result=''hey <<$npc_nickname[$ARGS[1]]>>'' ')
+
+			!! boy
+			$SMSTree['2'] = 'ive been thinking about you'
+
+				!! player response 1 option 1
+				$SMSTree['a3'] = 'what were you thinking about?'
 	
-	!! 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:
-		$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:
-			$VM['2a'] = 'i want to feel your mouth around my cock'
-		elseif npc_know_virgin[$ARGS[1]] ! 1:
-			if $npc_cum_pref[$ARGS[1]] = 'creampie' and (npc_condom_conscious[$ARGS[1]] = 0 or npc_bareback[$ARGS[1]] = 1) and rand(0,2) = 1:
-				$VM['2a'] = 'i want to pump you full of cum'
-			elseif npc_sex_speed[$ARGS[1]] = 3 and rand(0,2) = 1:
-				$VM['2b'] = 'come over i want to hear you screaming my name'
-			elseif $npc_cum_pref[$ARGS[1]] = 'facial' and rand(0,2) = 1:
-				$VM['2a'] = 'i want to cum all over your face'
-			elseif $npc_cum_pref[$ARGS[1]] = 'mouth' and rand(0,2) = 1:
-				$VM['2a'] = 'i want to watch you swallow my cum'
-			elseif $npc_cum_pref[$ARGS[1]] = 'tits' and rand(0,2) = 1:
-				$VM['2a'] = 'let me glaze your tits with my cum'
-			elseif $npc_fav_pos[$ARGS[1]] = 'doggy' and rand(0,2) = 1:
-				$VM['2a'] = 'i want to pound you on all fours'
-			elseif $npc_fav_pos[$ARGS[1]] = 'cowgirl' and rand(0,2) = 1:
-				$VM['2a'] = 'i want you to ride my cock like theres no tomorrow'			
+					!! boy response 1
+					if npc_finance[$ARGS[1]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[1]] >= 3:
+						$SMSTree['a4'] = '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:
+							$SMSTree['a4'] = 'your mouth around my cock'
+						elseif npc_know_virgin[$ARGS[1]] ! 1:
+							if $npc_cum_pref[$ARGS[1]] = 'creampie' and (npc_condom_conscious[$ARGS[1]] = 0 or npc_bareback[$ARGS[1]] = 1) and rand(0,2) = 1:
+								$SMSTree['a4'] = 'your pussy filled with my cum'
+							elseif npc_sex_speed[$ARGS[1]] = 3 and rand(0,2) = 1:
+								$SMSTree['a4'] = 'fucking you bowlegged'
+							elseif $npc_cum_pref[$ARGS[1]] = 'facial' and rand(0,2) = 1:
+								$SMSTree['a4'] = 'your pretty face covered in my cum'
+							elseif $npc_cum_pref[$ARGS[1]] = 'mouth' and rand(0,2) = 1:
+								$SMSTree['a4'] = 'watching you swallow my cum'
+							elseif $npc_cum_pref[$ARGS[1]] = 'tits' and rand(0,2) = 1:
+								$SMSTree['a4'] = 'my cum all over your tits'
+							elseif $npc_fav_pos[$ARGS[1]] = 'doggy' and rand(0,2) = 1:
+								$SMSTree['a4'] = 'pounding you on all fours'
+							elseif $npc_fav_pos[$ARGS[1]] = 'cowgirl' and rand(0,2) = 1:
+								$SMSTree['a4'] = 'you riding my cock like crazy'
+							else
+								if rand(0,1) = 1:
+									$SMSTree['a4'] = 'you naked on my bed'
+								else
+									$SMSTree['a4'] = 'want to come over and have some fun?'
+								end
+							end
+						end
+					end
+
+				!! player response 1 option 2
+				$SMSTree['b3'] = 'me too'
+
+					!! boy response 2
+					if npc_finance[$ARGS[1]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[1]] >= 3: 
+						$SMSTree['b4'] = '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:
+							$SMSTree['b4'] = 'i want to feel your mouth around my cock'
+						elseif npc_know_virgin[$ARGS[1]] ! 1:
+							if $npc_cum_pref[$ARGS[1]] = 'creampie' and (npc_condom_conscious[$ARGS[1]] = 0 or npc_bareback[$ARGS[1]] = 1) and rand(0,2) = 1:
+								$SMSTree['b4'] = 'i want to pump you full of cum'
+							elseif npc_sex_speed[$ARGS[1]] = 3 and rand(0,2) = 1:
+								$SMSTree['b4'] = 'come over i want to hear you screaming my name'
+							elseif $npc_cum_pref[$ARGS[1]] = 'facial' and rand(0,2) = 1:
+								$SMSTree['b4'] = 'i want to cum all over your face'
+							elseif $npc_cum_pref[$ARGS[1]] = 'mouth' and rand(0,2) = 1:
+								$SMSTree['b4'] = 'i want to watch you swallow my cum'
+							elseif $npc_cum_pref[$ARGS[1]] = 'tits' and rand(0,2) = 1:
+								$SMSTree['b4'] = 'let me glaze your tits with my cum'
+							elseif $npc_fav_pos[$ARGS[1]] = 'doggy' and rand(0,2) = 1:
+								$SMSTree['b4'] = 'i want to pound you on all fours'
+							elseif $npc_fav_pos[$ARGS[1]] = 'cowgirl' and rand(0,2) = 1:
+								$SMSTree['b4'] = 'i want you to ride my cock like theres no tomorrow'
+							else
+								if rand(0,1) = 1:
+									$SMSTree['b4'] = 'lets fuck like bunnies today'
+								else
+									$SMSTree['b4'] = 'come over lets have some fun today'
+								end
+							end
+						end
+					end
+
+						!! player response 2 option 1
+						if hour < 21:
+							$SMSTree['aa5'] = 'sorry, i cant. i have stuff to do'
+							$SMSTree['ba5'] = $SMSTree['aa5']
+						else
+							$SMSTree['aa5'] = 'its late. text me sooner if you want me to come over.'
+							$SMSTree['ba5'] = $SMSTree['aa5']
+						end
+
+							!! boy response 2 option 1
+							$SMSTree['aa6'] = 'shit, maybe next time then'
+							$SMSTree['ba6'] = $SMSTree['aa6']
+
+
+						!! player response 2 option 2
+						$SMSTree['ab5'] = 'ill come right now ;)'
+						$SMSTree['bb5'] = $SMSTree['ab5']
+
+							!! boy response 2 option 2
+							if npc_humor[$ARGS[1]] <= 1 and rand(0,1) = 1:
+								$SMSTRee['ab6'] = 'im already hard'
+								$SMSTree['bb6'] = $SMSTree['ab6']
+							elseif npc_humor[$ARGS[1]] = 2 and rand(0,1) = 1:
+								if rand(0,1) = 1:
+									$SMSTRee['ab6'] = 'in the street?? damn! keep it in your pants till you get here!'
+									$SMSTree['bb6'] = $SMSTree['ab6']
+								else
+									$SMSTRee['ab6'] = 'as long as you make me cum later'
+									$SMSTree['bb6'] = $SMSTree['ab6']
+								end
+							elseif npc_humor[$ARGS[1]] = 3 and rand(0,1) = 1:
+								$SMSTRee['ab6'] = 'phrasing'
+								$SMSTree['bb6'] = $SMSTree['a66']
+							else
+								$SMSTRee['ab6'] = 'cant wait'
+								$SMSTree['bb6'] = $SMSTree['ab6']
+							end
+end
+
+
+if $ARGS[0] = 'pre_planned_booty_call':
+	! boy
+	$SMSTree['0'] = dyneval('$result=''hey <<$pcs_nickname>>, you coming over?'' ')
+
+		! player choice 1 option 1
+		$SMSTree['a1'] = 'sorry, something came up'
+
+		! player choice 1 option 2
+		$SMSTree['b1'] = 'on my way now'
+
+			! boy
+			temp_rand = rand(0, 2)
+			if temp_rand = 0:
+				$SMSTree['b2'] = 'come over to my place lets fuck like bunnies'
+			elseif temp_rand = 1:
+				$SMSTree['b2'] = 'come over to my place i want to hear you screaming my name'
 			else
-				if rand(0,1) = 1:
-					$VM['2b'] = 'lets fuck like bunnies today'
-				else
-					$VM['2b'] = 'come over lets have some fun today'
-				end
+				$SMSTree['b2'] = 'come over to my place lets have some fun today'
 			end
-		end
-	end
-	
-	!! player response 2 option 1
-	if hour < 21:
-		$VF['2a'] = 'sorry, i cant. i have stuff to do'
-	else
-		$VF['2a'] = 'its late. text me sooner if you want me to come over.'
-	end
-	
-	!! boy response 2 option 1
-	$VM['3a'] = 'shit, maybe next time then'
-	
-	!! player response 2 option 2
-	$VF['2b'] = 'ill come right now ;)'
-	
-	!! boy response 2 option 2
-	if npc_humor[$ARGS[1]] <= 1 and rand(0,1) = 1:
-		$VM['3b'] = 'im already hard'
-	elseif npc_humor[$ARGS[1]] = 2 and rand(0,1) = 1:
-		if rand(0,1) = 1:
-			$VM['3b'] = 'in the street?? damn! keep it in your pants till you get here!'
-		else
-			$VM['3b'] = 'as long as you make me cum later'
-		end
-	elseif npc_humor[$ARGS[1]] = 3 and rand(0,1) = 1:
-		$VM['3b'] = 'phrasing'
-	else
-		$VM['3b'] = 'cant wait'
-	end
-end
+			killvar 'temp_rand'
 
-if $ARGS[0] = 'pre_planned_booty_call':	
-	$VM['0'] = dyneval('$result=''hey <<$pcs_nickname>>, you coming over?'' ')
+				! player choice 2 option 1
+				$SMSTree['ba3'] = 'sorry, i cant. i have stuff to do'
 
-	$VF['1a'] = 'sorry, something came up'
-	$VF['1b'] = 'on my way now'
+					! boy
+					$SMSTree['ba4'] = 'shit, maybe next time then'
 
-	if rand(0,2) = 0:
-		$VM['2b'] = 'come over to my place lets fuck like bunnies'
-	else
-		if rand(0,1) = 0:
-			$VM['2b'] = 'come over to my place i want to hear you screaming my name'
-		else
-			$VM['2b'] = 'come over to my place lets have some fun today'
-		end
-	end
 
-	$VF['2a'] = 'sorry, i cant. i have stuff to do'
-	$VM['3a'] = 'shit, maybe next time then'
-
-	$VF['2b'] = 'ill come right now ;)'
-	if npc_humor[$ARGS[1]] <= 1:
-		$VM['3b'] = 'im already hard'
-	elseif npc_humor[$ARGS[1]] = 2:
-		if rand(0,1) = 1:
-			$VM['3b'] = 'in the street?? damn! keep it in your pants till you get here!'
-		else
-			$VM['3b'] = 'as long as you make me cum later'
-		end
-	elseif npc_humor[$ARGS[1]] = 3:
-		if rand(0,1) = 1:
-			$VM['3b'] = 'phrasing'
-		else
-			$VM['3b'] = 'as long as you make me cum later'
-		end
-	end
+				! player choice 2 opiton 2
+				$SMSTree['bb3'] = 'ill come right now ;)'
+
+					! boy
+					if npc_humor[$ARGS[1]] <= 1:
+						$SMSTree['bb4'] = 'im already hard'
+					elseif npc_humor[$ARGS[1]] = 2:
+						if rand(0,1) = 1:
+							$SMSTree['bb4'] = 'in the street?? damn! keep it in your pants till you get here!'
+						else
+							$SMSTree['bb4'] = 'as long as you make me cum later'
+						end
+					elseif npc_humor[$ARGS[1]] = 3:
+						if rand(0,1) = 1:
+							$SMSTree['bb4'] = 'phrasing'
+						else
+							$SMSTree['bb4'] = 'as long as you make me cum later'
+						end
+					end
 end
 
-if $ARGS[0] = 'std_free':	
+
+if $ARGS[0] = 'std_free':
 	!! boy
-	$VM['0'] = dyneval('$result=''hey <<$pcs_nickname>>'' ')
-	
-	!! player
-	$VF[$ARGS[1]+'0'] = dyneval('$result=''hey <<$npc_nickname[$ARGS[1]]>>'' ')
+	$SMSTree['0'] = dyneval('$result=''hey <<$pcs_nickname>>'' ')
 	
-	!! boy
-	$VM['1'] = 'got some good news'
+		!! player
+		$SMSTree['1'] = dyneval('$result=''hey <<$npc_nickname[$ARGS[1]]>>'' ')
 	
-	!! player response 1 option 1
-	$VF['1a'] = 'oh?'
+			!! boy
+			$SMSTree['2'] = 'got some good news'
 	
-	!! boy response 1
-	$VM['2a'] = 'my std test came back clean. why dont we celebrate tog'
+				!! player response 1 option 1
+				$SMSTree['a3'] = 'oh?'
 	
-	!! player response 1 option 2
-	$VF['1b'] = 'what is it?'
+					!! boy response 1
+					$SMSTree['a4'] = 'my std test came back clean. why dont we celebrate tog'
 	
-	!! boy response 2
-	$VM['2a'] = 'my std test came back clean'
+				!! player response 1 option 2
+				$SMSTree['b3'] = 'what is it?'
 	
-	!! player response 2 option 1
-	if hour < 21:
-		$VF['2a'] = 'sorry, i cant. i have stuff to do'
-	else
-		$VF['2a'] = 'its late. text me sooner if you want me to come over.'
-	end
+					!! boy response 2
+					$SMSTree['b4'] = 'my std test came back clean'
+
+
+						!! player response 2 option 1
+						if hour < 21:
+							$SMSTree['aa5'] = 'sorry, i cant. i have stuff to do'
+							$SMSTree['ba5'] = $SMSTree['aa5']
+						else
+							$SMSTree['aa5'] = 'its late. text me sooner if you want me to come over.'
+							$SMSTree['ba5'] = $SMSTree['aa5']
+						end
 	
-	!! boy response 2 option 1
-	$VM['3a'] = 'shit, maybe next time then'
+							!! boy response 2 option 1
+							$SMSTree['aa6'] = 'shit, maybe next time then'
+							$SMSTree['ba6'] = $SMSTree['aa6']
 	
-	!! player response 2 option 2
-	$VF['2b'] = 'ill come right now ;)'
+						!! player response 2 option 2
+						$SMSTree['ab5'] = 'ill come right now ;)'
+						$SMSTree['bb5'] = $SMSTree['ab5']
 	
-	!! boy response 2 option 2
-	if npc_humor[$ARGS[1]] <= 1 and rand(0,1) = 1:
-		$VM['3b'] = 'im already hard'
-	elseif npc_humor[$ARGS[1]] = 2 and rand(0,1) = 1:
-		if rand(0,1) = 1:
-			$VM['3b'] = 'in the street?? damn! keep it in your pants till you get here!'
-		else
-			$VM['3b'] = 'as long as you make me cum later'
-		end
-	elseif npc_humor[$ARGS[1]] = 3 and rand(0,1) = 1:
-		$VM['3b'] = 'phrasing'
-	else
-		$VM['3b'] = 'cant wait'
-	end
+							!! boy response 2 option 2
+							if npc_humor[$ARGS[1]] <= 1 and rand(0,1) = 1:
+								$SMSTree['ab6'] = 'im already hard'
+								$SMSTree['bb6'] = $SMSTree['ab6']
+							elseif npc_humor[$ARGS[1]] = 2 and rand(0,1) = 1:
+								if rand(0,1) = 1:
+									$SMSTree['ab6'] = 'in the street?? damn! keep it in your pants till you get here!'
+									$SMSTree['bb6'] = $SMSTree['ab6']
+								else
+									$SMSTree['ab6'] = 'as long as you make me cum later'
+									$SMSTree['bb6'] = $SMSTree['ab6']
+								end
+							elseif npc_humor[$ARGS[1]] = 3 and rand(0,1) = 1:
+								$SMSTree['ab6'] = 'phrasing'
+								$SMSTree['bb6'] = $SMSTree['ab6']
+							else
+								$SMSTree['ab6'] = 'cant wait'
+								$SMSTree['bb6'] = $SMSTree['ab6']
+							end
 end
 
 
 if $ARGS[0] = 'sugar_daddy_booty_call':	
 	!! boy
-	$VM['0'] = dyneval('$result=''hey <<$pcs_nickname>>'' ')
-	
-	!! player
-	$VF[$ARGS[1]+'0'] = dyneval('$result=''hey <<$npc_nickname[$ARGS[1]]>>'' ')
-	
-	!! boy
-	$VM['1'] = 'ive been thinking about you'
+	$SMSTree['0'] = dyneval('$result=''hey <<$pcs_nickname>>'' ')
+		
+		!! player
+		$SMSTree['1'] = dyneval('$result=''hey <<$npc_nickname[$ARGS[1]]>>'' ')
 	
-	!! player response 1 option 1
-	$VF['1a'] = 'what were you thinking about?'
+			!! boy
+			$SMSTree['2'] = 'ive been thinking about you'
 	
-	!! boy response 1 option 1
-	if ($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:
-		$VM['2a'] = 'i booked a hotel room in Pav. why dont you come by?'
-	else
-		$VM['2a'] = 'i want to see you. why dont you come by my apartment?'
-	end
-	
-	!! player response 1 option 2
-	$VF['1b'] = 'me too'
-	
-	!! boy response 2 option 2
-	if ($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:
-		$VM['2a'] = 'i booked a hotel room in Pav. why dont you come by?'
-	else
-		$VM['2a'] = 'i want to see you. why dont you come by my apartment?'
-	end
-	
-	!! player response 2 option 1
-	if hour < 21:
-		$VF['2a'] = 'sorry, i cant. i have stuff to do'
-	else
-		$VF['2a'] = 'its late. text me sooner if you want me to come over.'
-	end
-	
-	!! boy response 2 option 1
-	$VM['3a'] = 'damn scheduling conflicts'
-	
-	!! player response 2 option 2
-	$VF['2b'] = 'ill come right now ;)'
+				!! player response 1 option 1
+				$SMSTree['a3'] = 'what were you thinking about?'
+
+
+				!! player response 1 option 2
+				$SMSTree['b3'] = 'me too'
 	
-	!! boy response 2 option 2
-	if ($home['current'] = 'parents_home' or $home['current'] = 'meynold_household' or $home['current'] = 'shared_apartment') and npc_residence[$ARGS[1]] >= 3:
-		$VM['3b'] = 'room <<rand(1,3)>><<rand(10,19)>>'
-	else
-		if npc_humor[$ARGS[1]] <= 1 and rand(0,1) = 1:
-			$VM['3b'] = 'im already hard'
-		elseif npc_humor[$ARGS[1]] = 2 and rand(0,1) = 1:
-			$VM['3b'] = 'as long as you make me cum later'
-		elseif npc_humor[$ARGS[1]] = 3 and rand(0,1) = 1:
-			$VM['3b'] = 'phrasing'
-		else
-			$VM['3b'] = 'cant wait'
-		end
-	end
+					!! boy response 1 option 1
+					if ($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:
+						$SMSTree['a4'] = 'i booked a hotel room in Pav. why dont you come by?'
+						$SMSTree['b4'] = $SMSTree['a4']
+					else
+						$SMSTree['a4'] = 'i want to see you. why dont you come by my apartment?'
+						$SMSTree['b4'] = $SMSTree['a4']
+					end
+
+						!! player response 2 option 1
+						if hour < 21:
+							$SMSTree['aa5'] = 'sorry, i cant. i have stuff to do'
+							$SMSTree['ba5'] = $SMSTree['aa5']
+						else
+							$SMSTree['aa5'] = 'its late. text me sooner if you want me to come over.'
+							$SMSTree['ba5'] = $SMSTree['aa5']
+						end
+
+							!! boy response 2 option 1
+							$SMSTRee['aa6'] = 'damn scheduling conflicts'
+							$SMSTree['ba6'] = $SMSTree['aa6']
+
+
+						!! player response 2 option 2
+						$SMSTree['ab5'] = 'ill come right now ;)'
+						$SMSTree['bb5'] = $SMSTree['ab5']
+							
+							!! boy response 2 option 2
+							if ($home['current'] = 'parents_home' or $home['current'] = 'meynold_household' or $home['current'] = 'shared_apartment') and npc_residence[$ARGS[1]] >= 3:
+								$SMSTree['ab6'] = 'room <<rand(1,3)>><<rand(10,19)>>'
+								$SMSTree['bb6'] = $SMSTree['ab6']
+							else
+								if npc_humor[$ARGS[1]] <= 1 and rand(0,1) = 1:
+									$SMSTree['ab6'] = 'im already hard'
+									$SMSTree['bb6'] = $SMSTree['ab6']
+								elseif npc_humor[$ARGS[1]] = 2 and rand(0,1) = 1:
+									$SMSTree['ab6'] = 'as long as you make me cum later'
+									$SMSTree['bb6'] = $SMSTree['ab6']
+								elseif npc_humor[$ARGS[1]] = 3 and rand(0,1) = 1:
+									$SMSTree['ab6'] = 'phrasing'
+									$SMSTree['bb6'] = $SMSTree['ab6']
+								else
+									$SMSTree['ab6'] = 'cant wait'
+									$SMSTree['bb6'] = $SMSTree['ab6']
+								end
+							end
 end
 
+
+!Does not work with pre-planned?
 if $ARGS[0] = 'Add SMS':
-	$trialSMS  = $SMSFrM+$VM['0']+$SMSBkM
-	$trialSMS += '<table><tr><th> Reply</th></tr>'
-	$trialSMS += '<tr><td><a href="exec: gs ''booty_call_sms'', ''V0'',telefon[''SMSid'']">'+$VF[$ARGS[1]+'0']+'</a></td></tr></table>'
-	gs 'telefon', 'add_sms', $ARGS[1], $trialSMS
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_replies
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''SMS_Base'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['1'] + '</a>'
+	$temp_SMStext += $SMS_close_replies
+
+	gs 'telefon', 'add_sms', $ARGS[2], $temp_SMStext
 end
 
-if $ARGS[0] = 'V0':
-	$trialSMS   = $SMSFrM+$VM['0']+$SMSBkM
-	$trialSMS  += $SMSFrF+$VF[$SMSContact[ARGS[1]]+'0']+$SMSBkF
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
+
+if $ARGS[0] = 'SMS_Base':
+!if $ARGS[0] = 'V0':
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
 	wait 500
-	$trialSMS += $SMSFrM+$VM['1']+$SMSBkM
-	$trialSMS += '<table><tr><th> Reply</th></tr>'
-	$trialSMS += '<tr><td><a href="exec: gs ''booty_call_sms'', ''V1a'',telefon[''SMSid'']">'+$VF['1a']+'</a></td></tr>'
-	$trialSMS += '<tr><td><a href="exec: gs ''booty_call_sms'', ''V1b'',telefon[''SMSid'']">'+$VF['1b']+'</a></td></tr></table>'
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
+
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_replies
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_a'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['a3'] + '</a>'
+		$temp_SMStext += $SMS_next_reply
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_b'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['b3'] + '</a>'
+	$temp_SMStext += $SMS_close_replies
+
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+	gs 'telefon', 'show_sms', ARGS[3]
 end
 
 
-if $ARGS[0] = 'V1a':
-	$trialSMS   = $SMSFrM+$VM['0']+$SMSBkM
-	$trialSMS  += $SMSFrF+$VF[$SMSContact[ARGS[1]]+'0']+$SMSBkF
-	$trialSMS  += $SMSFrM+$VM['1']+$SMSBkM
-	$trialSMS  += $SMSFrF+$VF['1a']+$SMSBkF
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
+if $ARGS[0] = 'Choice_a':
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['a3'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
 	wait 500
-	$trialSMS += $SMSFrM+$VM['2a']+$SMSBkM
-	$trialSMS += '<table><tr><th> Reply</th></tr>'
-	$trialSMS += '<tr><td><a href="exec: gs ''booty_call_sms'', ''V2an'',telefon[''SMSid'']">'+$VF['2a']+'</a></td></tr>'
-	$trialSMS += '<tr><td><a href="exec: gs ''booty_call_sms'', ''V2ap'',telefon[''SMSid'']">'+$VF['2b']+'</a></td></tr></table>'
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
+
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['a4'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_replies
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_aa'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['aa5'] + '</a>'
+		$temp_SMStext += $SMS_next_reply
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_ab'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['ab5'] + '</a>'
+	$temp_SMStext += $SMS_close_replies
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
 end
 
+if $ARGS[0] = 'Choice_aa':
+	!! booty call is declined
+	
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['a3'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['a4'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['aa5'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
+
+	if sugar_daddy_call[$ARGS[2]] = 1:
+		npc_rel[$ARGS[2]] -= 2
+		sugar_daddy_call[$ARGS[2]] = 0
+	end
 
-if $ARGS[0] = 'V1b':
-	$trialSMS   = $SMSFrM+$VM['0']+$SMSBkM
-	$trialSMS  += $SMSFrF+$VF[$SMSContact[ARGS[1]]+'0']+$SMSBkF
-	$trialSMS  += $SMSFrM+$VM['1']+$SMSBkM
-	$trialSMS  += $SMSFrF+$VF['1b']+$SMSBkF
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
 	wait 500
-	$trialSMS += $SMSFrM+$VM['2b']+$SMSBkM
-	$trialSMS += '<table><tr><th> Reply</th></tr>'
-	$trialSMS += '<tr><td><a href="exec: gs ''booty_call_sms'', ''V2bn'',telefon[''SMSid'']">'+$VF['2a']+'</a></td></tr>'
-	$trialSMS += '<tr><td><a href="exec: gs ''booty_call_sms'', ''V2bp'',telefon[''SMSid'']">'+$VF['2b']+'</a></td></tr></table>'
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
+
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['aa6'] + $SMS_close_receiving
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
 end
 
-if $ARGS[0] = 'V2an':
+if $ARGS[0] = 'Choice_ab':
+	!! booty call is accepted
+
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['a3'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['a4'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['ab5'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
+	wait 500
+
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['ab6'] + $SMS_close_receiving
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
+
+	booty_call_invite[$ARGS[2]] = daystart
+	if npc_finance[$ARGS[2]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[2]] >= 3:
+		$booty_call_hotel[$ARGS[2]] = 'pav'
+	else
+		$booty_call_hotel[$ARGS[2]] = 'city'
+	end
+end
+
+
+
+
+if $ARGS[0] = 'Choice_b':
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['b3'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
+	wait 500
+
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['b4'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_replies
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_ba'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['ba5'] + '</a>'
+		$temp_SMStext += $SMS_next_reply
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_bb'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['bb5'] + '</a>'
+	$temp_SMStext += $SMS_close_replies
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
+end
+
+
+
+if $ARGS[0] = 'Choice_ba':
 	!! booty call is declined
-	$trialSMS   = $SMSFrM+$VM['0']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF[$SMSContact[ARGS[1]]+'0']+$SMSBkF
-	$trialSMS += $SMSFrM+$VM['1']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF['1a']+$SMSBkF
-	$trialSMS += $SMSFrM+$VM['2a']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF['2a']+$SMSBkF
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
-	if sugar_daddy_call[$SMSContact[ARGS[1]]] = 1:
-		npc_rel[$SMSContact[ARGS[1]]] -= 2
-		sugar_daddy_call[$SMSContact[ARGS[1]]] = 0
+
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['b3'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['b4'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['ba5'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
+	if sugar_daddy_call[$ARGS[2]] = 1:
+		npc_rel[$ARGS[2]] -= 2
+		sugar_daddy_call[$ARGS[2]] = 0
 	end
 	wait 500
-	$trialSMS += $SMSFrM+$VM['3a']+$SMSBkM
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
+
+
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['ba6'] + $SMS_close_receiving
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
 end
 
-if $ARGS[0] = 'V2ap':
+if $ARGS[0] = 'Choice_bb':
 	!! booty call is accepted
-	$trialSMS  = $SMSFrM+$VM['0']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF[$SMSContact[ARGS[1]]+'0']+$SMSBkF
-	$trialSMS += $SMSFrM+$VM['1']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF['1a']+$SMSBkF
-	$trialSMS += $SMSFrM+$VM['2a']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF['2b']+$SMSBkF
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
+
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['b3'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['b4'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['bb5'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
+	wait 500
+	
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['bb6'] + $SMS_close_receiving
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+
+	gs 'telefon', 'show_sms', ARGS[3]
+	booty_call_invite[$ARGS[2]] = daystart
+!!	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[2]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[2]] >= 3:
+		$booty_call_hotel[$ARGS[2]] = 'pav'
+	else
+		$booty_call_hotel[$ARGS[2]] = 'city'
+	end
+end
+
+
+
+
+
+! For pre-planned
+if $ARGS[0] = 'Add SMS2':
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_replies
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice2_a'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['a1'] + '</a>'
+		$temp_SMStext += $SMS_next_reply
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice2_b'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['b1'] + '</a>'
+	$temp_SMStext += $SMS_close_replies
+
+	gs 'telefon', 'add_sms', $ARGS[2], $temp_SMStext
+end
+
+
+if $ARGS[0] = 'Choice2_a':
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['a1'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
+end
+
+
+
+if $ARGS[0] = 'Choice2_b':
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['b1'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
 	wait 500
-	$trialSMS += $SMSFrM+$VM['3b']+$SMSBkM
-	$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'
+
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['b2'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_replies
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice2_ba'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['ba3'] + '</a>'
+		$temp_SMStext += $SMS_next_reply
+		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice2_bb'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['bb3'] + '</a>'
+	$temp_SMStext += $SMS_close_replies
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
 end
 
-if $ARGS[0] = 'V2bn':
+
+
+if $ARGS[0] = 'Choice2_ba':
 	!! booty call is declined
-	$trialSMS  = $SMSFrM+$VM['0']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF[$SMSContact[ARGS[1]]+'0']+$SMSBkF
-	$trialSMS += $SMSFrM+$VM['1']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF['1b']+$SMSBkF
-	$trialSMS += $SMSFrM+$VM['2b']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF['2a']+$SMSBkF
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
-	if sugar_daddy_call[$SMSContact[ARGS[1]]] = 1:
-		npc_rel[$SMSContact[ARGS[1]]] -= 2
-		sugar_daddy_call[$SMSContact[ARGS[1]]] = 0
+
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['b1'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['b2'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['ba3'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
+	if sugar_daddy_call[$ARGS[2]] = 1:
+		npc_rel[$ARGS[2]] -= 2
+		sugar_daddy_call[$ARGS[2]] = 0
 	end
 	wait 500
-	$trialSMS += $SMSFrM+$VM['3a']+$SMSBkM
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
+
+
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['ba4'] + $SMS_close_receiving
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
 end
 
-if $ARGS[0] = 'V2bp':
+if $ARGS[0] = 'Choice2_bb':
 	!! booty call is accepted
-	$trialSMS  = $SMSFrM+$VM['0']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF[$SMSContact[ARGS[1]]+'0']+$SMSBkF
-	$trialSMS += $SMSFrM+$VM['1']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF['1b']+$SMSBkF
-	$trialSMS += $SMSFrM+$VM['2b']+$SMSBkM
-	$trialSMS += $SMSFrF+$VF['2b']+$SMSBkF
-	$SMSMessage[ARGS[1]] = $trialSMS
-	gs 'telefon', 'show_sms', ARGS[1]
+
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['b1'] + $SMS_close_sending
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['b2'] + $SMS_close_receiving
+	$temp_SMStext += $SMS_open_sending + $SMSTree['bb3'] + $SMS_close_sending
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+	gs 'telefon', 'show_sms', ARGS[3]
 	wait 500
-	$trialSMS += $SMSFrM+$VM['3b']+$SMSBkM
-	$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'
-!!	killvar '$VF'
-!!	killvar '$MF'
+	
+	$temp_SMStext += $SMS_open_receiving + $SMSTree['bb4'] + $SMS_close_receiving
+	$SMSMessage[ARGS[3]] = $temp_SMStext
+
+
+	gs 'telefon', 'show_sms', ARGS[3]
+	booty_call_invite[$ARGS[2]] = daystart
+!!	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[2]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[2]] >= 3:
+		$booty_call_hotel[$ARGS[2]] = 'pav'
+	else
+		$booty_call_hotel[$ARGS[2]] = 'city'
+	end
 end
 
-killvar '$trialSMS'
 
 
+if $ARGS[0] ! 'default_booty_call' and $ARGS[0] ! 'pre_planned_booty_call' and $ARGS[0] ! 'std_free' and $ARGS[0] ! 'sugar_daddy_booty_call':
+	killvar '$trialSMS'
+	killvar '$SMSTree'
+	killvar '$temp_SMStext'
+end
+
 --- hookup_sms ---------------------------------

+ 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'

+ 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/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
 

+ 33 - 42
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

+ 9 - 8
locations/city_apt_building.qsrc

@@ -4,9 +4,10 @@
 !SETTINGS:
 CLOSE ALL
 gs 'themes', 'indoors'
-$loc_arg = ''
+$location_type = 'public_indoors'
 $loc = 'city_apt_building'
-
+$menu_loc = 'city_apt_building'
+$loc_arg = ''
 
 !================================================================================================!
 !FLOORS: ---------------------------Entrance to the town-------------------------------------- FLOORS:!
@@ -30,7 +31,7 @@ if $ARGS[0] = 'housemates':
 end
 
 if $ARGS[0] = 'floor_1':
-	$menu_loc = 'city_apt_building'
+	$loc_arg = 'floor_1'
 	$menu_arg = 'floor_1'
 	menu_off = 0
 	CLOSE ALL
@@ -51,7 +52,7 @@ if $ARGS[0] = 'floor_1':
 end
 
 if $ARGS[0] = 'floor_2':
-	$menu_loc = 'city_apt_building'
+	$loc_arg = 'floor_2'
 	$menu_arg = 'floor_2'
 	menu_off = 0
 	gs 'stat'
@@ -70,7 +71,7 @@ if $ARGS[0] = 'floor_2':
 end
 
 if $ARGS[0] = 'floor_3':
-	$menu_loc = 'city_apt_building'
+	$loc_arg = 'floor_4'
 	$menu_arg = 'floor_3'
 	menu_off = 0
 	gs 'stat'
@@ -89,7 +90,7 @@ if $ARGS[0] = 'floor_3':
 end
 
 if $ARGS[0] = 'floor_4':
-	$menu_loc = 'city_apt_building'
+	$loc_arg = 'floor_4'
 	$menu_arg = 'floor_4'
 	menu_off = 0
 	gs 'stat'
@@ -111,7 +112,7 @@ if $ARGS[0] = 'floor_4':
 end
 
 if $ARGS[0] = 'floor_5':
-	$menu_loc = 'city_apt_building'
+	$loc_arg = 'floor_5'
 	$menu_arg = 'floor_5'
 	menu_off = 0
 	gs 'stat'
@@ -131,9 +132,9 @@ if $ARGS[0] = 'floor_5':
 end
 
 if $ARGS[0] = 'roof':
-	$menu_loc = 'city_apt_building'
 	$menu_arg = 'roof'
 	$loc_arg = 'roof'
+	$location_type = 'public_outdoors'
 	$loc = 'city_apt_building'
 	killvar '$locclass'
 	menu_off = 0

+ 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\desk1.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_horny < 20: pcs_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_horny < 40: pcs_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_horny < 50: pcs_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_3'] += 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_4'] += 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_5'] += 1
+		$experimentQW['trial_active'] = $trial_sections[5]
+		 experimentQW['trial_duration'] = trial_durations[5]
+
+		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 ---------------------------------

+ 17 - 8
locations/city_library.qsrc

@@ -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?"'

+ 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: 

+ 1 - 1
locations/city_residential.qsrc

@@ -150,7 +150,7 @@ if hour >= 8 and hour <= 15 and week < 6:
 else	
 	'Near the market is a tailor shop where you can get your clothes resized if needed. '+iif(week < 6, 'It closes at 16:00.', 'It''s closed on weekends.')
 end
-if hour >= 11 and hour < 12 and week > 1 and week < 7 and workKafe['job'] = 1:
+if hour = 11 and week > 1 and week < 7 and workKafe['job'] = 1:
 	'The side door of <a href="exec: minut += 1 & gt ''city_kafe'', ''work''">The Roadhouse</a> diner is open, allowing you to enter and start your shift.'
 elseif hour >= 12 and hour <= 20 and week ! 1:
 	'You can hear some <a href="exec: minut += 1 & gt ''gopnew'', ''start''">gopniks</a> laughing and swearing in a side alley next to <a href="exec: minut += 1 & gt ''city_kafe'', ''start''">The Roadhouse</a> diner.'

+ 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 ---------------------------------

+ 3 - 5
locations/clothing.qsrc

@@ -8,9 +8,9 @@ $clothing_list_line = {
 	!! ARGS 1 - clothing type
 	!! ARGS 2 - clothing index
 
-	gs 'themes', 'clothing', 1
+	gs 'themes', 'clothing'
 
-	$RESULT = '<TR bgcolor='+$bgcolor+'>'
+	$RESULT = '<TR bgcolor='+$temp_bcolor+'>'
 
 	if Enable_clothwidth > 0:
 		clothing_temp = Enable_clothwidth - 1
@@ -230,10 +230,7 @@ if $ARGS[0] = 'view_clothing_list':
 end
 
 if $ARGS[0] = 'clothing_list':
-
 	$ward_list_file = 'clothing'
-	$bgcolor='#f3f4ee'
-	
 
 	if $args[1] = 'all':
 		$ward_list_store = 'all'
@@ -1355,6 +1352,7 @@ if $ARGS[0] = 'clothing_list':
 		gs 'clothing', 'clothwidth'
 	end
 	'</table>'
+	killvar '$temp_bcolor'
 end
 
 if $ARGS[0] = 'clothinglist_header':

+ 195 - 0
locations/core_library.qsrc

@@ -0,0 +1,195 @@
+# 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 '$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.'
+        
+            act 'Continue' : gt $loc, $loc_arg
+        end
+        '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.'
+
+    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 ---------------------------------
 

+ 0 - 2
locations/courtletter.qsrc

@@ -12,7 +12,6 @@ if $ARGS[0] = 'letter':
 
 	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
@@ -22,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

+ 5 - 5
locations/dateM.qsrc

@@ -109,8 +109,8 @@ if $ARGS[0] = 'start':
 					elseif $region = 'pav' or $region = 'pav_park' or $region = 'pav':
 						gs 'fame', 'pav', 'sex', 2
 					end
-					act 'Go to his place':$hookup['pickup'] = 'street' & gt 'sex_ev_start', 'hookup_npc_home_start'
-					!! act 'Go to his place':$hookup['pickup'] = 'street' & gt 'sex_ev_start', 'hookup_start'
+					act 'Go to his place':$sex_ev['pickup'] = 'street' & gt 'sex_ev_start', 'hookup_npc_home_start'
+					!! act 'Go to his place':$sex_ev['pickup'] = 'street' & gt 'sex_ev_start', 'hookup_start'
 				end
 			end
 		end
@@ -183,7 +183,7 @@ if $ARGS[0] = 'start':
 					elseif $region = 'pav' or $region = 'pav_park' or $region = 'pav':
 						gs 'fame', 'pav', 'sex', 2
 					end
-					act 'Go to his place':$hookup['pickup'] = 'street' & gt 'sex_ev_start', 'hookup_npc_home_start'
+					act 'Go to his place':$sex_ev['pickup'] = 'street' & gt 'sex_ev_start', 'hookup_npc_home_start'
 				end
 			end
 		end
@@ -247,7 +247,7 @@ if $ARGS[0] = 'start':
 					elseif $region = 'pav' or $region = 'pav_park' or $region = 'pav':
 						gs 'fame', 'pav', 'sex', 2
 					end
-					act 'Go to his place':$hookup['pickup'] = 'street' & gt 'sex_ev_start', 'hookup_npc_home_start'
+					act 'Go to his place':$sex_ev['pickup'] = 'street' & gt 'sex_ev_start', 'hookup_npc_home_start'
 				end
 			end
 		end
@@ -321,7 +321,7 @@ if $ARGS[0] = 'start':
 				elseif $region = 'pav' or $region = 'pav_park' or $region = 'pav':
 					gs 'fame', 'pav', 'sex', 2
 				end
-				act 'Go to his place':$hookup['pickup'] = 'street' & gt 'sex_ev_start', 'hookup_npc_home_start'
+				act 'Go to his place':$sex_ev['pickup'] = 'street' & gt 'sex_ev_start', 'hookup_npc_home_start'
 			end
 		end
 	end

+ 4 - 4
locations/din_bad.qsrc

@@ -551,7 +551,7 @@ $d_tabletkieda = {
 
 if $ARGS[0] = 'set_auto_bc':
 	:invalid_auto_bc_loop
-	birth_control['auto_hour'] = input ("When do you want to automatically take your pill? (Pick an hour 1 - 23. If you are asleep during the hour you set, you will not take it.)")
+	birth_control['auto_hour'] = input ("When do you want to take your pill? (Pick an hour 1 - 23. At that hour, you will automatically take your birth control pill. If you are asleep during the hour you set, you will not take it.)")
 	if birth_control['auto_hour'] < 1 or birth_control['auto_hour'] > 23:
 		msg 'Invalid input. Pick an hour between 1 and 23.'
 		jump 'invalid_auto_bc_loop'
@@ -568,7 +568,7 @@ end
 
 if $ARGS[0] = 'set_bc_reminder':
 	:invalid_bc_reminder_loop
-	birth_control['remind_hour'] = input ("When do you want to set your reminder? (Pick an hour 1 - 22. A reminder icon will appear in the stat display during that hour.)")
+	birth_control['remind_hour'] = input ("When do you want to set your reminder? (Pick an hour 1 - 22. An icon will appear in the stat display during that hour to remind you to take your pill.)")
 	if birth_control['remind_hour'] < 1 or birth_control['remind_hour'] > 22:
 		msg 'Invalid reminder input. Pick an hour between 1 and 22.'
 		jump 'invalid_bc_reminder'
@@ -824,7 +824,7 @@ $d_cycreport_update = {
 					if stat['safe_day'] = 1:
 						$cycreport_txt = 'It has been <<temp[1]>> days since the start of your last period. You are currently on the pill but it is not yet effective. <font color=green>Today is a safe day to have unprotected sex.</font>'
 					elseif birth_control['think_safe'] ! 1 and stat['probably_safe_day'] = 1:
-						$cycreport_txt = 'It has been <<temp[1]>> days since the start of your last period. You are currently on the pill but it is not yet effective. <font color=blue>Today is <i>probably</i> a safe day to have unprotected sex.</font>'
+						$cycreport_txt = 'It has been <<temp[1]>> days since the start of your last period. You are currently on the pill but it is not yet effective. <font color=orange>Today is <i>probably</i> a safe day to have unprotected sex.</font>'
 					elseif birth_control['think_safe'] ! 1 and stat['dangerous_day'] = 1:
 						$cycreport_txt = 'It has been <<temp[1]>> days since the start of your last period. You are currently on the pill but it is not yet effective. <font color=red>Today is a dangerous day to have unprotected sex.</font>'
 					end
@@ -843,7 +843,7 @@ $d_cycreport_update = {
 				elseif birth_control['think_safe'] ! 1 and stat['safe_day'] = 1:
 					$cycreport_txt = 'It has been <<temp[1]>> days since the start of your last period. <font color=green>Today is a safe day to have unprotected sex.</font>'
 				elseif birth_control['think_safe'] ! 1 and stat['probably_safe_day'] = 1:
-					$cycreport_txt = 'It has been <<temp[1]>> days since the start of your last period. <font color=blue>Today is <i>probably</i> a safe day to have unprotected sex.</font>'
+					$cycreport_txt = 'It has been <<temp[1]>> days since the start of your last period. <font color=orange>Today is <i>probably</i> a safe day to have unprotected sex.</font>'
 				elseif birth_control['think_safe'] ! 1 and stat['dangerous_day'] = 1:
 					$cycreport_txt = 'It has been <<temp[1]>> days since the start of your last period. <font color=red>Today is a dangerous day to have unprotected sex.</font>'
 				else

+ 57 - 21
locations/din_van.qsrc

@@ -1097,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
@@ -1136,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'
 
@@ -1361,11 +1367,11 @@ if $ARGS[0] = 'HorrifiedReact1':
 	minut += 10
 	*nl
 	'You stare in disbelief at the test in your hand. The two strips displayed can only mean one thing: you are pregnant. You sink to the floor, mind spinning. Tears well in your eyes. How could this happen?'
-	if stat['hidden_vaginal'] > 0 and stat['vaginal'] = 1:
+	if stat['hidden_vaginal'] > 0 and stat['vaginal'] = 0:
 		'You don''t even know how this is possible. You''ve never even had sex with anyone.'
 		'What did you do to deserve this? What is everyone going to think of you? Your life is ruined.'
 		'After several minutes of sobbing and trying to make sense of your situation, you finally pull yourself off of the floor. You straighten your clothes and wash your face as you begin to accept the situation you''re stuck with.'
-	elseif rape > 0 and stat['vaginal'] > 1:
+	elseif rape > 0 and stat['vaginal'] >= 1:
 		'It’s bad enough that you were raped, but possibly getting pregnant from it as well? It’s completely unfair!'
 		'What did you do to deserve this? What is everyone going to think of you? Your life is ruined.'
 		'After several minutes of sobbing and trying to make sense of your situation, you finally pull yourself off of the floor. You straighten your clothes and wash your face as you begin to accept the situation you''re stuck with.'
@@ -1706,110 +1712,140 @@ if $ARGS[0] = 'shave_options':
 	*nl
 	if shave_menu = 0:
 		'Your current routine doesn''t include any shaving options.'
+		$temp_toggle = 'shave_menu = 2'
 	elseif shave_menu = 1:
 		'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:
 		'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:
 		'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
 	*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><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>'
+		*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>'
+		*p '<TR><TD><center>'
 		if pubestyle ! 1:
-			*p '<a href="exec:pubestyle = 1 & shave_length = 0 & shave_trigger = 3 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Clean Shave</a>'
+			*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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">V-shaped</a>'
+			*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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Triangle-shaped</a>'
+			*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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Landing-strip</a>'
+			*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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Heart-shaped</a>'
+			*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><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>'
+		*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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Flame-shaped</a>'
+			*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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Cross-Shaped</a>'
+			*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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Trimmed</a>'
+			*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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Small Bush</a>'
+			*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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Full Bush</a>'
+			*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><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>'
+		*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>
+		*P <TD><center><a href="exec:view''images/pc/body/pussy/shave/bstrip.jpg''"><img Height = <<shave_img_hgt>> src="images/pc/body/pussy/shave/bstrip.jpg"></a></center></TD>
+		*P <TD><center><a href="exec:view''images/pc/body/pussy/shave/rectangle.jpg''"><img Height = <<shave_img_hgt>> src="images/pc/body/pussy/shave/rectangle.jpg"></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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Lazy</a>'
+			*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 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Mini Bush</a>'
+			*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
+		'</center></TD><TD><center>'
+		if pubestyle ! 13 and pcs_pubes >= 20:
+			'<a href="exec:pubestyle = 13 & shave_length = 20 & shave_trigger = 26 &  '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Bushy Strip</a>'
+		else
+			'Bushy Strip'
+		end
+		'</center></TD><TD><center>'
+		if pubestyle ! 14 and pcs_pubes > 20:
+			'<a href="exec:pubestyle = 14 & shave_length = 20 & shave_trigger = 26 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Rectangle</a>'
+		else
+			'Rectangle'
+		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':
 		shave_img_hgt = input("Enter height in pixels you want for images on this page<br>(default 100, min 50, max 500)")

+ 2 - 4
locations/dream_events.qsrc

@@ -1,5 +1,4 @@
 # dream_events
-$sleep_loc = 'dream_events'
 menu_off = 1
 
 !! Dream events trigger after deciding to go to sleep, but before any time has advanced.
@@ -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,7 +128,6 @@ end
 
 if $ARGS[0] = 'continue':
 	sleepVars['events_done'] = 0
-	killvar '$sleep_loc'
 	killvar '$sleep_events'
 	killvar '$sleep_events_priority'
 	killvar 'temp_slev_id'

+ 1 - 0
locations/drugs.qsrc

@@ -21,6 +21,7 @@ if $ARGS[0] = 'smoke':
 		if smoker > 20 and smoke_exp = 0: smoke_exp = 1
 	end
 	mc_inventory['cigarettes'] -= 1
+	stat['cigarettes_smoked'] += 1
 	smokeDay = daystart
 	smokeHour = hour
 	smokeminut = minut + 3

+ 1 - 1
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'

+ 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 ---------------------------------

+ 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':

+ 10 - 11
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,7 +637,7 @@ if $ARGS[0] = 'kickboxing':
 
 	act 'Return to dressing room': gt 'fit', 'dressing_room'
 
-	if pcs_energy >= 15 and pcs_stam >= stammax / 5:
+	if pcs_energy >= 20 and pcs_stam >= stammax / 5:
 		act 'Work on your jabs':
 			cla
 			*clr
@@ -701,7 +700,7 @@ if $ARGS[0] = 'kickboxing':
 				round = 1
 				minround = 0
 
-				gs 'npcgeneratec', 0, 'sparring partner', rand(19,45)
+				gs 'npcgeneratec', 1, 'sparring partner', rand(19,45)
 				gs 'boyStat', $npclastgenerated
 				strenV = rand(10, 20)
 				speedV = rand(10, 20)
@@ -738,7 +737,7 @@ if $ARGS[0] = 'kickboxing':
 				kickbox['opponent'] = kickbox['sash'] + rand(0, 1)
 
 				if kickbox['opponent'] = 0:
-					gs 'npcgeneratec', 0, 'Useless rival', rand(19,45)
+					gs 'npcgeneratec', 1, 'Useless rival', rand(19,45)
 					gs 'boyStat', $npclastgenerated
 					strenV = rand(10, 20)
 					speedV = rand(10, 20)
@@ -757,7 +756,7 @@ if $ARGS[0] = 'kickboxing':
 					formula = 3
 					kickbox['amateur'] = 1
 				elseif kickbox['opponent'] = 1:
-					gs 'npcgeneratec', 0, '3rd class rival', rand(19,45)
+					gs 'npcgeneratec', 1, '3rd class rival', rand(19,45)
 					gs 'boyStat', $npclastgenerated
 					strenV = rand(15, 25)
 					speedV = rand(15, 25)
@@ -776,7 +775,7 @@ if $ARGS[0] = 'kickboxing':
 					formula = 3
 					kickbox['amateur'] = 1
 				elseif kickbox['opponent'] = 2:
-					gs 'npcgeneratec', 0, '2rd class rival', rand(19,45)
+					gs 'npcgeneratec', 1, '2rd class rival', rand(19,45)
 					gs 'boyStat', $npclastgenerated
 					strenV = rand(20, 30)
 					speedV = rand(20, 30)
@@ -795,7 +794,7 @@ if $ARGS[0] = 'kickboxing':
 					formula = 3
 					kickbox['amateur'] = 1
 				elseif kickbox['opponent'] = 3:
-					gs 'npcgeneratec', 0, '1st class rival', rand(19,45)
+					gs 'npcgeneratec', 1, '1st class rival', rand(19,45)
 					gs 'boyStat', $npclastgenerated
 					strenV = rand(30, 40)
 					speedV = rand(30, 40)
@@ -814,7 +813,7 @@ if $ARGS[0] = 'kickboxing':
 					formula = 3
 					kickbox['amateur'] = 1
 				elseif kickbox['opponent'] = 4:
-					gs 'npcgeneratec', 0, 'Excellent rival', rand(19,45)
+					gs 'npcgeneratec', 1, 'Excellent rival', rand(19,45)
 					gs 'boyStat', $npclastgenerated
 					strenV = rand(40, 60)
 					speedV = rand(40, 60)
@@ -833,7 +832,7 @@ if $ARGS[0] = 'kickboxing':
 					formula = 3
 					kickbox['amateur'] = 1
 				elseif kickbox['opponent'] >= 5:
-					gs 'npcgeneratec', 0, 'Best rival in the gym', rand(19,45)
+					gs 'npcgeneratec', 1, 'Best rival in the gym', rand(19,45)
 					gs 'boyStat', $npclastgenerated
 					strenV = rand(60, 100)
 					speedV = rand(60, 100)

+ 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':gs 'clothing', 'wear_last_worn' and 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:

+ 2 - 2
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

+ 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)

+ 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

+ 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...'

+ 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.'

+ 3 - 6
locations/gschool_post_shower.qsrc

@@ -1156,15 +1156,12 @@ if $ARGS[0] = 'post_shower2':
 				else
 					'A few minutes go by as you keep stealing glances at her until suddenly you try to sneak a peek and see her looking your way. Her eyes slowly trail up your body until they make contact with yours, widening in surprise. She blushes, looking panicked as she quickly turns away, turns off the shower and leaves.'
 				end
-				gs'arousal','erotic_nudity', 3
-				gs 'stat'
-				act 'Go to the locker room':gs 'arousal', 'end' & gt 'gschool_lessons4','dress'
 			else
 				'After watching her a little longer, you decide you''ve looked enough and turn back to your shower to turn the faucet off. Grabbing a towel, you start drying off as you pad your way back to your locker.'
-				gs'arousal','erotic_nudity', 3
-				gs 'stat'
-				act 'Go to the locker room':gs 'arousal', 'end' & gt 'gschool_lessons4','dress'
 			end
+			gs'arousal','erotic_nudity', 3
+			gs 'stat'
+			act 'Go to the locker room':gs 'arousal', 'end' & gt 'gschool_lessons4','dress'
 		end
 	end
 	act 'Check out Katja':

+ 1 - 1
locations/gschool_socialchg1.qsrc

@@ -128,7 +128,7 @@ if $ARGS[0] = 'tLazar':
 												act 'No warning':
 													*clr & cla
 													'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/lazar/sex/school/sportsfield/bj3.jpg"></center>'
-													'You keep one eye on the sports field to ensure no one is coming over when you suddenly feel his cum squirting your mouth without warning. When he finishes cumming, he pulls his dick out of your mouth and tucks it away before pressing his pants as you swallow his cum. "Thanks, Sveta. I needed that, but I should get back before they notice I''m gone. Catch you later." He turns and heads back to the sports field.'
+													'You keep one eye on the sports field to ensure no one is coming over when you suddenly feel his cum squirting your mouth without warning. When he finishes cumming, he pulls his dick out of your mouth and tucks it away before pressing his pants as you swallow his cum. "Thanks, <<$pcs_nickname>>. I needed that, but I should get back before they notice I''m gone. Catch you later." He turns and heads back to the sports field.'
 													gs 'arousal', 'bj', 5, 'exhibitionism'
 													gs 'cum_call', 'mouth', 'A149'
 													gs 'arousal', 'end'

+ 2 - 2
locations/hourly_events.qsrc

@@ -64,14 +64,14 @@ else
 	end
 
 
-	if pcs_energy = 0:
+	if pcs_energy <= 0:
 		if pcs_mood['nrgredcheck'] = 1: pcs_mood -= 5
 		pcs_mood['nrgredcheck'] = 1
 	else
 		pcs_mood['nrgredcheck'] = 0
 	end
 
-	if pcs_hydra = 0:
+	if pcs_hydra <= 0:
 		if pcs_mood['hydredcheck'] = 1: pcs_mood -= 5
 		pcs_mood['hydredcheck'] = 1
 	else

+ 1 - 1
locations/hunterLoveSex.qsrc

@@ -3056,7 +3056,7 @@ if $ARGS[0] = 'din_hunters_sex_misionary_bonus':
 	i = rand(1,4)
 	j = rand(1,3)
 	h = rand(1,3)
-	if pcs_agil > 50 and strenbuf >= salo:'Throw legs <a href="exec:gt ''hunterLoveSex'', ''din_hunters_sex_misionary_bonus1''">head</a> .'
+	if pcs_agil > 50 and strenbuf >= pcs_mass['body'] + pcs_mass['butt']: 'Throw legs <a href="exec:gt ''hunterLoveSex'', ''din_hunters_sex_misionary_bonus1''">head</a> .'
 	*pl
 	if h < 3:'Having had enough of this position he asks you...'
 	if h = 3:'Suddenly <<$boydesc>> begins to move even faster and you realize that he is already on edge and ready...'

+ 1 - 1
locations/igorhome.qsrc

@@ -252,7 +252,7 @@ if $ARGS[0] = 'chat':
 			end
 		end
 	end
-	if mc_inventory['strapon'] > 0 and igorstrap = 1:
+	if mc_inventory['strapon'] > 0 and igorstrap >= 1:
 		act 'Be my bitch': gt 'igorev', 'strap on'
 	end
 	!!this only shows up if Sveta knows Igor cross dresses.

+ 0 - 1
locations/initg.qsrc

@@ -44,7 +44,6 @@ if $ARGS[0] = 'get_game_set':
 		'set_imgw = <<set_imgw>>'
 		'set_imgh = <<set_imgh>>'
 		'$set_imgh = "<<$set_imgh>>"'
-		'night_mode = <<night_mode>>'
 		'Enable_tablemap = <<Enable_tablemap>>'
 		'Enable_faceturn = <<Enable_faceturn>>'
 		'Enable_Android = <<Enable_Android>>'

+ 79 - 63
locations/intro_city_select.qsrc

@@ -3,8 +3,8 @@
 if $ARGS[0] = 'start':
 
 !!--------------------------inner thought stuff--------------------------------
-    $OpenInnerThought = '<i><font color=''magenta''>'
-    $CloseInnerThought = '</font></i>'
+	$OpenInnerThought = '<i><font color=''magenta''>'
+	$CloseInnerThought = '</font></i>'
 
 	age = 18
 	$month = 'June'
@@ -15,7 +15,8 @@ if $ARGS[0] = 'start':
 	year = 2017
 !!		Body
 	pcs_hgt = 170
-	salo = 60
+	pcs_mass['body'] = 60
+	pcs_mass['butt_gen'] = 20
 	pcs_teeth = 0
 	dick = 0
 !!		Stats
@@ -132,8 +133,8 @@ if $ARGS[0] = 'start':
 	'<<$npc_firstname[''A33'']>> is your older sister, who is two years older than you, but is still living at home while working at the local grocery store. She chose not to attend university and instead spends most of her free time drinking and going to parties with her friends, much to your mother''s dismay.'
 	'You also have a younger half-brother, <<$npc_firstname[''A34'']>>, who is really into sports, especially football, and is shaping up to be a fine athlete. He is a year younger than you and his father is your stepfather.'
 
-	act 'Re-enter name(s)': gt 'intro_city_select', 'start'
 	act 'Continue':	gt 'intro_city_select', 'start2'
+	act 'Re-enter name(s)': gt 'intro_city_select', 'start'
 end
 
 if $ARGS[0] = 'start2':
@@ -374,8 +375,9 @@ if $ARGS[0] = 'nerd':
 	npc_rel['A129'] += 10
 	npc_rel['A28'] += 10
 	npc_rel['A29'] += 10
-	genbsize = 13 
-!!b cup for ideal bmi
+	!!b cup for ideal bmi
+	pcs_mass['bust_gen'] = 13
+	pcs_mass['butt_gen'] = 20
 	pcs_traits['nerd_points'] = 60
 	pcs_traits['nerd_status'] = 2
 	pcs_traits['nerd_lernHome'] = 5
@@ -417,9 +419,10 @@ if $ARGS[0] = 'nerdqueen':
 		pcs_skin = 700
 		pcs_teeth = -1
 		pcs_butt = 12
-		genbsize = 22
-!!d cup for ideal bmi
-		salo = 87
+		!!d cup for ideal bmi
+		pcs_mass['bust_gen'] = 22
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 65
 		willpowermax = 70
 		gs 'grades', 'grade_award', 'school', 'math', 85
 		gs 'grades', 'grade_award', 'school', 'rus', 90
@@ -456,9 +459,10 @@ if $ARGS[0] = 'goodstudent':
 		pcs_artskls = 10
 		money += 2000
 		pcs_skin = 600
-		salo = 93
-		genbsize = 18
-!!c cup for ideal bmi
+		!!c cup for ideal bmi
+		pcs_mass['bust_gen'] = 18
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 70
 		gs 'npc_relationship', 'socialgroup_setting', 0, 0, 5, 0, 0, 20
 		npc_rel['A29'] += 20
 		if player_avatar ! 1: pcs_hairlng = 200
@@ -498,7 +502,7 @@ if $ARGS[0] = 'computergeek':
 		internet = 20
 		pcs_skin = 500
 		pcs_teeth = 1
-		salo = 56
+		pcs_mass['body'] = 42
 		pcs_inhib = 20
 		npc_rel['A152'] += 10
 		npc_rel['A153'] += 10
@@ -538,7 +542,7 @@ if $ARGS[0] = 'chessplayer':
 		pcs_react = 45
 		pcs_chess = 40
 		pcs_skin = 600
-		salo = 97
+		pcs_mass['body'] = 73
 		pcs_inhib = 15
 		chessyear = year
 		chessmonth = month
@@ -569,8 +573,9 @@ if $ARGS[0] = 'jock':
 	pcs_vital = 50
 	pcs_react = 50
 	pcs_agil = 50
-	genbsize = 12
-!!b cup for ideal bmi
+	!!b cup for ideal bmi
+	pcs_mass['bust_gen'] = 12
+	pcs_mass['butt_gen'] = 20
 	pcs_skin = 600
 	pcs_butt = 12
 	mc_inventory['cosmetics'] = 10
@@ -622,9 +627,10 @@ if $ARGS[0] = 'volleyball':
 		alterstrtimg = 12
 		pcs_react = 55
 		pcs_agil = 55
-		genbsize = 17
-!!c cup for ideal bmi
-		salo = 75
+		!!c cup for ideal bmi
+		pcs_mass['bust_gen'] = 17
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 56
 		pcs_vball = 50
 		gsAboVolley += 30
 		npc_rel['A13'] += 10
@@ -665,7 +671,7 @@ if $ARGS[0] = 'dancer':
 		pcs_skin = 700
 		pcs_teeth = -1
 		pcs_tan = 5
-		salo = 50
+		pcs_mass['body'] = 37
 		if player_avatar = 0:
 			pcs_hairlng = 200
 			pcs_eyesize = 2
@@ -712,7 +718,7 @@ if $ARGS[0] = 'runner':
 		pcs_vital = 55
 		pcs_agil = 55
 		pcs_inhib = 25
-		salo = 60
+		pcs_mass['body'] = 45
 		pcs_run = 55
 		gsAboBeg += 30
 		npc_rel['A3'] += 10
@@ -751,9 +757,10 @@ if $ARGS[0] = 'football':
 		pcs_stren = 80
 		pcs_react = 55
 		pcs_vital = 55
-		salo = 80
-		genbsize = 17
-!!c cup for ideal bmi
+		!!c cup for ideal bmi
+		pcs_mass['bust_gen'] = 17
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 60
 		pcs_kick = 20
 		pcs_ftbll = 55
 		npc_rel['A131'] += 10
@@ -825,8 +832,10 @@ if $ARGS[0] = 'socialite':
 		gs 'intro_city_select', 'cool'
 		alterstrtimg = 16
 		pcs_chrsm = 55
-		genbsize = 18
-!!c cup for ideal bmi
+		!!c cup for ideal bmi
+		pcs_mass['bust_gen'] = 18
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 60
 		pcs_humint = 40
 		pcs_makupskl = 40
 		pcs_heels = 30
@@ -840,7 +849,6 @@ if $ARGS[0] = 'socialite':
 		school_clothing = 6
 		if player_avatar ! 1: pcs_hairlng = 200
 		npc_rel['A140'] += 10
-		salo = 80
 		willpowermax = 70
 		gs 'grades', 'grade_award', 'school', 'math', 65
 		gs 'grades', 'grade_award', 'school', 'rus', 90
@@ -881,8 +889,10 @@ if $ARGS[0] = 'beautiful':
 		pcs_skin = 800
 		pcs_teeth = -1
 		pcs_tan = 50
-		genbsize = 22
-!!d cup for ideal bmi
+		!!d cup for ideal bmi
+		pcs_mass['bust_gen'] = 22
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 56
 		pcs_inhib = 25
 		mc_inventory['cosmetics'] = 50
 		mc_inventory['eyelash_fake'] =  10
@@ -898,7 +908,6 @@ if $ARGS[0] = 'beautiful':
 		pirsC = 2
 		PirsC2_owned = 1
 		gs 'npc_relationship', 'socialgroup_setting_boys', 10, 10, 10, 10, 10, 0
-		salo = 75
 		gs 'fame', 'pav', 'sex', 20
 		willpowermax = 80
 		gs 'grades', 'grade_award', 'school', 'math', 60
@@ -925,8 +934,9 @@ if $ARGS[0] = 'gopnik':
 	pcs_vital = 45
 	pcs_react = 45
 	pcs_agil = 45
-	genbsize = 13
-!!b cup for ideal bmi
+		!!b cup for ideal bmi
+	pcs_mass['bust_gen'] = 13
+	pcs_mass['butt_gen'] = 20
 	pcs_inhib = 25
 	pcs_heels = 10
 	pcs_makupskl = 25
@@ -980,7 +990,7 @@ if $ARGS[0] = 'gopnikstart':
 		pcs_punch = 35
 		pcs_kick = 35
 		pcs_def = 35
-		salo = 86
+		pcs_mass['body'] = 65
 		school_clothing = 5
 		npc_rel['A9'] += 10
 		npc_rel['A10'] += 10
@@ -1029,7 +1039,7 @@ if $ARGS[0] = 'troublemaker':
 		pcs_def = 20
 		pcs_humint = 10
 		pcs_persuas = 10
-		salo = 65
+		pcs_mass['body'] = 49
 		pirsD = 4
 		PirsD4_owned = 1
 		$currentpursetype = 'dolls'
@@ -1087,9 +1097,10 @@ if $ARGS[0] = 'alternative':
 		pcs_vital = 45
 		pcs_agil = 45
 		pcs_react = 45
-		genbsize = 18
-!!c cup for ideal bmi
-		salo = 75
+		!!c cup for ideal bmi
+		pcs_mass['bust_gen'] = 18
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 56
 		pcs_chrsm = 35
 		pcs_humint = 20
 		pcs_persuas = 20
@@ -1190,15 +1201,16 @@ if $ARGS[0] = 'friendless':
 		gs 'intro_city_select', 'outcast'
 		gs 'npc_relationship', 'socialgroup_setting', -10, -10, -10, -10, -10, 0
 		alterstrtimg = 22
-		genbsize = 12
-!!b cup for ideal bmi
+		!!b cup for ideal bmi
+		pcs_mass['bust_gen'] = 12
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 51
 		pcs_chrsm = 20
 		pcs_observ = 20
 		pcs_skin = 300 
 		pcs_makupskl = 10
 		npc_rel['A11'] -= 20
 		willpowermax = 60
-		salo = 68
 		gs 'grades', 'grade_award', 'school', 'math', 55
 		gs 'grades', 'grade_award', 'school', 'rus', 25
 		gs 'grades', 'grade_award', 'school', 'lit', 55
@@ -1227,8 +1239,10 @@ if $ARGS[0] = 'uglyduckling':
 		gs 'npc_relationship', 'socialgroup_setting_boys', -10, -10, 0, -10, 0, 0
 		alterstrtimg = 23
 		if glass < 1 : glass = 1
-		genbsize = 28
-!!e cup for ideal bmi
+		!!e cup for ideal bmi
+		pcs_mass['bust_gen'] = 28
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 94
 		pcs_inhib = 5
 		if player_avatar = 0:
 			pcs_eyesize = 0
@@ -1240,7 +1254,6 @@ if $ARGS[0] = 'uglyduckling':
 		currentpursenumber = 8
 		gm_purses[8] = 1
 		bag = 1
-		salo = 130
 		pcs_teeth = 2
 		willpowermax = 55
 		gs 'grades', 'grade_award', 'school', 'math', 55
@@ -1296,9 +1309,10 @@ if $ARGS[0] = 'goodgirl':
 			pcs_lashes = 1
 		end
 		school_clothing = 3
-		salo = 58
-		genbsize = 13
-!!b cup for ideal bmi
+		!!b cup for ideal bmi
+		pcs_mass['bust_gen'] = 13
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 43
 		willpowermax = 75
 		gs 'grades', 'grade_award', 'school', 'math', 80
 		gs 'grades', 'grade_award', 'school', 'rus', 80
@@ -1342,8 +1356,10 @@ if $ARGS[0] = 'slut':
 		pcs_makupskl = 40
 		pcs_danc = 30
 		pcs_heels = 50
-		genbsize = 22
-!!d cup for ideal bmi
+		!!d cup for ideal bmi
+		pcs_mass['bust_gen'] = 22
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 52
 		mc_inventory['cosmetics'] = 30
 		mc_inventory['eyelash_fake'] =  20
 		$currentpursetype = 'cats'
@@ -1378,7 +1394,6 @@ if $ARGS[0] = 'slut':
 		GspravkaT = 2
 		motherKnowSpravka = 2
 		Gspassed = 0
-		salo = 70
 		stat['porn'] = 75
 		stat['mast'] = 100
 		stat['hj'] = 70
@@ -1423,16 +1438,17 @@ if $ARGS[0] = 'goth':
 		pcs_traits['nerd_points'] = -10
 		gs 'intro_city_select', 'outcast'
 		gs 'npc_relationship', 'socialgroup_setting', 0, 0, 5, +20, 0, 0
-        npc_rel['A28'] -= 20
-	    npc_rel['A29'] -= 20
+		npc_rel['A28'] -= 20
+		npc_rel['A29'] -= 20
 		npc_rel['A33'] -= 20
-	    npc_rel['A34'] -= 20
-	    npc_rel['A144'] += 10
+		npc_rel['A34'] -= 20
+		npc_rel['A144'] += 10
 		npc_rel['A155'] += 5
-        alterstrtimg = 28
-		genbsize = 13
-!!b cup for ideal bmi
-		salo = 55
+		alterstrtimg = 28
+		!!b cup for ideal bmi
+		pcs_mass['bust_gen'] = 13
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 41
 		pcs_chrsm = 45
 		pcs_intel = 45
 		pcs_sprt = 50
@@ -1443,20 +1459,20 @@ if $ARGS[0] = 'goth':
 		pcs_artskls = 20
 		pcs_sewng = 20
 		pcs_skin = 700
-	    pcs_inhib = 25
+		pcs_inhib = 25
 		willpowermax = 65
 		if player_avatar = 0:
-		    pcs_hairlng = 265
-            pcs_haircol = 0
+			pcs_hairlng = 265
+			pcs_haircol = 0
 			pcs_eyesize = 3
 			pcs_eyecol = 1
 			pcs_lashes = 1
-        end
+		end
 		school_clothing = 1
-        mc_inventory['cosmetics'] = 25
+		mc_inventory['cosmetics'] = 25
 		mc_inventory['razor'] =  20
 		mc_inventory['tampons'] =  10
-        $currentpursetype = 'dolls'
+		$currentpursetype = 'dolls'
 		currentpursenumber = 18
 		dolls_purses[18] = 1
 		bag = 1

+ 103 - 49
locations/intro_customization.qsrc

@@ -2,7 +2,8 @@
 !!2022/03/12
 if $ARGS[0] = 'start':
 	'If you want to set your skills and attributes to a certain number, use the cheat menu to do it, the options to do it here were removed.'
-	if genbsize = '': genbsize = 22
+	if pcs_mass['butt_gen'] = 0: pcs_mass['butt_gen'] = 22
+	if pcs_mass['bust_gen'] = 0: pcs_mass['bust_gen'] = 22
 	if $soc_grup = '':gs 'intro_customization', 'none'
 	act 'Set attributes': gt 'intro_customization','modatt'
 	act 'Set skills': gt 'intro_customization','modskl'
@@ -26,94 +27,147 @@ end
 
 if $ARGS[0] = 'modapp':
 	cla & *clr
-	if genbsize = 0:genbsize = 12
+	if pcs_mass['bust_gen'] = 0: pcs_mass['bust_gen'] = 12
+	if pcs_mass['butt_gen'] = 0: pcs_mass['butt_gen'] = 22
 
 	'Choose base genetic breast size: (this is the genetic disposition and not the actual size at game start)'
 	nl
-	if genbsize = 2:
+	if pcs_mass['bust_gen'] = 2:
 		'Very small - Currently set'
 	else
-		'<a href="exec:genbsize = 2 & gt ''intro_customization'',''modapp''">Very small</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 2 & gt ''intro_customization'',''modapp''">Very small</a>'
 	end
 
-	if genbsize = 7:
+	if pcs_mass['bust_gen'] = 7:
 		'Below average - Currently set'
 	else
-		'<a href="exec:genbsize = 7 & gt ''intro_customization'',''modapp''">Below average</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 7 & gt ''intro_customization'',''modapp''">Below average</a>'
 	end
 	
-	if genbsize = 12:
+	if pcs_mass['bust_gen'] = 12:
 		'Average - Currently set'
 	else
-		'<a href="exec:genbsize = 12 & gt ''intro_customization'',''modapp''">Average</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 12 & gt ''intro_customization'',''modapp''">Average</a>'
 	end
 	
-	if genbsize = 17:
+	if pcs_mass['bust_gen'] = 17:
 		'Above average - Currently set'
 	else
-		'<a href="exec:genbsize = 17 & gt ''intro_customization'',''modapp''">Above average</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 17 & gt ''intro_customization'',''modapp''">Above average</a>'
 	end
 
-	if genbsize = 22:
+	if pcs_mass['bust_gen'] = 22:
 		'Large - Currently set'
 	else
-		'<a href="exec:genbsize = 22 & gt ''intro_customization'',''modapp''">Large</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 22 & gt ''intro_customization'',''modapp''">Large</a>'
 	end
 
-	if genbsize = 27:
+	if pcs_mass['bust_gen'] = 27:
 		'Extra large - Currently set'
 	else
-		'<a href="exec:genbsize = 27 & gt ''intro_customization'',''modapp''">Extra large</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 27 & gt ''intro_customization'',''modapp''">Extra large</a>'
 	end
 
-	if genbsize = 32:
+	if pcs_mass['bust_gen'] = 32:
 		'Really big - Currently set'
 	else
-		'<a href="exec:genbsize = 32 & gt ''intro_customization'',''modapp''">Really big</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 32 & gt ''intro_customization'',''modapp''">Really big</a>'
 	end
 
-	if genbsize = 37:
+	if pcs_mass['bust_gen'] = 37:
 		'Massive - Currently set'
 	else
-		'<a href="exec:genbsize = 37 & gt ''intro_customization'',''modapp''">Massive</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 37 & gt ''intro_customization'',''modapp''">Massive</a>'
 	end
 
-	if genbsize = 42:
+	if pcs_mass['bust_gen'] = 42:
 		'Getting silly - Currently set'
 	else
-		'<a href="exec:genbsize = 42 & gt ''intro_customization'',''modapp''">Getting silly</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 42 & gt ''intro_customization'',''modapp''">Getting silly</a>'
 	end
 
-	if genbsize = 47:
+	if pcs_mass['bust_gen'] = 47:
 		'Crazy big - Currently set'
 	else
-		'<a href="exec:genbsize = 47 & gt ''intro_customization'',''modapp''">Crazy big</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 47 & gt ''intro_customization'',''modapp''">Crazy big</a>'
 	end
 
-	if genbsize = 57:
+	if pcs_mass['bust_gen'] = 57:
 		'Freakishly big - Currently set'
 	else
-		'<a href="exec:genbsize = 57 & gt ''intro_customization'',''modapp''">Freakishly big</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 57 & gt ''intro_customization'',''modapp''">Freakishly big</a>'
 	end
 	
-	if genbsize = 67:
+	if pcs_mass['bust_gen'] = 67:
 		'Will struggle to open doors or see the ground big - Currently set'
 	else
-		'<a href="exec:genbsize = 67 & gt ''intro_customization'',''modapp''">Will struggle to open doors or see the ground big</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 67 & gt ''intro_customization'',''modapp''">Will struggle to open doors or see the ground big</a>'
 	end
 	
-	if genbsize = 87:
+	if pcs_mass['bust_gen'] = 87:
 		'You''ve been eclipsed by 2 small moons - Currently set'
 	else
-		'<a href="exec:genbsize = 87 & gt ''intro_customization'',''modapp''">You''ve been eclipsed by 2 small moons</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 87 & gt ''intro_customization'',''modapp''">You''ve been eclipsed by 2 small moons</a>'
+	end
+	*nl
+	*nl
+	*nl
+	'Choose base genetic butt size: (this is the genetic disposition and not the actual size at game start)'
+	if pcs_mass['butt_gen'] = 2:
+		'Flat - Currently set'
+	else
+		'<a href="exec:pcs_mass[''butt_gen''] = 2 & gt ''intro_customization'',''modapp''">Flat</a>'
+	end
+
+	if pcs_mass['butt_gen'] = 7:
+		'Mostly Flat - Currently set'
+	else
+		'<a href="exec:pcs_mass[''butt_gen''] = 7 & gt ''intro_customization'',''modapp''">Mostly Flat</a>'
+	end
+	
+	if pcs_mass['butt_gen'] = 12:
+		'Small - Currently set'
+	else
+		'<a href="exec:pcs_mass[''butt_gen''] = 12 & gt ''intro_customization'',''modapp''">Small</a>'
+	end
+	
+	if pcs_mass['butt_gen'] = 17:
+		'Below Average - Currently set'
+	else
+		'<a href="exec:pcs_mass[''butt_gen''] = 17 & gt ''intro_customization'',''modapp''">Below Average</a>'
+	end
+
+	if pcs_mass['butt_gen'] = 22:
+		'Average - Currently set'
+	else
+		'<a href="exec:pcs_mass[''butt_gen''] = 22 & gt ''intro_customization'',''modapp''">Average</a>'
+	end
+
+	if pcs_mass['butt_gen'] = 27:
+		'Above Average - Currently set'
+	else
+		'<a href="exec:pcs_mass[''butt_gen''] = 27 & gt ''intro_customization'',''modapp''">Above Average</a>'
 	end
 
-	act 'Body fat (<<salo>>/200)':  gs 'intro_customization','setsalo' & salo = nstat & gt 'intro_customization','modapp'
+	if pcs_mass['butt_gen'] = 32:
+		'Big - Currently set'
+	else
+		'<a href="exec:pcs_mass[''butt_gen''] = 32 & gt ''intro_customization'',''modapp''">Big</a>'
+	end
+
+	if pcs_mass['butt_gen'] = 37:
+		'Massive - Currently set'
+	else
+		'<a href="exec:pcs_mass[''butt_gen''] = 37 & gt ''intro_customization'',''modapp''">Massive</a>'
+	end
+
+
+	act 'Body fat (<<pcs_mass[''body'']>>/200)':  gs 'intro_customization','setbodymass' & pcs_mass['body'] = nstat & gt 'intro_customization','modapp'
 	act 'Return': gt'intro_customization','start'
 end
 
 if $ARGS[0] = 'setgenbsize':
-	nstat = genbsize
+	nstat = pcs_mass['bust_gen']
 	nstat = input 'Enter value that ends in a 2 or a 7. For example, 2, 7, 12 etc.'
 	if nstat > 97:
 		msg 'Please enter a value less than or equal to 97'
@@ -156,14 +210,14 @@ if $ARGS[0] = 'modrel_setup2':
 	dynamic 'if <<$ARGS[1]>> < 0: <<$ARGS[1]>> = 0'
 	dynamic 'if <<$ARGS[1]>> > 100: <<$ARGS[1]>> = 100'
 	dynamic 'x = <<$ARGS[1]>>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD><<$ARGS[2]>> (<<x>>/100)</TD><TD><a href="exec:<<$ARGS[1]>> = 0 & gt ''intro_customization'', $locM_arg">zero</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>> -= 10 & gt ''intro_customization'', $locM_arg">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>>  -= 5 & gt ''intro_customization'', $locM_arg">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  += 5 & gt ''intro_customization'', $locM_arg">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  += 10 & gt ''intro_customization'', $locM_arg">plus 10</a></TD><TD><a href="exec:<<$ARGS[1]>>  = 100 & gt ''intro_customization'', $locM_arg">100</a></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD><<$ARGS[2]>> (<<x>>/100)</TD><TD><a href="exec:<<$ARGS[1]>> = 0 & gt ''intro_customization'', $locM_arg">zero</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>> -= 10 & gt ''intro_customization'', $locM_arg">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>>  -= 5 & gt ''intro_customization'', $locM_arg">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  += 5 & gt ''intro_customization'', $locM_arg">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  += 10 & gt ''intro_customization'', $locM_arg">plus 10</a></TD><TD><a href="exec:<<$ARGS[1]>>  = 100 & gt ''intro_customization'', $locM_arg">100</a></TD>'
 end
 
 if $ARGS[0] = 'modrel_setup3':
 	dynamic 'if <<$ARGS[1]>> < 50: <<$ARGS[1]>> = 50'
 	dynamic 'if <<$ARGS[1]>> > 200: <<$ARGS[1]>> = 200'
 	dynamic 'x = <<$ARGS[1]>>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD><<$ARGS[2]>> (<<x>>/200)</TD><TD><a href="exec:<<$ARGS[1]>> = 0 & gt ''intro_customization'', $locM_arg">zero</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>> -= 10 & gt ''intro_customization'', $locM_arg">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>>  -= 5 & gt ''intro_customization'', $locM_arg">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  += 5 & gt ''intro_customization'', $locM_arg">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  += 10 & gt ''intro_customization'', $locM_arg">plus 10</a></TD><TD><a href="exec:<<$ARGS[1]>>  = 200 & gt ''intro_customization'', $locM_arg">200</a></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD><<$ARGS[2]>> (<<x>>/200)</TD><TD><a href="exec:<<$ARGS[1]>> = 0 & gt ''intro_customization'', $locM_arg">zero</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>> -= 10 & gt ''intro_customization'', $locM_arg">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>>  -= 5 & gt ''intro_customization'', $locM_arg">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  += 5 & gt ''intro_customization'', $locM_arg">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  += 10 & gt ''intro_customization'', $locM_arg">plus 10</a></TD><TD><a href="exec:<<$ARGS[1]>>  = 200 & gt ''intro_customization'', $locM_arg">200</a></TD>'
 end
 
 !!Values reversed just for inhib use
@@ -171,7 +225,7 @@ if $ARGS[0] = 'modrel_setup4':
 	dynamic 'if <<$ARGS[1]>> < 0: <<$ARGS[1]>> = 0'
 	dynamic 'if <<$ARGS[1]>> > 100: <<$ARGS[1]>> = 100'
 	dynamic 'x = 100-<<$ARGS[1]>>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD><<$ARGS[2]>> (<<x>>/100)</TD><TD><a href="exec:<<$ARGS[1]>> = 100 & gt ''intro_customization'', $locM_arg">zero</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>> += 10 & gt ''intro_customization'', $locM_arg">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>>  += 5 & gt ''intro_customization'', $locM_arg">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  -= 5 & gt ''intro_customization'', $locM_arg">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  -= 10 & gt ''intro_customization'', $locM_arg">plus 10</a></TD><TD><a href="exec:<<$ARGS[1]>>  = 0 & gt ''intro_customization'', $locM_arg">100</a></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD><<$ARGS[2]>> (<<x>>/100)</TD><TD><a href="exec:<<$ARGS[1]>> = 100 & gt ''intro_customization'', $locM_arg">zero</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>> += 10 & gt ''intro_customization'', $locM_arg">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:<<$ARGS[1]>>  += 5 & gt ''intro_customization'', $locM_arg">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  -= 5 & gt ''intro_customization'', $locM_arg">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:<<$ARGS[1]>>  -= 10 & gt ''intro_customization'', $locM_arg">plus 10</a></TD><TD><a href="exec:<<$ARGS[1]>>  = 0 & gt ''intro_customization'', $locM_arg">100</a></TD>'
 end
 
 if $ARGS[0] = 'modite_cos':
@@ -380,25 +434,25 @@ if $ARGS[0] = 'setval3':
 	end
 end
 
-if $ARGS[0] = 'setsalo':
+if $ARGS[0] = 'setbodymass':
 	*clr & cla
-	'20 = underweight, slight, wiry'
-	'40 = slender, skinny, lean'
-	'60 = healthy, toned, ripped'
-	'80 = cute, muscular'
-	'100 = chubby, curvy, herculean'
-	'120 = overweight, stocky'
-	'140 = fat, heavy set'
-
-	nstat = salo
-	nstat = input 'Enter value in multiples of 20. For example, 20, 40, 60 etc.'
-	if nstat > 200:
-		msg 'Please enter a value less than 200'
+	'15 = underweight, slight, wiry'
+	'30 = slender, skinny, lean'
+	'45 = healthy, toned, ripped'
+	'60 = cute, muscular'
+	'75 = chubby, curvy, herculean'
+	'90 = overweight, stocky'
+	'105 = fat, heavy set'
+
+	nstat = pcs_mass['body']
+	nstat = input 'Enter value in multiples of 5, between 15 and 150. For example, 15, 20, 60 etc.'
+	if nstat > 150:
+		msg 'Please enter a value less than 150'
 		gs 'intro_customization', 'setval'
-	elseif nstat < 20:
-		msg 'Please enter a value greater than 20'
+	elseif nstat < 15:
+		msg 'Please enter a value greater than 15'
 		gs 'intro_customization', 'setval'
-	elseif nstat mod 20 ! 0:
+	elseif nstat mod 5 ! 0:
 		msg 'Please enter a value in multiples of 20'
 		gs 'intro_customization', 'setval'
 	else

+ 2 - 2
locations/intro_initialization.qsrc

@@ -497,7 +497,7 @@ else
 		gm_school_h[60] = 120
 		gm_school_b[60] = pcs_hips
 		danilovich_outfits[65] = 1
-		danilovich_outfits_h[65] = 100			
+		danilovich_outfits_h[65] = 100
 		sportsclothingnumber = 65
 		danilovich_shoe[17] = 1
 		danilovich_shoe[21] = 0
@@ -523,7 +523,7 @@ $sports_clothing_name = 'default sports outfit'
 
 killvar 'swim_start'
 
-gs 'body'
+gs 'body', 'Update_Body'
 gs 'body', 'DailyUpdate'
 gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 pcs_stam = stammax

+ 1 - 1
locations/intro_initialization_city.qsrc

@@ -520,7 +520,7 @@ $sports_clothing_name = 'default sports outfit'
 
 killvar 'swim_start'
 
-gs 'body'
+gs 'body', 'Update_Body'
 gs 'body', 'DailyUpdate'
 gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 pcs_stam = stammax

+ 112 - 96
locations/intro_sg_select.qsrc

@@ -51,7 +51,7 @@ if $ARGS[0] = 'start':
 	gs 'npcstatic5'
 	gs 'npcstatic6'
 
-	!! default friendship is 30 for all  npcs
+	!! default friendship is 30 for all npcs
 	gs 'npc_relationship', 'default'
 	!! changes the values for family members and old friends
 	gs 'npc_relationship', 'default_family_friends'
@@ -107,10 +107,10 @@ if $ARGS[0] = 'start':
 	'You also have a younger half-brother, <<$npc_firstname[''A34'']>>, who is really into sports, especially football, and is shaping up to be a fine athlete. He is a year younger than you and his father is your stepfather.'
 	'Your <<$npc_usedname[''A30'']>> lives in the same building as you do, though you rarely see her except when you pass her in the stairwell. She is your mother''s older sister. <<$npc_usedname[''A54'']>>, as everyone calls him, is best friends with your stepfather. <<$npc_firstname[''A11'']>> <<$npc_lastname[''A11'']>>, your childhood friend, is the same age as you and grew up living in the same apartment building on the floor above yours. His father, <<$npc_firstname[''A112'']>>, is an old friend of your mother.'
 
+	act 'Continue':	gt 'intro_sg_select', 'SGStart2'
 	if $start_type[1] ! 'tg':
 		act 'Re-enter name(s)': gt 'intro_sg_select', 'start'
 	end
-	act 'Continue':	gt 'intro_sg_select', 'SGStart2'
 end
 
 if $ARGS[0] = 'SGStart2':
@@ -264,7 +264,7 @@ if $ARGS[0] = 'charselect':
 		gs 'intro_sg_select', 'gopnikinfo'
 		act 'I am a gopnik': gt 'intro_sg_select', 'gopnikstart'
 		act 'I am a punk or troublemaker': gt 'intro_sg_select', 'troublemaker'
-		act 'I am <<$npc_nickname[''A9'']>>''s girlfriend':  gt 'intro_sg_select', 'vitekgf'
+		act 'I am <<$npc_nickname[''A9'']>>''s girlfriend': gt 'intro_sg_select', 'vitekgf'
 		act 'I am an alternative, party girl or rebel': gt 'intro_sg_select', 'alternative'
 	end
 
@@ -409,7 +409,7 @@ if $ARGS[0] = 'nerd':
 	fantasybook = 5
 	grupTipe=3
 	money += 3000
-	mc_inventory['shampoo'] =  20
+	mc_inventory['shampoo'] = 20
 	mc_inventory['sanitary_pads'] = 40
 	if player_avatar = 0:
 		pcs_eyesize = 1
@@ -435,8 +435,9 @@ if $ARGS[0] = 'nerd':
 	grupvalue[3] = 800
 	grupvalue[4] = 100
 	grupvalue[6] = 600
-	genbsize = 13 
-!!b cup for ideal bmi
+	!!b cup for ideal bmi
+	pcs_mass['bust_gen'] = 13
+	pcs_mass['butt_gen'] = 20
 	pcs_traits['nerd_points'] = 60
 	pcs_traits['nerd_status'] = 2
 	pcs_traits['nerd_lernHome'] = 5
@@ -471,7 +472,7 @@ if $ARGS[0] = 'nerdqueen':
 		grupvalue[3] = 900
 		grupvalue[6] = 700
 		mc_inventory['cosmetics'] = 10
-		mc_inventory['razor'] =  10
+		mc_inventory['razor'] = 10
 		if player_avatar = 0:
 			pcs_hairlng = 300
 			pcs_eyesize = 3
@@ -481,9 +482,10 @@ if $ARGS[0] = 'nerdqueen':
 		pcs_skin = 700
 		pcs_teeth = -1
 		pcs_butt = 12
-		genbsize = 22
-!!d cup for ideal bmi
-		salo = 87
+		!!d cup for ideal bmi
+		pcs_mass['bust_gen'] = 22
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 65
 		willpowermax = 70
 		gs 'grades', 'grade_award', 'school', 'math', 85
 		gs 'grades', 'grade_award', 'school', 'rus', 90
@@ -518,9 +520,10 @@ if $ARGS[0] = 'goodstudent':
 		pcs_instrmusic = 10
 		pcs_artskls = 10
 		money += 2000
-		salo = 93
-		genbsize = 18
-!!c cup for ideal bmi
+		!!c cup for ideal bmi
+		pcs_mass['bust_gen'] = 18
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 70
 		grupvalue[3] = 850
 		grupvalue[6] = 700
 		gs 'npc_relationship', 'socialgroup_setting', 0, 0, 5, 0, 0, 20
@@ -561,7 +564,7 @@ if $ARGS[0] = 'computergeek':
 		internet = 20
 		pcs_skin = 500
 		pcs_teeth = 1
-		salo = 56
+		pcs_mass['body'] = 42
 		pcs_inhib = 20
 		npc_rel['A152'] += 10
 		npc_rel['A153'] += 10
@@ -600,7 +603,7 @@ if $ARGS[0] = 'chessplayer':
 		pcs_prcptn = 40
 		pcs_react = 40
 		pcs_chess = 40
-		salo = 97
+		pcs_mass['body'] = 73
 		pcs_inhib = 15
 		chessyear = year
 		chessmonth = month
@@ -631,15 +634,16 @@ if $ARGS[0] = 'jock':
 	pcs_vital = 45
 	pcs_react = 45
 	pcs_agil = 45
-	genbsize = 12
-!!b cup for ideal bmi
+	!!b cup for ideal bmi
+	pcs_mass['bust_gen'] = 12
+	pcs_mass['butt_gen'] = 20
 	pcs_skin = 600
 	pcs_butt = 12
 	mc_inventory['cosmetics'] = 10
-	mc_inventory['razor'] =  10
-	mc_inventory['shampoo'] =  20
+	mc_inventory['razor'] = 10
+	mc_inventory['shampoo'] = 20
 	mc_inventory['sanitary_pads'] = 20
-	mc_inventory['tampons'] =  20
+	mc_inventory['tampons'] = 20
 	pcs_run = 20
 	pcs_bushcraft = 5
 	pcs_ftbll = 10
@@ -665,7 +669,7 @@ if $ARGS[0] = 'jock':
 	gs 'npc_relationship', 'socialgroup_setting', 10, 25, -5, 0, -10, 0
 	npc_rel['A129'] -= 10
 	npc_rel['A18'] = 1
-	mc_inventory['scrunchies'] =  10
+	mc_inventory['scrunchies'] = 10
 	hscrunchw = 0
 	pcs_tan = 20
 	if player_avatar = 0:
@@ -689,9 +693,10 @@ if $ARGS[0] = 'volleyball':
 		alterstrtimg = 12
 		pcs_react = 45
 		pcs_agil = 45
-		genbsize = 17
-!!c cup for ideal bmi
-		salo = 75
+		!!c cup for ideal bmi
+		pcs_mass['bust_gen'] = 17
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 56
 		pcs_vball = 50
 		gsAboVolley += 30
 		npc_rel['A13'] += 10
@@ -734,7 +739,7 @@ if $ARGS[0] = 'dancer':
 		pcs_skin = 700
 		pcs_teeth = -1
 		pcs_tan = 5
-		salo = 50
+		pcs_mass['body'] = 37
 		if player_avatar = 0:
 			pcs_hairlng = 200
 			pcs_eyesize = 2
@@ -780,7 +785,7 @@ if $ARGS[0] = 'runner':
 		pcs_vital = 50
 		pcs_agil = 50
 		pcs_inhib = 25
-		salo = 60
+		pcs_mass['body'] = 45
 		pcs_run = 50
 		gsAboBeg += 30
 		npc_rel['A3'] += 10
@@ -819,9 +824,10 @@ if $ARGS[0] = 'football':
 		pcs_stren = 80
 		pcs_react = 45
 		pcs_vital = 45
-		salo = 80
-		genbsize = 17
-!!c cup for ideal bmi
+		!!c cup for ideal bmi
+		pcs_mass['bust_gen'] = 17
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 60
 		pcs_kick = 20
 		pcs_ftbll = 50
 		npc_rel['A131'] += 10
@@ -862,10 +868,10 @@ if $ARGS[0] = 'cool':
 	pcs_inhib = 20
 	swim_start = 99
 	mc_inventory['cosmetics'] = 20
-	mc_inventory['shampoo'] =  20
-	mc_inventory['razor'] =  20
+	mc_inventory['shampoo'] = 20
+	mc_inventory['razor'] = 20
 	mc_inventory['sanitary_pads'] = 20
-	mc_inventory['tampons'] =  20
+	mc_inventory['tampons'] = 20
 	money += 1000
 	grupvalue[1] = 800
 	grupvalue[2] = 300
@@ -899,8 +905,10 @@ if $ARGS[0] = 'socialite':
 		gs 'intro_sg_select', 'cool'
 		alterstrtimg = 16
 		pcs_chrsm = 50
-		genbsize = 18
-!!c cup for ideal bmi
+		!!c cup for ideal bmi
+		pcs_mass['bust_gen'] = 18
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 60
 		pcs_humint = 40
 		pcs_makupskl = 40
 		pcs_heels = 30
@@ -914,7 +922,6 @@ if $ARGS[0] = 'socialite':
 		school_clothing = 6
 		if player_avatar ! 1: pcs_hairlng = 200
 		npc_rel['A140'] += 10
-		salo = 80
 		willpowermax = 70
 		gs 'grades', 'grade_award', 'school', 'math', 65
 		gs 'grades', 'grade_award', 'school', 'rus', 90
@@ -954,25 +961,26 @@ if $ARGS[0] = 'beautiful':
 		pcs_skin = 900
 		pcs_teeth = -1
 		pcs_tan = 50
-		genbsize = 22
-!!d cup for ideal bmi
+		!!d cup for ideal bmi
+		pcs_mass['bust_gen'] = 22
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 56
 		pcs_inhib = 25
 		mc_inventory['cosmetics'] = 50
-		mc_inventory['eyelash_fake'] =  10
-		mc_inventory['eyelash_mink'] =  2
+		mc_inventory['eyelash_fake'] = 10
+		mc_inventory['eyelash_mink'] = 2
 		$currentpursetype = 'fashionista'
 		currentpursenumber = 9
 		fashionista_purses[9] = 1
 		bag = 1
 		gs 'obj_din', 'old'
-		mc_inventory['comb'] =  1
-		mc_inventory['travel_makeup'] =  10
-		mc_inventory['suncream'] =  10
+		mc_inventory['comb'] = 1
+		mc_inventory['travel_makeup'] = 10
+		mc_inventory['suncream'] = 10
 		pirsC = 2
 		PirsC2_owned = 1
 		gs 'npc_relationship', 'socialgroup_setting_boys', 10, 10, 10, 10, 10, 0
 		npc_rel['A18'] = 1
-		salo = 75
 		grupvalue[1] = 900
 		grupvalue[4] = 300
 		gs 'fame', 'pav', 'sex', 20
@@ -1001,16 +1009,17 @@ if $ARGS[0] = 'gopnik':
 	pcs_vital = 40
 	pcs_react = 40
 	pcs_agil = 40
-	genbsize = 13
-!!b cup for ideal bmi
+	!!b cup for ideal bmi
+	pcs_mass['bust_gen'] = 13
+	pcs_mass['butt_gen'] = 20
 	pcs_inhib = 25
 	pcs_heels = 10
 	pcs_makupskl = 25
 	mc_inventory['cosmetics'] = 10
-	mc_inventory['shampoo'] =  20
-	mc_inventory['razor'] =  10
+	mc_inventory['shampoo'] = 20
+	mc_inventory['razor'] = 10
 	mc_inventory['sanitary_pads'] = 30
-	mc_inventory['tampons'] =  10
+	mc_inventory['tampons'] = 10
 	mc_inventory['cigarettes'] = 20
 	fakepassport = 1
 	pirsC = 1
@@ -1025,7 +1034,7 @@ if $ARGS[0] = 'gopnik':
 	npc_rel['A11'] += 10
 	npc_rel['A18'] = 1
 	npc_rel['A23'] = 20
-	mc_inventory['tampons'] =  20
+	mc_inventory['tampons'] = 20
 	pcs_run = 20
 	pcs_humint = 10
 	pcs_tan = 10
@@ -1064,7 +1073,7 @@ if $ARGS[0] = 'gopnikstart':
 		pcs_punch = 35
 		pcs_kick = 35
 		pcs_def = 35
-		salo = 86
+		pcs_mass['body'] = 65
 		pcs_teeth = 1
 		school_clothing = 5
 		npc_rel['A9'] += 10
@@ -1115,7 +1124,7 @@ if $ARGS[0] = 'troublemaker':
 		pcs_def = 20
 		pcs_humint = 10
 		pcs_persuas = 10
-		salo = 65
+		pcs_mass['body'] = 49
 		pirsD = 4
 		PirsD4_owned = 1
 		$currentpursetype = 'dolls'
@@ -1164,8 +1173,10 @@ if $ARGS[0] = 'vitekgf':
 		gs 'intro_sg_select', 'gopnik'
 		alterstrtimg = 20
 		pcs_chrsm = 40
-		genbsize = 32
-!!e cup for ideal bmi
+		!!e cup for ideal bmi
+		pcs_mass['bust_gen'] = 32
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 55
 		pcs_humint = 20
 		pcs_makupskl = 30
 		pcs_heels = 30
@@ -1199,7 +1210,6 @@ if $ARGS[0] = 'vitekgf':
 		pcs_tan = 5
 		pcs_vag = 1
 		pcs_throat = 1
-		salo = 73
 		stat['hj'] = 10
 		stat['bj'] = 5
 		stat['vaginal'] = 2
@@ -1245,16 +1255,17 @@ if $ARGS[0] = 'alternative':
 		pcs_vital = 40
 		pcs_agil = 40
 		pcs_react = 40
-		genbsize = 18
-!!c cup for ideal bmi
-		salo = 75
+		!!c cup for ideal bmi
+		pcs_mass['bust_gen'] = 18
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 56
 		pcs_chrsm = 45
 		pcs_humint = 20
 		pcs_persuas = 10
 		pcs_makupskl = 40
 		pcs_danc = 20
 		pcs_heels = 20
-		mc_inventory['eyelash_fake'] =  5
+		mc_inventory['eyelash_fake'] = 5
 		mc_inventory['cosmetics'] = 20
 		pirsD = 5
 		PirsD5_owned = 1
@@ -1343,7 +1354,7 @@ if $ARGS[0] = 'outcast':
 	pcs_butt = 4
 	pcs_tan = 0
 	grupTipe=5
-	mc_inventory['shampoo'] =  20
+	mc_inventory['shampoo'] = 20
 	mc_inventory['sanitary_pads'] = 40
 end
 
@@ -1355,8 +1366,10 @@ if $ARGS[0] = 'friendless':
 		gs 'intro_sg_select', 'outcast'
 		gs 'npc_relationship', 'socialgroup_setting', -10, -10, -10, -10, -10, 0
 		alterstrtimg = 22
-		genbsize = 12
-!!b cup for ideal bmi
+		!!b cup for ideal bmi
+		pcs_mass['bust_gen'] = 12
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 51
 		pcs_chrsm = 20
 		pcs_observ = 20
 		pcs_skin = 400
@@ -1366,7 +1379,6 @@ if $ARGS[0] = 'friendless':
 		grupvalue[1] = 50
 		grupvalue[3] = 200
 		willpowermax = 60
-		salo = 68
 		gs 'grades', 'grade_award', 'school', 'math', 55
 		gs 'grades', 'grade_award', 'school', 'rus', 25
 		gs 'grades', 'grade_award', 'school', 'lit', 55
@@ -1398,8 +1410,10 @@ if $ARGS[0] = 'uglyduckling':
 		uglyduck_flag = 1
 		alterstrtimg = 23
 		if glass < 1 : glass = 1
-		genbsize = 28
-!!e cup for ideal bmi
+		!!e cup for ideal bmi
+		pcs_mass['bust_gen'] = 28
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 94
 		pcs_inhib = 5
 		pcs_teeth = 2
 		if player_avatar = 0:
@@ -1408,7 +1422,6 @@ if $ARGS[0] = 'uglyduckling':
 			pcs_lashes = 2
 		end
 		school_clothing = 3
-		salo = 125
 		willpowermax = 55
 		gs 'grades', 'grade_award', 'school', 'math', 55
 		gs 'grades', 'grade_award', 'school', 'rus', 25
@@ -1451,7 +1464,7 @@ if $ARGS[0] = 'goodgirl':
 		pcs_makupskl = 10
 		church_moral = 40
 		money += 1000
-		mc_inventory['shampoo'] =  10
+		mc_inventory['shampoo'] = 10
 		pcs_skin = 500
 		$currentpursetype = 'gm'
 		currentpursenumber = 6
@@ -1464,9 +1477,10 @@ if $ARGS[0] = 'goodgirl':
 			pcs_lashes = 1
 		end
 		school_clothing = 3
-		salo = 58
-		genbsize = 13
-!!b cup for ideal bmi
+		!!b cup for ideal bmi
+		pcs_mass['bust_gen'] = 13
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 43
 		willpowermax = 75
 		gs 'grades', 'grade_award', 'school', 'math', 80
 		gs 'grades', 'grade_award', 'school', 'rus', 80
@@ -1516,20 +1530,22 @@ if $ARGS[0] = 'slut':
 		pcs_makupskl = 30
 		pcs_danc = 20
 		pcs_heels = 50
-		genbsize = 22
-!!d cup for ideal bmi
+		!!d cup for ideal bmi
+		pcs_mass['bust_gen'] = 22
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 52
 		mc_inventory['cosmetics'] = 30
-		mc_inventory['eyelash_fake'] =  20
+		mc_inventory['eyelash_fake'] = 20
 		$currentpursetype = 'cats'
 		currentpursenumber = 10
 		cats_purses[10] = 1
 		bag = 1
 		gs 'obj_din', 'old'
-		mc_inventory['comb'] =  1
-		mc_inventory['travel_makeup'] =  10
-		mc_inventory['makeup_wipes'] =  10
-		mc_inventory['razor'] =  10
-		mc_inventory['shampoo'] =  20
+		mc_inventory['comb'] = 1
+		mc_inventory['travel_makeup'] = 10
+		mc_inventory['makeup_wipes'] = 10
+		mc_inventory['razor'] = 10
+		mc_inventory['shampoo'] = 20
 		pirsC = 2
 		PirsC2_owned = 1
 		motherKnowSpravka = 1
@@ -1552,9 +1568,8 @@ if $ARGS[0] = 'slut':
 		GspravkaT = 2
 		motherKnowSpravka = 2
 		mc_inventory['sanitary_pads'] = 0
-		mc_inventory['tampons'] =  40
+		mc_inventory['tampons'] = 40
 		Gspassed = 0
-		salo = 70
 		stat['porn'] = 75
 		stat['mast'] = 100
 		stat['hj'] = 70
@@ -1601,17 +1616,18 @@ if $ARGS[0] = 'goth':
 		pcs_traits['nerd_points'] = -10
 		gs 'intro_sg_select', 'outcast'
 		gs 'npc_relationship', 'socialgroup_setting', -5, 0, 0, +10, 0, -10
-        npc_rel['A28'] -= 20
-	    npc_rel['A29'] -= 20
+		npc_rel['A28'] -= 20
+		npc_rel['A29'] -= 20
 		npc_rel['A33'] -= 20
-	    npc_rel['A34'] -= 20
-	    npc_rel['A144'] += 10
+		npc_rel['A34'] -= 20
+		npc_rel['A144'] += 10
 		npc_rel['A155'] += 5
 		grupvalue[4] = 300
-        alterstrtimg = 28
-		genbsize = 13
-!!b cup for ideal bmi
-		salo = 55
+		alterstrtimg = 28
+		!!b cup for ideal bmi
+		pcs_mass['bust_gen'] = 13
+		pcs_mass['butt_gen'] = 20
+		pcs_mass['body'] = 41
 		pcs_chrsm = 40
 		pcs_intel = 40
 		pcs_sprt = 45
@@ -1623,20 +1639,20 @@ if $ARGS[0] = 'goth':
 		pcs_sewng = 20
 		pcs_skin = 700
 		pcs_teeth = -1
-	    pcs_inhib = 25
+		pcs_inhib = 25
 		willpowermax = 65
 		if player_avatar = 0:
-		    pcs_hairlng = 265
-            pcs_haircol = 0
+			pcs_hairlng = 265
+			pcs_haircol = 0
 			pcs_eyesize = 3
 			pcs_eyecol = 1
 			pcs_lashes = 1
-        end
+		end
 		school_clothing = 1
-        mc_inventory['cosmetics'] = 25
-		mc_inventory['razor'] =  20
-		mc_inventory['tampons'] =  10
-        $currentpursetype = 'dolls'
+		mc_inventory['cosmetics'] = 25
+		mc_inventory['razor'] = 20
+		mc_inventory['tampons'] = 10
+		$currentpursetype = 'dolls'
 		currentpursenumber = 18
 		dolls_purses[18] = 1
 		bag = 1
@@ -1669,7 +1685,7 @@ if $ARGS[0] = 'sg_settings':
 	mc_inventory['dish_soap'] = 0
 	mc_inventory['food_basic'] = 0
 	mc_inventory['laundry_soap'] = 0
-	mc_inventory['shampoo'] =  0
+	mc_inventory['shampoo'] = 0
 
 	hcolmotherremember = pcs_haircol
 	hcolfatherremember = pcs_haircol

+ 43 - 42
locations/intro_sg_select_custom.qsrc

@@ -179,7 +179,7 @@ if $ARGS[0] = 'none':
 	pcs_stren = 30
 	pcs_agil = 30
 	pcs_vital = 30
-	pcs_intel = 30	
+	pcs_intel = 30
 	pcs_react = 30
 	pcs_sprt = 30
 	pcs_chrsm = 30
@@ -191,7 +191,7 @@ if $ARGS[0] = 'none':
 	!!Mental Skills Reset
 	pcs_humint = 0
 	pcs_persuas = 0
-	pcs_observ = 0	
+	pcs_observ = 0
 	
 	!!Sport Skills Reset
 	pcs_jab = 0
@@ -231,18 +231,18 @@ if $ARGS[0] = 'none':
 	pcs_medcn = 0
 	
 	!!social group Reset
-	grupTipe = 0	
-	grupvalue[1] = 0	
-	grupvalue[2] = 0	
-	grupvalue[3] = 0	
-	grupvalue[4] = 0	
-	grupvalue[6] = 0	
+	grupTipe = 0
+	grupvalue[1] = 0
+	grupvalue[2] = 0
+	grupvalue[3] = 0
+	grupvalue[4] = 0
+	grupvalue[6] = 0
 	gs 'npc_relationship', 'socialgroup_setting', 0, 0, 0, 0, 0, 0	
 	
 	!!npc relationship Reset
 	npc_rel['A11'] = 60	
-	npc_rel['A129'] = 30	
-	npc_rel['A133'] = 30	
+	npc_rel['A129'] = 30
+	npc_rel['A133'] = 30
 	npc_rel['A28'] = 50	
 	npc_rel['A29'] = 50	
 	npc_rel['A33'] = 70	
@@ -250,28 +250,29 @@ if $ARGS[0] = 'none':
 	
 	!!items Reset
 	money = 2000
-	fakepassport = 0	
-	fantasybook = 0	
-	glass = 0	
-	mc_inventory['scrunchies'] =  0
+	fakepassport = 0
+	fantasybook = 0
+	glass = 0
+	mc_inventory['scrunchies'] = 0
 	mc_inventory['cosmetics'] = 0
-	pirsC = 0	
+	pirsC = 0
 	PirsC1_owned = 0
-	mc_inventory['shampoo'] =  0	
-	mc_inventory['cigarettes'] = 0	
-	mc_inventory['razor'] =  0
-	swim_start = 0	
-	mc_inventory['tampons'] =  0
+	mc_inventory['shampoo'] = 0
+	mc_inventory['cigarettes'] = 0
+	mc_inventory['razor'] = 0
+	swim_start = 0
+	mc_inventory['tampons'] = 0
 	
 	!!apprnc & sex stat reset
-	genbsize = 22
+	pcs_mass['bust_gen'] = 22
+	pcs_mass['butt_gen'] = 20
 	pcs_skin = 40
-	salo = 80
+	pcs_mass['body'] = 80
 	pcs_tan = 0	
-	pcs_throat = 0	
+	pcs_throat = 0
 	pcs_vag = 0
-	stat['bj'] = 0	
-	stat['hj'] = 0	
+	stat['bj'] = 0
+	stat['hj'] = 0
 	stat['vaginal'] = 0
 	$soc_grup = 'outcast'
 	grupTipe = 5
@@ -302,10 +303,10 @@ if $ARGS[0] = 'modrel_fam':
 	*nl
 	*nl
 	'<center><table border=0 cellspacing=0 cellpadding=25  bgcolor=#808080><TH></TH><TH>Set to zero</TH><TH>Minus 10</TH><TH>Minus 5</TH><TH>Plus 5</TH><TH>Plus 10</TH><TH>Set to 100</TH>'
-	'<TR bgcolor=<<$bcolor1>>><TD>Stepfather: <<npc_rel[''A28'']>></TD><TD><a href="exec:npc_rel[''A28''] = 0 & gt ''intro_sg_select_custom'', ''modrel_fam''">zero</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A28''] -= 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A28''] -= 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A28''] += 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A28''] += 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 10</a></TD><TD><a href="exec:npc_rel[''A28''] = 100 & gt ''intro_sg_select_custom'', ''modrel_fam''">100</a></TD>'
-	'<TR bgcolor=<<$bcolor1>>><TD>Mother: <<npc_rel[''A29'']>></TD><TD><a href="exec:npc_rel[''A29''] = 0 & gt ''intro_sg_select_custom'', ''modrel_fam''">zero</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A29''] -= 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A29''] -= 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A29''] += 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A29''] += 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 10</a></TD><TD><a href="exec:npc_rel[''A29''] = 100 & gt ''intro_sg_select_custom'', ''modrel_fam''">100</a></TD>'
-	'<TR bgcolor=<<$bcolor1>>><TD>Sister: <<npc_rel[''A33'']>></TD><TD><a href="exec:npc_rel[''A33''] = 0 & gt ''intro_sg_select_custom'', ''modrel_fam''">zero</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A33''] -= 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A33''] -= 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A33''] += 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A33''] += 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 10</a></TD><TD><a href="exec:npc_rel[''A33''] = 100 & gt ''intro_sg_select_custom'', ''modrel_fam''">100</a></TD>'
-	'<TR bgcolor=<<$bcolor1>>><TD>Brother: <<npc_rel[''A34'']>></TD><TD><a href="exec:npc_rel[''A34''] = 0 & gt ''intro_sg_select_custom'', ''modrel_fam''">zero</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A34''] -= 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A34''] -= 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A34''] += 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A34''] += 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 10</a></TD><TD><a href="exec:npc_rel[''A34''] = 100 & gt ''intro_sg_select_custom'', ''modrel_fam''">100</a></TD>'
+	'<TR bgcolor=<<$theme[''table_bg'']>>><TD>Stepfather: <<npc_rel[''A28'']>></TD><TD><a href="exec:npc_rel[''A28''] = 0 & gt ''intro_sg_select_custom'', ''modrel_fam''">zero</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A28''] -= 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A28''] -= 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A28''] += 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A28''] += 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 10</a></TD><TD><a href="exec:npc_rel[''A28''] = 100 & gt ''intro_sg_select_custom'', ''modrel_fam''">100</a></TD>'
+	'<TR bgcolor=<<$theme[''table_bg'']>>><TD>Mother: <<npc_rel[''A29'']>></TD><TD><a href="exec:npc_rel[''A29''] = 0 & gt ''intro_sg_select_custom'', ''modrel_fam''">zero</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A29''] -= 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A29''] -= 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A29''] += 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A29''] += 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 10</a></TD><TD><a href="exec:npc_rel[''A29''] = 100 & gt ''intro_sg_select_custom'', ''modrel_fam''">100</a></TD>'
+	'<TR bgcolor=<<$theme[''table_bg'']>>><TD>Sister: <<npc_rel[''A33'']>></TD><TD><a href="exec:npc_rel[''A33''] = 0 & gt ''intro_sg_select_custom'', ''modrel_fam''">zero</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A33''] -= 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A33''] -= 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A33''] += 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A33''] += 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 10</a></TD><TD><a href="exec:npc_rel[''A33''] = 100 & gt ''intro_sg_select_custom'', ''modrel_fam''">100</a></TD>'
+	'<TR bgcolor=<<$theme[''table_bg'']>>><TD>Brother: <<npc_rel[''A34'']>></TD><TD><a href="exec:npc_rel[''A34''] = 0 & gt ''intro_sg_select_custom'', ''modrel_fam''">zero</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A34''] -= 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''A34''] -= 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A34''] += 5 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''A34''] += 10 & gt ''intro_sg_select_custom'', ''modrel_fam''">plus 10</a></TD><TD><a href="exec:npc_rel[''A34''] = 100 & gt ''intro_sg_select_custom'', ''modrel_fam''">100</a></TD>'
 	'</table></center>'
 	act 'Return': gt 'intro_sg_select_custom','modrel'
 end
@@ -314,7 +315,7 @@ end
 if $ARGS[0] = 'modrel_setup':
 	if npc_rel['<<$ARGS[1]>>'] < 0: npc_rel['<<$ARGS[1]>>'] = 0
 	if npc_rel['<<$ARGS[1]>>'] > 100: npc_rel['<<$ARGS[1]>>'] = 100
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD><<$npc_firstname[''<<$ARGS[1]>>'']>> <<$npc_lastname[''<<$ARGS[1]>>'']>>: <<npc_rel[''<<$ARGS[1]>>'']>></TD><TD><a href="exec:npc_rel[''<<$ARGS[1]>>''] = 0 & gt ''intro_sg_select_custom'', $locM_arg">zero</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''<<$ARGS[1]>>''] -= 10 & gt ''intro_sg_select_custom'', $locM_arg">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''<<$ARGS[1]>>''] -= 5 & gt ''intro_sg_select_custom'', $locM_arg">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''<<$ARGS[1]>>''] += 5 & gt ''intro_sg_select_custom'', $locM_arg">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''<<$ARGS[1]>>''] += 10 & gt ''intro_sg_select_custom'', $locM_arg">plus 10</a></TD><TD><a href="exec:npc_rel[''<<$ARGS[1]>>''] = 100 & gt ''intro_sg_select_custom'', $locM_arg">100</a></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD><<$npc_firstname[''<<$ARGS[1]>>'']>> <<$npc_lastname[''<<$ARGS[1]>>'']>>: <<npc_rel[''<<$ARGS[1]>>'']>></TD><TD><a href="exec:npc_rel[''<<$ARGS[1]>>''] = 0 & gt ''intro_sg_select_custom'', $locM_arg">zero</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''<<$ARGS[1]>>''] -= 10 & gt ''intro_sg_select_custom'', $locM_arg">minus 10</a></TD><TD bgcolor=#ff9999><a href="exec:npc_rel[''<<$ARGS[1]>>''] -= 5 & gt ''intro_sg_select_custom'', $locM_arg">minus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''<<$ARGS[1]>>''] += 5 & gt ''intro_sg_select_custom'', $locM_arg">plus 5</a></TD><TD bgcolor=#99ff99><a href="exec:npc_rel[''<<$ARGS[1]>>''] += 10 & gt ''intro_sg_select_custom'', $locM_arg">plus 10</a></TD><TD><a href="exec:npc_rel[''<<$ARGS[1]>>''] = 100 & gt ''intro_sg_select_custom'', $locM_arg">100</a></TD>'
 end
 
 if $ARGS[0] = 'modrel_pop':
@@ -335,8 +336,8 @@ if $ARGS[0] = 'modrel_pop':
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A139'
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A140'
 	'<center><table border=0 cellspacing=0 cellpadding=25  bgcolor=#808080><TH></TH><TH>Set to zero</TH><TH>Minus 10</TH><TH>Minus 5</TH><TH>Plus 5</TH><TH>Plus 10</TH><TH>Set to 100</TH>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all boys in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 1, nstat & gt ''intro_sg_select_custom'',''modrel_pop''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all girls in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 1, nstat & gt ''intro_sg_select_custom'',''modrel_pop''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all boys in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 1, nstat & gt ''intro_sg_select_custom'',''modrel_pop''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all girls in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 1, nstat & gt ''intro_sg_select_custom'',''modrel_pop''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
 	$table_display
 	'</table></center>'
 	act 'Return': gt 'intro_sg_select_custom','modrel'
@@ -358,8 +359,8 @@ if $ARGS[0] = 'modrel_ath':
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A150'
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A141'
 	'<center><table border=0 cellspacing=0 cellpadding=25  bgcolor=#808080><TH></TH><TH>Set to zero</TH><TH>Minus 10</TH><TH>Minus 5</TH><TH>Plus 5</TH><TH>Plus 10</TH><TH>Set to 100</TH>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all boys in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 2, nstat & gt ''intro_sg_select_custom'',''modrel_ath''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all girls in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 2, nstat & gt ''intro_sg_select_custom'',''modrel_ath''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all boys in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 2, nstat & gt ''intro_sg_select_custom'',''modrel_ath''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all girls in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 2, nstat & gt ''intro_sg_select_custom'',''modrel_ath''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
 	$table_display
 	'</table></center>'
 	act 'Return': gt 'intro_sg_select_custom','modrel'
@@ -379,8 +380,8 @@ if $ARGS[0] = 'modrel_ner':
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A153'
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A142'
 	'<center><table border=0 cellspacing=0 cellpadding=25  bgcolor=#808080><TH></TH><TH>Set to zero</TH><TH>Minus 10</TH><TH>Minus 5</TH><TH>Plus 5</TH><TH>Plus 10</TH><TH>Set to 100</TH>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all boys in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 3, nstat & gt ''intro_sg_select_custom'',''modrel_ner''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all girls in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 3, nstat & gt ''intro_sg_select_custom'',''modrel_ner''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all boys in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 3, nstat & gt ''intro_sg_select_custom'',''modrel_ner''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all girls in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 3, nstat & gt ''intro_sg_select_custom'',''modrel_ner''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
 	$table_display
 	'</table></center>'
 	act 'Return': gt 'intro_sg_select_custom','modrel'
@@ -406,8 +407,8 @@ if $ARGS[0] = 'modrel_gop':
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A144'
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A145'
 	'<center><table border=0 cellspacing=0 cellpadding=25  bgcolor=#808080><TH></TH><TH>Set to zero</TH><TH>Minus 10</TH><TH>Minus 5</TH><TH>Plus 5</TH><TH>Plus 10</TH><TH>Set to 100</TH>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all boys in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 4, nstat & gt ''intro_sg_select_custom'',''modrel_gop''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all girls in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 4, nstat & gt ''intro_sg_select_custom'',''modrel_gop''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all boys in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 4, nstat & gt ''intro_sg_select_custom'',''modrel_gop''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all girls in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 4, nstat & gt ''intro_sg_select_custom'',''modrel_gop''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
 	$table_display
 	'</table></center>'
 	act 'Return': gt 'intro_sg_select_custom','modrel'
@@ -422,8 +423,8 @@ if $ARGS[0] = 'modrel_out':
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A7'
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A159'
 	'<center><table border=0 cellspacing=0 cellpadding=25  bgcolor=#808080><TH></TH><TH>Set to zero</TH><TH>Minus 10</TH><TH>Minus 5</TH><TH>Plus 5</TH><TH>Plus 10</TH><TH>Set to 100</TH>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all boys in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 5, nstat & gt ''intro_sg_select_custom'',''modrel_out''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
-!!	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all girls in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 5, nstat & gt ''intro_sg_select_custom'',''modrel_out''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all boys in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 5, nstat & gt ''intro_sg_select_custom'',''modrel_out''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+!!	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all girls in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 5, nstat & gt ''intro_sg_select_custom'',''modrel_out''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
 	$table_display
 	'</table></center>'
 	act 'Return': gt 'intro_sg_select_custom','modrel'
@@ -447,8 +448,8 @@ if $ARGS[0] = 'modrel_tea':
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A137'
 	gs 'intro_sg_select_custom', 'modrel_setup', 'A138'
 	'<center><table border=0 cellspacing=0 cellpadding=25  bgcolor=#808080><TH></TH><TH>Set to zero</TH><TH>Minus 10</TH><TH>Minus 5</TH><TH>Plus 5</TH><TH>Plus 10</TH><TH>Set to 100</TH>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all men in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 6, nstat & gt ''intro_sg_select_custom'',''modrel_tea''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
-	$table_display += '<TR bgcolor=<<$bcolor1>>><TD>Set relationship level for all women in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 6, nstat & gt ''intro_sg_select_custom'',''modrel_tea''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all men in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 0, 6, nstat & gt ''intro_sg_select_custom'',''modrel_tea''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
+	$table_display += '<TR bgcolor=<<$theme[''table_bg'']>>><TD>Set relationship level for all women in this group</TD><TD><a href="exec: gs ''intro_sg_select_custom'',''setval2'' & gs ''intro_sg_select_custom'', ''pol_grup_set'', 1, 6, nstat & gt ''intro_sg_select_custom'',''modrel_tea''">set value</a></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>'
 	$table_display
 	'</table></center>'
 	act 'Return': gt 'intro_sg_select_custom','modrel'

+ 3 - 2
locations/intro_sg_tg.qsrc

@@ -214,8 +214,9 @@ if $ARGS[0] = 'settings':
 
 	!!Looks
 	pcs_hgt = 170
-	salo = 80
-	genbsize = 17
+	pcs_mass['body'] = 80
+	pcs_mass['bust_gen'] = 17
+	pcs_mass['butt_gen'] = 20
 	pcs_pubes = 30
 	pcs_leghair = 12
 	pcs_makeup = 1

+ 36 - 60
locations/item_cart.qsrc

@@ -2,90 +2,78 @@
 
 if $ARGS[0] = 'shoppping_aisle':
 	gs 'item_stock_db', 'cleanup'
+	
     $curr_aisle = $ARGS[1]
 	gs 'item_stock_db', $ARGS[1]
-	'<center><table border=5 cellspacing=0 cellpadding=5 bgcolor='+$bcolor+'><TR><TH colspan=9><font size="+2"><<$shop_title>></font></TH></TR></table></center>'
-	gs 'item_cart', 'header'
-	*p '<center><table border=5 cellspacing=0 cellpadding=5 bgcolor='+$bcolor+'><TR><<$Headerstring>></TR><TR>'
+
+	!! Page Header
+	'<center><table border=5 cellspacing=0 cellpadding=5 bgcolor='+$bcolor+'><TD>&nbsp;<font size="+2"><b><<$shop_title>></b></font>&nbsp;</TD></table></center>'
+
+	!! Table Headers
+	*p '<center><table border=5 cellspacing=0 cellpadding=5 bgcolor='+$bcolor+' width="80%"><TR><TH>Item</TH><TH>You own</TH><TH>Units/pack</TH><TH>Cost in <b>₽</b></TH><TH colspan="2" width="12%">Remove 10/1</TH><TH width="8%">In cart</TH><TH colspan="2" width="12%">Add 1/10</TH></TR>'
+
+	!! Table Rows
+	$temp_image_color = iif(theme['is_dark'] = 1, '_w', '_b')
 	i = 1
 	:loopshopping_cart
 		!! if item is uninitialized (has blank name) - skip it
 		if $item_curr_aisle['<<i>>'] = '': i += 1 & jump 'loopshopping_cart'
+
 		$temp_bcolor = func('themes', 'alt_color', $temp_bcolor)
 		$item_line = '<TR bgcolor='+$temp_bcolor+'>'
-!!		uncomment if you want items with events to be marked with a * peepoShrug
-!!		if $event_curr_aisle['<<i>>'] ! '':
-!!			$item_line += '<TD align="left"><<$item_curr_aisle[''<<i>>'']>> *</TD>'
-!!		else
-			$item_line += '<TD align="left"><<$item_curr_aisle[''<<i>>'']>></TD>'
-!!		end
-		dynamic '$cart_tmp = $var_curr_aisle[''<<i>>'']'
+		$item_line += '<TD align="left"><<$item_curr_aisle[''<<i>>'']>></TD>'
+		$cart_tmp = $var_curr_aisle['<<i>>']
 		$item_line += '<TD><<mc_inventory[''<<$cart_tmp>>'']>></TD>'
 		$item_line += '<TD><<quantity_curr_aisle[''<<i>>'']>></TD>'
 		$item_line += '<TD><<cost_curr_aisle[''<<i>>'']>></TD>'
-		if cart_curr_quantity['<<i>>'] < 10:
-			$item_line += '<TD></TD>'
-		else
-			$item_line += '<TD><a href="exec:gt ''item_cart'', ''remove10'', <<i>>">remove</a></TD>'
-		end
-		if cart_curr_quantity['<<i>>'] < 1:
-			$item_line += '<TD></TD>'
-		else
-			$item_line += '<TD><a href="exec:gt ''item_cart'', ''remove'', <<i>>">remove</a></TD>'
-		end
-		$item_line += '<TD><<cart_curr_quantity[''<<i>>'']>></TD>'
-		if max_curr_aisle['<<i>>'] > cart_curr_quantity['<<i>>']+mc_inventory['<<$cart_tmp>>'] or max_curr_aisle['<<i>>'] = 0:
-			$item_line += '<TD><a href="exec:gt ''item_cart'', ''add'', <<i>>">add</a></TD>'
+		if cart_curr_quantity['<<i>>'] > 0:
+			$item_line += '<TD align="center" width="6%"><a href="exec:gt ''item_cart'', ''remove'', <<i>>, 10"><img src="images/system/image_needed.png" height="<<fsize+2>>"></a></TD>'
+			$item_line += '<TD align="center" width="6%"><a href="exec:gt ''item_cart'', ''remove'', <<i>>, 1"><img src="images/system/image_needed.png" height="<<fsize+2>>"></a></TD>'
 		else
-			$item_line += '<TD>Max</TD>'
+			$item_line += '<TD></TD><TD></TD>'
 		end
-		if max_curr_aisle['<<i>>'] > cart_curr_quantity['<<i>>'] + 10 + mc_inventory['<<$cart_tmp>>'] or max_curr_aisle['<<i>>'] = 0:
-			$item_line += '<TD><a href="exec:gt ''item_cart'', ''add10'', <<i>>">add</a></TD>'
+		$item_line += '<TD align="center"><<cart_curr_quantity[''<<i>>'']>></TD>'
+		if max_curr_aisle['<<i>>'] > cart_curr_quantity['<<i>>'] + mc_inventory['<<$cart_tmp>>'] or max_curr_aisle['<<i>>'] = 0:
+			$item_line += '<TD align="center" width="6%"><a href="exec:gt ''item_cart'', ''add'', <<i>>, 1"><img src="images/system/image_needed.png" height="<<fsize+2>>"></a></TD>'
+			$item_line += '<TD align="center" width="6%"><a href="exec:gt ''item_cart'', ''add'', <<i>>, 10"><img src="images/system/image_needed.png" height="<<fsize+2>>"></a></TD>'
 		else
-			$item_line += '<TD></TD>'
+			$item_line += '<TD align="center" colspan="2" width="6%">Max</TD>'
 		end
 		$item_line += '</TR>'
 		*p $item_line
 		i += 1
 	if i <= item_idx:jump 'loopshopping_cart'
 	'</table></center>'
+	
 	killvar '$temp_bcolor'
-	gs 'item_cart', 'cart_total'
-end
+	killvar '$temp_image_color'
 
-if $ARGS[0] = 'header':
-	$Headerstring = '<TH>Item</TH><TH>You own</TH><TH>Units/pack</TH><TH>Cost in <b>₽</b></TH><TH>Remove 10</TH><TH>Remove 1 pack</TH><TH>In cart</TH><TH>Add one pack</TH><TH>Add 10</TH>'
+	!! Checkout
+	gs 'item_cart', 'cart_total'
 end
 
 if $ARGS[0] = 'remove':
-	cart_tally -= cost_curr_aisle['<<ARGS[1]>>']
-	cart_curr_quantity['<<ARGS[1]>>'] -= 1
-	gt $loc_s, $args_s
-end
+	ARGS[2] = min(cart_curr_quantity['<<ARGS[1]>>'], ARGS[2])
+
+	cart_tally -= cost_curr_aisle['<<ARGS[1]>>'] * ARGS[2]
+	cart_curr_quantity['<<ARGS[1]>>'] -= ARGS[2]
 
-if $ARGS[0] = 'remove10':
-	cart_tally -= cost_curr_aisle['<<ARGS[1]>>']*10
-	cart_curr_quantity['<<ARGS[1]>>'] -= 10
 	gt $loc_s, $args_s
 end
 
 if $ARGS[0] = 'add':
-	cart_tally += cost_curr_aisle['<<ARGS[1]>>']
-	cart_curr_quantity['<<ARGS[1]>>'] += 1
-	if $event_curr_aisle['<<ARGS[1]>>'] ! '': dynamic "<<$event_curr_aisle['<<ARGS[1]>>']>>"
-	gt $loc_s, $args_s
-end
+	ARGS[2] = iif(max_curr_aisle['<<ARGS[1]>>'] ! 0, min(max_curr_aisle['<<ARGS[1]>>'] - (cart_curr_quantity['<<ARGS[1]>>'] + mc_inventory[$var_curr_aisle['<<ARGS[1]>>']]), ARGS[2]), ARGS[2])
+
+	cart_tally += cost_curr_aisle['<<ARGS[1]>>'] * ARGS[2]
+	cart_curr_quantity['<<ARGS[1]>>'] += ARGS[2]
 
-if $ARGS[0] = 'add10':
-	cart_tally += cost_curr_aisle['<<ARGS[1]>>']*10
-	cart_curr_quantity['<<ARGS[1]>>'] += 10
 	if $event_curr_aisle['<<ARGS[1]>>'] ! '': dynamic "<<$event_curr_aisle['<<ARGS[1]>>']>>"
 	gt $loc_s, $args_s
 end
 
 if $ARGS[0] = 'simple_add':
-	cart_tally += cost_curr_aisle['<<ARGS[1]>>']*max(1,ARGS[2])
-	cart_curr_quantity['<<ARGS[1]>>'] += 1*max(1,ARGS[2])
+	cart_tally += cost_curr_aisle['<<ARGS[1]>>'] * max(1, ARGS[2])
+	cart_curr_quantity['<<ARGS[1]>>'] += 1 * max(1, ARGS[2])
 end
 
 if $ARGS[0] = 'cart_total':
@@ -113,18 +101,6 @@ if $ARGS[0] = 'cart_total':
 	$item_line[2] += '</TR></table></center>'
 	*p $item_line[2]
 end
-!!{
-if $ARGS[0] = 'shoppping_cart':
-    cart_idx = 0
-	cart_shoppingCost = 0
-    :cart_checkout
-        if tmp_$var_$curr_aisle['cart_idx']['cart_idx'] > 0:
-            basket total += tmp_$curr_aisle['cart_idx'] * cost_$curr_aisle['cart_idx']                           
-        end
-   if idx < arrsize($item_$curr_aisle): idx += 1 & jump 'cart_checkout'
-	'<center>Total cost of shopping:' + cart_tally + '<b>₽</b></center>'
-end
-}
 
 if $ARGS[0] = 'cash':
 	i = 1

+ 19 - 0
locations/item_stock_db.qsrc

@@ -1165,6 +1165,25 @@ if $ARGS[0] = 'gad_market':
 	max_curr_aisle['<<item_idx>>'] = 0
 	cost_curr_aisle['<<item_idx>>'] = 250
 	$img_curr_aisle['<<item_idx>>'] = ''
+
+
+	item_idx = 11
+	$item_curr_aisle['<<item_idx>>'] = 'Razors' 
+	$var_curr_aisle['<<item_idx>>'] = 'razor'
+	$desc_curr_aisle['<<item_idx>>'] = 'A basic necessity for all body health care.'
+	quantity_curr_aisle['<<item_idx>>'] = 25
+	max_curr_aisle['<<item_idx>>'] = 0
+	cost_curr_aisle['<<item_idx>>'] = 350
+	$img_curr_aisle['<<item_idx>>'] = ''
+
+	item_idx = 12
+	$item_curr_aisle['<<item_idx>>'] = 'Tampons'
+	$var_curr_aisle['<<item_idx>>'] = 'tampons'
+	$desc_curr_aisle['<<item_idx>>'] = 'A discrete version that helps with that time of the month.'
+	quantity_curr_aisle['<<item_idx>>'] = 10
+	max_curr_aisle['<<item_idx>>'] = 0
+	cost_curr_aisle['<<item_idx>>'] = 160
+	$img_curr_aisle['<<item_idx>>'] = ''
 end
 if $ARGS[0] = 'prost_shop':
 	$shop_title = 'Gas station'	

+ 54 - 7
locations/journal.qsrc

@@ -39,13 +39,18 @@ if $ARGS[0]='journalmenu':
 	*clr & cla
 	gs 'stat'
 	*nl
-	if $start_type[1] ! 'nomagic':
-        $tablebody = '<tr><th><a href="exec:menutrack = 0 & gs ''journal'', ''magictab''">Magic</a></th><th><a href="exec:menutrack = 1 & gs ''Journal'', ''housingtab''">Housing</a></th><th><a href="exec:menutrack = 2 & gs ''journal_work'', ''start''">Work</a></th><th><a href="exec:menutrack = 2 & gs ''journal_quests'', ''start''">Quests</a></th><th><a href="exec:menutrack = 4 & gs ''journal'', ''relationstab''">Relations</a></th><th><a href="exec:menutrack = 5 & gs ''journal'', ''generaltab''">Game Information</a></th><th><a href="exec:menutrack = 6 & gs ''journal'', ''notestab''">Notes</a></th><th><a href="exec:menutrack = 7 & gs ''journal'', ''notification_log''">Notifications</a></th></tr>'
-    
-    else
-        $tablebody ='<tr><th><a href="exec:menutrack = 1 & gs ''Journal'', ''housingtab''">Housing</a></th><th><a href="exec:menutrack = 2 & gs ''journal_work'', ''start''">Work</a></th><th><a href="exec:menutrack = 2 & gs ''journal_quests'', ''start''">Quests</a></th><th><a href="exec:menutrack = 4 & gs ''journal'', ''relationstab''">Relations</a></th><th><a href="exec:menutrack = 5 & gs ''journal'', ''generaltab''">Game Information</a></th><th><a href="exec:menutrack = 6 & gs ''journal'', ''notestab''">Notes</a></th><th><a href="exec:menutrack = 7 & gs ''journal'', ''notification_log''">Notifications</a></th></tr>'
-    ! menu
-    end
+
+	$tablebody = '<tr>'
+	if $start_type[1] ! 'nomagic': $tablebody += '<th><a href="exec:menutrack = 0 & gs ''journal'', ''magictab''">Magic</a></th>'
+	$tablebody += '<th><a href="exec:menutrack = 1 & gs ''journal'', ''housingtab''">Housing</a></th>'
+	$tablebody += '<th><a href="exec:menutrack = 2 & gs ''journal_work'', ''start''">Work</a></th>'
+	$tablebody += '<th><a href="exec:menutrack = 2 & gs ''journal_quests'', ''start''">Quests</a></th>'
+	$tablebody += '<th><a href="exec:menutrack = 4 & gs ''journal'', ''relationstab''">Relations</a></th>'
+	$tablebody += '<th><a href="exec:menutrack = 5 & gs ''journal'', ''generaltab''">Game Information</a></th>'
+	$tablebody += '<th><a href="exec:menutrack = 6 & gs ''journal'', ''notestab''">Notes</a></th>'
+	$tablebody += '<th><a href="exec:menutrack = 7 & gs ''journal'', ''notification_log''">Notifications</a></th>'
+	$tablebody += '</tr>'
+
 	!display the table here.
 	
 	'<center><table width="90%" align="center" width="90%" cellspacing="0" cellpadding="0" valign="top"><tr><<$tablebody>></tr></table></center>'
@@ -439,6 +444,7 @@ if $ARGS[0] = 'generaltab':
 	'<br><center><a href="exec: gs ''journal'', ''pav_res''">Pavlovsk Residents</a></center>'
 	'<br><center><a href="exec: gs ''journal'', ''gad_res''">Gadukino Residents</a></center>'
 	'<br><center><a href="exec: gs ''journal'', ''city_res''">City Residents</a></center>'
+	if mod_ballet['blocker'] >  0 or balletqw['school'] > 0: '<br><center><a href="exec: gs ''journal'', ''ballet''">Ballet Career</a></center>'
 
 	if SchoolAtestat = 0 and mid($start_type, 1, 2) = 'sg' and SchoolBlock = 0: 
 		'<br><center><a href="exec: gs ''journal_school'', ''school''">School</a></center>
@@ -504,6 +510,46 @@ if $ARGS[0] = 'notification_log':
 	end
 end
 
+
+!! -- Ballet School infor - only shown if active
+
+
+if $ARGS[0] = 'ballet':
+	$jumploc = 'ballet'
+	gs 'journal', 'journalmenu'
+	'<center><h1>Ballet Career</h1></center>'
+	'<center><img <<$set_imgh>> src="mod/img_ballet/system/readme.jpg"></center>'
+	
+	'Пан или пропал (You become the master or, leave).'
+	
+	'A narrative based mod and activities for the Dancer start. The MC has been given a grant to attend a intensive 6 day summer class with an assessment, that if, she passes can lead to a weekly rehearsal and a Winter dance show in December.'
+	
+	'Note: this storyline will play out over a long time span and your actions will have consequences that won''t be obvious initially. Some of this is dependent on the development of main Girl Life codebase.'
+	
+	 'Current and planned features:'
+	
+		'• New dancer start option, with other starts being granted access later or uni/city years pay to join.'
+		'• 6 day intensive course during the school summer break - look for the letter at your parents kitchen to notify you.'
+		'• New pen friend(s), with meet ups and theatre or ballet nights with family or partner.'
+		'• Dance instructor, who''s intentions may prevent MC from joining the Pushkin Ballet Company or could have far ranging consequences on both on herself and NPC characters.'
+		'• New dance gigs, at each rehearsal there''s a chance that you may get dance job for the local theatre or the city if you passed with merit.'
+	
+	'NB: There is no sex acts in this mod at present, if you wish to write scenes based on the content contact me at the Girl Life Discord Server.'
+	
+	'<center><h2>In Memoriam — Hooded Silence.</h2></center>'
+	*nl
+	'This content is being maintained as part of Hooded Silence''s legacy, I have approximately 1-2 years of original content to add but if you wish to contribute then note there is no sexual content in this mod until at least year 3 as per his notes. '
+	'This is a narrative driven addition to the game and your actions do and will count towards what happens both for yourself and others. These moments are easily missable but they will represent consquences of your decisions such as:'
+	*nl
+	'   • Failure to adhere to the residential schools rules or live up to the high standards of the school.'
+	'   • Get drunk too often or fall pregnant  - kicked off the Corp De Ballet.'
+	'   • Fail to maintain your appearance - reprimands or loss of income, leading to expulsion.'
+		
+	*nl
+	'These are the obvious repercussions, but there will be subtle consequences for your interactions with NPCs. This mod is meant to be played blind for your initial playthrough and the only feedback will be the varying conversations'
+	
+end
+
 !! ---- Other Sections ---- 
 
 
@@ -893,6 +939,7 @@ elseif $ARGS[0] = 'city_res':
 	gs 'journal', 'leaveactions'
 end
 
+
 !! Helper functions
 
 if $ARGS[0] = 'relindex':

+ 40 - 3
locations/journal_NPC_information.qsrc

@@ -1695,7 +1695,7 @@ end
     !!========================================================================!!
     !!                                                                        !!
     !!    Tryndin, Djibril, Goshi, Lebogang, Ermias, Farai, Haruna, Arendse   !!
-    !!    Kendra, Vika, Liliya                                                !!
+    !!    Kendra, Vika, Liliya, Mia, Yana                                     !!
     !!                                                                        !!
     !!------------------------------------------------------------------------!!
 
@@ -1798,6 +1798,24 @@ elseif $ARGS[0] = 'A247':
 	'She is getting a teaching degree at the university.'
 	
 	gs 'journal_NPC_information', 'Relationship', npc_rel['A247'], 'f'
+	
+
+!!Mia
+elseif $ARGS[0] = 'A267':
+	'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/267.jpg"></center>'
+	'<center>Mia Radimova</center>'
+	'The elder of the identical twins studying nursing at the university. She and Yana are inseparable and are seen almost everywhere together. Like her younger sister, she enjoys playing pranks on her professors and classmates and causing confusion about who is actually who. Her parents are divorced, but her father pays for her tuition. There is a rumor spreading across campus claiming that he is a porn star.'
+	
+	gs 'journal_NPC_information', 'Relationship', npc_rel['A267'], 'f'
+	
+	
+!!Yana
+elseif $ARGS[0] = 'A268':
+	'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/267.jpg"></center>'
+	'<center>Yana Radimova</center>'
+	'The younger of the identical twins studying nursing at the university. She and Mia are inseparable and are seen almost everywhere together. Like her older sister, she enjoys playing pranks on her professors and classmates and causing confusion about who is actually who. Her parents are divorced, but her father pays for her tuition. There is a rumor spreading across campus claiming that he is a porn star.'
+	
+	gs 'journal_NPC_information', 'Relationship', npc_rel['A268'], 'f'
 
 
 end
@@ -1958,7 +1976,8 @@ end
     !!=====================================================================!!
     !!                                                                     !!
     !!                          Klim, Grigorii,                            !!
-    !!                          Selena                                     !!
+    !!                          Selena, Raina,                             !!
+	!!							Olena, Nikita,							   !!
     !!                                                                     !!
     !!---------------------------------------------------------------------!!
 
@@ -1966,7 +1985,7 @@ if $ARGS[0] = 'A254':
 	!!'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/254.jpg"></center>'
 	'<center>Klim Kovalyov</center>'
 	
-	'Klim is the professor of General Education for teaching. He is young and in good shape, with most girls finding him very attractive. He dresses casually and is very friendly with his students, known to let them get away with a lot and join in with the horsing around and joke telling during lectures. He is rumored to be single.'
+	'Klim is the professor of General Education. He is young and in good shape, with most girls finding him very attractive. He dresses casually and is very friendly with his students, known to let them get away with a lot and join in with the horsing around and joke telling during lectures. He is rumored to be single.'
 	
 elseif $ARGS[0] = 'A255':
 	!!'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/255.jpg"></center>'
@@ -1980,6 +1999,24 @@ elseif $ARGS[0] = 'A256':
 	
 	'Selena is the professor of Learning Theories. She is in her forties and dresses well, but is extremely nerdy, often talking at length about the latest sci-fi, fantasy, supernatural and superhero TV shows, films and comics. Some say she even attends conventions and cosplay events. She''s married with a young daughter; her husband is a lecturer in a different department.'
 
+elseif $ARGS[0] = 'A269':
+	!!'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/269.jpg"></center>'
+	'<center>Raina Marinova</center>'
+	
+	'Raina is the professor of Anatomy and Physiology. Young and attractive, she isn''t much older than the students she teaches and tries to make her lessons fun and enjoyable. However, she is a bit of a gossip and enjoys talking about both her colleagues and other students during her lectures.'
+	
+elseif $ARGS[0] = 'A270':
+	!!'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/270.jpg"></center>'
+	'<center>Olena Kudelina</center>'
+	
+	'Olena is the professor of Patient Care. A woman past her prime, she has a chip on her shoulder about her now former husband cheating on her with a younger woman and is thus extremely bitter towards both her students and her younger colleagues. She takes particular pleasure in ridiculing and belittling students who don''t live up to her high standards.'
+	
+elseif $ARGS[0] = 'A271':
+	!!'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/271.jpg"></center>'
+	'<center>Nikita Borisov</center>'
+	
+	'Nikita is the professor who teaches the more mundane nursing subjects. A shy, somewhat nerdy man, he makes no effort to make his boring lectures interesting and has a habit of speaking at length and in excessive detail. His students often take advantage of his meek personality to amuse themselves or get away with things.'
+	
 end
 
 

+ 35 - 10
locations/journal_quests.qsrc

@@ -4,10 +4,10 @@
 !! Game Character Quest section. This is the container file for all quest roles in game. Used to provide player feedback on how to proceed in quests.
 !! All quest information should be in a guidance or hint style fashion to encourage exploration.
 
-! V .01 added lines 14 and 15 to integrate into the new journal menu system. Changed headers from H1 to H2 or H3 to fit design style of other sections.
-! v .02 Added Mira Maximova  - Three Wishes events to journal under new Gadukino group - courtesy of Derryth_Love
-! v.03 Added new Natasha Belova content.
-
+!! V .01 added lines 14 and 15 to integrate into the new journal menu system. Changed headers from H1 to H2 or H3 to fit design style of other sections.
+!! v .02 Added Mira Maximova  - Three Wishes events to journal under new Gadukino group - courtesy of Derryth_Love
+!! v.03 Added new Natasha Belova content.
+!! v.04 Added ballet questline
 
 if $ARGS[0] = 'start':
 	*clr & cla
@@ -61,7 +61,6 @@ if $ARGS[0] = 'start':
 		end
 	end
 
-
 !!to check Sveta is at school. All school quests must pass this and it should become a category as we expand
 	if mid($start_type,1,2) = 'sg' and SchoolAtestat = 0 and SchoolBlock = 0:
 		'<center><h3>Cheerleading</h3></center>'
@@ -440,7 +439,7 @@ if $ARGS[0] = 'start':
 		'<center><h3>Katja Meynold</h3></center>'
 		*nl
 		if katjaQW['QWstage'] = 0:
-			'Katja is both cute, smart and popular. If I want to be her friend'+iif(npc_rel['A14'] < 60, ', I need to get to know her better by talking with her at school or the disco', '')+ +iif(pcs_makupskl < 40, ', I need to improve my make up skill since she is very into make up', '')+ +iif(class['school_grade_average'] < 65, ', I need to improve my grades since being good at school is important to her', '')+ +iif(fame['pav_slut'] >= 50, ', I need to be seen as less of a slut', '')+ +iif(hotcat < 6, ', I need to improve my looks', '')+ +iif(npc_rel['A14'] >= 60 and fame['pav_slut'] < 50 and class['school_grade_average'] >= 65 and pcs_makupskl >= 40 and hotcat >= 6, ', I should probably go to school and see if somthing happens.', '.')
+			'Katja is both cute, smart and popular. If I want to be her friend'+iif(npc_rel['A14'] < 60, ', I need to get to know her better by talking with her at school or the disco', '')+ iif(pcs_makupskl < 40, ', I need to improve my make up skill since she is very into make up', '')+ iif(class['school_grade_average'] < 65, ', I need to improve my grades since being good at school is important to her', '')+ iif(fame['pav_slut'] >= 50, ', I need to be seen as less of a slut', '')+ iif(hotcat < 6, ', I need to improve my looks', '')+ iif(npc_rel['A14'] >= 60 and fame['pav_slut'] < 50 and class['school_grade_average'] >= 65 and pcs_makupskl >= 40 and hotcat >= 6, ', I should probably go to school and see if somthing happens.', '.')
 		elseif katjaQW['QWstage'] = 1:
 			'Katja has agreed to hang out after school. I should do this more often to see where this leads.'
 		elseif katjaQW['QWstage'] = 2:
@@ -459,7 +458,7 @@ if $ARGS[0] = 'start':
 			end
 
 			if katjaQW['pantiesQWstage'] = 0:
-				'It could be fun to see if I could get Katja to go to school without panties. To do this, I need to speak with her at school when I''m not wearing panties so she can see that I''m not wearing any'+iif(katjaQW['slut'] >= 40 and katjaQW['school_sex'] = 0, ', I should probably accept her advances at school', '')+ +iif(katjaQW['slut'] < 20, ', I need to loosen up Katja in other ways first. For example, by getting her to be naked at the beach.', '.')
+				'It could be fun to see if I could get Katja to go to school without panties. To do this, I need to speak with her at school when I''m not wearing panties so she can see that I''m not wearing any'+iif(katjaQW['slut'] >= 40 and katjaQW['school_sex'] = 0, ', I should probably accept her advances at school', '')+ iif(katjaQW['slut'] < 20, ', I need to loosen up Katja in other ways first. For example, by getting her to be naked at the beach.', '.')
 			elseif katjaQW['pantiesQWstage'] < 4:
 				'I think I''m getting close to having Katja take off her panties at school. Just have to push her a little more...'
 			elseif katjaQW['pantiesQWstage'] = 4:
@@ -477,7 +476,7 @@ if $ARGS[0] = 'start':
 						'You need to get Katja to lose some more of her inhibition before you can use your strap-on on her.'
 					end	
 				elseif katjaQW['strapon_vag'] + katjaQW['strapon_ass'] + katjaQW['strapon_bj'] < 3:
-					'You should' +iif(katjaQW['strapon_bj'] = 0, '; make Katja give your strap-on a blowjob', '')+ +iif( katjaQW['strapon_vag'] = 0, '; fuck Katja''s pussy with your strap-on', '')+ +iif(katjaQW['strapon_ass'] = 0, '; fuck Katja in the ass with your strap-on', '')+'.'
+					'You should' +iif(katjaQW['strapon_bj'] = 0, '; make Katja give your strap-on a blowjob', '')+ iif( katjaQW['strapon_vag'] = 0, '; fuck Katja''s pussy with your strap-on', '')+ iif(katjaQW['strapon_ass'] = 0, '; fuck Katja in the ass with your strap-on', '')+'.'
 				end
 
 				if katjaQW['boy_block'] = 0:
@@ -535,7 +534,7 @@ if yearstart > 1 and university['enrolled_in_semester'] > university['semester_p
 	'<center><h3>Katja Meynold</h3></center>'
 	*nl
 	if katjaQW['QWstage'] < 2:
-		'Katja is both cute, smart and popular. If I want to be her friend'+iif(npc_rel['A14'] < 70, ', I need to get to know her better by talking with her at at the uni plaza, library or at the Coffee Hole', '')+ +iif(pcs_makupskl < 40, ', I need to improve my make up skill since she is very into make up', '')+ +iif(fame['city_slut'] >= 150 or fame['pav_slut'] >= 150, ', I need to be seen as less of a slut', '')+ +iif(hotcat < 6, ', I need to improve my looks', '')+ +iif(npc_rel['A14'] >= 60 and fame['city_slut'] < 150 and fame['pav_slut'] < 150 and pcs_makupskl >= 40 and hotcat >= 6, ', something might happen after one of my late university classes.', '.')
+		'Katja is both cute, smart and popular. If I want to be her friend'+iif(npc_rel['A14'] < 70, ', I need to get to know her better by talking with her at at the uni plaza, library or at the Coffee Hole', '')+ iif(pcs_makupskl < 40, ', I need to improve my make up skill since she is very into make up', '')+ iif(fame['city_slut'] >= 150 or fame['pav_slut'] >= 150, ', I need to be seen as less of a slut', '')+ iif(hotcat < 6, ', I need to improve my looks', '')+ iif(npc_rel['A14'] >= 60 and fame['city_slut'] < 150 and fame['pav_slut'] < 150 and pcs_makupskl >= 40 and hotcat >= 6, ', something might happen after one of my late university classes.', '.')
 	elseif katjaQW['QWstage'] = 2:
 		'Katja and I saw two women making out at the stairs when she took me to her dorm room. Katja was interested in trying, but I told her no. She might try again later. I know her room and can come by when she is home.'
 	elseif katjaQW['QWstage'] > 2:
@@ -572,7 +571,7 @@ if yearstart > 1 and university['enrolled_in_semester'] > university['semester_p
 					'You need to get Katja to lose some more of her inhibition before you can use your strap-on on her.'
 				end
 			elseif katjaQW['strapon_vag'] + katjaQW['strapon_ass'] + katjaQW['strapon_bj'] < 3:
-				'You should' +iif(katjaQW['strapon_bj'] = 0, '; make Katja give your strap-on a blowjob', '')+ +iif( katjaQW['strapon_vag'] = 0, '; fuck Katja''s pussy with your strap-on', '')+ +iif(katjaQW['strapon_ass'] = 0, '; fuck Katja in the ass with your strap-on', '')+'.'
+				'You should' +iif(katjaQW['strapon_bj'] = 0, '; make Katja give your strap-on a blowjob', '')+ iif( katjaQW['strapon_vag'] = 0, '; fuck Katja''s pussy with your strap-on', '')+ iif(katjaQW['strapon_ass'] = 0, '; fuck Katja in the ass with your strap-on', '')+'.'
 			end
 
 			if katjaQW['relationship_cont_start'] + 350/(1+ katjaQW['boy_block']) < daystart and katjaQW['relationship_talk'] = 0:
@@ -634,6 +633,32 @@ if yearstart > 1:
 	!*nl
 	gs 'anushka_konstantinov_schedule', 'journal'
 end
+!! Ballet Content
+if alterstrtimg = 13 or (mod_ballet['letter'] > 0 or balletqw['school'] > 0):
+	*nl
+	'<center><h3>Pushkin Ballet School</h3></center>'
+
+	if mod_ballet['letter'] ! 1 and balletqw['school'] < 1:
+		'You have been a ballerina since a child and you have excelled in your dance class. Your name was put forward for the yearly entrance assessments for the Pushkin Ballet School which are being held during the summer and you are hoping for a invitation to the prestigious Pushkin Ballet Academy to your dream of being a ballerina.'
+	end
+	if 	mod_ballet['letter'] = 1 and balletqw['school'] < 1:
+		'You have accepted the opportunity at the Pushkin Ballet Academy. Transport is provided for the week long course from the Pavlosk Community Centre. '
+		'Departure: 3rd July between 1600 and 1700.'
+		'Ensure you have sufficient toiletries and work on your appearance, physical and dance skills. Note this is a residental school in Pushkin and has strict rules, ensure you have wrapped up any unfinished business before departing.'
+	end
+	if balletqw['school'] > 1:
+		!! 'You failed the course, there may be other opportunities if you want to achieve your ambition of being a ballerina.'
+		'You have been accepted into the Pushkin Ballet School. End of Quest at present.'
+	elseif balletqw['school'] = 2:
+		'You got accepted into the without any noticeable distinction.'
+	elseif balletqw['school'] = 3:
+		'You brokered a deal with Randolph to get accepted into the school.'
+	elseif balletqw['school'] = 4:
+		'Maya helped you get into the dance school by pulling some strings.'
+	elseif balletqw['school'] = 5:	
+		'Congratulations you excelled the examination, you was one of the best dancers of this years intake.'
+	end
+end
 
 --- journal_quests ---------------------------------
 

+ 1 - 1
locations/journal_school.qsrc

@@ -93,7 +93,7 @@ if $ARGS[0] = 'create_grid':
 	:grid_loop
 		if npc_grupTipe['A<<i>>'] = temp_grid_grouptipe and schoolenable['A<<i>>'] = 1:
 
-			$grid_text += '<td><table bgcolor=<<$bcolor2>>><tr><td align="center"><a href="exec: gt ''journal_school'', ''' + $temp_grid_groupname + ''' "><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>'
+			$grid_text += '<td><table bgcolor=<<$theme[''table_bg_alt'']>>><tr><td align="center"><a href="exec: gt ''journal_school'', ''' + $temp_grid_groupname + ''' "><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>'
 
 			grid_count += 1
 			if grid_count = 6 and npc_grupTipe['A<<i>>'] = temp_grid_grouptipe:

+ 13 - 0
locations/journal_uni.qsrc

@@ -10,6 +10,13 @@ if $ARGS[0] = 'professors':
 	gs 'journal_NPC_information', 'A255'
 	*nl
 	gs 'journal_NPC_information', 'A256'
+	*nl
+	gs 'journal_NPC_information', 'A269'
+	*nl
+	gs 'journal_NPC_information', 'A270'
+	*nl
+	gs 'journal_NPC_information', 'A271'
+	
 
 	act 'Go back': gt 'journal', 'uni'
 	gs 'journal_uni', 'leaveactions'
@@ -147,6 +154,12 @@ if $ARGS[0] = 'university_students':
 	*nl
 	!!Liliya
 	gs 'journal_NPC_information', 'A247', 'uni'
+	*nl
+	!!Mia
+	gs 'journal_NPC_information', 'A267', 'uni'
+	*nl
+	!!Yana
+	gs 'journal_NPC_information', 'A268', 'uni'
 
 	act 'Go back': gt 'journal', 'uni'
 	gs 'journal_uni', 'leaveactions'

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels