SamuKata
vrengames
vrengames

patreon


Lab Rats 2 v0.33.3 Release!

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

Note: There were some issues with early releases of the game not packaging properly. This has been resolved in 0.33.3

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

Lab Rats 2 v0.33.3 is finished and ready for it's public release! This update brings a dramatic overhaul to the character display method, allowing for groups of characters to all be displayed at the same time. All of the existing events and menus in LR2 have been updated, and in some cases expanded, to make use of this new system. There has also been new content added to the game. There is now a multi-staged family games night event, making use of the new display system, and a new sex dialogue branch has been added to all character types. Finally, there have been a host of bug fixes and continued optimisation improvements.

The new multi-character display system provides the ability to show and multiple girls at once, as well as highlight the current speaker of the group. This system mirrors the previously existing draw methods, which should make it simple for modders to update existing content or integrate new functionality. A significant performance optimisation has also been made, allowing animated characters to be displayed four times faster and with a dramatically reduced performance impact.

v0.33.3 has seen the addition of a large new home event, as well as tweaks and improvements to a large number of existing events. The new home event sees you invited to a family games night including Lily, Jennifer, and Rebecca. There are multiple stages and branching options to this event, and it is likely to see further expansions in future updates. Eleven existing events have been updated to make use of the new multi-character display system, letting you watch multiple girls strip down at once, or keep track of rapid back-and-forth dialogue between characters. A new at-work event has been added, adding the possibility of discovering one of your slutty employees masturbating at her desk. Finally, there has been a completely new branch of dialogue added for all characters: girls who like creampies may decide they want you to take off a condom right before you cum.

Enjoy!

Changelog(v0.32.1 to v0.33.3):

*CHANGES AND ADDITIONS*

- Added support for characters being drawn on different layers. By default there are now 4 layers for characters (which may then have an arbitrary characters on each layer).

- Added support for adding extra character drawing layers if needed by mods.

- Added support for drawing multiple characters at the same time.

- All character displays are now anchored from the bottom instead of the middle, making height consistant when multiple characters are drawn together.

- Added GroupDisplayManager class. Provides support for tracking and drawing multiple characters as a group, as well as updating single characters.

- Updated Mom/Lily insta-pic event to display both characters at once

- Updated Friends help friends be sluts random event to dislay both characters at once.

- Updated Emily intro event to show both characters at once.

- Updated Emily/Christina study recap event to show both characters at once.

- Updated Emily/Christina dinner event to show both characters at once.

- Updated catfight random event to show both characters at once.

- Updated AC random event to show all characters at once.

- Updated futuristic serum research event to show all characters at once.

- Updated aunt/cousin intro events to show all characters at once.

- Updated aunt/cousin moving events to show all characters at once.

- Updated horny at work event to show all characters at once.

- Added a no_animation flag that can be handed to any draw request to prevent default animations from being applied.

- Only characters adjacent to the primary speaker are animated, to reduce performance impacts.

- Characters in the resume select screen are no longer animated.

- Optimized character animation code. Characters now display more quickly after a draw call and have a massively improved frame rate while multiple characters are being drawn.

- Expanded horny at work event to be more aware of how many people are in the room.

- Added options to the friends help friends be sluts event to just ignore the girls.

- Added new evening event involving Jennifer, Lily, and Rebecca.

- Added new dialogue branch when having sex with a girl who likes creampies. May ask you to take off a condom at the last minute.

- Added patron reward content.

- Daily serum dosage policy now only applies a dose on a week day.

- Standardised "judge_outfit" function now used whenever a girl reviews her outfit.

- Opinion on lingerie now has a girl treat an outfit as more/less slutty instead of changing sluttiness for wearing it (up to 8 points in either direction).

- Updated scheduling code, allowing for girls to have different destinations depending on the day.

- Added new limited time event triggered while at work. You may discover slutty employees who are masturbating while at work.


*BUG FIXES*

- Fixed an issue with half-off clothing that was leading to clothing not being correctly anchored when stripping.

- Fixed several incorrect title references ("your employee" instead of "their name")

- Fixed Lily checking incorrect outfit name when adding new instapic outfit to her wardrobe.

- Fixed crash when demanding a blowjob.

- Fixed crash when Gabrielle gets a boob job.

- Fixed several typos and crashes caused by incorrect variable references.

Comments

Fixed, thanks!

Vren

There is a bug in Outfit.panties_covered: currently it checks self.get_upper_ordered() instead of self.get_lower_ordered, so it is actually checking whether the bra is covered.

You may want to turn off animations from the menu for the moment; I suspect something in the new file management system is playing poorly with animation in particular.

Vren

I was able to get it working by manually unzipping all of the files in the images folder, but the game runs verrrrrrrrrrry slowly. Hoping for a patch soon!

Pen name

In addition to the missing .png files already mentioned, I'm also seeing what looks like a bad file seperator in the Mac version File "game/script.rpy", line 5051, in get_image file = zipfile.ZipFile(file_path) File "/home/tom/ab/x64lucid-deps/install/lib/python2.7/zipfile.py", line 756, in __init__ IOError: [Errno 2] No such file or directory: u'/private/var/folders/3t/3vjb4p_x08l8gtc5mqs0tj980000gn/T/AppTranslocation/1623B47A-49C5-48F9-B5F3-DD967656F732/d/Lab_Rats_2.app/Contents/Resources/autorun/game\\images\\character_images\\stand5.zip' Darwin-17.7.0-x86_64-i386-64bit Ren'Py 7.3.5.606 Lab Rats 2 - Down to Business v0.33.1 Thu Oct 8 23:55:20 2020

tegalega

I think its a case of missing files. I was able to replicate this but then when I extracted 33.1 into my 33.0 directory everything worked.

AlistairChiss

``` I'm sorry, but an uncaught exception occurred. While loading <'MatrixColor' <'Image' u'character_images/default_Face_4_stand2_tan.png'> (0.91, 0, 0, 0, 0, 0, 0.91, 0, 0, 0, 0, 0, 0.95, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1)>: File "game/script.rpy", line 10505, in script call screen main_choice_display([people_list,actions_list]) File "renpy/common/000statements.rpy", line 531, in execute_call_screen store._return = renpy.call_screen(name, *args, **kwargs) IOError: Couldn't find file 'character_images/default_Face_4_stand2_tan.png'. -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 10505, in script call screen main_choice_display([people_list,actions_list]) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\ast.py", line 1949, in execute self.call("execute") File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\ast.py", line 1937, in call return renpy.statements.call(method, parsed, *args, **kwargs) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\statements.py", line 277, in call return method(parsed, *args, **kwargs) File "renpy/common/000statements.rpy", line 531, in execute_call_screen store._return = renpy.call_screen(name, *args, **kwargs) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\exports.py", line 2905, in call_screen rv = renpy.ui.interact(mouse="screen", type="screen", roll_forward=roll_forward) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\ui.py", line 297, in interact rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\core.py", line 2702, in interact repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, **kwargs) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\core.py", line 3194, in interact_core self.draw_screen(root_widget, fullscreen_video, (not fullscreen_video) or video_frame_drawn) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\core.py", line 2094, in draw_screen renpy.config.screen_height, File "renpy/display/render.pyx", line 490, in renpy.display.render.render_screen (gen\renpy.display.render.c:6805) rv = render(root, width, height, st, st) File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 722, in render surf = render(child, width, height, cst, cat) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 722, in render surf = render(child, width, height, cst, cat) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 722, in render surf = render(child, width, height, cst, cat) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "accelerator.pyx", line 110, in renpy.display.accelerator.transform_render File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "accelerator.pyx", line 110, in renpy.display.accelerator.transform_render File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 1871, in render cr = renpy.display.render.render(self.child, width, height, st, at) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 722, in render surf = render(child, width, height, cst, cat) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 336, in render surf = render(self.child, width, height, st, at) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\transition.py", line 618, in render bottom = render(self.old_widget, width, height, st, at) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\im.py", line 583, in render return cache.get(self, render=True) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\im.py", line 266, in get surf = image.load() File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\im.py", line 1259, in load surf = cache.get(self.image) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\im.py", line 266, in get surf = image.load() File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\display\im.py", line 628, in load surf = renpy.display.pgrender.load_image(renpy.loader.load(self.filename), self.filename) File "C:\Users\Dassath\Desktop\Lab_Rats_2-v0.33.1-pc\renpy\loader.py", line 576, in load raise IOError("Couldn't find file '%s'." % name) IOError: Couldn't find file 'character_images/default_Face_4_stand2_tan.png'. Windows-8-6.2.9200 Ren'Py 7.3.5.606 Lab Rats 2 - Down to Business v0.33.1 Thu Oct 08 09:05:47 2020 ```

Dassath

It appears that all of the zip files in the image sub-directory must be unzipped before playing.

NuTrix

First Great Game, but help it doesn't work anymore. I'm sorry, but an uncaught exception occurred. While loading <'MatrixColor' <'Image' u'character_images/happy_Face_1_back_peek_white.png'> (0.91, 0, 0, 0, 0, 0, 0.91, 0, 0, 0, 0, 0, 0.95, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1)>: File "game/script.rpy", line 10023, in script call call tutorial_start from _call_tutorial_start File "game/script.rpy", line 10062, in script "[mom.possessive_title] is at the stove and looks back at you when you come into the room." IOError: Couldn't find file 'character_images/happy_Face_1_back_peek_white.png'. -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 10023, in script call call tutorial_start from _call_tutorial_start File "game/script.rpy", line 10062, in script "[mom.possessive_title] is at the stove and looks back at you when you come into the room." File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\ast.py", line 708, in execute renpy.exports.say(who, what, *args, **kwargs) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\exports.py", line 1345, in say who(what, *args, **kwargs) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\character.py", line 1142, in __call__ self.do_display(who, what, cb_args=self.cb_args, **display_args) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\character.py", line 842, in do_display **display_args) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\character.py", line 591, in display_say rv = renpy.ui.interact(mouse='say', type=type, roll_forward=roll_forward) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\ui.py", line 297, in interact rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\core.py", line 2702, in interact repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, **kwargs) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\core.py", line 3194, in interact_core self.draw_screen(root_widget, fullscreen_video, (not fullscreen_video) or video_frame_drawn) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\core.py", line 2094, in draw_screen renpy.config.screen_height, File "renpy/display/render.pyx", line 490, in renpy.display.render.render_screen (gen\renpy.display.render.c:6805) rv = render(root, width, height, st, st) File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 722, in render surf = render(child, width, height, cst, cat) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 722, in render surf = render(child, width, height, cst, cat) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 722, in render surf = render(child, width, height, cst, cat) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "accelerator.pyx", line 110, in renpy.display.accelerator.transform_render File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "accelerator.pyx", line 110, in renpy.display.accelerator.transform_render File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 1871, in render cr = renpy.display.render.render(self.child, width, height, st, at) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 722, in render surf = render(child, width, height, cst, cat) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\layout.py", line 336, in render surf = render(self.child, width, height, st, at) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\transition.py", line 618, in render bottom = render(self.old_widget, width, height, st, at) File "renpy/display/render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:4075) cpdef render(d, object widtho, object heighto, double st, double at): File "renpy/display/render.pyx", line 259, in renpy.display.render.render (gen\renpy.display.render.c:3520) rv = d.render(widtho, heighto, st, at) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\im.py", line 583, in render return cache.get(self, render=True) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\im.py", line 266, in get surf = image.load() File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\im.py", line 1259, in load surf = cache.get(self.image) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\im.py", line 266, in get surf = image.load() File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\display\im.py", line 628, in load surf = renpy.display.pgrender.load_image(renpy.loader.load(self.filename), self.filename) File "E:\Games\Games\Novo2\Lab_Rats_2-v0.33.1-pc\Lab_Rats_2-v0.33.1-pc\renpy\loader.py", line 576, in load raise IOError("Couldn't find file '%s'." % name) IOError: Couldn't find file 'character_images/happy_Face_1_back_peek_white.png'. Windows-8-6.2.9200 Ren'Py 7.3.5.606 Lab Rats 2 - Down to Business v0.33.1 Thu Oct 08 14:00:17 2020

Zankriger


More Creators