Sequence breaks are a part of the game design. This allows the story to be seen at the players pace and allows them to focus on their favorite characters.I'd go beyond saying it's simple and instead say it's simply flat out bad design. There are hilarious sequence breaks that can happen due to how simple the logic is.
Assuming you're literally only checking the int values rather than checking a bunch of boolean flags, try the following instead: make every character an object with more than just the friendship values being checked and actually check if a character is available for an act if they're involved in a scene. Hell, I'll give you a freebie - If you completely ignore Maria and keep her at level 1 while going through android's story, you can unlock sex with her - and that also unlocks the repeatable sex scene in Maria's room - and you can also do this during her quiet period. I can name literally dozens of these cases. Example object properties you want (far from exhaustive): {friendship:int,affection:int,(etc),nymphotrait:bool,inlove:bool,isAvailableForSex:bool,isAvailableForBJ:bool,canWander:bool,wanderlocation:string(/int depending on how you're storing locations)}. You can probably see where this goes. If Maria.isAvailableForSex was false in my example, that wouldn't happen. Seems like a lot of work up front, but saves you a lot of time trying to think shit out in the long run.
Have a function to check and return what properties on the characters are actually at fault - I remember this one friendship scene where Maria needed both affection and exhibitionism at a specific level but the message returned was only "Maria's affection is too low" or something. Actually check via function and return, don't use static errors. I'd also recommend "greying out" things like obedience on repeatable events (IE Lin/Android head pats in kitchen) once you pass the trait threshold so that people don't waste their time.
And dear god fix the store UI it is hot garbage, holy fuck.
Every time a different character is needed for a story, the game also checks to make sure they're available. This already exists.
Being able to ignore characters for long periods of time is a part of the game design, but eventually the game does require you level all main characters up. When a character requires any type of sex in a scene, it first makes sure they've done it at least once. This already exists.
Sorry you dislike the store UI, I quite like it and think it's simple and clear enough to read and understand. Most people seem to like it so I have no incentive on changing it.