CreatorsOk
vrengames
vrengames

patreon


v0.45.0 Release - Get it here!

Lab Rats 2 v0.45.0 is live! Get it here!

PC: Lab Rats 2 v0.45.0-PC
Mac: Lab Rats 2 v0.45.0-Mac
Android: Lab Rats 2 v0.45.0-Android 

Notice: I'm going to be away from my computer for a couple days right after this release. If you run into any problems leave a comment and I'll get on it as soon as I get back!

Lab Rats 2 v0.45.0 is finished and ready for it's week of patron bug testing. This update massively expands on the previously existing strip scenes, building them out into a reusable subsystem. The new system supports girls stripping for fun, stripping for pay, and stripping with a variety of different strip descriptions. It is also highly expandable, making it easy to mod in new strip tease descriptions or entirely new positions. This lays the groundwork for large pieces of new content to be added next month!

Enjoy!

Changelog (v0.44.1 to v0.45.0):

*CHANGES AND ADDITIONS*

- Created strip_actions.rpy file for better organisation, moved pay strip scene into it.

- Created role_prostitute.rpy file for better organisaiton, moved related events into it.

- Moved sex_mechanics.rpy into interaction_actions folder for better organisation.

- Person.get_opinion_score now supports handing over a list of opinions, returns the sum of all opinions.

- Moved situational sluttiness modifers for sex into their own label so they can be called and cleared by other events consistently.

- Detailed person UI now displays if a girl is pregnant, and if so for how long that's been true.

- Added StripteasePosition class. Stores all information for a strip tease position.

- Replaced pay strip scene with highly expandable striptease scene.

- Stripteases support multiple positions, each of which has a unique set of descriptions.

- Striptease poses now allow for a list of description labels to be provided. When called for a random selection from that list is made.

- Striptease poses now seperate descriptions into directions "towards" and "away", reflecting if the girl is looking towards or away from the MC as she strips.

- Added "leads to" field to striptease poses, details what poses the current pose naturally flows to, and the style of instruction that woudl be given, ie "Come closer", "Start dancing".

- Striptease poses have a set amount of arousal they will generate for the MC, and a set amount of energy they will cost the girl.

- Stripteases produce a variable amount of arousal for the girl. Default is 0, modified by some opinions.

- Added "is close" field to StripteasePose class. If True this pose is close enough that you could reach out and touch the girl.

- Added ability to touch a girl who is close. If the girl allows it, this adds your Foreplay skill to her arousal each round.

- Added ability to jerk off. If the girl allows it this increases your arousal by your own Foreplay skill each round.

- Stripsteases now generate Clarity each round. Amount varies depending on how much the girl is wearing, her Foreplay skill, and how sexy the pose is.

- Added ability for girls to climax while giving a strip tease. This triggers a description unique to that pose.

- Added ability to use an Orgasm Trigger Word to make a girl orgasm while giving a strip tease.

- Added ability to tell a girl to strip down while she is giving a strip tease.

- Added "for pay" variants to all of the strip tease actions. Girls will usually ask for money to do things, but are more easily convinced to do things they wouldn't normally do.

- Added obedience branches to all of the for pay branches. Girls with high obedience will do what you want without you paying them if you demand it.

- Added ability for the MC to climax during a strip tease.

- Added multiple climax branches depending on the pose the girl is in at the time, if she's aware you are going to climax, or if you are jerking off at the time.

- Added for pay climax branches. Allows you to offer a girl money to take your load in a specific way.

- Added "Awkward Stand" striptease pose. Lowest Sluttiness requirement, default pose for girls who are not slutty.

- Added "Dancing" striptease pose. Transitions from awkward stand, low sluttiness requirement and default pose for girls who are a little bit slutty.

- Added "Close Dancing" striptease pose. Transitions from Dancing, moderately low sluttiness requirement. Requires you to "call her closer".


*BUG FIXES*

- Organic Hair Chemicals and Occular Dyes serum trait unlock requirements corrected.

- Fixed incorrect opinion classificaitons in Gabrielle and Introvert personalities.

- Fixed multiple typos.

- Fixed public sex branch resulting in private sex and vice versa when seducing someone.

- Fixed post-sex arousal math. Now properly maintains Arousal if girl did not climax, decreases it if she came.

- Fixed bug with Serum Lactation serum production trait, should work properly now.

- Fixed hypno trigger orgasm not properly resetting.

- Fixed reveal sexy opinion not properly revealing any opinion at all.

- Fixed some incorrect character dialogue titles and colours in the tutorial.

- Nora human breeding hormone serum trait now properly tracks actual breast size changes, avoids reducing breast size if it was already maxed.

- Love potion serum trait now properly tracks actual Love increase, avoids reducing it if it was already maxed when applied. 

Comments

Thanks for all of these detailed reports, I've found and fixed all of these issues!

Vren

Here is the hucow error [code] I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 253, in script call call talk_person(picked_option) from _call_talk_person File "game/script.rpy", line 367, in script call $ _return.call_action(the_person) File "game/game_roles/role_employee/role_employee.rpy", line 824, in script call call give_serum(the_person) from _call_give_serum_19 File "game/general_actions/interaction_actions/chat_actions.rpy", line 599, in script $ the_person.give_serum(copy.copy(the_serum)) #Use a copy rather than the main class, so we can modify and delete the effects without changing anything else. File "game/general_actions/interaction_actions/chat_actions.rpy", line 599, in $ the_person.give_serum(copy.copy(the_serum)) #Use a copy rather than the main class, so we can modify and delete the effects without changing anything else. File "game/major_game_classes/character_related/Person.rpy", line 1227, in give_serum the_serum_design.run_on_apply(self) File "game/major_game_classes/serum_related/SerumDesign.rpy", line 101, in run_on_apply trait.run_on_apply(the_person, self) File "game/major_game_classes/serum_related/SerumTrait.rpy", line 60, in run_on_apply self.on_apply(the_person, the_serum, add_to_log) File "game/major_game_classes/serum_related/_serum_traits.rpy", line 471, in nora_reward_hucow_trait_on_apply for count in Range(0, tit_changes): NameError: global name 'Range' is not defined -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 253, in script call call talk_person(picked_option) from _call_talk_person File "game/script.rpy", line 367, in script call $ _return.call_action(the_person) File "game/game_roles/role_employee/role_employee.rpy", line 824, in script call call give_serum(the_person) from _call_give_serum_19 File "game/general_actions/interaction_actions/chat_actions.rpy", line 599, in script $ the_person.give_serum(copy.copy(the_serum)) #Use a copy rather than the main class, so we can modify and delete the effects without changing anything else. File "renpy/ast.py", line 923, in execute renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store) File "renpy/python.py", line 2235, in py_exec_bytecode exec(bytecode, globals, locals) File "game/general_actions/interaction_actions/chat_actions.rpy", line 599, in $ the_person.give_serum(copy.copy(the_serum)) #Use a copy rather than the main class, so we can modify and delete the effects without changing anything else. File "game/major_game_classes/character_related/Person.rpy", line 1227, in give_serum the_serum_design.run_on_apply(self) File "game/major_game_classes/serum_related/SerumDesign.rpy", line 101, in run_on_apply trait.run_on_apply(the_person, self) File "game/major_game_classes/serum_related/SerumTrait.rpy", line 60, in run_on_apply self.on_apply(the_person, the_serum, add_to_log) File "game/major_game_classes/serum_related/_serum_traits.rpy", line 471, in nora_reward_hucow_trait_on_apply for count in Range(0, tit_changes): NameError: global name 'Range' is not defined Windows-10-10.0.19041 Ren'Py 7.4.8.1895 Lab Rats 2 - Down to Business v0.45.0 Thu Oct 7 12:05:36 2021 [/code]

Xador

Found some lines that need fixes when I went hunting for something strange during the new strip-tease strip_actions.rpy Line 594: "Order her.\nRequires: 125 Obedience (disabled)" if the_person.obedience < 120: #displays required obedience is 125 but code says 120. according to line 587, looks like the 120 needs to be changed to 125 Line 1444: "Order her.\nRequires: [obedience_requirement] (disabled)" if the_person.obedience >= obedience_requirement: #needs the word Obedience before (disabled) and >= needs to be changed to < Line 1531: "Order her.\nRequires: [obedience_requirement] (disabled)" if the_person.obedience >= obedience_requirement: #same again here Line 1605: "Order her.\nRequires: [obedience_requirement] (disabled)" if the_person.obedience >= obedience_requirement: #and again here

Baarogue

This triggered an error on my game. Thought I did something wrong so completely restarted new save. Thanks for the fix

Xador

The Nora pregnancy trait has some mis-capitalized range uses for breast size. _serum_traits.rpy lines 471, 495 Range should be: range

family_LTE.rpy Line 634: $ draw_person() #add the_person. in front of draw_person() to fix crash bug

Baarogue

So my initial impressions of the new strip-tease w/ Jennifer's Sat. morning event: Energy costs per turn feel way too high for her and arousal gain feels too fast for MC and too slow for Jennifer. One of the things I used the Sat. morning strip-tease for in previous builds was as a reliable way to raise Jennifer's obedience, and once I unlocked Lily's strip-tease, hers too. That appears gone now, or at least it's gone from the pay route. I don't have her obedience high enough to order her to do it for free, which was kind of the point of paying for it. I lose love and money for a bit of locked clarity and too much arousal? It just doesn't feel worth it Not only that, but the thresholds for physical play during the strip-tease, when we're in private, feel high compared to the shopping date, when we're in public I'm going to keep playing with it, but without an opportunity to dose a girl with an energy pot or two beforehand I just can't see it being a very satisfying scene

Baarogue

The context of most of the "being in control" checks (in role_lactating_serum.rpy and role_hypno_orgasm.rpy) look like they'd fit best as "being submissive" checks with the math reversed. The ones in dates.rpy and sleep_LTE.rpy look like they'd fit best with "taking control"

Baarogue

Few things I found, some easy to fix, some I'm not sure how to handle: SIMPLE FIXES: For blow job and deep throat positions, being submissive decreases sluttiness, not increases it. Just need to remove the '-' sign. blowjob.rpy line 379 deepthroat.rpy line 536 Crash error for some flirting nude shots over the phone. internet.py line 205: $ the_person.draw_person.draw_person(position = "back_peek", the_animation = None) Should be: $ the_person.draw_person(position = "back_peek", the_animation = None) LESS SIMPLE FIXES: Triggering an orgasm via phone was causing all talking to show up as phone chat. This action needs to be redone like the other internet actions with returning a return_to_phone value I think. A little more than a one line fix to mimic the other internet actions, but I have a quick fix for now. There may need to be a return_to_phone = False for the case when the mc is at the same location, but the following works okay without that. role_hypno_orgasm.rpy label hypno_trigger_online(the_person): line 105: return replaced with: $ return_to_phone = True return return_to_phone There are a number of places where the opininion "being in control" is checked. This doesn't really exist. Should it be replaced with "taking control"? Is there an issue with sluttiness change for skull fuck? The opinion "drinking cum" increases sluttiness twice as both the cum_in_mouth logic and a specific the_girl.change_slut(the_girl.get_opinion_score("drinking cum")) call are made. One of these may need to be changed/removed DON"T KNOW HOW TO FIX/MAY NOT BE AN ISSUE: There is some issue with RenPy rollback for the girl cumming in a fuck session. You can easily artificially up the trance chance modifier and reduce the amount of arousal lost from her cumming by rolling back and forth at the transition where that is handled.

As stated above, the game starts, displays the 1st loading screen then stops. Log as follows: Mon Oct 4 17:50:04 2021 Windows-10-10.0.19041 Ren'Py 7.4.8.1895 Bootstrap to the start of init.init took 0.06s Early init took 0.00s Loader init took 0.04s Loading error handling took 0.06s Loading script took 1.12s There was no fault log or error msg displayed. I also tried disabling the antivirus to check if that was interfering but no change. No other Renpy game appears to be affected.??

NuTrix

I've never seen this, but someone might be able to help. If you can post whatever is in log.txt from the root LR2 folder that might be useful - just so long as it's not some near-infinitely recursive error log >_<

Baarogue

Today when I try to start this latest version of Lab Rats, the game shows the initial loading screen then just stops. I have tried re-downloading the game, same result. 0.44.1 is also crashing this way. The previously loaded version of the modded game does the same. No other Renpy games seem to have this issue. Anyone else seeing this? Any suggestions?

NuTrix

yup, and it needs the same fix but in a different file game/general_actions/interaction_actions/strip_actions.rpy line 1347, change the_person.possessive to the_person.possessive_title

Baarogue

In the strip show event with Lilly, I got he following error that seems to be related to the one Nal Lan posted. ``` I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 253, in script call call talk_person(picked_option) from _call_talk_person File "game/script.rpy", line 372, in script call call talk_person(the_person) from _call_talk_person_1 #If we're in the same place and time hasn't advanced keep talking to them until we stop talking on purpose. File "game/script.rpy", line 367, in script call $ _return.call_action(the_person) File "game/game_roles/role_sister/role_sister_main.rpy", line 239, in script call call strip_tease(the_person, for_pay = True) File "game/general_actions/interaction_actions/strip_actions.rpy", line 874, in script call call strip_tease_guy_cum(the_person, girl_state, girl_direction, guy_state, for_pay = False) File "game/general_actions/interaction_actions/strip_actions.rpy", line 1206, in script call call strip_cum_question_loop(the_person, girl_state, girl_direction, girl_aware, for_pay) File "game/general_actions/interaction_actions/strip_actions.rpy", line 1347, in script "You hold your shaft and blow your load, sending it pulsing out in an arc onto [the_person.possessive]'s legs." File "game/major_game_classes/character_related/Person.rpy", line 404, in __getattr__ raise AttributeError AttributeError: -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 253, in script call call talk_person(picked_option) from _call_talk_person File "game/script.rpy", line 372, in script call call talk_person(the_person) from _call_talk_person_1 #If we're in the same place and time hasn't advanced keep talking to them until we stop talking on purpose. File "game/script.rpy", line 367, in script call $ _return.call_action(the_person) File "game/game_roles/role_sister/role_sister_main.rpy", line 239, in script call call strip_tease(the_person, for_pay = True) File "game/general_actions/interaction_actions/strip_actions.rpy", line 874, in script call call strip_tease_guy_cum(the_person, girl_state, girl_direction, guy_state, for_pay = False) File "game/general_actions/interaction_actions/strip_actions.rpy", line 1206, in script call call strip_cum_question_loop(the_person, girl_state, girl_direction, girl_aware, for_pay) File "game/general_actions/interaction_actions/strip_actions.rpy", line 1347, in script "You hold your shaft and blow your load, sending it pulsing out in an arc onto [the_person.possessive]'s legs." File "renpy/ast.py", line 716, in execute renpy.exports.say(who, what, *args, **kwargs) File "renpy/exports.py", line 1417, in say who(what, *args, **kwargs) File "renpy/character.py", line 1210, in __call__ what = self.prefix_suffix("what", self.what_prefix, what, self.what_suffix) File "renpy/character.py", line 1129, in prefix_suffix return (sub(prefix) + sub(body) + sub(suffix)) File "renpy/character.py", line 1109, in sub return renpy.substitutions.substitute(s, scope=scope, force=force, translate=translate)[0] File "renpy/substitutions.py", line 270, in substitute s = formatter.vformat(s, (), kwargs) File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python2.7/string.py", line 563, in vformat File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python2.7/string.py", line 585, in _vformat File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python2.7/string.py", line 652, in get_field File "game/major_game_classes/character_related/Person.rpy", line 404, in __getattr__ raise AttributeError AttributeError: Windows-10-10.0.19041 Ren'Py 7.4.8.1895 Lab Rats 2 - Down to Business v0.45.0 Sun Oct 3 09:37:03 2021 ```

Seems to be a bug in the dinner with Emily and her mother, this blew up when I had stripped her topless before dinner. [code] I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 253, in script call call talk_person(picked_option) from _call_talk_person File "game/script.rpy", line 367, in script call $ _return.call_action(the_person) File "game/game_roles/role_student.rpy", line 181, in script call call student_study_home(the_person) from _call_student_study_home File "game/game_roles/role_student.rpy", line 521, in script call call study_check_up(the_person, christina) from _call_study_check_up File "game/game_roles/role_student_mom.rpy", line 19, in script "[the_student.possessive] gets dressed so she can safely show you to the door." File "game/major_game_classes/character_related/Person.rpy", line 404, in __getattr__ raise AttributeError AttributeError: -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 253, in script call call talk_person(picked_option) from _call_talk_person File "game/script.rpy", line 367, in script call $ _return.call_action(the_person) File "game/game_roles/role_student.rpy", line 181, in script call call student_study_home(the_person) from _call_student_study_home File "game/game_roles/role_student.rpy", line 521, in script call call study_check_up(the_person, christina) from _call_study_check_up File "game/game_roles/role_student_mom.rpy", line 19, in script "[the_student.possessive] gets dressed so she can safely show you to the door." File "renpy/ast.py", line 716, in execute renpy.exports.say(who, what, *args, **kwargs) File "renpy/exports.py", line 1417, in say who(what, *args, **kwargs) File "renpy/character.py", line 1210, in __call__ what = self.prefix_suffix("what", self.what_prefix, what, self.what_suffix) File "renpy/character.py", line 1129, in prefix_suffix return (sub(prefix) + sub(body) + sub(suffix)) File "renpy/character.py", line 1109, in sub return renpy.substitutions.substitute(s, scope=scope, force=force, translate=translate)[0] File "renpy/substitutions.py", line 270, in substitute s = formatter.vformat(s, (), kwargs) File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python2.7/string.py", line 563, in vformat File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python2.7/string.py", line 585, in _vformat File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python2.7/string.py", line 652, in get_field File "game/major_game_classes/character_related/Person.rpy", line 404, in __getattr__ raise AttributeError AttributeError: Windows-10-10.0.22000 Ren'Py 7.4.8.1895 Lab Rats 2 - Down to Business v0.45.0 Sun Oct 3 01:17:26 2021 [/code]

Nal Lan

I have been playing ‘Lab Rats 2’ for quite a while and here are a few of my suggestions and possible correction: Correction: When Rebecca and Gabrielle arrive at the MC place, Rebecca is talking but it’s Gabrielle’s data that are shown at the top. I had noticed it quite a while ago. Suggestion: If the MC is ‘curse’ to have only baby girls, how about he meets them after some 18 (in game) years? He can do to them the same thing that he did to his sister, mom, aunt and cousin: corrupting them! For that, you will need to keep track of the years. How about when the month turn to 12, 12 is subtracted from the month and 1 is added to the year? You might also have to keep track of how old each of the children are, either by the year of birth, by adding 1 year at the same time that the calendar does it or by having their date of birth tagged to each child. For the latter, each time the month and day coincide, a year is added to the child age. For the former, if 1 is added to the age after 12 months, the MC could meet the child after she turns 19 to make sure 18 full years have passed. Another suggestion: How about a sexy opinion for voyeurism? When a girl has a positive opinion of voyeurism, she gets aroused when seeing someone (the MC and another girl) having sex in front of them. If it's a negative opinion, her arousal goes down.

Espernihon

Potential bugs found from my initial scan vs. last version discussions. I'm trying to credit the person I saw post the fix policy_disobedience_events.rpy Line 28: people.on_talk_event_list.append(Limited_Time_Action(uniform_disobedience_action, uniform_disobedience_action.event_duration)) #change people to person credit Stephan last version Line 35: if the_person.should_wear_uniform() and the_person.planned_uniform == the_person.planned_outfit: #change == to <> credit Stephan last version Line 50: if the_person.effective_sluttiness() >= planned_uniform.slut_required: #change required to requirement credit Stephan last version Line 55: the_person "It's so impractical, I couldn't get anything done. I'm just wear this for a few hours and get some real work done." #change I'm to I'll for grammar Line 121: $ change_obedience(1 + the_person.get_opinion_score("being submissive")) #add the_person. in front of change_obedience to fix crash bug crises.rpy Line 978: if trait.researched and trait not in the_design.traits and not trait.slots_added > 0: #change trait.slots_added to trait.slots credit Robert McClenahan last version Line 3007: if the_report.get("girl orgasms", 0) > 0: #change > to == credit Stephen last version Line 3012: if len(helpful_people > 1): #move ) from after 1 to after helpful_people credit Stephen last version Line 3024: if len(helpful_people > 1): #move ) from after 1 to after helpful_people credit Stephen last version relationship_crises.rpy Line 482: $ the_group.draw_group(person_one) #remove person_one credit Mialamo last version role_nora.rpy Line 231: label nora_research_cash_intro(the_person, did_research = False): #fixed? last version this event always behaved as if you didn't contact Nora role_student_mom.rpy Line 19: "[the_student.possessive] gets dressed so she can safely show you to the door." #change possessive to possessive_title to fix crash bug sex_mechanics.rpy Line 190: if round_choice == "Change" or round_choice == "Continue" or round_choice == "Hypno_Orgasm": #fixed? if not, try ending line at "Continue": and comment off the rest credit Stephan last version tutorial.rpy Line 102: mom "What's going on?" #change mom to lily Line 116: mom "Hello?" #change mom to stephanie Line 118: mom "[stephanie.mc_title]! Good to hear from you, what's up?" #change mom to stephanie Line 120: mom "Ooh, a business offer. How mysterious. I'm almost done here at the lab, if you buy me a drink you've got a deal." #change mom to stephanie

Baarogue


More Models and Creators