Mod Ren'Py Karlssons Gambit [Ch. 2 v8.2FinalB] - GB MulitMod

SteelyDan14

Formerly Known as GeekBone
Modder
Donor
Jan 13, 2018
1,472
6,467
1737815279397.png

Overview:
This is a simple MultiMod providing a stats summary page and walkthru guidance.
Future updates will include a scene gallery and cheats.
I am always open to suggestions, so please let me know if you have any thoughts or suggestions.

The Stats Summary page is accessible on the Quick Menu at the bottom of the screen while playing.

<*****IMPORTANT NOTE ABOUT THIS MOD AND SANCHO MOD*****>
If you used Sancho's MOD previously on the saves, you might need to run his save fixer if you
are having problems. Please see the instructions on this thread.
SanchoMod Also, you need to
completely remove his MOD before installing this one. As Sancho states in his MOD, you should NEVER
mix MODs. They work independently. Mine is completely separate from his.


Updated: 1/25/2025
Game/Creator: Karlsson's Gambit / Grym Gudinna Games -
Modder: SteelyDan14 aka Geekbone /
Mod Version: S2 v0.8.2FinalB
Game Version: S2 v0.8.2FinalB
Language: English

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

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

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


Download: -

While not difficult, these MODS take a lot of time to create and maintain.
I do this for fun, but I would love a cup of coffee!


My code is always free and anyone is welcome to use it without restrictions.
My code is 95% Ren'py with about 5% Python so it is easy to learn and use.​
 
Last edited:

SteelyDan14

Formerly Known as GeekBone
Modder
Donor
Jan 13, 2018
1,472
6,467
Tested on a clean install and it works.

Keep in mind, this MOD is still pretty basic. It has the walkthru and a Stats Summary page. The Scene Gallery will come later as well as some other things like cheats. No promises on timeline as I am in the middle of tax season so my time is limited. I will not be taking on any new mods, just maintaining what is already out there.
 

dirtyfaustine

Newbie
Sep 5, 2022
89
41
actually, even using the save fixer (by putting the file in the game folder and re-running the game) didn't work. what might be the issue here ?
following attached is the error log:




Rich (BB code):
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00action_file.rpy", line 479, in __call__
    renpy.load(fn)
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

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

Full traceback:
  File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
    python hide:
  File "renpy/ast.py", line 1138, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "renpy/python.py", line 1122, in py_exec_bytecode
    exec(bytecode, globals, locals)
  File "renpy/common/_layout/screen_main_menu.rpym", line 28, in <module>
    python hide:
  File "renpy/common/_layout/screen_main_menu.rpym", line 35, in _execute_python_hide
    ui.interact()
  File "renpy/ui.py", line 299, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "renpy/display/core.py", line 3579, 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 "renpy/display/core.py", line 4540, in interact_core
    rv = root_widget.event(ev, x, y, 0)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/screen.py", line 770, in event
    rv = self.child.event(ev, x, y, st)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1401, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1401, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/behavior.py", line 1138, in event
    return handle_click(self.clicked)
  File "renpy/display/behavior.py", line 1071, in handle_click
    rv = run(action)
  File "renpy/display/behavior.py", line 375, in run
    return action(*args, **kwargs)
  File "renpy/common/00action_file.rpy", line 479, in __call__
    renpy.load(fn)
  File "renpy/loadsave.py", line 813, in load
    log.unfreeze(roots, label="_after_load")
  File "renpy/rollback.py", line 1108, in unfreeze
    self.rollback(0, force=True, label=label, greedy=greedy, on_load=True)
  File "renpy/rollback.py", line 908, in rollback
    self.load_failed()
  File "renpy/rollback.py", line 826, in load_failed
    raise Exception("Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?")
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

Windows-10-10.0.26100 AMD64
Ren'Py 7.6.1.23060707
KarlssonsGambit 0.8.2FinalB
Sun Jan 26 13:50:46 2025
 

JenMistress

Engaged Member
Oct 1, 2019
2,981
3,518
Well, even with your mod, I was still a little lost on some of the choices, but with the Universal Mod from ZLZK as well as this mod, it worked out great. I am doing two paths, one good, one evil, both dom, like that better than playing sub myself. ;) But didn't have any problems working with your mod. Thank you so very much for picking up on this game!!!
 

Maviarab

Stands with Panama!
Donor
Jul 12, 2020
11,174
26,703
Well, even with your mod, I was still a little lost on some of the choices, but with the Universal Mod from ZLZK as well as this mod, it worked out great. I am doing two paths, one good, one evil, both dom, like that better than playing sub myself. ;) But didn't have any problems working with your mod. Thank you so very much for picking up on this game!!!
Just to let you know (this is not the place though), the UCD mod pulls wrong variables and flags. Not recommended to use until it's updated. URM is perfectly fine to use.
 

SteelyDan14

Formerly Known as GeekBone
Modder
Donor
Jan 13, 2018
1,472
6,467
Well, even with your mod, I was still a little lost on some of the choices, but with the Universal Mod from ZLZK as well as this mod, it worked out great. I am doing two paths, one good, one evil, both dom, like that better than playing sub myself. ;) But didn't have any problems working with your mod. Thank you so very much for picking up on this game!!!
I have not played this game all the way through so it is possible I don't understand everything I should clarify. If you have suggestions, please let me know. In the meantime, I will play it and hopefully be able to clarify.
 

SteelyDan14

Formerly Known as GeekBone
Modder
Donor
Jan 13, 2018
1,472
6,467
actually, even using the save fixer (by putting the file in the game folder and re-running the game) didn't work. what might be the issue here ?
following attached is the error log:




Rich (BB code):
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00action_file.rpy", line 479, in __call__
    renpy.load(fn)
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

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

Full traceback:
  File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
    python hide:
  File "renpy/ast.py", line 1138, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "renpy/python.py", line 1122, in py_exec_bytecode
    exec(bytecode, globals, locals)
  File "renpy/common/_layout/screen_main_menu.rpym", line 28, in <module>
    python hide:
  File "renpy/common/_layout/screen_main_menu.rpym", line 35, in _execute_python_hide
    ui.interact()
  File "renpy/ui.py", line 299, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "renpy/display/core.py", line 3579, 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 "renpy/display/core.py", line 4540, in interact_core
    rv = root_widget.event(ev, x, y, 0)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/screen.py", line 770, in event
    rv = self.child.event(ev, x, y, st)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1401, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1401, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/behavior.py", line 1138, in event
    return handle_click(self.clicked)
  File "renpy/display/behavior.py", line 1071, in handle_click
    rv = run(action)
  File "renpy/display/behavior.py", line 375, in run
    return action(*args, **kwargs)
  File "renpy/common/00action_file.rpy", line 479, in __call__
    renpy.load(fn)
  File "renpy/loadsave.py", line 813, in load
    log.unfreeze(roots, label="_after_load")
  File "renpy/rollback.py", line 1108, in unfreeze
    self.rollback(0, force=True, label=label, greedy=greedy, on_load=True)
  File "renpy/rollback.py", line 908, in rollback
    self.load_failed()
  File "renpy/rollback.py", line 826, in load_failed
    raise Exception("Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?")
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

Windows-10-10.0.26100 AMD64
Ren'Py 7.6.1.23060707
KarlssonsGambit 0.8.2FinalB
Sun Jan 26 13:50:46 2025
Detailed Answer:
Believe it or not, the .rpyc files are the key to saves and that is what the "Exeption" error is indicting. When you move from version to version, you have to have a copy of the original .rpyc. This should happen in most cases. So, the dev has the original .rpyc when creating the next release and they build from there. If a modder changes the script enough (usually by adding or changing labels), the saves get borked and when loading, Ren'py can't find the label or the place in the script to start the save. In this case, the Sancho MOD saved through the previous version, but the developer released a couple more releases between the one Sancho updated and the one that is live. In each case, the .rpyc changed. So the difference in save files between the last one Sancho did and this one, could be enough to cause problems, even with the fix.

My MODS do not make changes like that to the script. All I do is add to the existing dialogue to the scripts. I do make significant changes for scene replays, so in that case, I copy those sections of the script and drop them into a new file. This way, the original script is not modified and all modifications happen outside the original code.

TL;DR:
If you used Sancho MOD previously and your saves no longer work, even after the fixer, you are more than likely going to have to start over.

If you are interested, here is a blog post from Tom, the man who created Ren'py, explaining the way save files work.
 
  • Like
Reactions: dirtyfaustine

dirtyfaustine

Newbie
Sep 5, 2022
89
41
Detailed Answer:
Believe it or not, the .rpyc files are the key to saves and that is what the "Exeption" error is indicting. When you move from version to version, you have to have a copy of the original .rpyc. This should happen in most cases. So, the dev has the original .rpyc when creating the next release and they build from there. If a modder changes the script enough (usually by adding or changing labels), the saves get borked and when loading, Ren'py can't find the label or the place in the script to start the save. In this case, the Sancho MOD saved through the previous version, but the developer released a couple more releases between the one Sancho updated and the one that is live. In each case, the .rpyc changed. So the difference in save files between the last one Sancho did and this one, could be enough to cause problems, even with the fix.

My MODS do not make changes like that to the script. All I do is add to the existing dialogue to the scripts. I do make significant changes for scene replays, so in that case, I copy those sections of the script and drop them into a new file. This way, the original script is not modified and all modifications happen outside the original code.

TL;DR:
If you used Sancho MOD previously and your saves no longer work, even after the fixer, you are more than likely going to have to start over.

If you are interested, here is a blog post from Tom, the man who created Ren'py, explaining the way save files work.
oh thanks for the detailed explanation, ill definitely look up that save file link. fortunately i had a save file which was compatible with version 8 so, started again from v8 part 1 .
 

Samuel Hidayat

Well-Known Member
May 16, 2019
1,930
2,532
The mod works as intended, but it's hard to understand the purpose of each variables without the detailed walkthrough Tess provides.