CreatorsOk
vrengames
vrengames

patreon


LR2 v0.49.0a Bugfix!

I've fixed up most (hopefully?) of the major issues in v0.49.0. The download links have been updated to point to the new version.

If you've already downloaded v0.49.0 and don't want to redownload the entire image library you can grab a patch-file here: v0.49.0a-Patch. [NOTE: the first upload of the patch was missing some files, which has now been fixed. If you downloaded it within the first couple of hours and have issues try applying the new patch]

Unpack it into the game folder so it overwrites the matching files. This patch is not save compatible.

There are still a few minor problems with some special characters roaming around town before they're properly introduced, that'll be fixed up for v0.49.1. If you run into any issues leave a comment and let me know!

Major Fixes:

- Fixed Jennifer's work related quests crashing.

- Fixed Alexia's work related quests crashing.

- Fixed exclusive business policies not toggling conflicting policies when purchased.

- Fixed screening criteria not being applied.

- Fixed employees showing up in duplicate locations when moved to a new division.

- Fixed Rebecca never being in her apartment living room, preventing many events from triggering.

- Added unit tests for most basic crisis requirement check functions.

Comments

The prostitution action tied to the prostitute role uses different temporary modifiers than those used in the lady of the night event. The action should use the more generous temp modifiers that the prostitute intro scene has.

Robert McClenahan

Business.rpy had a couple of bugs: candidate_dict as mispelled candidtate_dict a few times. When generating the sex skills array, it only generates 3 values when 4 are needed when the girl is generated.

Robert McClenahan

was wondering if that would happen, Happens all the time with NPC's the daughter ask if mom can work hire mom, clearly says she only has one child, a week or so later, mom now asks if can hire daughter.

yeah, i deleted the patched copy of the game and went back to the first release

philip ash

Oh and one last hilarious issue: Sometimes people come to you to ask if you can hire a family member. Well my mother came to me and asked if we can hire her daugther, although I already had hired Lily. The game simply created a fully random lady as my new sister...perhaps a half sister we never spoke about?

Several issues is noticed: 1) Cannot finish the "Drink Coffee" with Alesia encounter 2) Outfitmanager is not showing me any preset colors 3) if presets have been selected for hireing then certain will crash (seems like in business.rpy at three points the variable candidtate_dict was written wrong) 4) No matter how much money I have I cannot buy a private dance from a stripper

One more note on this. I believe the following is a valid shorter alternative for the add_role check of a new job if I'm doing my Boolean logic transforms correctly: if not (self.job and new_job.job_role == self.job.job_role): self.add_role(new_job.job_role)

I finally figured out the issue with general people job_roles! The condition to check when to run add_role for the new_job's job_role did not include the case of no current job (self.job is None or falsy). Person.rpy line 2275: if self.job and not new_job.job_role == self.job.job_role: should be: if not self.job or (self.job and not new_job.job_role == self.job.job_role): This change caused another issue which is fixed by moving the self.add_job(job) call in Person's __init__ (Person.rpy line 35) down to after special_role is handled (Person.rpy lines 138-146). I personally put it at the end of __init__ and it worked okay, but it might need to go elsewhere if future __init__ logic uses self.job This fix does not help already created games unfortunately. You would need to go around to every generic person and run add_role for their job_role.

EDIT: Still working on what the issue is with the job_role actions not being included for general people, but my original fix is not correct. Also, with the above change to add the job role actions to the special_role actions for display, you end up with multiple "Offer to hire her." actions for family. Maybe need to add an exclusion condition for family roles to the general offer_to_hire_requirement? Or was general hiring offers not finished yet? It seems they are just multiple references to the same action from my testing (for the mom and sister at least), so maybe just need to do something better than my general adding of the job role actions to the Special Actions list?

On a related note, there are a few issues with the stripper private dance. the stripper_private_dance_requirement needs a small change: role_stripper.rpy line 5: elif mc.business.has_funds(100): should be: elif not mc.business.has_funds(100): Typo for check for the cousin as the stripper: role_stripper.rpy line 11: if the_person.has_role(cousing_role): should be: if the_person.has_role(cousin_role): the_person object needs to be included in call strip_tease(): role_stripper.rpy lines 48, 85: call strip_tease(for_pay = True, skip_intro = True, start_girl_state = strip_dancing) should be in both places: call strip_tease(the_person, for_pay = True, skip_intro = True, start_girl_state = strip_dancing) outfit.get_upper_visible returns a list, so need to pick the top element for displaying the thing you stuff cash into: role_stripper.rpy line 70: $ the_item = the_person.outfit.get_upper_visible() should be: $ the_item = the_person.outfit.get_upper_visible()[0]

EDIT: The following is wrong, the job role should already be added to special_role (via add_job when creating the Person) which tells what actions should be in the talk screen. My change that added them to the talk screen: script.rpy line 351: for role in the_person.special_role: changed to: for role in the_person.special_role + [the_person.job.job_role]:

I think job_role actions are not added to the talk_person screen anywhere. I can't offer to hire anyone besides family or ask the strippers for the private dance. I've checked the hire action requirements, and it results in something other than false, but nothing to choose on the screen. EDIT: The following is wrong, the job role should already be added to special_role (via add_job when creating the Person) which tells what actions should be in the talk screen. Maybe just add the job role actions with the special role actions when building the screen?

There's a bug with serum durations I just noticed. Sometimes, the serum has too short a duration. After looking at the serum inventory data and the code, I think it is an issue of not using a copy of the serum design for the give_serum function. You end up changing the original SerumDesign's duration_counter property. For my case specifically I think this happened with giving the mom a blue serum during discovery and when giving happiness serums to Lily for the vaginal taboo quest. To avoid this, you might want to have give_serum itself create the SerumDesign copy rather than having to remember to pass a copy every time you call it? If that isn't okay for some reason, here is the list of places I noticed give_serum not being passed a copy: role_mother_main.py line 1344: $ the_person.give_serum(blue_serum) role_sister_taboo_quests.rpy line 722: $ test_person.give_serum(the_serum, add_to_log = False) Also, maybe rename the label give_serum or Person function give_serum to avoid confusion?

One small bit of follow up that might be good with the mom being able to be hired now. The random text messages and other job related events for her might need to include the possibility she is working for you, so she would change some of the ones that talk about being at work.

This is the same issue as in the first comment to this post, a typo-ed variable (candidtate_dict should be candidate_dict). Just find and replace in Business.rpy

[code] I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 260, in script call $ picked_option.call_action() File "game/general_actions/location_actions/business_actions.rpy", line 167, in script python: #Build our list of candidates with our proper recruitment requirements File "game/general_actions/location_actions/business_actions.rpy", line 171, in candidates.append(make_person(mc.business.generate_candidate_requirements())) File "game/major_game_classes/business_related/Business.rpy", line 851, in generate_candidate_requirements candidtate_dict["stat_array"] = [renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap)] NameError: global name 'candidtate_dict' is not defined -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 260, in script call $ picked_option.call_action() File "game/general_actions/location_actions/business_actions.rpy", line 167, in script python: #Build our list of candidates with our proper recruitment requirements 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/location_actions/business_actions.rpy", line 171, in candidates.append(make_person(mc.business.generate_candidate_requirements())) File "game/major_game_classes/business_related/Business.rpy", line 851, in generate_candidate_requirements candidtate_dict["stat_array"] = [renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap)] NameError: global name 'candidtate_dict' is not defined Windows-10-10.0.19041 Ren'Py 7.4.8.1895 Lab Rats 2 - Down to Business v0.49.0a Fri Feb 4 20:20:09 2022 [/code]

Dassath

``` I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 260, in script call $ picked_option.call_action() File "game/general_actions/location_actions/business_actions.rpy", line 133, in script call call advance_time from _call_advance_time_2 File "game/script.rpy", line 413, in script call $ crisis.call_action() File "game/game_roles/role_affair.rpy", line 140, in script $ the_person.clear_situational_slut("Date", 20, "There's no reason to hold back, he's here to fuck me!") File "game/game_roles/role_affair.rpy", line 140, in $ the_person.clear_situational_slut("Date", 20, "There's no reason to hold back, he's here to fuck me!") TypeError: clear_situational_slut() takes exactly 2 arguments (4 given) -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 260, in script call $ picked_option.call_action() File "game/general_actions/location_actions/business_actions.rpy", line 133, in script call call advance_time from _call_advance_time_2 File "game/script.rpy", line 413, in script call $ crisis.call_action() File "game/game_roles/role_affair.rpy", line 140, in script $ the_person.clear_situational_slut("Date", 20, "There's no reason to hold back, he's here to fuck me!") File "/home/f229m776/Games/LR2/0.49.0/renpy/ast.py", line 923, in execute renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store) File "/home/f229m776/Games/LR2/0.49.0/renpy/python.py", line 2235, in py_exec_bytecode exec(bytecode, globals, locals) File "game/game_roles/role_affair.rpy", line 140, in $ the_person.clear_situational_slut("Date", 20, "There's no reason to hold back, he's here to fuck me!") TypeError: clear_situational_slut() takes exactly 2 arguments (4 given) Linux-5.15.15-76051515-generic-x86_64-with-debian-11.0 Ren'Py 7.4.8.1895 Lab Rats 2 - Down to Business v0.49.0 Fri Feb 4 09:30:22 2022 ``` Fixed in role_affair.rpy ... change line 140 to: $ the_person.clear_situational_slut("Date")

Sidrew

Vren not a bug, but the last of the change_funds changes you started in 48. is in date.rpy menu: "Pay. -$200" if mc.business.has_funds(200): "You charge it to the business card." $ mc.business.funds += -200 line 1567

Hi Vren If I could make a minor feature request - can we have the option to disable tutorial popups, like when accessing the hiring screen or serum creation? This could be an option toggled during the game start options and/or toggled in Preferences. It's mildly annoying to have to click through it each time when I've done those bits thousands of times before.

SomebodyElse

'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 212, in script call screen main_choice_display([people_list,actions_list], person_preview_args = {"show_person_info":False}) File "renpy/common/000statements.rpy", line 569, in execute_call_screen store._return = renpy.call_screen(name, *args, **kwargs) File "game/game_screens/hud_screens/business_status_hud.rpy", line 5, in execute screen business_ui(): #Shows some information about your business. File "game/game_screens/hud_screens/business_status_hud.rpy", line 5, in execute screen business_ui(): #Shows some information about your business. File "game/game_screens/hud_screens/business_status_hud.rpy", line 6, in execute frame: File "game/game_screens/hud_screens/business_status_hud.rpy", line 11, in execute vbox: File "game/game_screens/hud_screens/business_status_hud.rpy", line 35, in execute textbutton "Daily Salary Cost: $"+ str(int(mc.business.calculate_salary_cost())) + " | $" + str(int(mc.business.operating_costs)): File "game/game_screens/hud_screens/business_status_hud.rpy", line 35, in textbutton "Daily Salary Cost: $"+ str(int(mc.business.calculate_salary_cost())) + " | $" + str(int(mc.business.operating_costs)): File "game/major_game_classes/business_related/Business.rpy", line 353, in calculate_salary_cost daily_cost += person.salary AttributeError: 'Action' object has no attribute 'salary' -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 212, in script call screen main_choice_display([people_list,actions_list], person_preview_args = {"show_person_info":False}) File "renpy/ast.py", line 2010, in execute self.call("execute") File "renpy/ast.py", line 1998, in call return renpy.statements.call(method, parsed, *args, **kwargs) File "renpy/statements.py", line 278, in call return method(parsed, *args, **kwargs) File "renpy/common/000statements.rpy", line 569, in execute_call_screen store._return = renpy.call_screen(name, *args, **kwargs) File "renpy/exports.py", line 3132, in call_screen rv = renpy.ui.interact(mouse="screen", type="screen", roll_forward=roll_forward) File "renpy/ui.py", line 298, in interact rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs) File "renpy/display/core.py", line 3276, in interact repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, **kwargs) File "renpy/display/core.py", line 3694, in interact_core root_widget.visit_all(lambda i : i.per_interact()) File "renpy/display/core.py", line 568, in visit_all d.visit_all(callback, seen) File "renpy/display/core.py", line 568, in visit_all d.visit_all(callback, seen) File "renpy/display/core.py", line 568, in visit_all d.visit_all(callback, seen) File "renpy/display/screen.py", line 432, in visit_all callback(self) File "renpy/display/core.py", line 3694, in root_widget.visit_all(lambda i : i.per_interact()) File "renpy/display/screen.py", line 443, in per_interact self.update() File "renpy/display/screen.py", line 631, in update self.screen.function(**self.scope) File "game/game_screens/hud_screens/business_status_hud.rpy", line 5, in execute screen business_ui(): #Shows some information about your business. File "game/game_screens/hud_screens/business_status_hud.rpy", line 5, in execute screen business_ui(): #Shows some information about your business. File "game/game_screens/hud_screens/business_status_hud.rpy", line 6, in execute frame: File "game/game_screens/hud_screens/business_status_hud.rpy", line 11, in execute vbox: File "game/game_screens/hud_screens/business_status_hud.rpy", line 35, in execute textbutton "Daily Salary Cost: $"+ str(int(mc.business.calculate_salary_cost())) + " | $" + str(int(mc.business.operating_costs)): File "game/game_screens/hud_screens/business_status_hud.rpy", line 35, in textbutton "Daily Salary Cost: $"+ str(int(mc.business.calculate_salary_cost())) + " | $" + str(int(mc.business.operating_costs)): File "game/major_game_classes/business_related/Business.rpy", line 353, in calculate_salary_cost daily_cost += person.salary AttributeError: 'Action' object has no attribute 'salary' Windows-10-10.0.19041 Ren'Py 7.4.8.1895 Lab Rats 2 - Down to Business v0.49.0a Fri Feb 4 06:46:25 2022

mario1980

there is a bug also to recruiment with new employee with big tits o smaller tits, taller or smaller... if i pay the policy when i want to hire someone the game crash and i can't do nothing

mario1980

In addition to Sidrew's observation that the teens recruitment triggers this bug, it appears that any that lowers the recruiting age does the same.

sb2017

``` I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 260, in script call $ picked_option.call_action() File "game/general_actions/location_actions/business_actions.rpy", line 167, in script python: #Build our list of candidates with our proper recruitment requirements File "game/general_actions/location_actions/business_actions.rpy", line 171, in candidates.append(make_person(mc.business.generate_candidate_requirements())) File "game/major_game_classes/business_related/Business.rpy", line 855, in generate_candidate_requirements candidtate_dict["sex_array"] = [renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap)] NameError: global name 'candidtate_dict' is not defined -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 260, in script call $ picked_option.call_action() File "game/general_actions/location_actions/business_actions.rpy", line 167, in script python: #Build our list of candidates with our proper recruitment requirements 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/location_actions/business_actions.rpy", line 171, in candidates.append(make_person(mc.business.generate_candidate_requirements())) File "game/major_game_classes/business_related/Business.rpy", line 855, in generate_candidate_requirements candidtate_dict["sex_array"] = [renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap)] NameError: global name 'candidtate_dict' is not defined Windows-10-10.0.22000 Ren'Py 7.4.8.1895 Lab Rats 2 - Down to Business v0.49.0a Thu Feb 3 18:51:48 2022 ```

sb2017

There is an issue with using the patch files. The "employees showing up in duplicate locations when moved to a new division" is not fixed with the patch files, but it is fixed in the actual full download. The files for this are in the game_roles folder of the full install if you want them separately for some reason. Vren, maybe give all the files from the game folder besides the images folder for the patch to avoid missing files for the fix (since the images are like 99% of the file space in there)?

Have to say well done all, good job of tracking it down

Laughingowl

After fixing the "candidtate" typos... I get this now: ``` I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 260, in script call $ picked_option.call_action() File "game/general_actions/location_actions/business_actions.rpy", line 167, in script python: #Build our list of candidates with our proper recruitment requirements File "game/general_actions/location_actions/business_actions.rpy", line 171, in candidates.append(make_person(mc.business.generate_candidate_requirements())) File "game/helper_functions/random_generation_functions.rpy", line 11, in make_person return_character = create_random_person(**requirement_dict) TypeError: create_random_person() got an unexpected keyword argument 'bonus_slut' -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 260, in script call $ picked_option.call_action() File "game/general_actions/location_actions/business_actions.rpy", line 167, in script python: #Build our list of candidates with our proper recruitment requirements File "/home/f229m776/Games/LR2/0.49.0/renpy/ast.py", line 923, in execute renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store) File "/home/f229m776/Games/LR2/0.49.0/renpy/python.py", line 2235, in py_exec_bytecode exec(bytecode, globals, locals) File "game/general_actions/location_actions/business_actions.rpy", line 171, in candidates.append(make_person(mc.business.generate_candidate_requirements())) File "game/helper_functions/random_generation_functions.rpy", line 11, in make_person return_character = create_random_person(**requirement_dict) TypeError: create_random_person() got an unexpected keyword argument 'bonus_slut' Linux-5.15.15-76051515-generic-x86_64-with-debian-11.0 Ren'Py 7.4.8.1895 Lab Rats 2 - Down to Business v0.49.0 Thu Feb 3 11:05:15 2022 ```

Sidrew

After applying the patch and trying to hire someone with teenager turned on... looks like a simple typo. ``` I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 260, in script call $ picked_option.call_action() File "game/general_actions/location_actions/business_actions.rpy", line 167, in script python: #Build our list of candidates with our proper recruitment requirements File "game/general_actions/location_actions/business_actions.rpy", line 171, in candidates.append(make_person(mc.business.generate_candidate_requirements())) File "game/major_game_classes/business_related/Business.rpy", line 851, in generate_candidate_requirements candidtate_dict["stat_array"] = [renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap)] NameError: global name 'candidtate_dict' is not defined -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 260, in script call $ picked_option.call_action() File "game/general_actions/location_actions/business_actions.rpy", line 167, in script python: #Build our list of candidates with our proper recruitment requirements File "/home/f229m776/Games/LR2/0.49.0/renpy/ast.py", line 923, in execute renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store) File "/home/f229m776/Games/LR2/0.49.0/renpy/python.py", line 2235, in py_exec_bytecode exec(bytecode, globals, locals) File "game/general_actions/location_actions/business_actions.rpy", line 171, in candidates.append(make_person(mc.business.generate_candidate_requirements())) File "game/major_game_classes/business_related/Business.rpy", line 851, in generate_candidate_requirements candidtate_dict["stat_array"] = [renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap),renpy.random.randint(1,stat_cap)] NameError: global name 'candidtate_dict' is not defined Linux-5.15.15-76051515-generic-x86_64-with-debian-11.0 Ren'Py 7.4.8.1895 Lab Rats 2 - Down to Business v0.49.0 Thu Feb 3 11:02:24 2022 ```

Sidrew


More Models and Creators