TexisZ

New Member
Nov 19, 2017
5
3
100
When punishing Cassandra

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

While running game code:
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 634, in script call
  File "game/events.rpy", line 4019, in script call
  File "game/monday.rpy", line 912, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/events.rpy", line 4028, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/events.rpy", line 4031, in script call
  File "game/monday.rpy", line 4292, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/monday.rpy", line 9, in script call
  File "game/monday.rpy", line 1980, in script call
  File "game/monday.rpy", line 4563, in script call
  File "game/monday.rpy", line 3764, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/monday.rpy", line 4106, in script
  File "game/monday.rpy", line 4106, in <module>
  File "game/Twins_PS.rpy", line 3197, in execute
  File "game/Twins_PS.rpy", line 3197, in execute
  File "game/Twins_PS.rpy", line 3296, in execute
  File "game/Twins_PS.rpy", line 3326, in execute
  File "game/Twins_PS.rpy", line 3327, in execute
  File "game/Twins_PS.rpy", line 3329, in execute
  File "game/Twins_PS.rpy", line 3333, in execute
  File "game/Twins_PS.rpy", line 3333, in keywords
  File "game/Twins_PS.rpy", line 3333, in <module>
IndexError: string index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 634, in script call
  File "game/events.rpy", line 4019, in script call
  File "game/monday.rpy", line 912, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/events.rpy", line 4028, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/events.rpy", line 4031, in script call
  File "game/monday.rpy", line 4292, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/monday.rpy", line 9, in script call
  File "game/monday.rpy", line 1980, in script call
  File "game/monday.rpy", line 4563, in script call
  File "game/monday.rpy", line 3764, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/monday.rpy", line 4106, in script
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 634, in script call
  File "game/events.rpy", line 4019, in script call
  File "game/monday.rpy", line 912, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/events.rpy", line 4028, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/events.rpy", line 4031, in script call
  File "game/monday.rpy", line 4292, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/monday.rpy", line 9, in script call
  File "game/monday.rpy", line 1980, in script call
  File "game/monday.rpy", line 4563, in script call
  File "game/monday.rpy", line 3764, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/monday.rpy", line 4106, in script
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

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

Traceback (most recent call last):
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 634, in script call
  File "game/events.rpy", line 4019, in script call
  File "game/monday.rpy", line 912, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/events.rpy", line 4028, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/events.rpy", line 4031, in script call
  File "game/monday.rpy", line 4292, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/monday.rpy", line 9, in script call
  File "game/monday.rpy", line 1980, in script call
  File "game/monday.rpy", line 4563, in script call
  File "game/monday.rpy", line 3764, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/monday.rpy", line 4106, in script
  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 "game/monday.rpy", line 4106, in <module>
  File "renpy/exports/statementexports.py", line 198, in pause
    rv = renpy.ui.interact(mouse="pause", type="pause", roll_forward=roll_forward, pause=delay, pause_modal=modal)
         ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^
  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/Twins_PS.rpy", line 3197, in execute
  File "game/Twins_PS.rpy", line 3197, in execute
  File "game/Twins_PS.rpy", line 3296, in execute
  File "game/Twins_PS.rpy", line 3326, in execute
  File "game/Twins_PS.rpy", line 3327, in execute
  File "game/Twins_PS.rpy", line 3329, in execute
  File "game/Twins_PS.rpy", line 3333, in execute
  File "game/Twins_PS.rpy", line 3333, in keywords
  File "renpy/python.py", line 1292, in py_eval
    return py_eval_bytecode(code, globals, locals)
           ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/python.py", line 1285, in py_eval_bytecode
    return eval(bytecode, globals, locals)
           ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "game/Twins_PS.rpy", line 3333, in <module>
IndexError: string index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "renpy/bootstrap.py", line 376, in bootstrap
    renpy.main.main()
    ~~~~~~~~~~~~~~~^^
  File "renpy/main.py", line 614, in main
    run(restart)
    ~~~^^^^^^^^^
  File "renpy/main.py", line 137, in run
    renpy.execution.run_context(True)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "renpy/execution.py", line 1022, in run_context
    context.run()
    ~~~~~~~~~~~^^
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 634, in script call
  File "game/events.rpy", line 4019, in script call
  File "game/monday.rpy", line 912, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/events.rpy", line 4028, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/events.rpy", line 4031, in script call
  File "game/monday.rpy", line 4292, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/monday.rpy", line 9, in script call
  File "game/monday.rpy", line 1980, in script call
  File "game/monday.rpy", line 4563, in script call
  File "game/monday.rpy", line 3764, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/monday.rpy", line 4106, in script
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 94, in script call
  File "game/monday.rpy", line 634, in script call
  File "game/events.rpy", line 4019, in script call
  File "game/monday.rpy", line 912, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/events.rpy", line 4028, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/events.rpy", line 4031, in script call
  File "game/monday.rpy", line 4292, in script call
  File "game/monday.rpy", line 5165, in script call
  File "game/monday.rpy", line 5372, in script call
  File "game/monday.rpy", line 9, in script call
  File "game/monday.rpy", line 1980, in script call
  File "game/monday.rpy", line 4563, in script call
  File "game/monday.rpy", line 3764, in script call
  File "game/monday.rpy", line 2669, in script call
  File "game/monday.rpy", line 4106, in script
  File "renpy/display/error.py", line 135, in report_exception
    renpy.game.invoke_in_new_context(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        call_exception_screen,
        ^^^^^^^^^^^^^^^^^^^^^^
    ...<4 lines>...
        ignore_action=ignore_action,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "renpy/game.py", line 301, in invoke_in_new_context
    return callable(*args, **kwargs)
           ~~~~~~~~^^^^^^^^^^^^^^^^^
  File "renpy/display/error.py", line 44, in call_exception_screen
    return renpy.ui.interact(mouse="screen", type="screen", suppress_overlay=True, suppress_underlay=True)
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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 3302, in interact_core
    rv = root_widget.event(ev, x, y, 0)
         ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 1284, in event
    rv = i.event(ev, x - xo, y - yo, cst)
         ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 1284, in event
    rv = i.event(ev, x - xo, y - yo, cst)
         ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 1284, in event
    rv = i.event(ev, x - xo, y - yo, cst)
         ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/screen.py", line 805, in event
    rv = self.child.event(ev, x, y, st)
         ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 1284, in event
    rv = i.event(ev, x - xo, y - yo, cst)
         ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 1508, in event
    rv = super(Window, self).event(ev, x, y, st)
         ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 273, in event
    rv = d.event(ev, x - xo, y - yo, st)
         ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 273, in event
    rv = d.event(ev, x - xo, y - yo, st)
         ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 1284, in event
    rv = i.event(ev, x - xo, y - yo, cst)
         ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 1284, in event
    rv = i.event(ev, x - xo, y - yo, cst)
         ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 1284, in event
    rv = i.event(ev, x - xo, y - yo, cst)
         ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/behavior.py", line 1184, in event
    return handle_click(self.clicked)
           ~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "renpy/display/behavior.py", line 1107, in handle_click
    rv = run(action)
         ~~~^^^^^^^^
  File "renpy/display/behavior.py", line 411, in run
    return action(*args, **kwargs)
           ~~~~~~^^^^^^^^^^^^^^^^^
  File "renpy/display/error.py", line 51, in rollback_action
    renpy.exports.rollback(force=True)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "renpy/exports/rollbackexports.py", line 233, in rollback
    renpy.game.log.rollback(
    ~~~~~~~~~~~~~~~~~~~~~~~^
        checkpoints, greedy=greedy, label=label, force=(force is True), abnormal=abnormal, current_label=current_label
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "renpy/rollback.py", line 950, in rollback
    self.load_failed()
    ~~~~~~~~~~~~~~~~^^
  File "renpy/rollback.py", line 864, 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-11-10.0.26100-SP0 AMD64
Ren'Py 8.4.1.25072401
The Headmaster 0.17.1beta
Mon Dec 15 00:17:26 2025
 

jkj54

Member
Jan 15, 2020
143
95
95
We had for awhile a guide to the punishment system now we are back guessing does the developer hate the playerbase with a passion?

1765785891172.png


This game has so much good stuff going for it put i fucking hate spending months trying to find that one fucking way to pass these horrific punishment mini games.

1765786269097.png
1765786314135.png
1765786401637.png


Edit

Added more images for context


There is one path and only one path so fucking frustrating.
 
Last edited:

grey_shadow

Member
May 21, 2022
318
383
131
We had for awhile a guide to the punishment system now we are back guessing does the developer hate the playerbase with a passion?
I don't know whether this is what's happening, but it's not unusual for that sort of thing to be one of the last things added, particularly if the beta was pushed out to some sort of deadline, leaving the final polishing touches for the full release.

Or it might be a genuine oversight that will get picked up through feedback from the beta's players.

Or it is possible it's a deliberate decision by the developer for whatever reason (outright hatred of the player-base seems unlikely)
 

jkj54

Member
Jan 15, 2020
143
95
95
I don't know whether this is what's happening, but it's not unusual for that sort of thing to be one of the last things added, particularly if the beta was pushed out to some sort of deadline, leaving the final polishing touches for the full release.

Or it might be a genuine oversight that will get picked up through feedback from the beta's players.

Or it is possible it's a deliberate decision by the developer for whatever reason (outright hatred of the player-base seems unlikely)
Fayes punishment is guided which is a huge help this was added to the others
1765787598376.png

I would like to know also because to go from this to non guided to me is like i said very frustrating
 

Graag

Member
Jan 13, 2018
319
506
281
We had for awhile a guide to the punishment system now we are back guessing does the developer hate the playerbase with a passion?
Uhm.....did you just try to make the punishment system sound like punishment? Because that's why it's named a punishment system.

Also. Seems it's windows 10 and up only as of now?
 

Dole

Well-Known Karen
Apr 28, 2017
3,343
2,709
464
Faye Level 2 how should this work to come to Level 3 when you aggree to not use the ruler?

I have two actions and no actions to raise Pain or Pleasure? Pain I need 1 and Pleasure 4.

This is the only Quest that are open. I can`t buy anything new so I have no clue how I can solve it.
 

5ifty

Newbie
Oct 4, 2025
63
51
28
Beta has a few errors.

The twins punishment is now permanently plastered on the screen everywhere, it keeps going back to it, after punishing them from the pool and not finishing Ms Potts line beforehand. Specifically the Twins punishing Ms Potts.

The twins punishment bug might have been created, unclear, I had two punishments that day. I proceeded to Pritti after the Twins, and on ending her punishment, it highlighted the table tie option, I pressed it, and it went back to the twins. Since my game is broken and the twins punishments options are permanently attached to the screen everywhere. I end the punishment, and it doesn't disappear.

Rachel hard disconnects like Cassandra if using the skip function to speed through the dialogue while punishing. It also makes an awful sound, computer speakers have real horrible bzzzzzzzzzzzing, on many punishments using skip for dialogue.

Saved games were wiped this update. I started fresh and found a Faye scene regarding Cassandra, however Rachel seemed much harder levelling and getting regular punishments due to advancing acts quickly. If advancing the acts, it becomes a problem levelling her because the classroom has everybody else. Not so much of a weekly problem, selecting which student to punish but this doesn't happen frequently. You now have Pritti and others to single out. Level Rachel first would've saved playtime.

Game Broken above. It's still a Beta
 
Last edited:

TonyMurray

Conversation Conqueror
Apr 8, 2024
6,751
13,127
774
Well, it's not an official release. You play a beta at your own risk, or you wait until the actual release, and play that.
 

Danlancelot

New Member
May 11, 2024
7
10
22
I find it so strange to hear people say they have trouble passing/completing the punishment system. In my experience, either it's so easy to get points that a new level isn't any harder than the previous level OR you only have access to the new level after buying a new item or unlocking a new position....which is obviously what you use to get the required score
 
  • Like
Reactions: Gaus76

Gegecucu

Member
Game Developer
Nov 18, 2017
259
917
275
We had for awhile a guide to the punishment system now we are back guessing does the developer hate the playerbase with a passion?

View attachment 5530017


This game has so much good stuff going for it put i fucking hate spending months trying to find that one fucking way to pass these horrific punishment mini games.

View attachment 5530021
View attachment 5530022
View attachment 5530024


Edit

Added more images for context


There is one path and only one path so fucking frustrating.
You know that there is a guided punishmend mode when you play in 'easy mode", right ?
 
  • Like
Reactions: oceanbobo4

Xantoser

Member
Apr 28, 2020
269
475
208
We had for awhile a guide to the punishment system now we are back guessing does the developer hate the playerbase with a passion?

View attachment 5530017


This game has so much good stuff going for it put i fucking hate spending months trying to find that one fucking way to pass these horrific punishment mini games.

View attachment 5530021
View attachment 5530022
View attachment 5530024


Edit

Added more images for context


There is one path and only one path so fucking frustrating.
Unpopular opinion: I would throw out this punishment system completely and replace it with normal events. I’m guessing there’s only one way because the developer wants the punishment system levels to be gated. To keep the story consistent, he wants to make sure that when you reach level X, you’ve seen all required scenes and have all the tools he wants you to have. But in that case, why not just replace the punishment scene with a scripted one? It would require much less work.
 
4.50 star(s) 295 Votes