Каталог ран

Конкретные Ушибы, Раны и Увечья: как называются, что режут и кого бьют больнее всего. Механика слотов и каскада — Run - Injuries & Mettle; здесь только содержимое.

Заведено 2026-08-21. Все числа proposed до замера смертности бенчем забега.


Тон закрыт: рана — это медкарта

Имена медицинские, описания числовые («−35% к дальности атаки»). Пересказ ран в голосе мира отвергнут 2026-08-21: рана — счёт, который игрок оплачивает, и читаться должна как счёт.

Три правила, по которым собран каталог

1. Рана меняет РОЛЬ, а не просто режет числа. Реф — Battle Brothers: там ранение ноги мешает двигаться, ранение руки — бить, повреждённый глаз — видеть. Разница принципиальная: «−10% ко всему» делает бойца бледнее, а «не может держать дистанцию» делает его другим, и игрок вынужден перестраивать отряд, а не смиряться с минусом.

2. Каждая рана бьёт по конкретной роли больнее, чем по остальным. Поэтому в таблицах есть колонка «кому больнее»: рана — это ещё и вопрос «кого из четверых подставить под неё».

3. Что режется — максимум HP или запас на старте боя — задаёт сама рана (решение Макса 2026-08-21). Разница механическая: по максимуму не лечится ничем, по стартовому запасу отыгрывается хилом ценой маны и времени.

Стат стартового HP заведён 2026-08-21

StatType.StartHpPctдоля запаса на входе в бой, старт 1.0. Именно доля, а не абсолют: MaxHP у нас двигают класс, вид, Судьба, предметы и пассивки, и абсолютный «старт 84 HP» разошёлся бы с потолком на первом же баффе. Рана вида «−30% стартового HP» кладётся как StartHpPct ×0.7 и означает ровно это при любом максимуме.

Раны каталога по-прежнему собраны на MaxHP и прочих боевых статах — вторая полярность открыта для новых карточек, а не обязательна.

Все статы каталога — фазы 1 (реально считаются движком). Соблазнительные AbilityPower, CooldownEff, ReceiveDebuffEff и HealShieldTakenEff помечены в StatType как Ф2: рана на них просто ничего бы не сделала.


Ушибы — мелкие, 3 слота

Приходят за смерть в рядовом бою. Проходят сами примерно через 3 узла маршрута. Ощутимые: порядка −30% — мелкая не значит незаметная.

УшибЧто делаетСтатКому больнее
Подвёрнутая нога−30% скорости передвиженияMoveSpeed ×0.7Убийце и дальнику: первый не доезжает, второй не отрывается
Отбитое плечо−30% наносимого уронаDamageDealtEff ×0.7любому дамагеру
Треснувшее ребро−25% максимума HPMaxHP ×0.75Танку: его роль и есть запас
Рассечённая бровь−20% дальности атакиAttackRange ×0.8стрелку: сдвигает его на шаг в свалку
Помятый доспех−50% физической брониPhysArmor ×0.5Танку и Брузеру
Дрожь в руках−25% скорости атакиAttackSpeed ×0.75тем, кто живёт частотой, а не силой удара

Шесть на три слота — чтобы набор был разным от забега к забегу, а не одним и тем же трио.

Раны — средние, 2 слота

Приходят почти всегда переполнением: мелкая, которой некуда лечь. Сами не проходят — только за золото. Вдвое сильнее ушиба и добавляют условие.

РанаЧто делаетСтатУсловие
Разорванное сухожилие−50% скорости передвиженияMoveSpeed ×0.5
Перебитая рука−50% урона автоатакиAutoAttackDamage ×0.5
Пробитый бок−40% максимума HPMaxHP ×0.6нельзя ставить во фронтовую линию
Гниющая рана+35% получаемого уронаDamageTakenEff ×1.35
Отнявшийся глаз−35% дальности, −20% скорости атакиAttackRange ×0.65, AttackSpeed ×0.8

Условия расстановки — механика, которой пока нет. «Нельзя во фронт» требует, чтобы фаза расстановки умела запрещать зоны конкретному бойцу. Пока не умеет, «Пробитый бок» работает одними числами; условие — задел.

Увечья — тяжёлые, 1 слот

Приходят от уникальных атак элит и боссов, от тяжёлых ивентов и переполнением сверху. Ломают роль целиком: боец остаётся в строю, но играть им придётся иначе.

УвечьеЧто делаетСтат
Раздробленная нога−70% скорости передвижения; боец фактически перестаёт быть подвижнымMoveSpeed ×0.3
Отнятая рука−60% урона автоатаки, −30% скорости атакиAutoAttackDamage ×0.4, AttackSpeed ×0.7
Пробитое лёгкое−55% максимума HP, +25% получаемого уронаMaxHP ×0.45, DamageTakenEff ×1.25

Тяжёлых намеренно три, а не шесть: слот один, встречаются они редко, и каждое должно быть узнаваемым событием, а не строкой из длинного списка.


Цена снятия и имена ассетов

Ассеты заведены 2026-08-21. Цена снятия — одна на ступень (принято Максом в тот же день, journal-adr §2026-08-21 (9)): Ушиб 30, Рана 80, Увечье 200 золота при награде за бой 20 и предметах по 55-90. Внутри ступени цена одна на всех: раны различаются эффектом, а не ценником, и три числа читаются с одного взгляда.

Веса ролла — по единице у всех: внутри ступени раны равновероятны, пока замер не скажет иначе.

УшибАссетРанаАссетУвечьеАссет
Подвёрнутая ногаSprainedLegРазорванное сухожилиеTornTendonРаздробленная ногаShatteredLeg
Отбитое плечоBruisedShoulderПеребитая рукаBrokenArmОтнятая рукаSeveredArm
Треснувшее реброCrackedRibПробитый бокPiercedSideПробитое лёгкоеPiercedLung
Рассечённая бровьSplitBrowГниющая ранаFesteringWound
Помятый доспехDentedArmorОтнявшийся глазBlindedEye
Дрожь в рукахShakingHands

Как это ложится на движок

Раны — слоистые стат-модификаторы с источником (source = "injury"), ровно тот же механизм, что у перков (injuries-mettle §Общая модель). Новой машинерии не требуется. Операция — PercentMult: раны обязаны множиться между собой, а не складываться, иначе три ушиба скорости дали бы минус девяносто процентов и бойца, стоящего на месте.

В ассете лежит ДЕЛЬТА, а не множитель

Таблицы выше пишут «MoveSpeed ×0.7», а в поле Value кладётся −0.3: движок считает Π(1 + Value) (Stats.cs). Записать туда 0.7 значит выдать бойцу +70% к скорости — рана превратится в награду, и ни один тест этого не заметит.

Что реализуемо прямо сейчас, а что ждёт кода:

Тип ассета — ConsequenceData (полярность «травма/закалка», ступень, моды, срок истечения, цена снятия). Отдельного типа под раны не заводили: он уже существовал под последствия боя, а второй тип рядом был бы вторым владельцем одного факта.

НужноСостояние
стат-модификаторы по всем статам каталогаесть — все статы фазы 1
ступень травмы в данныхестьInjuryGrade (Ушиб / Рана / Увечье)
хранение ран на «Сосуде» в RunStateестьRosterSlot.Injuries
каскад переполненияестьInjuryCascade, тесты InjuryCascadeTests
стат стартового HPестьStatType.StartHpPct (рамка выше)
раны применяются в боюесть — последним слоем каскада, тесты InjuriesInBattleTests
истечение мелких по узламестьInjuryLedger.AdvanceNode, зовётся при прохождении узла
выдача раны за смерть в боюесть — команда InflictInjury, ролл по весам от сида
снятие у торговца и на привалеесть — команда HealInjury, оплата золотом или действием привала
выбывание «Сосуда» при переполнении всех шести слотовнет — каскад исход сообщает, механики нет
условие «нельзя во фронт»нет механики запрета зон
ассеты четырнадцати последствийестьScriptableObjects/Consequences/, домен consequence.*, лок-ключи RU заведены
экраны: занятые слоты, полка лекаря, выбор раны на приваленет — контракты готовы (ShopInjury)

Открытые вопросы

  • Видит ли игрок, какая именно рана прилетит, до входа в бой, или только ступень.
  • Нужны ли раны с плюсом — вроде «сросшаяся кость: −20% скорости, +15% брони». Это уже почти Закалка, и граница между ними требует вердикта.