Cheat Mod Ren'Py Lust Harem 0.27 + Future Versions (CheatMod)[Sababukin]

EfontMan

Active Member
Aug 23, 2021
564
1,126
266
Just tried this out. It works well, but I was thinking that extending the Battle Cheats section to heal the whole party would be a nice addition. I had a poke through the game scripts and figured maybe something like:
Python:
for player in battle_players:
    SetVariable("player._hp", player._hp + 500), SetVariable("player._mp", player._mp + 500)
would be the go? But I could never really wrap my head around Python. Anyone got some advice on how to properly implement it as a textbutton action like the existing cheats? For example:
Python:
textbutton "Heal" action [SetVariable("h._hp", h._hp + 500)]
Edit: So it seems like if you try to have a textbutton call an external game function, like for example HealChar, it will just start endlessly executing that as soon as the game starts, without even opening the cheat mod menu, much less pressing the button? The same thing when adding a custom function in the cheat script. If you add a debug print into it the log will be spammed.

Edit 2: Ahah, action Function(callable, *args, **kwargs) is what I was missing. That resolves things. Here's what I added at the top of the script:
You don't have permission to view the spoiler content. Log in or register now.
and in the screen SabMod() section I changed the lefthand column's subtitle to Stat/Skill/Money Cheats and changed the righthand column to:
You don't have permission to view the spoiler content. Log in or register now.

Edit 3: And here's an updated screens.rpy, which should prevent errors during newer events.

Edit 4 (October 30): Here's a patch for game version 0.50.3C, including updated screens.rpy/rpyc and edited SabMod.rpy/rpyc with the above changes. Install the full SabMod from the first post, then extract this archive in the game's root folder, overwriting when prompted.
 
Last edited:

Pif paf

Engaged Member
Feb 5, 2018
3,387
2,487
451
Just tried this out. It works well, but I was thinking that extending the Battle Cheats section to heal the whole party would be a nice addition. I had a poke through the game scripts and figured maybe something like:
Python:
for player in battle_players:
    SetVariable("player._hp", player._hp + 500), SetVariable("player._mp", player._mp + 500)
would be the go? But I could never really wrap my head around Python. Anyone got some advice on how to properly implement it as a textbutton action like the existing cheats? For example:
Python:
textbutton "Heal" action [SetVariable("h._hp", h._hp + 500)]
Edit: So it seems like if you try to have a textbutton call an external game function, like for example HealChar, it will just start endlessly executing that as soon as the game starts, without even opening the cheat mod menu, much less pressing the button? The same thing when adding a custom function in the cheat script. If you add a debug print into it the log will be spammed.

Edit 2: Ahah, action Function(callable, *args, **kwargs) is what I was missing. That resolves things. Here's what I added at the top of the script:
You don't have permission to view the spoiler content. Log in or register now.
and in the screen SabMod() section I changed the lefthand column's subtitle to Stat/Skill/Money Cheats and changed the righthand column to:
You don't have permission to view the spoiler content. Log in or register now.

Edit 3: And here's an updated screens.rpy, which should prevent errors during newer events.
OK, looks nice, can u pls put all your changes in one file and will the new screens work with the new version?

edited: the new screens are not working with the latest version. it blocks getting past the title screen for me
 
Last edited:

EfontMan

Active Member
Aug 23, 2021
564
1,126
266
the new screens are not working with the latest version
Of course. It will almost certainly need to be updated with every new game version. The mod probably needs to switch to a less intrusive way to add its screen. I'll have a look at what some other mods do. In the meantime, I've updated my previous post with a new patch for the current game version.

Edit: Although having now played it, I see that the main story was concluded with this update. So I'm not sure how many future updates there will be. Guess we'll see.
 
Last edited:
  • Like
Reactions: Ragnon

Ragnon

Newbie
Jul 25, 2017
34
31
221
Of course. It will almost certainly need to be updated with every new game version. The mod probably needs to switch to a less intrusive way to add its screen. I'll have a look at what some other mods do. In the meantime, I've updated my previous post with a new patch for the current game version.
Thanks Efontman
 

Rukaneo

New Member
Mar 4, 2022
7
6
126
Got this error using the mod


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

While running game code:
  File "game/SabMod/SabMod.rpy", line 41, in execute
    screen SabMod():
  File "game/SabMod/SabMod.rpy", line 41, in execute
    screen SabMod():
  File "game/SabMod/SabMod.rpy", line 44, in execute
    hbox:
  File "game/SabMod/SabMod.rpy", line 48, in execute
    imagebutton auto "SabMod/pr_%s.png" action OpenURL("https://patreon.com/SabMod")
Exception: Imagebutton does not have a idle image. (auto='SabMod/pr_%s.png').

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

Traceback (most recent call last):
  File "renpy/common/00gamemenu.rpy", line 174, in script
    $ ui.interact()
  File "renpy/ast.py", line 1187, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/python.py", line 1260, in py_exec_bytecode
    exec(bytecode, globals, locals)
    ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/common/00gamemenu.rpy", line 174, in <module>
    $ ui.interact()
      ~~~~~~~~~~~^^
  File "renpy/ui.py", line 304, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/core.py", line 2219, in interact
    repeat, rv = self.interact_core(
                 ~~~~~~~~~~~~~~~~~~^
        preloads=preloads,
        ^^^^^^^^^^^^^^^^^^
    ...<4 lines>...
        **kwargs,
        ^^^^^^^^^
    )  # type: ignore
    ^                
  File "renpy/display/core.py", line 2757, in interact_core
    root_widget.visit_all(lambda d: d.per_interact())
    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/displayable.py", line 432, in visit_all
    d.visit_all(callback, seen)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "renpy/display/displayable.py", line 432, in visit_all
    d.visit_all(callback, seen)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "renpy/display/displayable.py", line 432, in visit_all
    d.visit_all(callback, seen)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^
[Previous line repeated 1 more time]
  File "renpy/display/screen.py", line 503, in visit_all
    callback(self)
    ~~~~~~~~^^^^^^
  File "renpy/display/core.py", line 2757, in <lambda>
    root_widget.visit_all(lambda d: d.per_interact())
                                    ~~~~~~~~~~~~~~^^ 
  File "renpy/display/screen.py", line 514, in per_interact
    self.update()
    ~~~~~~~~~~~^^
  File "renpy/display/screen.py", line 715, in update
    self.screen.function(**self.scope)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "game/SabMod/SabMod.rpy", line 41, in execute
    screen SabMod():
  File "game/SabMod/SabMod.rpy", line 41, in execute
    screen SabMod():
  File "game/SabMod/SabMod.rpy", line 44, in execute
    hbox:
  File "game/SabMod/SabMod.rpy", line 48, in execute
    imagebutton auto "SabMod/pr_%s.png" action OpenURL("https://patreon.com/SabMod")
  File "renpy/ui.py", line 961, in _imagebutton
    idle = choice(idle, idle_image, "idle", required=True)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/ui.py", line 955, in choice
    raise Exception("Imagebutton does not have a %s image. (auto=%r)." % (name, auto))
Exception: Imagebutton does not have a idle image. (auto='SabMod/pr_%s.png').

Windows-11-10.0.26100-SP0 AMD64
Ren'Py 8.4.1.25072401
Lust Harem 0.50.3E
Fri Oct 31 22:13:33 2025
 
  • Like
Reactions: BrightBurner

TheEx3

New Member
Jul 21, 2023
1
0
87
Got this error using the mod


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

While running game code:
  File "game/SabMod/SabMod.rpy", line 41, in execute
    screen SabMod():
  File "game/SabMod/SabMod.rpy", line 41, in execute
    screen SabMod():
  File "game/SabMod/SabMod.rpy", line 44, in execute
    hbox:
  File "game/SabMod/SabMod.rpy", line 48, in execute
    imagebutton auto "SabMod/pr_%s.png" action OpenURL("https://patreon.com/SabMod")
Exception: Imagebutton does not have a idle image. (auto='SabMod/pr_%s.png').

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

Traceback (most recent call last):
  File "renpy/common/00gamemenu.rpy", line 174, in script
    $ ui.interact()
  File "renpy/ast.py", line 1187, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/python.py", line 1260, in py_exec_bytecode
    exec(bytecode, globals, locals)
    ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/common/00gamemenu.rpy", line 174, in <module>
    $ ui.interact()
      ~~~~~~~~~~~^^
  File "renpy/ui.py", line 304, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/core.py", line 2219, in interact
    repeat, rv = self.interact_core(
                 ~~~~~~~~~~~~~~~~~~^
        preloads=preloads,
        ^^^^^^^^^^^^^^^^^^
    ...<4 lines>...
        **kwargs,
        ^^^^^^^^^
    )  # type: ignore
    ^               
  File "renpy/display/core.py", line 2757, in interact_core
    root_widget.visit_all(lambda d: d.per_interact())
    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/displayable.py", line 432, in visit_all
    d.visit_all(callback, seen)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "renpy/display/displayable.py", line 432, in visit_all
    d.visit_all(callback, seen)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "renpy/display/displayable.py", line 432, in visit_all
    d.visit_all(callback, seen)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^
[Previous line repeated 1 more time]
  File "renpy/display/screen.py", line 503, in visit_all
    callback(self)
    ~~~~~~~~^^^^^^
  File "renpy/display/core.py", line 2757, in <lambda>
    root_widget.visit_all(lambda d: d.per_interact())
                                    ~~~~~~~~~~~~~~^^
  File "renpy/display/screen.py", line 514, in per_interact
    self.update()
    ~~~~~~~~~~~^^
  File "renpy/display/screen.py", line 715, in update
    self.screen.function(**self.scope)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "game/SabMod/SabMod.rpy", line 41, in execute
    screen SabMod():
  File "game/SabMod/SabMod.rpy", line 41, in execute
    screen SabMod():
  File "game/SabMod/SabMod.rpy", line 44, in execute
    hbox:
  File "game/SabMod/SabMod.rpy", line 48, in execute
    imagebutton auto "SabMod/pr_%s.png" action OpenURL("https://patreon.com/SabMod")
  File "renpy/ui.py", line 961, in _imagebutton
    idle = choice(idle, idle_image, "idle", required=True)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/ui.py", line 955, in choice
    raise Exception("Imagebutton does not have a %s image. (auto=%r)." % (name, auto))
Exception: Imagebutton does not have a idle image. (auto='SabMod/pr_%s.png').

Windows-11-10.0.26100-SP0 AMD64
Ren'Py 8.4.1.25072401
Lust Harem 0.50.3E
Fri Oct 31 22:13:33 2025
Did you try to first install the original mod (v0.27) and than overwrite it with the mod files from EfontMan?