Cheat Mod Ren'Py The Null Hypothesis Cheat Injector [v2.1] [Sleepingkirby]

vemnaroladopai

New Member
Jul 10, 2023
14
42
anal_training is actually a function, not a static value (...)
Ah, I see. I guess this is where my confusion came from. I didn't personally look at the code (as I wouldn't understand it, frankly), and the limited info provided in the thread made it seem like it was just counting days up and running that check at a set time. But the number being a slightly more complex calculation not only makes a lot more sense but is the sort of thing that makes this game stand out so much.

Don't get me wrong, I think it is awesome that the girl who's actually engaging in anal intercourse is the one that gets progress faster. My issue was mostly that this info was poorly conveyed to the player, much like the friendship fostering felt before there were enough opportunities for it.

I found this a little weird because actual trust and attraction are a clearly displayed exact number, so having to just insist on the system til they agree feels a bit inelegant compared to other systems, like the dynamic quirks. But, as always, it's all still in development.
I also want to avoid a "press here to get sex" button as that removes the game from the game
I agree with the sentiment. Like I said, I imagined some of the frustration I had came from not understanding what actually triggered the system. I don't think bypassing it would be a positive addition to the game. Your explanation was more than satisfactory for removing some of lack of clarity. The devs have already implemented feedback from the girls in the form of dialogue when certain systems are pushed, so I thought it was a bit weird that the responses are either completely positive or completely negative. As it stands, it's a bit hard to know whether or not there's progress happening until you see the direct result, know what I mean?
Which, is it worth it at that point?
Yeah, I'm not sure it is either. I certainly think that the information on the status of training could be better presented/relayed, but that's not something that a mod would provide. And having seen how you've elegantly integrated the other alterations into the UI, I can understand the issue here. I certainly am not for removing the game from the game, but erroneously imagined my gripes with the training system, in my ignorance of its inner workings, were something that could remedied with the mod.

Thank you for the reply!

Edit: Just saw your edit lol. Let me re-read.
Edit 2: I see... So insisting on progressing the system has no actual impact on advancing it (as it should imo), which lines up with the deepthroat progress. At that point, does plug usage even matter, compared to repeated anal interaction it in the mini game? I guess in a way, if one utilizes the mini game descriptions of their responses to anal interaction, then the training becomes a lot clearer... I guess I incorrectly assumed that the plugs were the meat of the "training", when it appears to me that they are closer to being only another way to interact with the overall progress.
 
Last edited:

sleepingkirby

Active Member
Aug 8, 2017
902
1,406
My issue was mostly that this info was poorly conveyed to the player, much like the friendship fostering felt before there were enough opportunities for it.
Agreed. On the other hand, a) there's some game play that is only a game if you don't know the exact value (not saying that this applies for this particular game. I currently am playing FFXI and in this game, what you don't know is very often part of the game play.) b) There's just too many stats and numbers to show to the end player. Like, in reading code, I found that the game keeps track of ass to mouth. Imagine if the game showed you EVERYTHING it kept track of. How many times you had sex, did anal, held hands, spanked them, etc. And if you're like "Well, just show the important ones." Which ones are the important ones? Is ass to mouth important? Is training their ass important? Sometimes, what is and isn't is very subjective. So I definitely understand your point of view and I definitely understand why a game would or wouldn't. But yeah, who knows. If you suggest it nicely to ShinyBoots1993 , maybe they'll take it into consideration.

Like, I could write a menu for the quick menu to show these stats, but, again, which stats do I show? Some values, like the ranking scores on the leader boards, aren't even real values. They're like anal_training(). And even if I show it, what meaning will it have to the player? Like if I showed:

anal_training: 3

What does that mean? Is 3 good or bad? Is it high or low? Does mean only trained 3 times?

I'm just a programmer. I don't design games. But even in my limited capacity, I can see the nuance and complexity in game design. Sometimes, the smallest decision will make the largest impact.

I agree with the sentiment. Like I said, I imagined some of the frustration I had came from not understanding what actually triggered the system. ... As it stands, it's a bit hard to know whether or not there's progress happening until you see the direct result, know what I mean?
Absolutely. I, too, didn't know that the plugs didn't do (virtually) anything until I read the code. I, like you, assumed it helped.

At that point, does plug usage even matter, compared to repeated anal interaction it in the mini game? ...I guess I incorrectly assumed that the plugs were the meat of the "training"...it appears to me that they are closer to being only another way to interact with the overall progress.
As far as I know, they matter very little, if at all. The math pretty much says "If you used the anal plugs 5 or more times, you could have used their ass 10 less times for this one anal plug size." I didn't see anything else (granted, I didn't read all the code) that shows anything but, like you say, that anal plugs are another way to interact with progress. Again, like you, I thought it was part of the anal training. I do see anal_training being called in the function anal_initiations(). But, again, since using said plug has minimal impact, it really doesn't do much during anal. Maybe it bumps the set of dialog up by a level, maybe not.

So yeah, if you want to train their ass, pretty much just keep fucking them in the ass (or have them fuck themselves with a dildo). The plug will help ONLY for that size and ONLY if you use it 5 times and ONLY once.


I'd like to reiterate that I'm in no way against adding a feature that would make this easier. But it all depends on where and how so it doesn't remove the ability for people to train their asses if that is what they wish. Hell, I even contemplated, while I was out picking up dinner with my wife tonight, to just make this line:
sum += self.History.check(A)/10
into this:
sum += self.History.check(A)/5
Which would halve the grind. But even that might take away someone's enjoyment.

Again, if anyone would like this and know a good spot to place that button, I'm all ears.



ETA: Hmm... What if I changed this line:
if size < int(math.floor(sum + min(1, self.History.check(f"used_buttplug_size_{size}")/5))) - 1:
to this:
if size < int(math.floor(min(size + 1, sum + self.History.check(f"used_buttplug_size_{size}")/5))) :
(as well as make the other appropriate changes)
That would pretty much say, "If you used the xs buttplug 10 times, you can move up to the small butt plug.

Something to think about...
 
Last edited:

ShinyBoots1993

Well-Known Member
Apr 7, 2020
1,414
4,293
If you suggest it nicely to @ShinyBoots1993 , maybe they'll take it into consideration.
I have been summoned!

...

My reading every post is exclusive to TNH thread. So all suggestions for the main game and not Kirby's beloved mod should go there.

I do pass on suggestions even if they're not done politely but the devs are likely to just ignore the post if it's framed in an antagonistic way.
 
  • Heart
Reactions: sleepingkirby

sleepingkirby

Active Member
Aug 8, 2017
902
1,406
I have been summoned!

...

My reading every post is exclusive to TNH thread. So all suggestions for the main game and not Kirby's beloved mod should go there.

I do pass on suggestions even if they're not done politely but the devs are likely to just ignore the post if it's framed in an antagonistic way.
While I have you here, actually, let me ask you a question here as to not spoil the mechanic of the game for people on the main thread. And feel free to go "Huh. Don't know. Let me ask RonChon about that." What's the goal/intention behind the buttplugs having little to no affect on anal training? It would help a lot in me deciding to change that calculation if I knew what the intention behind it. Please and thank you. Detailed explanation below. Sorry if it gives anyone flashback to algebra class.

This calculation/check for whether or not it passes a specific size check (1 for small, 2 for medium, 3 for large):
if size < int(math.floor(sum + min(1, self.History.check(f"used_buttplug_size_{size}")/5))) - 1:

Let's assume the girl has never done anything anal except having had the extra small butt plug in, just to make the math easier (making "sum" equal to 0). And let's simplifying all the functions like rounding down (math.floor()) and making the rest human readable. Also, let's assume we're checking if the girl is trained enough for the small buttplug (size=1), the check looks like this:
if 1 < whichever_is_smaller(1, how_many_shes_used_the_xs_buttplug / 5 ) - 1 + 0

Since a small buttplug has the size of 1 and this:
whichever_is_smaller(1, how_many_shes_used_the_xs_buttplug / 5 ) - 1

can never be anything larger than zero because of the - 1, it seems the butt plug doesn't really do anything positive and, if anything, can only be a detriment to the value over all. I almost wonder why it bothers checking how many times someone's used the buttplug given that value is always capped at zero.
 
Last edited:

namelessone22

Member
Oct 4, 2018
354
231
On a separate issue, I've had an issue for a while (since v0.6a at least) with texting on the phone.
I can open it up, pick one of the characters, even get the options (eg 'good morning')
but as soon as I click it, I get this:

You don't have permission to view the spoiler content. Log in or register now.

Any ideas for fixing this?
 

sleepingkirby

Active Member
Aug 8, 2017
902
1,406
Used the cheat injector (v2.1) with latest update (v0.7b)
Getting the strangest error

You don't have permission to view the spoiler content. Log in or register now.

Does anyone know what I stuffed up?
Are you mixing and matching game files (don't do that) or using other mods? That file (game/characters/Jean/clothing/registry.rpy) doesn't even exist in 0.7b:
Code:
~/Games/TheNullHypothesis-0.7b-pc/game/characters/Jean/clothing$ ls -la
total 28
drwxr-xr-x 3 sleepingkirby sleepingkirby  4096 Jan  7 17:30 .
drwxr-xr-x 9 sleepingkirby sleepingkirby  4096 Jan  7 17:30 ..
drwxr-xr-x 2 sleepingkirby sleepingkirby  4096 Jan  7 17:30 items
-rw-r--r-- 1 sleepingkirby sleepingkirby 10803 Jan  7 17:30 outfits.rpy
-rw-r--r-- 1 sleepingkirby sleepingkirby  3998 Jan  7 17:30 outfits.rpyc
 
  • Like
Reactions: namelessone22

sleepingkirby

Active Member
Aug 8, 2017
902
1,406
On a separate issue, I've had an issue for a while (since v0.6a at least) with texting on the phone.
I can open it up, pick one of the characters, even get the options (eg 'good morning')
but as soon as I click it, I get this:

You don't have permission to view the spoiler content. Log in or register now.

Any ideas for fixing this?
hotfix.rpy also doesn't exist as a file in the game. I think you're mixing different game versions some how. Blow the directory away and extract from scratch.
 
  • Like
Reactions: namelessone22

frostedd

New Member
Apr 1, 2019
5
3
Gettings this in sex scenes, started yesterday, any help? cant see girls lightning icon, i think its stamina, only the guy(myself)

Code:
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/scripts/locations/lockers/lockers.rpy", line 27, in script
    menu(menu_location = "bg_lockers"):
  File "game/scripts/interfaces/sex.rpy", line 78, in execute
    screen sex_screen(Character, summary = True):
  File "game/scripts/interfaces/sex.rpy", line 78, in execute
    screen sex_screen(Character, summary = True):
  File "game/scripts/interfaces/sex.rpy", line 563, in execute
    if persistent.tooltips_enabled:
  File "game/scripts/interfaces/sex.rpy", line 564, in execute
    use tooltips()
  File "game/scripts/interfaces/tooltips.rpy", line 1, in execute
    screen tooltips():
  File "game/scripts/interfaces/tooltips.rpy", line 1, in execute
    screen tooltips():
  File "game/scripts/interfaces/tooltips.rpy", line 6, in execute
    if tooltip:
  File "game/scripts/interfaces/tooltips.rpy", line 7, in execute
    nearrect:
  File "game/scripts/interfaces/tooltips.rpy", line 12, in execute
    frame xmaximum 0.2:
  File "game/scripts/interfaces/tooltips.rpy", line 15, in execute
    frame:
  File "game/scripts/interfaces/tooltips.rpy", line 18, in execute
    text "[tooltip!i]":
AttributeError: 'function' object has no attribute 'name'

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "game/scripts/locations/lockers/lockers.rpy", line 27, in script
    menu(menu_location = "bg_lockers"):
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\ast.py", line 1645, in execute
    choice = renpy.exports.menu(choices, self.set, args, kwargs, item_arguments)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\exports\menuexports.py", line 134, in menu
    rv = renpy.store.menu(new_items)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\exports\menuexports.py", line 424, in display_menu
    rv = renpy.ui.interact(mouse='menu', type=type, roll_forward=roll_forward)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\ui.py", line 301, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\core.py", line 2201, in interact
    repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\core.py", line 2731, in interact_core
    root_widget.visit_all(lambda d : d.per_interact())
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\displayable.py", line 434, in visit_all
    d.visit_all(callback, seen)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\displayable.py", line 434, in visit_all
    d.visit_all(callback, seen)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\displayable.py", line 434, in visit_all
    d.visit_all(callback, seen)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\screen.py", line 480, in visit_all
    callback(self)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\core.py", line 2731, in <lambda>
    root_widget.visit_all(lambda d : d.per_interact())
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\screen.py", line 491, in per_interact
    self.update()
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\screen.py", line 697, in update
    self.screen.function(**self.scope)
  File "game/scripts/interfaces/sex.rpy", line 78, in execute
    screen sex_screen(Character, summary = True):
  File "game/scripts/interfaces/sex.rpy", line 78, in execute
    screen sex_screen(Character, summary = True):
  File "game/scripts/interfaces/sex.rpy", line 563, in execute
    if persistent.tooltips_enabled:
  File "game/scripts/interfaces/sex.rpy", line 564, in execute
    use tooltips()
  File "game/scripts/interfaces/tooltips.rpy", line 1, in execute
    screen tooltips():
  File "game/scripts/interfaces/tooltips.rpy", line 1, in execute
    screen tooltips():
  File "game/scripts/interfaces/tooltips.rpy", line 6, in execute
    if tooltip:
  File "game/scripts/interfaces/tooltips.rpy", line 7, in execute
    nearrect:
  File "game/scripts/interfaces/tooltips.rpy", line 12, in execute
    frame xmaximum 0.2:
  File "game/scripts/interfaces/tooltips.rpy", line 15, in execute
    frame:
  File "game/scripts/interfaces/tooltips.rpy", line 18, in execute
    text "[tooltip!i]":
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\text\text.py", line 2059, in __init__
    self.set_text(text, scope, substitute) # type: ignore
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\text\text.py", line 2192, in set_text
    i, did_sub = renpy.substitutions.substitute(i, scope, substitute) # type: ignore
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\substitutions.py", line 355, in substitute
    s = interpolate(s, variables) # type: ignore
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\substitutions.py", line 94, in interpolate
    value = convert(value, conv, scope)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\substitutions.py", line 286, in convert
    value = interpolate(value, scope)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\substitutions.py", line 88, in interpolate
    raise e
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\substitutions.py", line 80, in interpolate
    value = renpy.python.py_eval(code, {}, scope)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\python.py", line 1220, in py_eval
    return py_eval_bytecode(code, globals, locals)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\python.py", line 1213, in py_eval_bytecode
    return eval(bytecode, globals, locals)
  File "<none>", line 1, in <module>
AttributeError: 'function' object has no attribute 'name'

Windows-10-10.0.26100-SP0 AMD64
Ren'Py 8.4.0.24111104+unofficial
The Null Hypothesis 0.7b
Fri Jan 10 18:36:29 2025
 

sleepingkirby

Active Member
Aug 8, 2017
902
1,406
Gettings this in sex scenes, started yesterday, any help? cant see girls lightning icon, i think its stamina, only the guy(myself)

Code:
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/scripts/locations/lockers/lockers.rpy", line 27, in script
    menu(menu_location = "bg_lockers"):
  File "game/scripts/interfaces/sex.rpy", line 78, in execute
    screen sex_screen(Character, summary = True):
  File "game/scripts/interfaces/sex.rpy", line 78, in execute
    screen sex_screen(Character, summary = True):
  File "game/scripts/interfaces/sex.rpy", line 563, in execute
    if persistent.tooltips_enabled:
  File "game/scripts/interfaces/sex.rpy", line 564, in execute
    use tooltips()
  File "game/scripts/interfaces/tooltips.rpy", line 1, in execute
    screen tooltips():
  File "game/scripts/interfaces/tooltips.rpy", line 1, in execute
    screen tooltips():
  File "game/scripts/interfaces/tooltips.rpy", line 6, in execute
    if tooltip:
  File "game/scripts/interfaces/tooltips.rpy", line 7, in execute
    nearrect:
  File "game/scripts/interfaces/tooltips.rpy", line 12, in execute
    frame xmaximum 0.2:
  File "game/scripts/interfaces/tooltips.rpy", line 15, in execute
    frame:
  File "game/scripts/interfaces/tooltips.rpy", line 18, in execute
    text "[tooltip!i]":
AttributeError: 'function' object has no attribute 'name'

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "game/scripts/locations/lockers/lockers.rpy", line 27, in script
    menu(menu_location = "bg_lockers"):
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\ast.py", line 1645, in execute
    choice = renpy.exports.menu(choices, self.set, args, kwargs, item_arguments)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\exports\menuexports.py", line 134, in menu
    rv = renpy.store.menu(new_items)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\exports\menuexports.py", line 424, in display_menu
    rv = renpy.ui.interact(mouse='menu', type=type, roll_forward=roll_forward)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\ui.py", line 301, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\core.py", line 2201, in interact
    repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\core.py", line 2731, in interact_core
    root_widget.visit_all(lambda d : d.per_interact())
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\displayable.py", line 434, in visit_all
    d.visit_all(callback, seen)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\displayable.py", line 434, in visit_all
    d.visit_all(callback, seen)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\displayable.py", line 434, in visit_all
    d.visit_all(callback, seen)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\screen.py", line 480, in visit_all
    callback(self)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\core.py", line 2731, in <lambda>
    root_widget.visit_all(lambda d : d.per_interact())
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\screen.py", line 491, in per_interact
    self.update()
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\display\screen.py", line 697, in update
    self.screen.function(**self.scope)
  File "game/scripts/interfaces/sex.rpy", line 78, in execute
    screen sex_screen(Character, summary = True):
  File "game/scripts/interfaces/sex.rpy", line 78, in execute
    screen sex_screen(Character, summary = True):
  File "game/scripts/interfaces/sex.rpy", line 563, in execute
    if persistent.tooltips_enabled:
  File "game/scripts/interfaces/sex.rpy", line 564, in execute
    use tooltips()
  File "game/scripts/interfaces/tooltips.rpy", line 1, in execute
    screen tooltips():
  File "game/scripts/interfaces/tooltips.rpy", line 1, in execute
    screen tooltips():
  File "game/scripts/interfaces/tooltips.rpy", line 6, in execute
    if tooltip:
  File "game/scripts/interfaces/tooltips.rpy", line 7, in execute
    nearrect:
  File "game/scripts/interfaces/tooltips.rpy", line 12, in execute
    frame xmaximum 0.2:
  File "game/scripts/interfaces/tooltips.rpy", line 15, in execute
    frame:
  File "game/scripts/interfaces/tooltips.rpy", line 18, in execute
    text "[tooltip!i]":
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\text\text.py", line 2059, in __init__
    self.set_text(text, scope, substitute) # type: ignore
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\text\text.py", line 2192, in set_text
    i, did_sub = renpy.substitutions.substitute(i, scope, substitute) # type: ignore
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\substitutions.py", line 355, in substitute
    s = interpolate(s, variables) # type: ignore
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\substitutions.py", line 94, in interpolate
    value = convert(value, conv, scope)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\substitutions.py", line 286, in convert
    value = interpolate(value, scope)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\substitutions.py", line 88, in interpolate
    raise e
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\substitutions.py", line 80, in interpolate
    value = renpy.python.py_eval(code, {}, scope)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\python.py", line 1220, in py_eval
    return py_eval_bytecode(code, globals, locals)
  File "C:\Users\Victor\Downloads\The_Null_Hypothesis_0.7b_pc\TheNullHypothesis-0.7b-pc\renpy\python.py", line 1213, in py_eval_bytecode
    return eval(bytecode, globals, locals)
  File "<none>", line 1, in <module>
AttributeError: 'function' object has no attribute 'name'

Windows-10-10.0.26100-SP0 AMD64
Ren'Py 8.4.0.24111104+unofficial
The Null Hypothesis 0.7b
Fri Jan 10 18:36:29 2025
Non-cheat issue. Read this for the full explanation and fix.
 

dirheim

Member
Aug 15, 2018
235
101
Any idea on how I can save outfits on this game? I just want to change some clothes, but I don't understand how it works

Outfit.png
 

Hueman11

New Member
Mar 15, 2022
4
1
couldn't get this to work on 7b. i'm not the greatest at IT but definitely let it run as admin in the game folder and didn't do anything. Installer said no error num2 no _rpatool.py found.
 

sleepingkirby

Active Member
Aug 8, 2017
902
1,406
couldn't get this to work on 7b. i'm not the greatest at IT but definitely let it run as admin in the game folder and didn't do anything. Installer said no error num2 no _rpatool.py found.
Can you copy and paste the entire error message? If no _rpatool.py is found, that generally means something is preventing it from being made by the script.

Also, tell me what version windows (8? 10? 100? Assuming you're running windows).