docs: BUG-LOOSE-2 закрыт — проверено вручную
Падающий кусок теперь привязан к своей комнате и долетает после ухода Кида; подтверждено живым прогоном. Автоматикой гонка не воспроизводилась — мост MAME шлёт нажатия рывками, и «уйти раньше, чем долетит плита» через него не набиралось; это отмечено в записи вместе с указанием, что кейс стоит первым в плане host-тестов. Вторая волна прогона уровня 1 закрыта целиком: BUG-KBD-4, BUG-RESPAWN-2, BUG-DRAWORDER-1, BUG-LOOSE-2. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,16 +16,14 @@ BUG-DEATH-1 (смерть от меча), BUG-GATE-ANIM-1 (анимация во
|
||||
`bumped_floor`). Клавиатурный BUG-KBD-3 доведён до конца во второй волне
|
||||
(см. ниже); из первой волны открытым остался косметический BUG-SEAM-DRAW-1.
|
||||
|
||||
Ревизия **2026-08-03, вечер** (вторая волна с прогона): четыре наблюдения →
|
||||
BUG-KBD-4 (фантомный отжим Shift), BUG-RESPAWN-2 (стражи не оживают) и
|
||||
BUG-DRAWORDER-1 (Кид поверх тела стража) — **закрыты**; у последнего остался
|
||||
артефакт «ноги поверх головы», сверенный с SDLPoP и записанный в «НЕ БАГИ».
|
||||
BUG-LOOSE-2 (осколки только от одной из двух плит) — **исправлен по SDLPoP, но
|
||||
гонка автоматикой не воспроизведена** (см. таблицу ниже).
|
||||
Ревизия **2026-08-03, вечер** (вторая волна с прогона): все четыре наблюдения
|
||||
закрыты — BUG-KBD-4 (фантомный отжим Shift), BUG-RESPAWN-2 (стражи не оживают),
|
||||
BUG-DRAWORDER-1 (Кид поверх тела стража) и BUG-LOOSE-2 (осколки только от одной
|
||||
из двух плит). У BUG-DRAWORDER-1 остался артефакт «ноги поверх головы»,
|
||||
сверенный с SDLPoP и записанный в «НЕ БАГИ».
|
||||
|
||||
| ID | что | тип | статус |
|
||||
|----|-----|-----|--------|
|
||||
| [BUG-LOOSE-2](#bug-loose-2) | осколки только от одной из двух падающих плит (комната 12) | Minor | фикс есть, **гонка не воспроизведена** |
|
||||
| [BUG-SEAM-DRAW-1](#bug-seam-draw-1) | у решётки на шве экран переключается, а Кид в шве НЕ рисуется | Minor | открыт |
|
||||
| [T-1](#t-1) | пики перерисовываются безусловно | оптимизация | открыт |
|
||||
| [T-2](#t-2) | Кид перерисовывается в покое | оптимизация | открыт |
|
||||
@@ -64,9 +62,6 @@ BUG-LOOSE-2 (осколки только от одной из двух плит)
|
||||
|
||||
| # | что проверить | ожидаемо |
|
||||
|---|---------------|----------|
|
||||
| 14 | **[BUG-LOOSE-2]** комната 12: разбежаться по плитам (0,1)/(0,2) и уйти в 15 ДО того, как долетит вторая; вернуться | осколки на ОБОИХ — (1,1) и (1,2) |
|
||||
| 15 | то же в комнате 7 (плиты 0,5/0,6 → 2,5/2,6) | не сломалось: по-прежнему двое осколков |
|
||||
| 16 | плита, улетевшая из комнаты вниз, при возврате | лишнего щебня не появилось |
|
||||
| 17 | **[BUG-KBD-4]** долго играть Shift+стрелка, много тапов подряд | Shift не «отваливается»; если однажды залипнет — снимается первым же нажатием стрелки |
|
||||
| 18 | **[BUG-RESPAWN-2]** убить стража (комнаты 3/21), умереть, вернуться в ту же комнату | страж снова жив, стоит на исходном тайле, HP полные |
|
||||
|
||||
@@ -79,37 +74,6 @@ BUG-LOOSE-2 (осколки только от одной из двух плит)
|
||||
|
||||
# Открытые баги уровня 1
|
||||
|
||||
<a id="bug-loose-2"></a>
|
||||
## BUG-LOOSE-2. Осколки только от одной из двух падающих плит
|
||||
|
||||
**Симптом.** Комната 12, соседние падающие плиты (0,1) и (0,2): после
|
||||
пробежки осколки появляются только на (1,2), на (1,1) — нет. В комнате 7
|
||||
(плиты 0,5/0,6 → 2,5/2,6) обе дают осколки.
|
||||
|
||||
**Корень** (гипотеза автора отчёта подтвердилась чтением кода). Наш
|
||||
падающий кусок был привязан к ТЕКУЩЕЙ комнате: `pop_loose_reset()` на смене
|
||||
комнаты звал `pop_loose_mob_reset()` и гасил всё, что ещё летит, а тайл под
|
||||
куском читался из карты отрисованной комнаты. Кид убегает в комнату 15
|
||||
раньше, чем долетает плита (0,1) — кусок уничтожается, `loose_land` не
|
||||
случается, щебень не кладётся. В комнате 7 обе плиты успевают сесть до
|
||||
ухода, поэтому там всё выглядело правильно.
|
||||
|
||||
В оригинале `mobs[]` чистится ТОЛЬКО в `start_level` (seg003:88), `do_mobs`
|
||||
(seg007:1063) прокручивает все куски независимо от `drawn_room`, `move_loose`
|
||||
работает по `curmob.room`, а `redraw_at_cur_mob` (seg007:132C) сверяется с
|
||||
`drawn_room` лишь для ОТРИСОВКИ.
|
||||
|
||||
**Фикс.** У куска появилось поле `room` (`curmob.room`); на смене комнаты
|
||||
зовётся `pop_loose_mob_room_changed()` — сбрасывает только heal-историю;
|
||||
тайл читается через `mob_tile_at()` (своя комната — `tile_code`, чужая —
|
||||
`pop_level_tile`); приземление в покинутой комнате пишет щебень прямо в
|
||||
данные уровня; отрисовка и `check_loose_fall_on_kid` (там оригинал начинает с
|
||||
`Char.room == curmob.room`) — только для своей комнаты. Настоящий
|
||||
`mobs_count = 0` переехал в `pop_start_level`.
|
||||
|
||||
**Не проверено.** Гонка «уйти из комнаты раньше, чем долетит плита»
|
||||
автоматикой не воспроизведена. Ручной прогон — пп. 14–16 таблицы выше.
|
||||
|
||||
<a id="bug-seam-draw-1"></a>
|
||||
## BUG-SEAM-DRAW-1. Кид, упершийся в решётку на шве, не рисуется
|
||||
|
||||
|
||||
Reference in New Issue
Block a user