"trace_hit auslösen" ist etwas unglücklich formuliert. Stell dir das lieber als eine globale Variable vor, die jede Funktion gleich ändert:

trace_hit wird von jeder c_move und c_trace - Anweisung in deinem Code verändert, auch wenn diese in anderen Funktionen schlummern. Daher ist nach einer c_move bzw. c_trace-Anweisung der Wert von trace_hit nur solange richtig, bis die nächste c_move oder c_trace-Anweisung ausgeführt wird. Man sollte diese Variablen nach einem wait (oder anderen c_move, c_trace-Anweisung) also nicht mehr nutzen.

Du musst also entweder alles, was du mit dem Wert von trace_hit machen möchtest vor dem nächsten wait/c_move/c_trace erledigen (daher das if(trace_hit).. direkt hinter die c_move setzen), oder den Wert in einer Variablen zwischenspeichern (wie du dsa letzendlich mit "collision" machst).


Dafür bieten sich Entity-Skills oder lokale Variablen an.


Perhaps this post will get me points for originality at least.

Check out Dungeon Deities! It's amazing and will make you happy, successful and almost certainly more attractive! It might be true!