I think the label "after_load" gets called, not just jumped to, so that the return could automatically bring the execution to the place the game was loaded to.
Calls work like this:
1. The computer gets a command like "call some label".
2. Before it jumps to that label, it stores the address of the statement to return (it's the next statement after that "call" statement).
3. At the label it jumped to, it performs that part of the program, until it meets "return" statement.
4. On "return" it takes the return address from the list and jumps (back) there.
That list of return addresses is called "call stack" (because the return addresses are like "stacked" on each other, and they get removed starting from the top / the latest one).
(Call stack may also contain parameters used when calling the function, but that's a propos.)
https://www.renpy.org/doc/html/label.html
So if some label was called, you shouldn't just jump back from there. Normally you need to use "return" to clean the last return address from the top of the call stack.
(Otherwise your program flow will be messed up.)
So if you really want to jump instead of returning, you need to adjust the call stack. There is a function in Ren'Py for that, renpy.pop_call().
https://www.renpy.org/doc/html/other.ht ... y.pop_call
So try putting renpy.pop_call() before jumping away:
Code: Select all
label after_load:
if ffcutscene == "1":
$ renpy.pop_call()
jump ff1
#...and so on like that
Or, in more elegant way:
Code: Select all
label after_load:
# If ffcutscene is not empty:
if ffcutscene:
$ renpy.pop_call()
jump expression "ff" + ffcutscene
return
Another way is to assign animations to images or something, then you wouldn't need to repeat many lines of code. Like this:
Code: Select all
image slideshow:
2.0
"park" with Dissolve(2.0)
alpha 0.0
yalign 0.0
parallel:
easein 3.0 yalign 0.9
parallel:
easeout 3.0 alpha 1.0
parallel:
1.0
easein 2.0 zoom 0.76
3.0
parallel:
"fountain" with Dissolve(2.0)
parallel:
easein 3.0 zoom 1.3333
parallel:
easein 3.0 yalign 1.0
3.0
easein 3.0 zoom 0.48
3.0
etc., so you use it just like this:
Also, I haven't checked "Retaining Data After Load", maybe it could be useful too?
PS. Correction: "$" before "renpy.pop_call()".