Ho fatto tutte le prove possibili e per me rimane corretta questa linea :
$midnight = (date("U") - ((date("H") - $modSettings['time_offset']) * 3600) - (date("i") * 60));
Non h adato problemi di sorta in nessun frangente, sebbene sia rimasta in test per svariati giorni.
Nel caso in cui dovessi continuare ad aver problemi, ti conviene smontare la mod e controllare passo passo che sia stato tutto correttamente modificato.
FaSan
Bah vabbè.. ho fatto un mezzo casotto con queste date

I tuoi file vanno bene !!
Mentre nella prima versione della modifica, l' incremento orario andava ad diminuire la data di base, con la nuova stringa, il segno
- non è corretto, inquanto inverte l' offset, con particolari problematiche oltre una tot ora (vedi area english).
In parole povere :
$midnight = (date("U") - ((date("H")
+ $modSettings['time_offset']) * 3600) - (date("i") * 60));
Inquanto date("H") è l' ora di default del server
e l' offset, se è posito (differenza in più) và aggiunto, se è negativo (- x + = -) si sottrae.
Tutto è bene ciò che finisce bene

FaSan