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.The code for story events to appear is simple. In layman's terms, the game looks at the current friendship number and makes sure about 1 - 4 days have passed in game. For the vast majority of story events, that's it. (Oh, and it will often look for the time of day) Sometimes it also makes sure other characters are at a certain part in their story too.
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.