VERY IMPORTANT// This is extremely complicated donacode, and I highly recommend an advanced knowledge of how the code in Episode works before attempting this!
What this does:
Allows players to replay and recustomize within a chapter, before spending a pass.
What this does NOT do:
Allow players to go BACK after a pass is spent to replay an entire chapter.
This is what my main menu looks like:
While my menu does use ‘tappable overlays’ to get this look, the scene choices are not actually limited to tappables- it’s a coding trick I decided to use for this story.
To replicate without tappables, here is the gyst of what I did. I have added a # commentary in italic bold :
#This step is important- at the beginning of each chapter you need to have a reset for each of the choices as well as the ‘scenes’. This will make more sense when you look further down.
@SCENEONE =0
@SCENETWO =0
@SCENETHREE =0
@CHOICEONE =0
@CHOICETWO =0
@CHOICETHREE =0
label MAINMENU
@transition fade out in 2
INT. MAINMENU
#load your backdrop here, set your music etc.
label MAINMENUCHOICES
NARRATOR
Main menu options:
choice
“Customization.”{
#this is something I added just because I know how popular customization is in Episode.
#it also allows players to switch their gender (physically as well, to save space)
goto CUSTOMIZATION
}
“Scene One.”{
if(CUSTOMIZATION=0){
#this is a check I have in place to make sure they have been customized at least once.
NARRATOR
Please visit customization first.
@speechbubble reset
goto MAINMENUCHOICES
}elif(SCENEONE=1){
#this tells the script that scene one has been played. See commentary below for how I did this
NARRATOR
Clicking this will reset your progress in any completed scenes.
It will not affect customization.
Are you sure you wish to proceed?
choice
“Yes.”{
@SCENEONE =0
@SCENETWO =0
@SCENETHREE =0
@CHOICEONE =0
@CHOICETWO =0
@CHOICETHREE =0
#this needs to have a reset for every single choice you have available as well as resetting scenes 1-3
goto SCENEONE
}
“No!”{
@speechbubble reset
#oops didn’t mean it! back to main menu
goto MAINMENUCHOICES
}
}else{
#this is what happens if they have customized and they are ready to play scene one!
goto SCENEONE
}
}
“Scane Two.”{
if(SCENEONE=0){
#this checks to make sure they have played scene one
NARRATOR
Please complete Scene One.
@speechbubble reset
goto MAINMENUCHOICES
}elif(SCENETWO=1){
#this checks to see if they have played scene 2 already, to prevent anything from messing up
NARRATOR
Please restart from scene one to replay to avoid errors.
@speechbubble reset
goto MAINMENUCHOICES
}else{
#this is if they have played scene one and not scene two
goto SCENETWO
}
}
“Scene Three.”{
if(SCENETWO=0){
#same as above, checking for scene two and below checking for three
NARRATOR
Please complete Scene Two.
@speechbubble reset
goto MAINMENUCHOICES
}elif(SCENETHREE=1){
NARRATOR
Please restart from scene one to replay to avoid errors.
@speechbubble reset
goto MAINMENUCHOICES
}else{
goto SCENETHREE
}
}
“NEXTCHAPTERBUTTON”{
if(SCENETHREE=0){
#this makes sure they have played scene three, again same as above
NARRATOR
Please complete Scene Three.
@speechbubble reset
goto MAINMENUCHOICES
}else{
}
goto NEXTCHAPTER
}
label CUSTOMIZATION
#for this section I added a few more tricks. For those familiar with donacode who wish to attempt this, I used character points for MALE and FEMALE. Inside the MALE I do
@ MALE =1
@ FEMALE =0
_#reverse for the female. Recalling the script later I use if(MALE=1){ _
#if that doesn’t make sense to you, best to avoid trying to allow a replay of customizations and only have it once OR only have one gender
label SCENEONE
#this is where your script for scene one goes. At the end of the chapter make sure to include a:
_@ SCENEONE =1 < no space after the @ , just avoiding tagging someone _
#now, lets say that this is the only place with a ‘choice’. THIS IS IMPORTANT… rather than actually add any gains inside the choice, the choice looks like this:
NARRATOR
What do you pick?
choice
“Option one.”{
@ CHOICEONE =1
}
“Option Two.”{
@ CHOICEONE =2
}
#^^ notice both of those reference CHOICEONE. Assigning them different values allows me to reference them later easily.
goto MAINMENU
label SCENETWO
#same as scene one- at the end make sure to include
@ SCENETWO =1
goto MAINMENU
label SCENETHREE
#You got it by now, yeah?
@ SCENETHREE =1
goto MAINMENU
label NEXTCHAPTER
@transition fade out in 2
#load your menu, etc. This is the section that checks all of the player’s choices.
NARRATOR
Ready to read more? Great! Let's make sure the correct playthrough is saved.
choice
“Skip this, just end chapter.”{
#this allows the player to skip if they like, or if they know they only had one run so checking doesn’t matter
NARRATOR
Of course! Thank you for reading!
goto CHOICESENDINGS
}
“Yes, please! I want to be sure!”{
#this goes to check the choices and SPEND A PASS AFTER
NARRATOR
Of course! Let’s see…
}
“Oops! Go back to Main Menu, please!”{
#whoops! This is a rescue in case the player didn’t mean to choose they are ready
NARRATOR
Of course! Here you go.
goto MAINMENU
}
#this section can get LONG FAST. You’d be surprised, haha. EVERYTHING you want the script to remember for the story goes here.
if(CHOICEONE=1){
NARRATOR
It looks like you picked Option One for choice one.
Is this correct?
choice
“Yes.”{
#the script continues
}
“No.”{
#if the player didn’t realize they had a different play, this allows them to go fix it before it’s too late.
NARRATOR
Oops! Please make sure to reset and play with the correct choices.
I will bump you to the main menu. Click |color:red|Scene One, then ‘reset all’.|
Make sure to pick the set of choices you want!
goto MAINMENU
}
}else{
NARRATOR
It looks like you picked Option Two for choice one.
Is this correct?
choice
“Yes.”{
#the script continues
}
“No.”{
#if the player didn’t realize they had a different play, this allows them to go fix it before it’s too late.
NARRATOR
Oops! Please make sure to reset and play with the correct choices.
I will bump you to the main menu. Click |color:red|Scene One, then ‘reset all’.|
Make sure to pick the set of choices you want!
goto MAINMENU
}
}
#^^ that continues for EVERY SINGLE CHOICE for that chapter. Once they have selected “yes” to everything, OR if they skipped to the end, the below plays (invisibly, and unknown to the player):
label CHOICESENDINGS
#this is where your actual gains and affinity points etc go
if(CHOICEONE=1){
#this is if they picked option one
gain IPICKEDOPTIONONE
}else{
#…and option two
gain IPICKEDOPTIONTWO
}
NARRATOR
Looks like we are all set! Loading the next chapter now.
goto ENDTHISCHAPTER
label ENDTHISCHAPTER
@zoom reset
#all done! This needs to be THE VERY LAST THING in your chapter script
A note on GEM CHOICES- if you add gem choices do NOT use the ‘reset’ trick inside. Put the gain RIGHT INSIDE THE GEM CHOICE, or you will have some very angry people who have to spend gems multiple times.
If you have any questions or if anything isn’t clear, feel free to ask below!
And if you want to show some support or thanks feel free to give Telvoikai a try (Link on my profile.)