Mod Ren'Py Universal Ren'Py Mod / URM [2.2.1] (mod any Ren'Py game yourself)

5.00 star(s) 33 Votes

Vega Cifer

Member
Oct 3, 2022
131
61
Hello, had a question about the path changing or however you call it. Basically, playing a renpy game, changed two paths that were earlier on in a save and their variables. But everytime I reopen the game it goes back to how it was before. Basically missed those events, changed their variables to either true or false to get them, but they say missed again when I even to back to main menu. What exactly can make this happen?
 

Proactive

Newbie
Apr 7, 2017
18
18
When attempting to use the renaming function on any character in the Innocent Witches game I get the below error:

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

While running game code:
TypeError: __init__() got an unexpected keyword argument 'kind'

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

Full traceback:
  File "script.rpyc", line 111, in script call
  File "scripts/plot/plot_menu.rpyc", line 194, in script call
  File "scripts/plot/act_1_new/act1_menu.rpyc", line 18, in script call
  File "scripts/plot/act_1_new/chapter_1/menus.rpyc", line 341, in script call
  File "scripts/plot/act_1_new/chapter_1/dialogues.rpyc", line 497, in script
  File "F:\Other\Stuff\Innocent_Witches-0-10-alpha-pc\renpy\ast.py", line 921, in execute
    renpy.exports.say(who, what, *args, **kwargs)
  File "F:\Other\Stuff\Innocent_Witches-0-10-alpha-pc\renpy\exports.py", line 1373, in say
    who(what, *args, **kwargs)
  File "F:\Other\Stuff\Innocent_Witches-0-10-alpha-pc\renpy\character.py", line 1180, in __call__
    return Character(kind=self, **kwargs)(what, interact=interact, _call_done=_call_done, multiple=multiple, _mode=_mode, _with_none=_with_none)
  File "F:\Other\Stuff\Innocent_Witches-0-10-alpha-pc\renpy\character.py", line 1580, in Character
    return type(kind)(name, kind=kind, **properties)
TypeError: __init__() got an unexpected keyword argument 'kind'

Windows-10-10.0.22621 AMD64
Ren'Py 8.0.1.22070801
Innocent Witches 0.10-alpha
Sun Jan 22 21:05:37 2023
```
Thanks the great mod and hopeful for any help.
 

Belzeebub$

Cheat Or Not
Game Developer
May 18, 2020
646
915
0x52 as usual thanks for the update. As I have said earlier (several times) in this thread and forum that I am a noob about coding. URM greatly helps me overcome dilemmas when choosing options in renpy game. I encountered This Mod which I found similar like URM and it is also, a suggestion whether or if it is possible to make URM like that mod.
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,595
6,054
0x52

I have version 1.13.2 in the /game subfolder. I haven't deleted the 0x52-URM folder in Roaming because I didn't want to start over and rename all the characters, but I hope that won't make a difference. So anyway, I noticed last night that when playing The Golden Boy v0.1 that if I renamed Alex to Son, it worked. But if I renamed Alex (Think) to Son (Think), it wouldn't work. I thought that there was just a problem with that game, and not the Universal Ren'Py Mod. But then today, I noticed the same problem in Just For You v5.0. Renaming Richard to Son worked, but renaming Richard (Think) to Son (Think) did not work. Could this be a bug?
This seems to be a bug caused by the parentheses. Will fix this in a future release ;)

0x52 Has anyone mentioned issues with URM in "The Roommate"?

It worked early in the game, and I do have saved variables from that point but at today's point, in-game, search no longer works, it returns no results (even for the vars I have saved). The fact it worked, and now doesn't, seems... odd.
At some point in this game they make a variable called "list", but this is a reserved name used by Python. This breaks URM (potentially anything in the game).
I'm not going to address this issue, since according to FaceCrap's comment what they did also breaks rollback. When I would fix the issue with URM, rollback will still be broken.

What you could to to fix this yourself:
  1. Unpack "scripts.rpa"
  2. Rename (anything else then .rpa) or delete "scripts.rpa" (so Ren'py doesn't try to load it anymore)
  3. Open the file "functions.rpy"
  4. On line 1161 and 1163, rename "list" to "templist"

Back to searching, I found out the girls have a lastname so I tried searching for it but I did get an error ...
Code:
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00library.rpy", line 268, in say
    who(what, interact=interact, *args, **kwargs)
  File "game/0x52/framework/inputs.rpy", line 85, in enter
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
Thanks! This was very helpful for me to find the issue :love:

PS. The variables screen could also do with pagination. Like the Renaming screen in the past, this one too causes slowdown when you're tracking a lot of variables. Not as much as the Renaming screen did but noticable
Yes. This is on my todo list ;)

EDIT: I dug up a backup from saturday (thank god for nightly backups). I added an example of the odd error you can get after a roll-back and continue...
Seems like they also broke rollback by creating a variable named "list"

Latest version of URM, latest version of "Town of Magic"

Got a crash immediately after pressing `Start` on the main menu.

Code:
I'm sorry, but an uncaught exception occurred.
While loading <renpy.display.im.Image object ('0x52/images/urm_vertical.x52') at 0x7fa363170640>:
  File "renpy/common/00gamemenu.rpy", line 170, in script
    $ ui.interact()
  File "renpy/common/00gamemenu.rpy", line 170, in <module>
    $ ui.interact()
OSError: Couldn't find file '0x52/images/urm_vertical.x52'.
-- Full Traceback ------------------------------------------------------------
Full traceback:
  File "renpy/common/00gamemenu.rpy", line 170, in script
    $ ui.interact()
  File "/home/username/Downloads/Town of Magic/renpy/ast.py", line 1131, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "/home/username/Downloads/Town of Magic/renpy/python.py", line 1061, in py_exec_bytecode
    exec(bytecode, globals, locals)
  File "renpy/common/00gamemenu.rpy", line 170, in <module>
    $ ui.interact()
  File "/home/username/Downloads/Town of Magic/renpy/ui.py", line 299, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "/home/username/Downloads/Town of Magic/renpy/display/core.py", line 3377, 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 "/home/username/Downloads/Town of Magic/renpy/display/core.py", line 3912, in interact_core
    self.draw_screen(root_widget, fullscreen_video, (not fullscreen_video) or video_frame_drawn)
  File "/home/username/Downloads/Town of Magic/renpy/display/core.py", line 2602, in draw_screen
    surftree = renpy.display.render.render_screen(
  File "render.pyx", line 495, in renpy.display.render.render_screen
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/layout.py", line 884, in render
    surf = render(child, width, height, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/transition.py", line 378, in render
    top = render(self.new_widget, width, height, st, at)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/layout.py", line 884, in render
    surf = render(child, width, height, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/layout.py", line 884, in render
    surf = render(child, width, height, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/screen.py", line 704, in render
    child = renpy.display.render.render(self.child, w, h, st, at)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/layout.py", line 884, in render
    surf = render(child, width, height, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/dragdrop.py", line 474, in render
    cr = render(child, width, height, st, at)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/transform.py", line 747, in render
    return transform_render(self, width, height, st, at)
  File "accelerator.pyx", line 187, in renpy.display.accelerator.transform_render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/layout.py", line 1334, in render
    surf = render(child,
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/layout.py", line 1105, in render
    surf = render(d, width - x, rh, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/layout.py", line 1060, in render
    surf = render(d, rw, height - y, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/transform.py", line 747, in render
    return transform_render(self, width, height, st, at)
  File "accelerator.pyx", line 187, in renpy.display.accelerator.transform_render
  File "render.pyx", line 266, in renpy.display.render.render
  File "/home/username/Downloads/Town of Magic/renpy/display/im.py", line 627, in render
    return cache.get(self, render=True)
  File "/home/username/Downloads/Town of Magic/renpy/display/im.py", line 295, in get
    surf = image.load()
  File "/home/username/Downloads/Town of Magic/renpy/display/im.py", line 720, in load
    raise e
  File "/home/username/Downloads/Town of Magic/renpy/display/im.py", line 685, in load
    filelike = renpy.loader.load(self.filename)
  File "/home/username/Downloads/Town of Magic/renpy/loader.py", line 820, in load
    raise IOError("Couldn't find file '%s'." % name)
OSError: Couldn't find file '0x52/images/urm_vertical.x52'.
Linux-6.1.6-arch1-1-x86_64-with-glibc2.36 x86_64
Ren'Py 8.0.3.22090809
Town of Magic 0.64.010
Wed Jan 18 15:28:05 2023
Ignoring and then trying to open the menu also yeets a traceback, this time saying it can't find `FontAwesome5Free-blablabla.otf.x52`
Seems like you URM .rpa file got corrupted somehow?

Is there a way to figure out what they did exactly, to bypass it? Thanks.
Of course, with enough time and the rights skills. But I'm not going to put too much effort into this for only one VN.
Currently UNRPYC doesn't support the Ren'Py version they've used. Once it does, it will be a lot easier to figure out what is causing this.
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,595
6,054
Hello, had a question about the path changing or however you call it. Basically, playing a renpy game, changed two paths that were earlier on in a save and their variables. But everytime I reopen the game it goes back to how it was before. Basically missed those events, changed their variables to either true or false to get them, but they say missed again when I even to back to main menu. What exactly can make this happen?
It's unclear to my what you're experiencing. What VN are you talking about and what variables are you changing?

When attempting to use the renaming function on any character in the Innocent Witches game I get the below error:

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

While running game code:
TypeError: __init__() got an unexpected keyword argument 'kind'

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

Full traceback:
  File "script.rpyc", line 111, in script call
  File "scripts/plot/plot_menu.rpyc", line 194, in script call
  File "scripts/plot/act_1_new/act1_menu.rpyc", line 18, in script call
  File "scripts/plot/act_1_new/chapter_1/menus.rpyc", line 341, in script call
  File "scripts/plot/act_1_new/chapter_1/dialogues.rpyc", line 497, in script
  File "F:\Other\Stuff\Innocent_Witches-0-10-alpha-pc\renpy\ast.py", line 921, in execute
    renpy.exports.say(who, what, *args, **kwargs)
  File "F:\Other\Stuff\Innocent_Witches-0-10-alpha-pc\renpy\exports.py", line 1373, in say
    who(what, *args, **kwargs)
  File "F:\Other\Stuff\Innocent_Witches-0-10-alpha-pc\renpy\character.py", line 1180, in __call__
    return Character(kind=self, **kwargs)(what, interact=interact, _call_done=_call_done, multiple=multiple, _mode=_mode, _with_none=_with_none)
  File "F:\Other\Stuff\Innocent_Witches-0-10-alpha-pc\renpy\character.py", line 1580, in Character
    return type(kind)(name, kind=kind, **properties)
TypeError: __init__() got an unexpected keyword argument 'kind'

Windows-10-10.0.22621 AMD64
Ren'Py 8.0.1.22070801
Innocent Witches 0.10-alpha
Sun Jan 22 21:05:37 2023
```
Thanks the great mod and hopeful for any help.
Looks like they use custom character definitions that are not fully compatible with Ren'Py's say callback.

0x52 as usual thanks for the update. As I have said earlier (several times) in this thread and forum that I am a noob about coding. URM greatly helps me overcome dilemmas when choosing options in renpy game. I encountered This Mod which I found similar like URM and it is also, a suggestion whether or if it is possible to make URM like that mod.
I have plans for changing how detected choices are displayed
 
  • Red Heart
Reactions: Belzeebub$

Vega Cifer

Member
Oct 3, 2022
131
61
It's unclear to my what you're experiencing. What VN are you talking about and what variables are you changing?
It's the game Lessons in Love and im trying to change the following to true -

Harukadate5
Harukalust10
Makidate15

Not sure if there's something else I need to change for these things to not revert back to false in the save. I accidentally did it right for something else but these I can't seem to figure out
 

Proactive

Newbie
Apr 7, 2017
18
18
Looks like they use custom character definitions that are not fully compatible with Ren'Py's say callback.
Thanks for the reply, I presume this isn't something that is within the scope of this mod to fix? Either way thank you very much for this mod I've found it incredibly helpful :)
 

FaceCrap

Active Member
Oct 1, 2020
882
619
Is there a way to figure out what they did exactly, to bypass it? Thanks.
Of course, with enough time and the rights skills. But I'm not going to put too much effort into this for only one VN.
Currently UNRPYC doesn't support the Ren'Py version they've used. Once it does, it will be a lot easier to figure out what is causing this.
Ehm, do you want the whole game with rpa files unpacked and .rpyc files decompiled? or just the decompiled rpy files?
 
  • Thinking Face
Reactions: NoddleKing

Hibike

Newbie
Dec 27, 2020
23
68
I'm not sure if this was suggested already, but I couldn't find anything.

Would there be a way to ignore paths by their expression from appearing as notification or in the watch panel? I'm thinking about small branches that don't really do anything like

Code:
if stats == True:
    $ stat += 1
that might be littered around the code.
 

FaceCrap

Active Member
Oct 1, 2020
882
619
Feature request: How about have an option to show the code for each choice in a notification slider, or an overlay on the screen, without having to click through the screen popups, such as: having to click the "Choices Detected" icon, and then click "code" for each choice.

This would make URM act like a customized walkthrough mod where it shows the score along with each choice without any extra clicking or need for additional user interaction.
hehe :) there's already a kind of mod for this... actually a kind of walkthrough generator...
But, please! DO read the spoilers since there's three different versions, and two of them are very much Ren'Py (major) version dependant as in for 7.x or 8.x
Word of warning, backup the /game folder before trying...
 
  • Like
Reactions: Smarmint

Smarmint

Well-Known Member
Mar 23, 2019
1,250
4,894
hehe :) there's already a kind of mod for this... actually a kind of walkthrough generator...
But, please! DO read the spoilers since there's three different versions, and two of them are very much Ren'Py (major) version dependant as in for 7.x or 8.x
Word of warning, backup the /game folder before trying...
Thanks. Pretty much what I had in mind. I'll check it out. URM is great for the features, like searching and changing variables, notifying the player of missed paths, but lots of times, I just want to see the impact of the choices, without having to click through any submenus.
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,595
6,054
the same issue for me, reproducable, but cannot figure the cause
Considering the blake3 hash of the file is the same as the one in a freshly downloaded zip's, I think something's wrong with the download instead?
I'm able can reproduce it, but it's not clear to me why this is happening. And it seems like only "Town of Magic" is affected?
So I don't want to put too much time into this. If it's something that affects multiple VNs I will investigate further.

It's the game Lessons in Love and im trying to change the following to true -

Harukadate5
Harukalust10
Makidate15

Not sure if there's something else I need to change for these things to not revert back to false in the save. I accidentally did it right for something else but these I can't seem to figure out
Could it be that you changed the variable and immediately saved after that?
Ren'Py will only remember a changed variable after you forwarded a screen.

Thanks for the reply, I presume this isn't something that is within the scope of this mod to fix? Either way thank you very much for this mod I've found it incredibly helpful :)
Correct. I'm not going to create a fix for this exception.

Ehm, do you want the whole game with rpa files unpacked and .rpyc files decompiled? or just the decompiled rpy files?
Yes, the problem is that I cannot decompile the .rpyc files.

I'm not sure if this was suggested already, but I couldn't find anything.

Would there be a way to ignore paths by their expression from appearing as notification or in the watch panel? I'm thinking about small branches that don't really do anything like

Code:
if stats == True:
    $ stat += 1
that might be littered around the code.
It's been suggested before. See this:
I've put it on the wishlist ;)
 
  • Like
Reactions: Hibike

desmosome

Conversation Conqueror
Sep 5, 2018
6,133
14,152
So I'm not really sure if this is an issue with URM, but lately, I've been finding multiple games having issues with variables and rollback. If a variable is changed or flag is set, and I rollback to before that choice or instance, it keeps the changes. Since it's happening with many different games and the common link is URM, I thought maybe this was the cause.

If this is the first time hearing about it, I can do some tests to see if URM is really causing it. Let me know.
 

Lure of Chaos

Member
Apr 21, 2020
113
100
So I'm not really sure if this is an issue with URM, but lately, I've been finding multiple games having issues with variables and rollback. If a variable is changed or flag is set, and I rollback to before that choice or instance, it keeps the changes. Since it's happening with many different games and the common link is URM, I thought maybe this was the cause.

If this is the first time hearing about it, I can do some tests to see if URM is really causing it. Let me know.
there's issue with RenPy, when you change variable (even using console) then do rollback, it also reverts to previous value, but when you roll forward, your "new" value isn't restored.
Does this answer your question, or did you mean something different?
 
5.00 star(s) 33 Votes