4.60 star(s) 65 Votes

Diconica

Well-Known Member
Apr 25, 2020
1,134
1,181
Hrmm. I've been testing and working with the mods on a few of these points. This last patch by Vren was a big one and needed a lot of coverage. And yes some effort has been made to make things more efficient in places.

There has been no need to practically remake the mod from scratch, that's not happening. Although a LOT of files have been touched.

But the general tone of modders are working hard at catching up with Vren's changes while trying to make things better: Yes! I very much agree with that sentiment.

Again the BETA is pretty playable right now. Not quite as stable and complete in the changes to merit it being considered finished, but almost there.

If you really want to try out VREN's changes with all the bugfixes and improvements, it's ready for you to try and has been for several days now. New committed changes are slowing down but work is still proceeding.
My mod isn't near the size of theirs but I think they could have done similar to what I did.
It took me about an hour. All I did was use notepad++ search files system to locate where everything was moved.
Then modified the files I needed to as opposed to the old ones. Also use win merge to check the difference in files.
Take the file were the person class is. Copy the old version of the person class into a file to make it similar then run a comparison.
You can then see the differences from both your old modded version and the new version and thus be able to make all the correct changes.

Not sure it gets a lot easier than having a program show you exactly where changes need to be made.
Even if I automated it I would still need to verify stuff handn't changed so much the replacement script would target the correct code or simply find it.
 

coretex

Active Member
Jun 15, 2017
608
523
Thank you Diconica for your mod download. I will be looking at this to integrate into my own files when I go to update to 39.x.

I keep my own local copy of the gits for both the bugfix and main addon mod.. and I edit that and merge those in to the main game files as i need. Plus.. i can sync in new changes from the actual modded git sites, and handle conflicts right then.

I wonder what kind of issues il have just going from 38 to 39.
 
  • Like
Reactions: Diconica

Diconica

Well-Known Member
Apr 25, 2020
1,134
1,181
Thank you Diconica for your mod download. I will be looking at this to integrate into my own files when I go to update to 39.x.

I keep my own local copy of the gits for both the bugfix and main addon mod.. and I edit that and merge those in to the main game files as i need. Plus.. i can sync in new changes from the actual modded git sites, and handle conflicts right then.

I wonder what kind of issues il have just going from 38 to 39.
A lot of the code that was contained in script.rpy has been moved out into its own separate files.
class for example can be now found in the major_game_classes directory under other directories.
example the person class is now found in \game\major_game_classes\character_related\Person.rpy
A number of function have been moved into helper_functions directory in various rpy files

Pretty easy to find what you are looking for if you have notepad++ just use the search in files feature. Set the directory to the newer version then search the name of whatever it is you are looking for. Set the filter to *.rpy
As you can see below it lists all the files and lines of what you are looking for.
It took less than an hour to upgrade my mod to the new game version. I suspect it won't be that big of issue.
You don't have permission to view the spoiler content. Log in or register now.
 
  • Like
Reactions: Tavern

coretex

Active Member
Jun 15, 2017
608
523
Ya know.. iv never actually bothered to look that closely at the other tabs in N++ beyond.. find and replace.... here i went and modified the search index in windows to peek inside rpy files to just do a raw text search in the directory itself.. but thats even better. Il keep that in mind.

If you want to do your own local git to not have to hand edit every new set of files... I use TortoiseGit.. and then cloned the git sites locally and just pull down changes as i need. rarely do i need to do a full purge and redo.. but it makes it easier for sure.
 
  • Like
Reactions: Diconica

zenupstart

Member
Jul 21, 2020
104
113
My mod isn't near the size of theirs but I think they could have done similar to what I did.
It took me about an hour. All I did was use notepad++ search files system to locate where everything was moved.
Then modified the files I needed to as opposed to the old ones. Also use win merge to check the difference in files.
Take the file were the person class is. Copy the old version of the person class into a file to make it similar then run a comparison.
You can then see the differences from both your old modded version and the new version and thus be able to make all the correct changes.

Not sure it gets a lot easier than having a program show you exactly where changes need to be made.
Even if I automated it I would still need to verify stuff handn't changed so much the replacement script would target the correct code or simply find it.
Ah. Yeah. Gratz on discovering Diff and Merge tools.

Pretty sure these tools and this process is no mystery to them.

If you want to join the Discord or something maybe they can clue you more into what they are doing.

Or check out the changelog links that that will show you the two git repositories.
 

Diconica

Well-Known Member
Apr 25, 2020
1,134
1,181
Ah. Yeah. Gratz on discovering Diff and Merge tools.

Pretty sure these tools and this process is no mystery to them.

If you want to join the Discord or something maybe they can clue you more into what they are doing.

Or check out the changelog links that that will show you the two git repositories.
Their mod is a bit more than I wanted. I wanted the game to still be the game and have some challenge.
I also haven't the time to fully maintain something like this. I simply update my stuff when I have time to play for a little.
If they have a larger project yep it belongs on something like github which also offers a good number of tools to make life easier.
If I am not wrong github will probably show there are different files added to a project and the differences in the files that are named the same thing but does it have a tool to look for where something was moved? I couldn't say myself I don't really use it. I run my own severs and systems so have no use for 3rd party sites like that myself.

Right now, I'm writing a new thread pool system, which will get used in two different game development systems I am working on.
At the same time I'm writing a new SVG graphics system to work with them along with a menu system that is similar to html in function. I managed to finish the text glyph system I built. Handles, utf8, unicode and ascii. I also built and tested a multi language system for those development systems.

Technically some of this is rework. Just figured out a better and faster way to make something work and make it easier to use at the same time.

I'm trying to get it done by the end of the month. That way I can release the first of the two systems.
After that I will still be busy as hell with planned improvements and additions.
 

zenupstart

Member
Jul 21, 2020
104
113
Their mod is a bit more than I wanted. I wanted the game to still be the game and have some challenge.
I also haven't the time to fully maintain something like this. I simply update my stuff when I have time to play for a little.
If they have a larger project yep it belongs on something like github which also offers a good number of tools to make life easier.
If I am not wrong github will probably show there are different files added to a project and the differences in the files that are named the same thing but does it have a tool to look for where something was moved? I couldn't say myself I don't really use it. I run my own severs and systems so have no use for 3rd party sites like that myself.

Right now, I'm writing a new thread pool system, which will get used in two different game development systems I am working on.
At the same time I'm writing a new SVG graphics system to work with them along with a menu system that is similar to html in function. I managed to finish the text glyph system I built. Handles, utf8, unicode and ascii. I also built and tested a multi language system for those development systems.

Technically some of this is rework. Just figured out a better and faster way to make something work and make it easier to use at the same time.

I'm trying to get it done by the end of the month. That way I can release the first of the two systems.
After that I will still be busy as hell with planned improvements and additions.
The merge has been done for almost a week. They are still adapting their content to new "Clarity" mechanic and going through code that calls changed VREN code. But like I keep saying, the BETA is playable. On that level they've been done for days.

They just have a higher standard for getting things bugfree than say, the main game.

The narrative that they are taking too long or they should do this simple thing and they haven't is just a little off base.
 
Apr 21, 2018
472
525
Any example?? Just curious :unsure:
AFAIK they only shows up in the hire screen randomly, and not all has unique personalities. You can find their wardrobes in game/wardobes named after them and personalities in game/personalities or roles, I forget (e.g. Dihna has a wardrobe called Dihna.xml and a python script for her personality by the same name. Or not, as I recall Dihna is one of those without a unique personality)
 
  • Like
Reactions: vitamin433

Diconica

Well-Known Member
Apr 25, 2020
1,134
1,181
Any example?? Just curious :unsure:
This is from the random_list.rpy
Python:
# Patron reward characters!
        list_of_unique_characters = []

        dinah_wardrobe = wardrobe_from_xml("Dinah_Wardrobe")
        person_dinah = create_random_person(name = "Dinah", last_name = "Midari", body_type = "standard_body", height=0.99, skin="black", tits="D", hair_colour="black", hair_style=short_hair, starting_wardrobe = dinah_wardrobe)
        list_of_unique_characters.append(person_dinah)

        sylvia_wardrobe = wardrobe_from_xml("Sylvia_Wardrobe")
        person_sylvia = create_random_person(name = "Sylvia", last_name = "Weissfeldt", body_type = "curvy_body", height=0.96, skin="white", tits="C", hair_colour="blond", hair_style = long_hair, starting_wardrobe = sylvia_wardrobe,
            personality = reserved_personality)
        list_of_unique_characters.append(person_sylvia)

        paige_wardrobe = wardrobe_from_xml("Paige_Wardrobe")
        # Well educated and raised in a very middle-class family.
        # Paige is a cool-headed young woman who has confidence without exuberance or extraversion.
        # her favourite activities are generally calm and solitary: reading, playing musical instruments, watching TV, etc.
        # She doesn't make friends quickly, but she is pleasant and easy to get along with, and the bonds she does cultivate are likely to last for life.
        # She has no passion for her work, but she is good at it and takes pride in that fact.
        person_paige = create_random_person(name = "Paige", last_name = "Sallow", body_type = "thin_body", height = 0.98, skin = "white", tits="A", hair_colour="brown", hair_style = messy_ponytail, starting_wardrobe = paige_wardrobe,
            personality = reserved_personality, stat_array = [1,4,3], skill_array = [5,1,2,3,2], sex_array = [2,1,4,2])
        list_of_unique_characters.append(person_paige)

        kendra_wardrobe = wardrobe_from_xml("Kendra_Wardrobe")
        # Kendra's family owns one of the largest pharmaceutical companies in the country. All of the Rivera children went to the finest prep schools.
        # Unlike her siblings, Kendra didn't inherit her parent's good looks or their general attitudes. She also disagreed with her families' viewpoint that being rich makes you better than everyone else.
        # This point of view put her at odds with everyone in her social class so she mostly hung out with the outcasts of her school.
        # By the time Kendra turned 16, she had grown into a stunningly beautiful woman and enjoyed the newfound attention she was receiving from boys. She was a free spirit, who just wanted to enjoy life.
        # When she graduated High School, she decided that college was not for her and pursued a career as glamor model. Kendra's parents were not pleased and cut her off financially but Kendra didn't care.
        # She was ready to be free and live her life.
        person_kendra = create_random_person(name = "Kendra", last_name = "Rivera", age = 18, body_type = "curvy_body", height = 0.94, skin = "tan", hair_colour = "chestnut", hair_style = shaved_side_hair, starting_wardrobe = kendra_wardrobe,
            personality = relaxed_personality, stat_array = [4,3,1], skill_array = [5,3,1,2,2], sex_array = [2,2,4,1], face_style = "Face_4")
        list_of_unique_characters.append(person_kendra)

        svetlanna_wardrobe = wardrobe_from_xml("Svetlanna_Wardrobe")
        # Svetlanna moved to the fictional city from a fictional Russian land at the age of 16. She was always fascinated with biochemistry and when her mother became ill, she dove even deeper into her studies.
        # After graduating from public education, she immediately moved to higher studies. She was hell-bent to learn all she could to help her mother.
        # Unfortunately, her mother died before Svetlanna could find a cure for her mysterious disease, which put her into a deep depression.
        # After some time, she met a woman that rekindled her love for biotechnology and put her on the path of a wild woman, never tied down with any one man or woman.
        person_svetlanna = create_random_person(name = "Svetlanna", last_name = "Ivanova", body_type= "thin_body", height = 1.00, skin = "white", tits="E", hair_colour = "blond", hair_style = long_hair, starting_wardrobe = svetlanna_wardrobe,
            personality = wild_personality, stat_array = [3,1,4], skill_array = [1,3,5,2,2], sex_array = [2,1,2,4])
        person_svetlanna.opinions["research work"] = [2, False] # Patron reward
        list_of_unique_characters.append(person_svetlanna)

        kelly_wardrobe = wardrobe_from_xml("Kelly_Wardrobe")
        #
        person_kelly = create_random_person(name = "Kelly", last_name = "Uhls", body_type = "curvy_body", height = 0.98, skin = "white", eyes = "dark blue", tits = "E", hair_colour = "chestnut", hair_style = ponytail, starting_wardrobe = kelly_wardrobe,
            personality = reserved_personality, stat_array = [2,2,4], skill_array = [2,1,2,1,5], sex_array = [3,4,2,1])
        list_of_unique_characters.append(person_kelly)

        #sativa_wardrobe = wardrobe_from_xml("Sativa_Wardrobe") #TODO: Give her a wardrobe if the patron responds
        # Sativa's parents are very strict and traditional. They were determined to protect her from all the bad things in life, such as boys and booze.
        #When she turned 18,  Sativa moved out on her own.  Now she is determined to experience everything that she was previously denied.
        person_sativa = create_random_person(name = "Sativa", last_name = "Menendez", body_type = "curvy_body", face_style = "Face_7", height = 0.90, skin = "tan", eyes = "green", tits = "FF", hair_colour = "black", hair_style = bobbed_hair,
            personality = wild_personality, stat_array = [3,1,4], skill_array = [2,2,1,1,5], sex_array = [4,3,2,1])
        list_of_unique_characters.append(person_sativa)

        #nuoyi_wardrobe = wardrobe_from_xml("Nuoyi_Wardrobe") #NOTE: Patron did not want a specific wardrobe, she'll draw her wardrobe randomly as normal.
        person_nuyoi = create_random_person(name = "Nuoyi", last_name = "Pan", body_type = "thin_body", height = 0.96, skin = "white", eyes = "dark blue", tits = "FF", hair_colour = "black", hair_style = long_hair,
            personality = wild_personality, stat_array = [4,3,1], skill_array = [5,2,2,1,1], sex_array = [1,3,4,2])
 
  • Wow
Reactions: vitamin433

Diconica

Well-Known Member
Apr 25, 2020
1,134
1,181
AFAIK they only shows up in the hire screen randomly, and not all has unique personalities. You can find their wardrobes in game/wardobes named after them and personalities in game/personalities or roles, I forget (e.g. Dihna has a wardrobe called Dihna.xml and a python script for her personality by the same name. Or not, as I recall Dihna is one of those without a unique personality)
Not as random as you think. These characters would be substituted in the hiring process till they are all used up.
So you were pretty much forced to hire these characters at the start of the game. I realized it because I seen them so many times trying to get a decent character. Which is why I started looking at how the random characters were generated.
That's what led me to create mod I made to biggest stupid issues I seen in that system.
 

Eldebrand

Member
Mar 5, 2019
107
110
Hello everyone,

I know Im new to this party. I just found this after playing through Lab Rats last week. I decided to go with this modded version and downloaded the full download from this post + plus the update. After starting a new game though I am getting errors after every action and while I can ignore my way through them I would really like to know what is wrong and how I can fix it. It seems to be an error to do with the mods. Something about a bunch of different things not being defined and the game trying to advance time. Also, some Sarah character keeps popping up in the errors. The mods folder is consistently implicated in the errors.

Also, I just tried to load my game and it says I am trying to load a save from an unmodded game, but I have only downloaded the fully modded version so I don't understand how I could have an unmodded game save.

Nevermind. Reinstalling everything over what I had already installed seems to have fixed it. Must've been a bad extract.
 
Last edited:
Apr 21, 2018
472
525
Not as random as you think. These characters would be substituted in the hiring process till they are all used up.
So you were pretty much forced to hire these characters at the start of the game. I realized it because I seen them so many times trying to get a decent character. Which is why I started looking at how the random characters were generated.
That's what led me to create mod I made to biggest stupid issues I seen in that system.
I've read the code man, there's only a chance (about 20% IRRC) a randomly generated person is substituted with a pre-gen character, which are otherwise a list of randomly generated characters anyway. So Patreons can simply deal with this by not hire them, like any other recruits.
 

Diconica

Well-Known Member
Apr 25, 2020
1,134
1,181
I've read the code man, there's only a chance (about 20% IRRC) a randomly generated person is substituted with a pre-gen character, which are otherwise a list of randomly generated characters anyway. So Patreons can simply deal with this by not hire them, like any other recruits.
Yes, the code is intended for a 20% chance. However, it depends on a number of issues. Pythons random number system is a bit weird to say the least. It can use hardware random number generation but not every cpu supports it. Also other factors such as how the random numbers are called and stored.
Take for example if you try to small talk with someone it relies on RNG to determine success. However if you back up to the same point it will give you the exact same value again. However save at that point and reload the game and try again you can get a different result. The same is true with the character generation.
Some of the issues are because of how pythons developers implemented it other issues arise because of how people use it.
Because of the combined issues you can actually get a lot higher than 20%.

Couple that with that most of those characters have Stats and Skills that make ZERO sense along with likes and dislikes it creates a bigger problem. The way this guys character are thrown together you would have people who can't add 1 plus 1 and they would be the worlds greatest nuclear physicist.
It was simply better eliminate their use entirely by lining out the few lines that led to them in make_person
I wasn't about make characters for them when I could generate just as good or better characters.
It would have been smarter for him to generate characters like I did and those names into the list making an option for them to come be more likely on hire generated characters or something

To that end I went and made a mod were the skill levels are influenced by stats and work related likes/dislikes are tied to skill/stat level.
 
Apr 21, 2018
472
525
Take for example if you try to small talk with someone it relies on RNG to determine success. However if you back up to the same point it will give you the exact same value again. However save at that point and reload the game and try again you can get a different result. The same is true with the character generation.
That's simply because Renpy's step back function only affects current game states which restores them to the previous point, which the step back manager stores up to a certain amount. This means the seed used for the Random Number Generater is not changed, only the state of the RNG is. Whereas saving and loading recreates the RNG with a new seed, which by default should be the current timestamp. This is true with any games that uses RNG without generating a new seed each step back.

As for the stats, I have my own script to mass change staff stats, and the unique behaviors are at least refreshing to me.
 

Diconica

Well-Known Member
Apr 25, 2020
1,134
1,181
That's simply because Renpy's step back function only affects current game states which restores them to the previous point, which the step back manager stores up to a certain amount. This means the seed used for the Random Number Generater is not changed, only the state of the RNG is. Whereas saving and loading recreates the RNG with a new seed, which by default should be the current timestamp. This is true with any games that uses RNG without generating a new seed each step back.

As for the stats, I have my own script to mass change staff stats, and the unique behaviors are at least refreshing to me.
I could write a thesis on the bad choice made on this topic pretty sure you don't want to read that though.

Python chose a fairly large time slice in its time seeding it uses. The problem with that it wasn't fine enough to ensure that it will come up with random numbers every time.
When python was first made the CPUs were a lot slower. More time would go by before a program would start so using something like Milliseconds wasn't a bad choice vs microseconds. If there is only a 30 to 70 microsecond average difference in each start time how much difference is there going to be in a function measuring in milliseconds. Not enough to make much of a difference.

What you discussed above is right for the most part.
That said it is in part do to the way it is implemented these issues exist.

The kicker to this is he could have implemented the back system without having to store all those back variables and so on and prevented a lot of these issues. I have a back system on a project I am working on. What I did was simply create a reversing function to undo the variable changes based on the path that it goes back on. All it requires is storing the a list of the direction I used to get where I currently am. In short I ended up storing the path rather than all the variables. I also used a different random system than what python does because I am using C++ and created my own so I could base the Seed and increments on other stuff. The primary reason for that was that way I wouldn't need to store whatever random value was generated I could simply recreate the same condition over again by moving up and down that path. If you are wondering it is very very hard to get the same seed start each time unless you manually enter it. combine time with mouse pos and mic input noise ... gives a lot more random value.

Anyway this is getting a good bit off topic so I'm going to leave it at this. Nice chat
 

MaxTheDark

Member
Apr 11, 2021
368
383
I absolutely love this mod, and I love how much does it add...

...but I absolutely DESPISE Sarah's storyline. I don't care about her, and yet I have to keep taking her on dates. I have a fucking harem of women, yet the game forces me to spend time with that one dumb bitch. One Saturday when I was working she came in the Afternoon time slot, and I turned her down. So she came again in the Evening slot and FORCED ME to a date! This is the one thing I hate about Visual Novels, when they force you into choices rather than letting you make it, all of a sudden. I really want to fire her now just so she fucks off already. I've literally skipped through the entire conversation in the Strip Club and the following one at home because I just wanted to get back into the game. I love the idea of adding storylines, that's what makes it alive, and with her and Jennifer seemingly bi, I am curious as to what could happen, but if the scene happens when I'm more interested in business than dating, I'm just gonna miss out on all that stuff.

Apologies if I sound whiny, I've got some brain problems.
 

jackeasy

Active Member
Aug 23, 2017
617
917
I absolutely love this mod, and I love how much does it add...

...but I absolutely DESPISE Sarah's storyline. I don't care about her, and yet I have to keep taking her on dates. I have a fucking harem of women, yet the game forces me to spend time with that one dumb bitch. One Saturday when I was working she came in the Afternoon time slot, and I turned her down. So she came again in the Evening slot and FORCED ME to a date! This is the one thing I hate about Visual Novels, when they force you into choices rather than letting you make it, all of a sudden. I really want to fire her now just so she fucks off already. I've literally skipped through the entire conversation in the Strip Club and the following one at home because I just wanted to get back into the game. I love the idea of adding storylines, that's what makes it alive, and with her and Jennifer seemingly bi, I am curious as to what could happen, but if the scene happens when I'm more interested in business than dating, I'm just gonna miss out on all that stuff.

Apologies if I sound whiny, I've got some brain problems.
I suppose the pro and con to restarting every update is that you can avoid hiring her next time. She technically stays in limbo as long as you don't go to her with the job offer. You'll miss out on the employee interviews / threesome opportunities, but since most scenes in this game default to the same flow you're not really missing much. Any attitudes from other employees that you dislike can be edited with cheats, as can workplace efficiency.
 

Helger

Newbie
Dec 2, 2017
38
19
Hello everyone,

I know Im new to this party. I just found this after playing through Lab Rats last week. I decided to go with this modded version and downloaded the full download from this post + plus the update. After starting a new game though I am getting errors after every action and while I can ignore my way through them I would really like to know what is wrong and how I can fix it. It seems to be an error to do with the mods. Something about a bunch of different things not being defined and the game trying to advance time. Also, some Sarah character keeps popping up in the errors. The mods folder is consistently implicated in the errors.

Also, I just tried to load my game and it says I am trying to load a save from an unmodded game, but I have only downloaded the fully modded version so I don't understand how I could have an unmodded game save.

Nevermind. Reinstalling everything over what I had already installed seems to have fixed it. Must've been a bad extract.
I guess you downloaded everything right away. This is not going to work. Read this:
https://f95zone.to/threads/lab-rats-2-v0-39-1-vren.7260/post-5559695
I hope it helps find your mistake.
 
4.60 star(s) 65 Votes