XaiJu
vrengames
vrengames

patreon


v0.27 Planning and Work Begins!

Lab Rats 2 v0.26.1 is out, and I've spent the last couple of days doing some bug fixing and trouble shooting. There are a few technical issues I'm still hunting down (A memory leak being the main one), but if everything goes well that should be handled soon. That means it's time to do some planning and get to work on new content for v0.27!

Since the early days of LR2 an important part of development has been putting in what I like to call "gameplay scaffolding". These are parts of the game intended to be temporary and allow other parts which are being built and tested. A prime example of this, and what I'm planning to focus on for v0.27, is the "Try and seduce her" button when interacting with a girl. This button has existed since the very earliest versions of the game and provides access to the sex subsystem. It currently requires a minimum sluttiness for the girl, then asks you for one of three quite general (and unimpactful) approaches before doing a random check and either letting you through or kicking you back to the conversation window. This general option was needed because there were no events, or even frameworks to add events, that would reliably initiate having sex.

In v0.27 I want to continue the trend of work I started in v0.26 and add much more detail to one of the most commonly interacted systems of the game. I am planning to remove the "seduce her" button and it's related choices and replace it with several options more closely tied to Obedience, Sluttiness, and Love. These options will be able to provide reliable access to the sex system once a character is sufficiently obedient, slutty, or in love, but early in her corruption will either be unreliable or unavailable. A bigger focus will then be put on developing events and character roles that let provide access to the generic sex system. A good example of what this might look like can be seen in the current dating system: after having a good date you have a chance to start having sex.

I should note that the plan is not to reduce how often you're able to actually have sex or interact with a girl, it's just to provide more context and background to how you end up in that situation. Instead of walking up to Mom and pressing the "seduce" button you may (as a theoretical example) be able to offer to work out with her, which leads to a pre-workout "massage", which can then evolve further. I can tie the availability of these events to general progression with a character and much more naturally control how a relationship evolves.

Comments

``` I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 9088, in script call call talk_person(picked_option) from _call_talk_person File "game/script.rpy", line 9205, in script call $ _return.call_action(the_person) File "game/game_roles/role_affair.rpy", line 47, in script $ the_person.draw_person(position = "happy") File "game/game_roles/role_affair.rpy", line 47, in $ the_person.draw_person(position = "happy") File "game/script.rpy", line 2103, in draw_person final_image = self.build_person_animation(the_animation, position, emotion, special_modifier, lighting, background_fill, animation_effect_strength) File "game/script.rpy", line 2023, in build_person_animation the_displayable = self.build_person_displayable(position, emotion, special_modifier, lighting, background_fill, no_frame = True) File "game/script.rpy", line 1991, in build_person_displayable displayable_list.extend(self.outfit.generate_draw_list(self,position,emotion,special_modifier, lighting = lighting)) #Get the displayables for everything we wear. Note that extnsions do not return anything because they have nothing to show. File "game/script.rpy", line 4284, in generate_draw_list ordered_displayables.append(item.generate_item_displayable(body_type, tit_size, position, lighting = lighting)) File "game/script.rpy", line 4026, in generate_item_displayable mask_image = self.pattern_sets.get(position+"_"+self.pattern).get_image(body_type, "AA") AttributeError: 'NoneType' object has no attribute 'get_image' -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 9088, in script call call talk_person(picked_option) from _call_talk_person File "game/script.rpy", line 9205, in script call $ _return.call_action(the_person) File "game/game_roles/role_affair.rpy", line 47, in script $ the_person.draw_person(position = "happy") File "H:\gryX\Lab_Rats_2-v0.26.1-pc\renpy\ast.py", line 914, in execute renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store) File "H:\gryX\Lab_Rats_2-v0.26.1-pc\renpy\python.py", line 2028, in py_exec_bytecode exec bytecode in globals, locals File "game/game_roles/role_affair.rpy", line 47, in $ the_person.draw_person(position = "happy") File "game/script.rpy", line 2103, in draw_person final_image = self.build_person_animation(the_animation, position, emotion, special_modifier, lighting, background_fill, animation_effect_strength) File "game/script.rpy", line 2023, in build_person_animation the_displayable = self.build_person_displayable(position, emotion, special_modifier, lighting, background_fill, no_frame = True) File "game/script.rpy", line 1991, in build_person_displayable displayable_list.extend(self.outfit.generate_draw_list(self,position,emotion,special_modifier, lighting = lighting)) #Get the displayables for everything we wear. Note that extnsions do not return anything because they have nothing to show. File "game/script.rpy", line 4284, in generate_draw_list ordered_displayables.append(item.generate_item_displayable(body_type, tit_size, position, lighting = lighting)) File "game/script.rpy", line 4026, in generate_item_displayable mask_image = self.pattern_sets.get(position+"_"+self.pattern).get_image(body_type, "AA") AttributeError: 'NoneType' object has no attribute 'get_image' Windows-7-6.1.7601-SP1 Ren'Py 7.3.5.606 Lab Rats 2 - Down to Business v0.26.1 Sat Mar 14 15:49:23 2020 ```

Adam Król

Would you be willing to have a place where we could post/share mods? Along with an option to say "If Vren likes this code he can have it with no financial or social obligation in return." I've kept my mods pretty light so far because I have to re-write them every version, but it seems like it wouldn't be too hard to have some sort of repository.

Aaror

[code] I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 9088, in script call call talk_person(picked_option) from _call_talk_person File "game/script.rpy", line 9207, in script call $ _return.call_action() File "game/chat_actions.rpy", line 1368, in script call call fuck_person(the_person,private = in_private) from _call_fuck_person File "game/sex_mechanics.rpy", line 65, in script call call girl_choose_position(the_person, ignore_taboo = ignore_taboo) from _call_girl_choose_position #Get her to pick a position based on what's available #TODO: This function File "game/sex_mechanics.rpy", line 291, in script python: File "game/sex_mechanics.rpy", line 294, in if position.her_position_willingness_check(the_person, ignore_taboo): File "game/script.rpy", line 5296, in her_position_willingness_check elif self.skill_tag == "Vaginal" and the_person.has_family_tboo(): AttributeError: 'Person' object has no attribute 'has_family_tboo' -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 9088, in script call call talk_person(picked_option) from _call_talk_person File "game/script.rpy", line 9207, in script call $ _return.call_action() File "game/chat_actions.rpy", line 1368, in script call call fuck_person(the_person,private = in_private) from _call_fuck_person File "game/sex_mechanics.rpy", line 65, in script call call girl_choose_position(the_person, ignore_taboo = ignore_taboo) from _call_girl_choose_position #Get her to pick a position based on what's available #TODO: This function File "game/sex_mechanics.rpy", line 291, in script python: File "H:\gryX\Lab_Rats_2-v0.26.1-pc\renpy\ast.py", line 914, in execute renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store) File "H:\gryX\Lab_Rats_2-v0.26.1-pc\renpy\python.py", line 2028, in py_exec_bytecode exec bytecode in globals, locals File "game/sex_mechanics.rpy", line 294, in if position.her_position_willingness_check(the_person, ignore_taboo): File "game/script.rpy", line 5296, in her_position_willingness_check elif self.skill_tag == "Vaginal" and the_person.has_family_tboo(): AttributeError: 'Person' object has no attribute 'has_family_tboo' Windows-7-6.1.7601-SP1 Ren'Py 7.3.5.606 Lab Rats 2 - Down to Business v0.26.1 Thu Mar 12 15:39:45 2020 [/code]

Adam Król

[code] I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 9128, in script call call advance_time from _call_advance_time_15 File "game/script.rpy", line 9898, in script call $ the_morning_crisis.call_action() File "game/crises.rpy", line 4844, in script if the_sister..effective_sluttiness() > 40: SyntaxError: invalid syntax (game/crises.rpy, line 4844) -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 9128, in script call call advance_time from _call_advance_time_15 File "game/script.rpy", line 9898, in script call $ the_morning_crisis.call_action() File "game/crises.rpy", line 4844, in script if the_sister..effective_sluttiness() > 40: File "H:\gryX\Lab_Rats_2-v0.26.1-pc\renpy\ast.py", line 1832, in execute if renpy.python.py_eval(condition): File "H:\gryX\Lab_Rats_2-v0.26.1-pc\renpy\python.py", line 2057, in py_eval code = py_compile(code, 'eval') File "H:\gryX\Lab_Rats_2-v0.26.1-pc\renpy\python.py", line 692, in py_compile raise e SyntaxError: invalid syntax (game/crises.rpy, line 4844) Windows-7-6.1.7601-SP1 Ren'Py 7.3.5.606 Lab Rats 2 - Down to Business v0.26.1 Thu Mar 12 15:16:17 2020 [/code]

Adam Król

As you can see, it isn't that hard, I've written a "hyperactive" (+20 energy) and "Will Sapping" (+20 obedience) but didn't want to add too much. Glad this program supports modding!

Aaror

How to add the uncontrollable lust negative side effect: Open game folder, then open side_effect_traits_rpy in editra or similar text editor. Find the appropriate space and paste the following over the text in the file: #Serum trait functions. Each serum trait can have up to four key functions: on_apply, on_remove, on_turn, and on_day. These are run at various points throughout the game. init -1: python: ## depressant_side_effect_functions ## def depressant_side_effect_on_apply(the_person, add_to_log): the_person.change_happiness(-20) ## libido_suppressant_functions ## def libido_suppressant_on_apply(the_person, add_to_log): the_person.change_slut_core(-20, fire_event = False) the_person.change_slut_temp(-20) def libido_suppressant_on_remove(the_person, add_to_log): the_person.change_slut_core(20, fire_event = False) the_person.change_slut_temp(20) ## uncontrollable_lust_functions ## def uncontrollable_lust_on_apply(the_person, add_to_log): the_person.change_slut_core(20, fire_event = False) the_person.change_slut_temp(20) def uncontrollable_lust_on_remove(the_person, add_to_log): the_person.change_slut_core(-20, fire_event = False) the_person.change_slut_temp(-20) ## anxiety_provoking_functions ## def anxiety_provoking_on_turn(the_person, add_to_log): the_person.change_happiness(-3, add_to_log) ## performance_inhibitor_functions ## def performance_inhibitor_on_apply(the_person, add_to_log): the_person.change_int(-1, add_to_log) the_person.change_focus(-1, add_to_log) the_person.change_cha(-1, add_to_log) def performance_inhibitor_on_remove(the_person, add_to_log): the_person.change_int(1, add_to_log) the_person.change_focus(1, add_to_log) the_person.change_cha(1, add_to_log) ## mood_swings_functions ## def mood_swings_on_turn(the_person, add_to_log): swing = renpy.random.randint(0,1) if swing == 0: the_person.change_happiness(-10, add_to_log) else: the_person.change_happiness(10, add_to_log) ## Sedative functions ## def sedative_on_apply(the_person, add_to_log): the_person.change_energy(-20, add_to_log) the_person.change_max_energy(-20, add_to_log) def sedative_on_remove(the_person, add_to_log): the_person.change_max_energy(20, add_to_log) #They don't get the normal energy back instantly, it has to come back on it's own ## Slow release sedative functions ## def slow_release_sedative_on_turn(the_person, add_to_log): the_person.change_energy(-10) label instantiate_side_effect_traits(): #Creates all of the default LR2 serum trait objects. python: depressant_side_effect = SerumTrait(name = "Depressant", desc = "An unintended interaction produces a sudden and noticable drop in the recipients mood without any corresponding improvement when the serum expires.", positive_slug = "None", negative_slug = "-20 Happiness When Applied, -$5 Value", value_added = -5, on_apply = depressant_side_effect_on_apply, is_side_effect = True) unpleasant_taste_side_effect = SerumTrait(name = "Unpleasant Taste", desc = "This serum has a prominent and decidedly unpleasant taste. While it does not decrease the effectiveness of the serum it has a large impact on its value when sold.", positive_slug = "None", negative_slug = "-$20 Value", value_added = -20, is_side_effect = True) bad_reputation = SerumTrait(name = "Bad Reputation", desc = "This serum design has developed a particularly bad reputation. Regardless of if it is based on facts is has a significant effect on the price customers are willing to pay.", positive_slug = "None", negative_slug = "-$20 Value", value_added = -20, is_side_effect = True) unstable_reaction = SerumTrait(name = "Unstable Reaction", desc = "The reaction used to create this serum was less stable than initialy hypothesised. Reduces serum duration by two turns.", positive_slug = "None", negative_slug = "-2 Turn Duration, -$5 Value", value_added = -5, duration_added = -2, is_side_effect = True) manual_synthesis_required = SerumTrait(name = "Manual Synthesis Required", desc = "A step in this serums manufacturing process requires manual intervention, preventing the use of time saving automation. This has no impact on effectivness or value, but increases the amount of production effort required.", positive_slug = "None", negative_slug = "+15 Production/Batch", production_added = 15, is_side_effect = True) libido_suppressant = SerumTrait(name = "Libido Suppressant", desc = "An unintended interaction results in a major decrease in the recipients sex drive for the duration of this serum.", positive_slug = "None", negative_slug = "-20 Sluttiness, -$5 Value", value_added = -5, on_apply = libido_suppressant_on_apply, on_remove = libido_suppressant_on_remove, is_side_effect = True) uncontrollable_lust = SerumTrait(name = "Uncontrollable Lust", desc = "An unintended interaction results in a major increase in the recipients sex drive for the duration of this serum.", positive_slug = "None", negative_slug = "+20 Sluttiness, -$25 Value", value_added = -25, on_apply = uncontrollable_lust_on_apply, on_remove = uncontrollable_lust_on_remove, is_side_effect = True) anxiety_provoking = SerumTrait(name = "Anxiety Provoking", desc = "An unintended interaction creates a subtle but pervasive sense of anxiety in the recipient. This has a direct effect on their happiness.", positive_slug = "None", negative_slug = "-3 Happiness/Turn, -$5 Value", value_added = -5, on_turn = anxiety_provoking_on_turn, is_side_effect = True) performance_inhibitor = SerumTrait(name = "Performance Inhibitor", desc = "For reasons not understood by your R&D team this serum causes a general decrease in the recipients to do work for the duration of the serum.", positive_slug = "None", negative_slug = "-1 Intelligence, Focus, and Charisma, -$5 Value", value_added = -5, on_apply = performance_inhibitor_on_apply, on_remove = performance_inhibitor_on_remove, is_side_effect = True) mood_swings = SerumTrait(name = "Mood Swings", desc = "The recipient suffers large, sudden, and unpleasant mood swings.", positive_slug = "None", negative_slug = "Random +10 or -10 Happiness/Turn, -$10 Value", value_added = -10, on_day = mood_swings_on_turn, is_side_effect = True) sedative = SerumTrait(name = "Accidental Sedative", desc = "This serum has the unintended side effect of minorly sedating the recipient. Their maximum energy is reduced for the duration.", positive_slug = "None", negative_slug = "-20 Maximum Energy, -$5 Value", value_added = -5, on_apply = sedative_on_apply, on_remove = sedative_on_remove, is_side_effect = True) slow_release_sedative = SerumTrait(name = "Slow Acting Sedative", desc = "This serum produces slow acting sedative effects, reducing how quickly the recipent bounces back from tiring tasks. Reduces energy gain for the duration.", positive_slug = "None", negative_slug = "-10 Energy per Turn, -$5 Value", value_added = -5, on_turn = slow_release_sedative_on_turn, is_side_effect = True) list_of_side_effects.append(depressant_side_effect) list_of_side_effects.append(bad_reputation) list_of_side_effects.append(unpleasant_taste_side_effect) list_of_side_effects.append(unstable_reaction) list_of_side_effects.append(manual_synthesis_required) list_of_side_effects.append(libido_suppressant) list_of_side_effects.append(uncontrollable_lust) list_of_side_effects.append(anxiety_provoking) list_of_side_effects.append(performance_inhibitor) list_of_side_effects.append(mood_swings) list_of_side_effects.append(sedative) list_of_side_effects.append(slow_release_sedative) return

Aaror

Same question

What I would kind of like to see is taking kissing out of "sex" and put it into the seduction options-probably grayed out at first. Hug, kiss, massage, and maybe other options that would "test the waters," giving her the option to enjoy your company without agreeing to go all the way. Of course, the longer she lets you kiss and touch her, the higher her arousal goes...

Aaror

I like where this is going, should be a nice improvement. Anything that reduces the player's motivation to save-scum is an improvement in an H-game, IMHO.

Dubsington

Is it currently available to "ask to be girlfriend" with any of your family members? Or is it not implemented yet or ever going to be? As well as the getting pregnant part? Just some questions but if it's too early in LR2 development then that is also understandable. Thank you for an amazing game.

Exodon


More Creators