Проблема заключается в том, как сообщение вызывается.
Я сделал это испытание вашего кода.

Когда цикл запускает сообщение, увеличивает счетчик, показывающий, сколько раз происходит обжиг.
Первый штрих-пресс, который я сделал, «test» был увеличен до 4000. Другими словами, сообщение было выпущено более 4000 раз! Я медленная машинистка, но события бывают быстрыми.
Теперь кажется, что в Scratch каждое сообщение транслирует прерывание предыдущего. Как «играть звук» долго, чтобы выполнить, message1 никогда не доходит до конца без перерыва, окончательные инструкции никогда не выполняется и flag2 не установлен в 0.
Есть несколько обходных путей:

Установите флажок вне области if. Поскольку второе сообщение прерывает первый и запускает, он обнуляет флаг.

Убедитесь, что текущее сообщение не прерывается новым путем использования «и ждать». Таким образом, не прерывание, сообщение выполняется полностью.

Избегайте сообщений. Используйте собственный цикл событий. Вам действительно нужен цикл для запуска более 4000 сообщений для 1 нажатия клавиши? Пусть Scratch обрабатывает события своим путем.