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

5.00 star(s) 1 Vote

sleepingkirby

Well-Known Member
Aug 8, 2017
1,291
1,921
262
I figured it out!

This mod and freddygonzo's TNHUXMod gamplay experience mod are not compatible. They both modify the interface, and
`TNHUXMod.rpy` was overriding this mod's interface patches.

Just for your reference, I'm running macOS 15.6.1 and I've attached a diff file as requested. But uninstalling TNHUXMod solved all my issues.

Thank you for your help!

Bash:
% grep version ./definitions/config.rpy

define config.version = "0.8c"
Bash:
% diff -u interfaces/Player_menu.rpy.orig interfaces/Player_menu.rpy

--- interfaces/Player_menu.rpy.orig    2025-10-26 00:07:54
+++ interfaces/Player_menu.rpy    2025-10-26 00:07:54
@@ -764,8 +764,8 @@
     text "Name" anchor (0.5, 0.5) pos (0.114, 0.306):
         size 26

-    text "Points" anchor (0.5, 0.5) pos (0.226, 0.306):
-        size 26
+    textbutton "{size=26}" + "Points" anchor (0.5, 0.5) pos (0.226, 0.306):
+        action Function(Player.History.update, "trained" if skills_leaderboard_type == "combat" else "studied")

     vbox anchor (0.0, 0.0) pos (0.0585, 0.328) xysize (int(729 * game_resolution), 0.557):
         spacing 2
@@ -901,10 +901,8 @@

         size 30

-    text "[Player.skill_points]" anchor (0.5, 0.5) pos (0.9, 0.239):
-        font "agency_fb.ttf"
-
-        size 30
+    textbutton "{size=30}{font=agency_fb.ttf}" + "[Player.skill_points]" anchor (0.5, 0.5) pos (0.9, 0.239):
+        action Function(Player.History.update, "bought_skill_point")

     add "images/interfaces/[interface_resolution]/Player_menu/skills.webp" anchor (0.5, 0.5) pos (0.9145, 0.239) zoom 0.3 * interface_adjustment

@@ -916,14 +914,14 @@
     if Player.XP >= Player.XP_goal:
         add "images/interfaces/[interface_resolution]/Player_menu/skills_xp_bar.webp" anchor (1.0, 0.5) pos (0.921, 0.285) zoom interface_adjustment
     elif Player.level == 1:
-        bar value Player.XP range Player.XP_goal anchor (1.0, 0.5) pos (0.921, 0.285) xysize (int(277 * game_resolution), int(24 * game_resolution)):
+        bar value FieldValue(Player, "XP", Player.XP_goal) range(Player.XP_goal) anchor (1.0, 0.5) pos (0.921, 0.285) xysize (int(277 * game_resolution), int(24 * game_resolution)):
             left_bar At(f"images/interfaces/{interface_resolution}/Player_menu/skills_xp_bar.webp", interface_zoom)
             right_bar At(f"images/interfaces/{interface_resolution}/Player_menu/skills_xp_empty_bar.webp", interface_zoom)

             thumb None
             thumb_offset 0
     else:
-        bar value (Player.XP - Player.XP_goal / 1.75) range (Player.XP_goal - Player.XP_goal / 1.75) anchor (1.0, 0.5) pos (0.921, 0.285) xysize (int(277 * game_resolution), int(24 * game_resolution)):
+        bar value FieldValue(Player, "XP", Player.XP_goal) range (Player.XP_goal) anchor (1.0, 0.5) pos (0.921, 0.285) xysize (int(277 * game_resolution), int(24 * game_resolution)):
             left_bar At(f"images/interfaces/{interface_resolution}/Player_menu/skills_xp_bar.webp", interface_zoom)
             right_bar At(f"images/interfaces/{interface_resolution}/Player_menu/skills_xp_empty_bar.webp", interface_zoom)

@@ -1347,8 +1345,8 @@
     text "CASH{alpha=0.0}_{/alpha}" anchor (0.0, 0.5) pos (0.673, 0.905):
         size 45

-    text "$[Player.cash]" anchor (1.0, 0.5) pos (0.9265, 0.905):
-        size 45
+    textbutton "{size=45}" + "$[Player.cash]" anchor (1.0, 0.5) pos (0.9265, 0.905):
+        action SetVariable("Player.cash", int(Player.cash) + int(50000))

screen cannot_gift_screen(Character, Item, message = "Cannot give [Character.name] the [Item.name]."):
     modal True
@@ -2188,10 +2186,8 @@

         add "images/interfaces/[interface_resolution]/Player_menu/relationships_[status].webp" anchor (0.5, 0.5) pos (0.5, 0.35) zoom high_resolution_interface_adjustment

-        text "[status.upper()]" anchor (0.5, 0.5) pos (0.5, 0.85):
-            size properties.get("text_size", 16)
-
-            color properties.get("text_color", "#000000")
+        textbutton "{size=[properties.get(\"text_size\", 16)]}{color=[properties.get(\"text_color\", \"#000000\")]}" + "[status.upper()]" anchor (0.5, 0.5) pos (0.5, 0.85):
+            action SetDict(properties.get("char")._status, status, 0)

screen relationships_tab(action, button_text, **properties):
     button anchor properties.get("anchor", (0.0, 0.0)) pos properties.get("pos", (0.0, 0.0)) xysize properties.get("xysize", (None, None)):
@@ -2316,22 +2312,14 @@

         add "images/interfaces/[interface_resolution]/Player_menu/relationships_love.webp" zoom interface_adjustment

-        text "[relationships_Entry.love]" anchor (0.5, 0.5) pos (0.435, 0.4655):
-            font "agency_fb.ttf"
-
-            size 30
+        textbutton "{size=30}{font=agency_fb.ttf}" + "[relationships_Entry.love]" anchor (0.5, 0.5) pos (0.435, 0.4655):
+            action SetField(relationships_Entry, "love", relationships_Entry.love + 100)

-            color "#000000"
-
         add "images/interfaces/[interface_resolution]/Player_menu/relationships_trust.webp" zoom interface_adjustment

-        text "[relationships_Entry.trust]" anchor (0.5, 0.5) pos (0.435, 0.5065):
-            font "agency_fb.ttf"
+        textbutton "{size=30}{font=agency_fb.ttf}" + "[relationships_Entry.trust]" anchor (0.5, 0.5) pos (0.435, 0.5065):
+            action SetField(relationships_Entry, "trust", relationships_Entry.trust + 100)

-            size 30
-
-            color "#000000"
-
         text "PUBLIC NAME" anchor (0.0, 0.5) pos (0.495, 0.242):
             font "agency_fb.ttf"

@@ -2342,11 +2330,9 @@

             size 28

-        text "RELATIONSHIP STATUS" anchor (0.0, 0.5) pos (0.495, 0.297):
-            font "agency_fb.ttf"
+        textbutton "{size=28}{font=agency_fb.ttf} RELATIONSHIP STATUS" anchor (0.0, 0.5) pos (0.495, 0.297):
+            action Function(removeCheating, relationships_Entry)

-            size 28
-
         if relationships_Entry not in Partners:
             text "Single" anchor (1.0, 0.5) pos (0.713, 0.297):
                 font "agency_fb.ttf"
@@ -2400,18 +2386,21 @@
             if relationships_Entry.is_in_normal_mood():
                 use relationships_status(
                     "happy",
+                    char = relationships_Entry,
                     text_color = "#00ff06",
                 )

             if relationships_Entry.get_status() == "mad":
                 use relationships_status(
                     "mad",
+                    char = relationships_Entry,
                     text_color = "#f00d48",
                 )

             if relationships_Entry.status["horny"] or relationships_Entry.status["nympho"]:
                 use relationships_status(
                     "horny",
+                    char = relationships_Entry,
                     text_color = "#dd64e8",
                 )

@@ -2419,6 +2408,7 @@
                 if relationships_Entry.status.get(status, False):
                     use relationships_status(
                         status,
+                        char = relationships_Entry,
                         text_color = color,
                     )

@@ -2470,7 +2460,10 @@
                     $ friendship = relationships_Entry.get_friendship(getattr(store, C))

                     fixed xysize (int(135 * game_resolution), int(195 * game_resolution)):
-                        add "images/interfaces/full/photos/[C].webp" align (0.5, 0.5) zoom 0.13
+                        imagebutton idle f"images/interfaces/full/photos/{C}.webp" align (0.5, 0.5):
+                            at transform:
+                                zoom 0.13
+                            action SetDict(relationships_Entry.friendship, f"{C}", relationships_Entry.friendship[C] + 50)

                         add "images/interfaces/[interface_resolution]/Player_menu/relationships_[friendship].webp" align (0.5, 0.5) zoom interface_adjustment
No problem. Yeah, I thought it was a given that mods, unless explicitly stated, don't and can't be expected to work together. I'll update the OP with that because you're definitely not the first one to have applied both and had problems. Pertaining to TNHUXMod directly, it was addressed here. FreddyGonzo offered to make it compatible, but the amount of work that would take on his side would have been insane and not worth it.
 
5.00 star(s) 1 Vote