Ich habe mal wieder ein recht spezielles Problem und erbitte um Hilfe

Und zwar habe ich ein Problem mit der korrekten Ausführungsreihenfolge von Befehlen. Am Anfang einer Befehlskette wende ich eine OverlayMDS auf den Helden an. Dann kommen einige Befehle, die in die AI-Queue geschrieben werden. Der letzte Befehl (auch in der AI-Queue) entfernt die OverlayMDS. Mal ein Beispiel:

Code:
Mdl_ApplyOverlayMDS (hero, "HUMANS_WEAPONDRAWDISABLED.MDS");
AI_RemoveWeapon(hero);
AI_Function(Befehl1);
AI_Function(Befehl2);
AI_PlayAni(hero, "FANCY_ANIMATION");
AI_Function(FunktionDieMeineOverlayMdsEntfernt);
Das mache ich, weil ein Mdl_ApplyOverlayMDSTimed evt. die dazwischenliegenden Animationen beenden würde oder zu spät ausgeführt wird, sodass das Overlay noch aktiv ist, wenn meine Befehlskette bereits vorbei ist.
Was jetzt aber passieren kann ist, dass durch äußeren Einfluss Npc_ClearAIQueue aufgerufen werden könnte. Ein Monster könnte die Befehlskette des Helden zum Beispiel durch einen Spezialangriff unterbrechen, der diesen Befehl nutzt, damit der hero direkt reagiert. Das wäre aber sehr schlecht, weil dann das Overlay niemals entfernt wird.

Gibt es eine Möglichkeit, das Problem ohne AI-Queue zu lösen? Ziel sollte sein: Overlay wird am Anfang der Befehlskette angewendet und direkt nach Ende mit einer Wahrscheinlichkeit von 100% wieder entfernt. Dabei sollte kein Risiko bestehen, dass der Remove-Overlay-Befehl eine evt. Animation des Helden abbricht (tut der Befehl leider) oder dass das Overlay erst Sekunden nach der Befehlskette entfernt wird.

Evt. soetwas wie ein verhindern von Npc_ClearAIQueue? Geht sowas? Oder vielleicht habt ihr noch eine viel bessere Idee?


EDIT: Ich habe gerade gemerkt, dass die Animation nur abgebrochen wird, wenn die gerade laufende Animation von der OverlayMDS überschrieben wird. In meinem Fall reicht mir dieses Wissen... Trotzdem würde mich interessieren, ob es für dieses Problem eine Lösung gibt. Wäre nützlich an der ein oder anderen Stelle.