Also irgendwas ist da aber noch merkwürdig (oder ich versteh's
falsch):
Wenn Verhalten 1 das Verhalten 2 aufruft, ist 2->caller == 1.
Wenn Verhalten 1 außerdem cancel_behaviour(2) aufruft, ist cancel-
>caller == 1.
Trifft nun die Abbruchbedingung zu, ruft cancel deactivateCalled...
(2) auf, was alle Verhalten deaktiviert, die 2 gestartet hat und
deren Caller werden jeweils gelöscht.
Dann wird deactivateBehaviour(2) aufgerufen (bevor bot_behave() in
die nächste Runde geht), was 2 selbst deaktiviert und den Caller
von 2 löscht.
Abschließend wird return_from_behaviour(cancel) aufgerufen, was
cancel deaktiviert und den cancel->caller aktiviert. cancel->caller
== 1, also müsste doch wieder 1 gestartet werden.
Aber wo ist jetzt der Denkfehler? Ich seh grad kein Problem mehr :-/