Reason and solution are already in the manual (excuse the German quote):

Quote:
Die Eventfunktion selbst sollte einfach sein. Normalerweise sollte sie keine Informationen an die Main-Funktion der Entity übermitteln - sie sollte keine Anweisungen ausführen, die wiederum selbst Events auslösen, Entities verschieben oder sonst irgendetwas im Level verändern können. Anweisungen wie c_move, ent_create, ptr_remove, c_trace etc. dürfen also nicht durchgeführt werden. Sollte dies nämlich der Fall sein, können alle möglichen unschönen Dinge passieren: etwa dass zwei Entities bis ins Unendliche gegenseitg ihren Event auslösen (in diesem Falle würde das Game einfrieren). Muß die Eventfunktion aus irgendeinem Grund solche 'kritischen Anweisungen' durchführen, müssen diesen, um sie aufs nächste Frame hin zu verzögern ein wait(1) vorangestellt sein, dann ist es sicher.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends