Every time I play this game, I get more and more horrified by the code.
So listen to my situation. I am peeking on my aunt inside the bathroom of step mom's house. I want the scene where step mom caught me and I cum on aunt's face. But it's just not triggering. So, what does any normal person do? You unren the garbage game and diagnose the issue.
And me oh my what I found. Jesus, please. Help keep my sanity.
You have a function,
BathroomPeepingOnMAuntLabel
. You'd think that code handles events inside a specific room, but no. It handles Aunt batrhoom events. But different bathrooms, different events, with different ppl. Reading the code is ... a nightmare.
BUT THAT'S NOT ALL!
What does the dev do? He executes a function
is MC allowed in bathroom?
, if yes x = 1. Else x = rand(1,3). Then he does a series of
The thing is, the code fails to do what I'd expect it to do ... a tremendous amount of times. So I dig deeper.
There's a scene selector. The dev does some logic, produces a number based on the logic, or if it fails, a "random integer". Then based on that number, a scene plays out.
To avoid all the above insanity, I just said "fuck that nonsense, fuck whatever the dev intended. Let's just do
randomInt(1,3)
and I'll get scene 1, 2 or fail (3). Note: This will fail if I restart the game cuz I can get inside of the bathroom with aunt, ranodmly, without seducing her. Because I removed the code that says
if seduced, then value = 1
Not a great solution. Just me testing the waters.
What did I find out? It still never worked. I was absolutely perplexed. I failed like I always failed. Strange. How could that be? I thought. Unless, if that function doesn't even do what it says it does. And ... yeah. It doesn't. It doesn't produce a random int. Let me repeat myself. The method
randomInt(1,3)
does not produce a random int between 1 and 3. It produces the same number over and over again.
What it does is that at the start, it populates a huge list of numbers. There's some seed action that fixes you at some position in that list. And once seeded, all random calls will produce the same number. IMHO, insane.
BUT! To give the dev SOME credit. It could be either :
1) an anti cheat mechanism to prevent save scumming. Or
2) A consistency mechanism so that scroll back doesn't produce different outcomes mid event.
The above makes sense as a game design. But considering this entire game is "be at location X at Y time. And pray to RNJezus that what you hoped happens, does indeed happen". And if not, just wait a week, ask your aunt again to go to your step mom, do everything again, and try again. If you fail this time too ... well, there's always next week!
Fuck. That. Noise.
This is on my top 5 favorite games on this site. But I hate its design, sooooo, god, damn, much.
I decided to just make random produce randoms so I can easily save scum.
----------------------
What I hate most about this code is that reading it is an absolute nightmare. Combined with how the original random works (aka, lies to you) ... it's ungodly.
temp_allow_inside_bathroom = has_aunt_started_allowing() and destination = "MotelBathroom"
Where
has_aunt_started_allowing()
is only true ONCE when she starts to allow and you go inside false forever after. But good luck finding that out. You could say the name implies it, but IMHO, you'd be wrong. It's moon logic.
Then
tmp.val = 1 if tmp.alw_insb else GData.RandomInt(1, 3)
. Where random isn't random and it can generate a 1 anyhow. Even if the previous if fails.
So 1 if X is true, otherwise 1 (possible outcome).
And because the random isn't random, you're stuck, and have to repeat the week, no save scumming for you!
----------------------
ANOTHER THING! AND THIS IS THE BIG ONE!
Most of the scenarios play like this
Python:
tmp = 1 if not_unlocked_x or randomInt(1,4)
# if you have not unlocked a scene, you get sent to branch 1. But if you did unlock it, then it's always random
if tmp = 1:
# here you get a spicy scene as an "unlock", if you've met the requirements
if not_unlocked_x and should_unlock_x:
not_unlocked_x = false
should_unlock_x = false
# but once that is done, you will never enter in the above "if". Always enter the bellow else
else:
# Failed event, boring
elif tmp = 2:
# spicy event
if tmp = 3:
if you did above 2
#super spicy event
if tmp = 4:
if you did above 3
# orgy
So, in pure THEORY, it goes like this: If you should start having sex with your family member, it jumps to the correct path. Does the spicy event. But it locks you out of that quick access route forever. So branch 1 is either "spicy unlock" or, once that has happened once, it is forever a "fail" branch.
Next time it's RNG. And if you roll a 4, before doing 2 and 3, failed event. if you roll a 3 before doing a 2, failed event. If you roll a 1, unless it's the unlock moment, failed event.
Only once you unlock EVERYTHING, you have a THEORETICAL 3 in 4 chances of a great scene.
To be fair to the dev, he might even have a fall through mechanic where if you've done the orgy, and roll a 2, you'll still get an orgy. But rolling a 1 is a fail non the less.
AND BECAUSE THE RNG DOES NOT PRODUCE RANDOM NUMBERS, you get a disproportionated amount of 1s. And I mean a
HUGELY disproportionate amount of 1s.
I cannot even start to explain how frustrating discovering this was.