SprPoP: аудит — правки 12 и 13 неделимы (проверено на живой машине)
Правка 13 (перенос прижатия к полу в ветки пережитого удара, как в оригинале) была сделана в изоляции и СЛОМАЛА смерть: страж убивает Кида, а вместо тела и паузы идут вспышка, стопкадр и мгновенный выход в заставку. Причина: у нас прижатие к полу работало КОМПЕНСАЦИЕЙ отсутствующей ветки «убит и сброшен с уступа» (находка 12). Без неё мёртвый остаётся с ненулевой fall_y, физика ведёт его вниз, он пересекает нижнюю границу, взводится pop_fell_out — и приложение уходит на рестарт РАНЬШЕ отрисовки, поэтому тела не видно вовсе. Оценка «чистое перемещение двух строк, риск низкий» была неверной. В документе исправлено: риск ВЫСОКИЙ, пока ветка 12 отсутствует; обе находки — одна правка, и порядок внутри неё обратный: сперва добавить seq_81 с экспортом тайловых запросов, убедиться, что смерть на краю отыгрывается ею, и только потом снимать страховку. Правка откачена, дерево вернулось к проверенному состоянию. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011MsUsEFAQfsjjQpJ7RtKVY
This commit is contained in:
@@ -593,7 +593,27 @@
|
||||
|
||||
## Разбор по находкам
|
||||
|
||||
### 12 + 13 (ранг А) — смерть на краю. Чинится, цена нулевая
|
||||
### 12 + 13 (ранг А) — смерть на краю. ТОЛЬКО ВМЕСТЕ, НЕ ПООТДЕЛЬНОСТИ
|
||||
|
||||
> **Проверено на живой машине 2026-08-31 и провалилось.** Правка 13 была
|
||||
> сделана в изоляции (прижатие к полу перенесено в ветки пережитого
|
||||
> удара) — и сломала смерть: страж бьёт Кида, тот погибает, а вместо
|
||||
> нормальной смерти идут вспышка, стопкадр и немедленный выход в
|
||||
> заставку.
|
||||
>
|
||||
> Причина: у нас прижатие к полу работало КОМПЕНСАЦИЕЙ отсутствующей
|
||||
> ветки «убит и сброшен с уступа» (находка 12). Убрав компенсацию и не
|
||||
> добавив то, что она компенсировала, мы оставляем мёртвого персонажа с
|
||||
> ненулевой `fall_y` и незакреплённой `Char.y` — физика продолжает вести
|
||||
> его вниз, он проваливается за пределы уровня, и срабатывает аварийный
|
||||
> путь.
|
||||
>
|
||||
> Вывод: обе находки — ОДНА правка. Оценка «чистое перемещение строк,
|
||||
> риск низкий» была неверной; риск ВЫСОКИЙ, пока ветка 12 отсутствует.
|
||||
> Порядок внутри правки: сперва добавить ветку `seq_81` (с экспортом
|
||||
> тайловых запросов), убедиться, что смерть на краю отыгрывается ею, и
|
||||
> только затем убирать безусловное прижатие.
|
||||
|
||||
|
||||
*Место:* `guards.c`, `hurt_by_sword` — холодный путь.
|
||||
|
||||
@@ -700,8 +720,8 @@ rodata банка 1 и обращаться к ней напрямую — ст
|
||||
|
||||
| приоритет | находки | почему |
|
||||
|---|---|---|
|
||||
| 1 | 13, 24 | по одной-две строки, риск низкий, оба в узле «смерть/стена» |
|
||||
| 2 | 12, 14 | нужен экспорт двух функций; закрывают наблюдения пользователя |
|
||||
| 1 | 24 | одна строка, риск низкий, готовая экспортированная функция |
|
||||
| 2 | 12+13 ВМЕСТЕ | порознь ломают смерть (проверено); нужен экспорт двух функций |
|
||||
| 3 | 18, 8 | обе УСКОРЯЮТ или бесплатны; 8 — по дешёвому варианту |
|
||||
| 4 | 2, 3, 20 | перестановки и копия таблицы; нужны прогоны |
|
||||
| 5 | 1, 7 | риск средний: обе могут компенсировать наши отличия в другом месте |
|
||||
|
||||
Reference in New Issue
Block a user