Бессмертие: два уровня вместо тумблера

1 — только бой: удары мечом не отнимают HP (ветка в hurt_by_sword).
2 — плюс мелкий урон: не проходят «минус деление» от падения с двух
    этажей и от падающей плиты (pop_take_hp гасит count < 100).
Мгновенная смерть остаётся на обоих: пики, чомпер, падение с трёх этажей
и удар вне боевой стойки приходят с count = 100.  В коде ровно два
значения урона, 1 и 100, поэтому граница точная, а не эвристическая.

Заодно ушёл костыль «снять бессмертие на время вызова take_hp(100)» в
hurt_by_sword — он был нужен только потому, что прежний чит глушил и
смертельный урон.

Клавиша I идёт по кругу 0 -> 1 -> 2 -> 0; в отладочной метке число
красных палочек = уровень.
This commit is contained in:
2026-08-20 10:08:52 +03:00
parent 10b920f156
commit 0ef8c4b60e
6 changed files with 33 additions and 11 deletions
+2 -2
View File
@@ -302,7 +302,7 @@ uint8_t pop_dbg_roomnav(uint8_t dir) __banked
* жёлтый x 10.. 85 уровень (1..15)
* белый x 100..175 комната (1..24)
* голубой x 190..205 скорость (1 палочка NORMAL, 2 FAST, 3 FASTEST)
* красный x 220..225 бессмертие (палочка есть = включено)
* красный x 220..230 бессмертие (1 палочка = только бой, 2 = и мелкий урон)
*
* ЦВЕТА — индексы ИГРОВОЙ палитры, и выбраны они не по вкусу, а по двум
* ограничениям.
@@ -370,7 +370,7 @@ void pop_dbg_room_label(uint8_t room) __banked
if (imm) { /* бессмертие — красный */
setfillstyle(SOLID_FILL, 0x3C);
label_bars(220, 1);
label_bars(220, imm); /* палочек = уровень (1 или 2) */
}
room_label_redraw--;
}