-
Nikitos создал
Седьмой блок порта (docs/TASKS.md §12.11, §6.5). В audm-neko мир рейда был ОДНОЙ большой связной картой: районы слева направо (деревня → ПГТ → город → промзона → пойма), рельеф шумом, постройки по районам, точки интереса, выходы, а содержимое появлялось СТРИМИНГОМ по чанкам вокруг бойца. * план мира: районы с долями ширины, рельеф (гладкий шум, усиленный районом), постройки по видам застройки (изба, хрущёвка, гаражи, халупа), точки интереса, выходы по одному на район плюс «дальний», план тайников и NPC с капами; * всё — ЧИСЛА: генератор не создаёт ни спрайтов, ни тел; $.raid.fill() отдаёт содержимое чанков игре (onBuilding/onLoot/onNpc/onChunk); * стриминг: окно radius чанков вокруг игрока, load/unload, takePending() отдаёт чанки к наполнению РОВНО ОДИН РАЗ (лут и NPC не двоятся), chunkContent() — срез рельефа и содержимое чанка; * детерминированность от сида: create({ seed }) воспроизводим, reseed(), save/load (план воспроизводится из сида, в сейве только он и загруженные чанки); * погода: clear/overcast/rain/storm/fog с влиянием (fog, rain, wind, loud — в грозу шаги слышно хуже, light), одна на рейд. Тесты нашли три настоящих ошибки: 1) сид в объекте рейда был СНИМКОМ, а не геттером — reseed() и load() меняли переменную, но игра видела старое значение; 2) голый xorshift32 без размешивания сида давал первые значения ≈0 для соседних сидов: границы районов, первый дом и погода повторялись. Добавлен финализатор MurmurHash3 — соседние сиды расходятся сразу; 3) districtAt(-10) отдавал ПОСЛЕДНИЙ район вместо первого. Проверка: tests/js/raid_test.mjs (19 проверок: детерминированность, районы без дыр, дома внутри районов, выходы, капы, стриминг, чанки, сейв, погода), полный набор qjs и агентских тестов зелёный.8bd7f20e