Looking at it, you put the call to set the persistent name
before the player enters their name, not afterwards (and don't have a persistent incest flag, from what I can see). Also, if you put a call to it in the
after_load
label it would always be set to the same as the last save played, if the player has multiple saves with different variables.
Also noticed that you
are setting the variable at the start of the replay, but setting it directly rather than by using a scope. There shouldn't be any real difference between these two methods, though personally I think using a scope is neater. You'd do it by creating a dictionary at the start of the gallery screen:
$ replayScope = {"name": persistent.pname, "IM": persistent.IM}
then passing that to the
Replay
action on your button:
Python:
imagebutton:
idle "church_mary_vg21_small.png"
insensitive "thumbnail_locked.png"
action Replay("event_mary", scope=replayScope)
(You also don't need to manually do a test of
renpy.seen_label
if using the
Replay
action, it defaults to using if the label has been seen or not as the condition for the button)