This right here is exactly why I'm never making another sandbox game again. Was fine at the start but as you start adding more events throughout the game it's a damn nightmare trying to keep in mind of what possible order of things players will take and how they trigger. At one point I remember trying to code an event cooldown period but after a week of this monkey trying to figure out coding and introducing new bugs I scrapped* the whole idea.
Glad you're enjoying the game though!
So, I was thinking some on the problem you were having with certain events firing before their requisite events have happened. I think I came across a moderately workable solution, though given my limited exposure to RenPy and Python in general, I don't know how feasible it'll be for you to implement in this game, but might be something useful for your next, if you make another sandbox game.
Essentially, you create a new Event object for the girls.
((This is all in pseudo-code))
girlEvent Object
gEvID As Integer //For ease of access or indexing
gEvName As String //Quick event name for giggles
gEvDate As Integer //Gametime date as integer ie: 69 or 10102020 kind of deal
Object End
You could spruce it up if you need to, or just reduce it to a variable for the sake of ease.
Then the easy part. Run a check to see if the preceding event has a date, and that it's not the same day. As long as it isn't a 0 or NULL, and isn't also today, then it can fire the new event and continue along towards the future.
If Today <> gEvDate And gEvDate <> 0 Then
new Event Code
Hope this makes sense, and possibly helps.