Уровень 6: переход на 7-й, портал, многокомнатное падение плиты
Всё проверено пользователем в MAME. 1. Переход 6 -> 7 падением. leave_room (seg002:0504) для «вниз» на уровне 6 из комнаты 1 даёт особый результат −2, главный цикл (seg000:0893) читает его как ++next_level; вход на 7-м (set_start_pos, seg003:0196) ставит Кида в комнату 17 и сразу переводит экран на комнату под ней. Проверка ОБЯЗАНА идти раньше связи вниз: у комнаты 1 сосед снизу есть (шахта, комната 3). 2. BUG-BALCONY-RIGHT: правая половина портала не рисовалась. id 12 стоял в FORE_ENV_IDS (в tile_table он fore_id ЗЕЛЬЯ), но зелье рисуется из chtab_1, а в chtab_6 под этим номером — правая часть арки балкона 32x62, идущая в backtable. Спрайт уезжал в fore-атлас, env-страница получала дырку (idx 12: w=0 h=0). Найдено трассой POP_TRACE_BT + чтением каталога .atl; дифф комнаты с оригиналом 1151 -> 375. 3. BUG-BELOWROW-WALL: жёлтые треугольники в шахте падения. load_rowbelow (seg008:368) при отсутствующей комнате снизу подставляет tiles_0_empty колонкам 1..9 и tiles_20_wall только левому краю; у нас стеной забивались все 11 позиций. 4. BUG-MOB-MULTIROOM: честный mob_down_a_row (seg007:1387) — кусок переходит в комнату снизу и летит дальше. Плита (1,7) комнаты 6 пролетает шахту комнаты 7 и жмёт кнопку (2,7) комнаты 11, открывая ворота комнаты 18. 5. BUG-MOB-STALE-PAGE: чистка следа куска стояла под гейтом «в отрисованной комнате» — улетевший вниз оставлял себя на одной из страниц навсегда. 6. BUG-CHAR-STALE-PAGE: тень застывала на двух страницах в РАЗНЫХ позах. Прямоугольник и valid пишутся внутри `if (w && h)`, а снимок состояния брался безусловно — при нулевом спрайте слот залипал «тихим». Остаток (почему спрайт нулевой) заведён как SPRITE-ZERO-W0 в BUGS_OPEN. NEXT_SESSION переписан: следующая задача — зацеп за край пола в свободном падении (вход на уровень 7). tests-host 5/5, size-check чист. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -103,6 +103,17 @@
|
||||
#define SHADOW_STEP_LEVEL 6
|
||||
#define SHADOW_STEP_ROOM 1
|
||||
|
||||
/* Спецсобытие «выход/вход падением» (custom->falling_*, дефолты SDLPoP).
|
||||
* Уровень 6 не заканчивается дверью: Кид проваливается вниз из комнаты 1 и
|
||||
* этим переходит на уровень 7, где появляется в комнате 17 — но экран сразу
|
||||
* переводится на комнату ПОД ней, так что он влетает сверху. Комната 3
|
||||
* (шахта под комнатой 1) в переходе не участвует: leave_room перехватывает
|
||||
* уход раньше, чем сработала бы связь вниз. */
|
||||
#define FALLING_EXIT_LEVEL 6
|
||||
#define FALLING_EXIT_ROOM 1
|
||||
#define FALLING_ENTRY_LEVEL 7
|
||||
#define FALLING_ENTRY_ROOM 17
|
||||
|
||||
/* Единственный уровень, где тень — БОЕВОЙ персонаж (seg003:702). На всех
|
||||
* остальных (4 зеркало, 5 зелье, 6 плита) она Кида «не видит»: см.
|
||||
* pop_check_can_guard_see_kid. */
|
||||
|
||||
Reference in New Issue
Block a user