Give packs an identity so create can refuse missing deps and load in a stable order.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -9,12 +9,11 @@
|
||||
|
||||
## Почему сейчас
|
||||
|
||||
**Моды существуют на бумаге.** В `mods/` лежит один `core`. Last-wins, патчи и порядок загрузки
|
||||
проверяются синтетическими документами в памяти, а путь «игрок выбрал мод» не проверяется вообще —
|
||||
подставить нечего. Пак не имеет удостоверения: `GET /api/mods` отдаёт `{id, required}`, и в диалоге
|
||||
создания игрок видит имя папки. Зависимостей между паками нет, поэтому мебельный набор, который
|
||||
патчит чужой def, может быть выбран без того, кого он патчит, — и школа не соберётся с невнятной
|
||||
ошибкой каталога.
|
||||
**Моды существуют на бумаге — остался проверяемый путь.** Удостоверение пака уже есть:
|
||||
`pack.jsonc` (версия и `requires`), название в локалях по id, `GET /api/mods?lang=` отдаёт
|
||||
подпись, создание отказывает во внятном коде, если зависимости нет или они замкнуты в цикл.
|
||||
Порядок загрузки сервер выстраивает сам и кладёт в сейв. В `mods/` по-прежнему лежит один
|
||||
`core`: last-wins, патчи и дорога «игрок выбрал мод» ждут настоящую папку — это фаза 23.
|
||||
|
||||
**Числа поведения живут в коде вопреки [`ai.md`](ai.md).** Там записано: «Числа поведения —
|
||||
отдельный деф правил, как `StaffingDef` у штата». В `BehaviorDef` уехали порог нужды, скорость
|
||||
@@ -100,9 +99,9 @@
|
||||
нанимает второго, ничего не меняется, и понять почему неоткуда. В строку непокрытого предмета
|
||||
добавляется, сколько человек его не вытягивают.
|
||||
|
||||
**Def без подписи.** Загрузчик молча подставляет `defName`, когда ключа локали нет. Для `core` это
|
||||
ловит тест на полноту, для мода — ничего. Загрузчик начинает писать предупреждение в лог: мод-автор
|
||||
видит дыру сразу, а не по кривой подписи в дереве.
|
||||
**Def без подписи.** Загрузчик пишет предупреждение в лог, когда у конкретного неабстрактного def
|
||||
нет ключа ни в `ru`, ни в `en`. Для `core` это ловит тест на полноту; для мода автор видит дыру
|
||||
сразу, а не по кривой подписи в дереве. Каталог при этом собирается — подставляется `defName`.
|
||||
|
||||
## Сид школы — свой, а не производный
|
||||
|
||||
|
||||
Reference in New Issue
Block a user