Звучит так, как будто, вычитание происходит несколько раз, в зависимости от текущей частоты процессора. Я бы предложил, при смерти менять инвертировать флаг(Булеву переменную), при вычитании проверять флаг, и если была смерть, инвертировать его и делать действия.( после этого код будет выполняться один раз)
Так-же скрипт должен зависеть от времени, значит это время надо запросить и сравнить с предыдущем, ели промежуток больше, то скрипт выполняется.
Время можно получать с телефона(жди обхода системы игроками, через изменение времени) или запросить на вебресурсе.