Meh we just don't have the same opinion / method on the subject I guess.True.
But a more general rule is that you don't want to create spaghetti code with conditional jumps in and out all over the place.
The more your 'fake' and 'real' exams diverge the more spaghettified it becomes and the more of a maintenance/update nightmare. You're already on the road from 'reuse' to 'rewrite'. Have you counted how many times you have to check the 'fakeExam' status from within the exam code?
Elegance is nice, but maintainability is better. Otherwise you eventually get bogged down in patch over patch over patch ... and it becomes increasingly time-consuming to upgrade.
You can trust me on this. I spent 20 years as a contractor troubleshooting other peoples' code. And by the time you go away for a few months then come back it's "someone else's" code.
I've forgot to CTRL+F bc of time constrait and too many features being added at the same time but knew what the (non critical) issue was in a split second. And using some globals as 'jump backs' or modifiers is already done in the event system and works flawlessly.
In all fairness, I just didn't checked it at all. If what it costs me is to do 1 CTRL+F when I want to re-use the exam system in a complete different context, I'm all-in on that solution!
I think you missunderstood something about the 'fakeExam' var. 'fakeExam' IS designed to be check during exams, that's the entire purpose of that var
I can agree that the code from game\scripts\lb_examevents.rpy is not really satisfying as I didn't had any time to re-design it from Examination Day, but I don't see any obvious redability issues except all the examEvent labels stacked up but you need to put them somewhere at some point ><
I don't think making endless parrallel versions of the same thing to address special cases makes anything less time-consuming or less spaghettified. As I'm planning to update some UI and logic of the exam system, that would mean going over all the variations to apply changes.. What an error nest nightmare, that's not what I call maintainability, I'm not up for that ^^