В общем намучился тоже с этим багом с постоянно выскакивающим пустым диалоговым окном и натравил DeepSeek на папку с игрой, описав ему проблему и вот что он выдал —
Причина найдена — и она именно системная
Это не перевод строки и не порча базы, а ключ, который мод перевёл вместе с подписью.
Как устроено в игре:
В exe лежит таблица имён типов событий (Block2.eventType):
0xABB590 CrewCombatEvent
0xABB5A0 WalkiEvent
0xABB5AC ShipCombatEvent
0xABB5BC Event ← мод заменил на «Событие»
0xABB5C4 CinemaEvent
0xABB5D0 EraEvent
0xABB5DC StartingEvent
...
И единственный в игре SQL со строковым ключом — вот он:
SELECT * FROM Block2 where EventType = "%s";
Цепочка, подтверждённая дизассемблером (адрес 0x41F7D8):
mov ecx, 0ABB5BCh ; указатель на строку "Event"
... ; встроенный strcmp побайтово
test eax, eax
je 41F9A2h ; ветка «это обычное событие»
То есть игра сравнивает строку с литералом Event и подставляет её же в SQL. Мод подменил этот литерал на Событие — и:
strcmp(..., "Event") больше никогда не совпадает;
SELECT * FROM Block2 WHERE EventType = "Событие" возвращает 0 строк (в базе значения остались английскими);
игра получает событие без блоков и без диалога, но продолжает его проигрывать → пустое диалоговое окно, обновляемое по кругу, которое прерывает любые действия.
Почему это бьёт именно по «обычным» событиям, а не по всем: у соседних имён (DialogEvent, MissionEvent, CinemaEvent, BlockGroupEvent…) переводчик их не тронул — они остались рабочими. Пострадал ровно один элемент таблицы — голое слово Event, потому что оно выглядело как обычная подпись.
Что сделано
В Star Traders\ru\strings.tsv удалена одна строка:
S 00ABB5BC 41F7D9,45B701,63E35A,654061,7261FD,895889 D0EA7366EBC403FF Событие
Это было исправлено на уже сломанном багом сейве, после запуска игры и загрузки этого сломаного сейва — баг пропал, наиграл уже больше 10 часов баг больше не вылезал.
Пока автор не поправил русик можете самостоятельно удалить эту строчку из файла strings.tsv и играть.
Удачи 0/