Добавить первую волну мира Foundations
This commit is contained in:
@@ -462,6 +462,79 @@ time runs. Legacy levels без collectible получают третью зве
|
||||
`bestStars=3`; новый `ProgressStore` после трёх запусков возвращает 3 звезды для
|
||||
`foundations.threefold-proof`.
|
||||
|
||||
## Уровень 19 — `First Return`
|
||||
|
||||
**Статус:** доказан production-input ботом, 3/3 последовательных прохождения.
|
||||
**Ожидаемые и доказанные смерти:** `0`.
|
||||
|
||||
```text
|
||||
LevelID="foundations.first-return", WorldID="foundations"
|
||||
→ игрок подходит к нижнему уступу x=650..890 и перепрыгивает его
|
||||
→ отпускает jump, подтверждает новое касание пола и создаёт второй jump edge
|
||||
→ вторым прыжком проходит высокий уступ x=1080..1380
|
||||
→ на безопасной дальней прямой забирает collectible x=1500
|
||||
→ достигает goal x=2090..2176 без смертей
|
||||
```
|
||||
|
||||
**Контракт:** уровень повторно калибрует движение и раздельные jump edges перед
|
||||
production-комбинациями. На нём нет hazard, switch или Door; failure означает
|
||||
ошибку управления, а не скрытое состояние головоломки.
|
||||
|
||||
## Уровень 20 — `Covered Path`
|
||||
|
||||
**Статус:** доказан production-input ботом, 3/3 последовательных прохождения.
|
||||
**Ожидаемые и доказанные смерти:** `2`; оба тела сохраняются.
|
||||
|
||||
```text
|
||||
LevelID="foundations.covered-path", WorldID="foundations"
|
||||
→ первый доброволец идёт в ближние spikes x=700..800 и оставляет pinned body
|
||||
→ второй прыгает с x≈520 через первое тело и погибает на spikes x=930..1030
|
||||
→ третий возвращается и одним прыжком пересекает две раздельные опоры
|
||||
→ отдельным jump edge входит на ledge x=1240..1520 и забирает collectible
|
||||
→ достигает goal с deaths=2, corpses=2
|
||||
```
|
||||
|
||||
**Контракт:** две раздельные spike-зоны делают обе жертвы наблюдаемыми и не
|
||||
позволяют одним ранним телом случайно закрыть весь hazard. Bot fail-fast отклоняет
|
||||
третью смерть; три последовательных запуска доказывают очистку старых тел.
|
||||
|
||||
## Уровень 21 — `Held Open`
|
||||
|
||||
**Статус:** доказан production-input ботом, 3/3 последовательных прохождения.
|
||||
**Ожидаемые и доказанные смерти:** `1`; Door остаётся открыта телом.
|
||||
|
||||
```text
|
||||
LevelID="foundations.held-open", WorldID="foundations"
|
||||
→ первый доброволец достигает saw x=650..742
|
||||
→ тело оседает на pressure plate x=625..785 и активирует held-gate
|
||||
→ следующий доброволец подтверждает allDoorsOpen=true
|
||||
→ начинает прыжок из рассчитанного окна x≈470 и очищает saw + retained body
|
||||
→ прыгает через collectible x=1160 до Door x=1260
|
||||
→ проходит удерживаемую Door и достигает goal с deaths=1, corpses=1
|
||||
```
|
||||
|
||||
**Контракт:** plate и Door используют один signal ID `held-gate`. Коллекционный
|
||||
маршрут лежит внутри того же доказанного прыжка и не требует второй жертвы.
|
||||
|
||||
## Уровень 22 — `Clockwork Step`
|
||||
|
||||
**Статус:** доказан production-input ботом, 3/3 последовательных прохождения.
|
||||
**Ожидаемые и доказанные смерти:** `0`.
|
||||
|
||||
```text
|
||||
LevelID="foundations.clockwork-step", WorldID="foundations"
|
||||
→ игрок один раз касается toggle ferry x=760..832
|
||||
→ подходит к launch overlap и прыгает на platform x=940..1260
|
||||
→ snapshot подтверждает playerOnGround && playerOnMovingPlatform
|
||||
→ без input едет до platformX≥1280 и по пути забирает collectible x=1435
|
||||
→ сходит на дальний floor x=1600..2500, не касаясь PIT x=1100..1600
|
||||
→ достигает goal без смерти
|
||||
```
|
||||
|
||||
**Контракт:** toggle и moving platform разделяют signal `ferry`. Платформа имеет
|
||||
160 px launch overlap до движения и 20 px far overlap в конечной фазе; bot ждёт
|
||||
реальную поддержку, а не единичное пересечение в воздухе.
|
||||
|
||||
## Проверки, следующие из графов
|
||||
|
||||
1. Сохранять полный integrated device-regression: intended route принятых уровней по три раза и отдельный recovery route уровня 8.
|
||||
|
||||
Reference in New Issue
Block a user