I still want it for narrative reasons [...]
I talk in a pure conditional way here, not knowing if it can be (more or less) easily done, but to follow the narrative reasons, there's one thing you can do : Creating your own "forced rollback".
What I mean, is that once the player got the feather, a button "back in time" is added somewhere in the screen. And if the player click on it, the game automatically rollback to a previous point ; probably right before the last choice.
Hypothetically speaking, it would works like this :
- One or two dialog lines before the player have to make a choice, you place a rollback checkpoint ;
- If the player have the feather, right after the menu, the "back in time" button appear ;
- If the player click on it, the game go back to the previous rollback checkpoint ;
- If the player don't click on it, the button disappear after X dialog lines.
You can control the button appearance/disappearance with a flag used only for this purpose. To make it appear :
and to make it dissappear :
And you have this screen in overlay:
Code:
screen backInTimeButton:
if backInTime is True and playerHaveFeather is True:
textbutton "Back in time":
action Function( renpy.rollback, force=True, checkpoints=backInTime(), greedy=True )
Forcing the rollback is done with
You must be registered to see the links
( force=True, checkpoints=
X, greedy=True ) ; as seen in the screen above.
The problem is the value for
checkpoints. It change every time the player will pass an interaction, and it depend of what checkpoint should be reached. That's why there's a
backInTime function to return it. This function need to compute the right number to return...
And that's where I'm stuck. It should probably be possible with a combination of
You must be registered to see the links
and
You must be registered to see the links
. But honestly I never looked at them, so I don't know how they works.
Or, another possibility is to not care of the checkpoints... I mean that the feather always send you back in time for "X minutes" (here obviously X interactions). So, instead of "checkpoints=backInTime()", you have "checkpoints=10", and it should send the player 10 interaction back.