I'm not sure that people will agree to restart a whole new game with every update. Actually it's not a big deal since there's not so much content, but it will start to be annoying when the number of girls will start to really grow. Especially if some content with a girl (or girl availability) is linked to another girl.
You should probably not directly link the events with the day. This way, people will be able to see the added content without the need to restart a whole new game. In the same time it will make the "finish the day" risk free.
You just need a second counter for each girl, which will keep track of the number of step played, and use it to find the scene to play, and some rewrite. In the end it will even make things easier for you.
Firstly, you add the needed variables (I'll use only the mother as example):
Code:
default mDoneToday = False # Visited the mother today
default mSceneCount = 0 # Last scene played with the mother
default mMaxScene = 10 # Maximal number of scene with the mother
Secondly you get ride of the "day[X]choice" label, replacing it by a generic label.
Code:
label dayChoice:
scene frontroom
with fade
menu:
# Show it only if there's still scenes that haven't be played.
"Go see [mname]" if mSceneCount < mMaxScene:
if mDoneToday==False:
call mSceneFinder
else:
"I already went and saw her today, better leave her alone until tomorrow or she might get suspicious."
jump dayChoice
[...]
"Finish the day":
call endOfDay
return
jump dayChoice
[Side note: Do not
call every single label !! Especially since you never return from them.
jump is your friend and what you need most of the time.]
Thirdly, you define the "[x]SceneFinder" label for each girl :
Code:
label mSceneFinder:
$ mDoneToday = True # Mother visited today
$ mSceneCount += 1 # One more scene will be played
# It's by default, up to you to increase it
# somewhere else to make the scene progress
# more conditional.
if mSceneCount == 0: jump mpeak
elif mSceneCount == 1:
jump mday1a
[...]
else:
$ mSceneCount -=1 # correct the default increase.
"Sorry, an error occurred, there's no more scene available and you shouldn't be here"
return
And you end all the label scene by a
return statement. So :
Code:
label mpeak:
[whatever you've already]
return
label mday1a:
[...]
jump mh1a # Why calling, seriously ?
[...]
label mh1a:
[whatever you've already]
menu:
"Repeat":
jump mh1a
"Next":
pass # you'll automatically branch to the next label
label mh1b:
[whatever you've already]
return # Here you'll return automatically to the day choice
Fourthly you add a label to reset the variables at the end of the day :
Code:
label endOfDay:
python:
mDoneToday == False
[...]
return
And finally you adapt the start of the day :
Code:
label day1intro:
scene day1
with dissolve
$ renpy.pause ()
scene dbed1
with fade
$ renpy.pause ()
scene dbed2
mc "I'm feeling a lot better than I did yesterday, I better see what I can accomplish today."
"You go to the front room to eat breakfast."
# No need to this
# call day1breakfast from _call_day1breakfast
label day1breakfast:
scene frontroomm
with fade
mc "What does everyone have planned today?"
m "I've gotta be on the phone most of the day with the office, I may not be able to be there but they're still depending on me to run it."
scene frontroomos
os "I've gotta do some studying, I found a good room yesterday to do it in."
"That figures."
scene frontroomys
ys "Not that it's any of your business but I'm checking out the rec center, I've gotta stay in top condition."
"Good, they've split up without my intervention, that gives me plenty of oppurtunity to use my powers on them."
scene frontroom
with fade
"You all finish breakfast and everyone leaves."
"Now who do I want to see first?"
call daychoice
jump day2intro
It's a quick explanation, there's perhaps few errors in the code (mostly indent one). It's a big change and you'll obviously have to change a little the day[x]intro, and the day[x].rpy files, since the player can goes further than just 10 days. But it can be done in the same way than the dayChoice label. In the end, it will just make your game better. And it will also make your own work easier since you'll only have one place which need to be updated each time you add a girl.
And, seriously, replace all these
call by a
jump. Since you never return from a called label, it's already what your code effectively do anyway ; it jump to another label, except that, because of the
call it also keep a lot of data related to the return point in memory. So, the only thing your so many
call do, is flooding the RAM.
All this said, there's another problem. Do
not define your variables in the "start" label. It's another thing which force the player to restart a whole game. Here, you've many possibilities but, due to the way your game works, the easiest is probably to use the
default statement.
Code:
default ysgpoints=0
default osgpoints=0
default mgpoints=0
[...]
label start:
[...]