I think if blocks in e1s4.rpy's "final" label are too vague because you can meet only one of the twins in the end of ep1. All begins with Grope and either refuse variable doesn't indicate the path that the player is on regarding Sofia or Beth. This means that you have to include Grope in the if-elif-else statements:
but seems like both if blocks are the same so they could be merged into one if statement:
By the way, I just tested the code I suggested and refusing Beth's kiss gets me straight to the episode 2. Previously I got the scene from not refusing Sofia's scene that wasn't an option for not groping Julia in the airplane.
In e2s1.rpy before making the choice for chosen I got both Ruby and Madison's lines but, since I didn't grope Julia, I should have seen only Ruby's line that is only Beth's path. And, when I kissed Beth, I got only Madison's line (that I shouldn't see at all).
PS. If you use variables of Character definition lines from script.rpy as the value of your "chosen" variable (
$ chosen = mad
), you get girl's color in say_label (who_color) when the chosen says something instead of the default color that is used for non-defined characters and strings like "Madison" as chosen's value.
Edit: I might combine the choice regarding the twins as a single variable. I would name it like "twinlewd" false being the refusal. This approach would let us use
if twinlewd:
(short for twinlewd == True) for both cases (in e1s4) but identifying the twin would need Grope too (like in e2s1's case)...