В ходе работы над скриптом, возник вопрос такого плана. Имеем событие убиения зенитки. После чего стразу удаляем ее трупик. Пишем такой код:
Код:
public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages)
{
base.OnActorDead(missionNumber, shortName, actor, damages);
if (actor is AiGroundActor)
   {
    (actor as AiGroundActor).Destroy();
    Sss("Удалили красную зену: " + actor.Name());
   }
}
и получаем стопроцентную ошибку.

Но если пишем все в точности так же, но делаем задержку в одну секунду, то никакой ошибки не возникает.
Код:
public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages)
{
base.OnActorDead(missionNumber, shortName, actor, damages);
if (actor is AiGroundActor)
   {
    Timeout(1, () =>
       {
       (actor as AiGroundActor).Destroy();
       Sss("Удалили красную зену: " + actor.Name());
       });
   }
}
Почему такое происходит??? Получается, что нужно всегда делать задержку?