die "Engine" sauber von den "Spielleveldaten" getrennt hättest. Also z.B. dass die Levelinfos in Strings verpackt sind und die Engine daraus die Levels zeichnet und die Verhaltensinfos daraus entnimmt. Dann müsstest du nur jeweils die Strings austauschen, z.B. durch Einlesen der Infos aus einer Datei und die Engine kümmert sich dann selbstständig um das neue Level.
Ja, es ist durchaus erstrebenswert, eine solche universelle Engine zu erschaffen. Allerdings erschweren die doch recht individuellen Auswirkungen eine Umsetzung. Es ist wesentlich einfacher solche Special Events hardzucoden. Es hätte ggf. aber gepasst, die komplette Spiellogik in ein File unterzubringen, wenn man die Level und Texte bzw. so viele Daten wie möglich auslagert, den Code strafft und optimiert.