очень хорошо что ты упростил скрипт
покрутив его я нашел один момент который кроме как глюком не назвать
дело не в логике (ее никто не трогал)
дело в строке №37
почему то если написано так как сейчас, то скрипт на ней тупо спотыкается (причем абсолютно молча) и все начинается с начала
однако если написать например так
LOGWRITE("", $MName," [",$MLevel,"] (",$MFC,")...")
то есть тупо выводить первой не переменную с провокационным значением вида "число в строке" а строковую константу (даже пустую, как в примере), то скрипт после этой строки идет дальше и работает уже как надо.
такие вот дела.
inb4: верни как было с $ и %