Характеристики боевых юнитов с точки зрения дизайна: что каждый стат значит для игрока и билда. Техническая спецификация (EN-имена, операции, клампы, формулы) — Тех: 11. Стат-система. Откуда статы берутся: базовый баланс HP и скорости даёт класс (см. «Классы и базовый баланс» ниже), поверх — дельта Мементо (см. 5. Мементо), затем модификаторы: перки Сосуда, предметы, гильд-бонусы ГМ.


Принципы

  • Бой читаемый и детерминированный. Нет случайных критов и промахов — одинаковые условия дают одинаковый исход. Это нужно для повторов боя, сравнения AI-профилей и честного кооп-мультиплеера.
  • Статы — это числа. Категории (тип урона, тип атаки, тип ресурса) — отдельная настройка Мементо, не число.
  • «Эффективности» — множители вокруг 100% (например, «эфф. наносимого урона 120%» = на 20% больше).
  • Базу HP и скорости диктует класс, а не персонаж. Конкретный герой — это дельта поверх классовой базы (см. ниже). Это держит числа читаемыми («танк ≈ 3000 HP») без потери покадрового баланса отдельных юнитов.

Классы и базовый баланс

Каждый боевой юнит несёт класс — типизированную ось, задающую базовый баланс HP и скорости передвижения. Класс — это не ярлык для UI, а механический вход: от него считаются числа, и из него же авто-выводится role-тег юнита. Остальные статы (урон, дальность, броня, размер) класс не трогает — их несёт персонаж/оружие.

Эталон 100% — Брузер (золотая середина): 2000 HP, скорость 3. Остальные классы — множители от него:

КлассHPСкоростьHP (абс.)Роль
Танк150%85%3000Живучий и медленный — держит фронт (агро-автоатака + перехват, см. Позиционику)
Брузер100%100%2000Золотая середина, эталон баланса
Убийца (мили-ДД)75%110%1500Хрупкий и быстрый — врывается в бэклайн
РДД65%75%1300Дальний урон, самый хрупкий
Поддержка65%75%1300Хил/баффы, самый хрупкий
Призыватель65%75%1300Держит армию, сам слаб
  • Бэклайн (РДД / Поддержка / Призыватель) — самый медленный в игре, медленнее танка. Это намеренно: бэклайн не кайтит сам, его защищает строй. Позиционирование и «держать линию» — ключевое решение расстановки, а не автопобег дальника от угрозы.
  • Три бэклайновых класса пока делят один стат-профиль (65/75), но остаются отдельными классами — они несут разную семантику (UI, AI, теги), и развести их числа позже можно правкой одной строки.
  • Конкретный персонаж кладёт дельту поверх классовой базы: «этот танк +200 HP» — это прибавка к 3000, а не переписывание абсолюта.

Урон автоатаки: класс задаёт цель, персонаж — раскладку

Класс диктует не только живучесть, но и целевой DPS автоатаки — с тем же эталоном-Брузером (решено 2026-07-26/1-2):

КлассDPS от эталонаDPS (абс.)Коридор ±25%Эталон темпа (атак/сек)
Брузер100%12090–1500.75
Танк50%6045–750.55
Убийца120%144108–1801.0
РДД100%12090–1500.75
Поддержка50%6045–750.7
Призыватель50%6045–750.7
  • Норма — на произведение, а не на сомножители. урон × скорость атаки должен попасть в коридор; как автор его разложит — его дело. Медленный тяжёлый удар и частая тычка одинаково законны, и именно темп несёт характер юнита. Эталон темпа — ориентир, а не потолок.
  • Выход за коридор требует причины в карточке. Это не запрет, а разговор: за границей обычно стоит вторая валюта (DoT, площадь, хил), и её стоит назвать вслух.
  • Коридор нормирует ТОЛЬКО автоатаку. Полный боевой вклад кита (эффекты, способности, площадь) им не покрывается — его меряют стендом. Кит с сильной второй валютой законно выходит за коридор по фактическому урону, но его автоатака всё равно живёт по норме.
  • Общий темп сознательно замедлен на четверть относительно ранних значений: при восьми юнитах на арене частые удары не читаются ни глазом, ни звуком, а фидбэк удара (вспышка, замирание, боевые цифры) на такой частоте не успевает сработать.

Броня: класс задаёт бюджет, персонаж — раскладку

Та же логика, что с уроном (решено 2026-07-26/12). Класс даёт сумму физической и магической брони, а как её распределить — дело конкретного героя:

КлассБюджет брони (физ + маг)При ровной раскладкеЭффективное HP
Танк12060 / 60 → −37%4800
Брузер6030 / 30 → −23%2600
Убийца3015 / 15 → −13%1725
РДД / Поддержка / Призыватель2010 / 10 → −9%1430

Раскладка не меняет средний запас прочности, только его форму. Танк с 60/60 держит 4800 против обеих школ; танк с 120/0 — 6600 против физики и 3000 против магии, в среднем те же 4800. Так получается потому, что эффективное HP линейно по броне (EHP = HP × (1 + броня/100)): переложить единицу из одной школы в другую — значит ровно столько же отнять у одной стороны и добавить другой. Специализация даёт разброс, а не силу: латник крепче против стали и голее против огня.

Эффективное HP — первоклассная величина баланса, а не производная. Живучесть юнита меряется им, а не голым HP: два числа (запас и броня) складываются в одно, по которому классы и сравниваются. В стенде это колонки EHP_phys / EHP_magic; классовая норма — столбец выше.

Рекомендованные числа вне классовой оси

Часть статов к классу не привязана — их диктует способ боя, а не весовая категория. Для них канон держит не коридор, а норму-ориентир: отклоняться можно, но с причиной в карточке (решено 2026-07-26/13).

ПараметрПривязан кГрадации
Дальность атакитипу доставкиБлижний 1 · Древковый 3 · Дальний 8 · Осадный 12
Скорость снаряда«весу» снарядаЛёгкий (стрела, дротик) 14 · Обычный (луч, копьё) 10 · Тяжёлый (шар, валун) 7
Реген HPничему0 — восстановление это свойство кита, а не фон
Эффективности (наносимого/получаемого урона, лечения, эффектов, перезарядки)ничему1.0 — отклонение всегда дизайн-акцент
Ресурскитузапас 100, старт 0, потолок набора 10/сек
  • Осадная дальность (12) пока задел: в ростере её никто не носит. Заведена, чтобы у будущего снайпера/баллисты был не «Дальний с плюсом», а собственная ступень.
  • Размер юнита сознательно не нормируется (пока у всех 1.0). Он влияет на радиус тела и досягаемость атаки, то есть это механика, а не косметика — вводить его как ось имеет смысл, когда появятся существа заметно крупнее человека.

Формула снижения — урон × K / (K + броня) при K = 100, то есть та же, что в LoL и TFT. Выбрана осознанно: процент снижения имеет убывающую отдачу (броня не даёт неуязвимости), а эффективное HP растёт линейно (баланс складывается сложением, а не решением уравнений). Формулы вида «снижение зависит от размера удара» (Path of Exile) отклонены: в автобою игрок не видит расчёта и не может отреагировать, и переменная защита читается как несправедливость.

Каскад стат-базы (4 уровня)

Итоговый стат собирается сверху вниз, каждый уровень уточняет предыдущий:

УровеньИсточникРоль
1StatsConfigГлобальный фолбэк (например, враги-болванки без класса)
2КлассБазовый баланс HP и скорости от класса
3Персона (Мементо / юнит)Дельта конкретного героя поверх класса
4Сосуд (Vessel)Перки-модификаторы поверх всего (Фаза 2/4)

Внутри каскада работают две разные оси (не смешивать):

  • База — победитель ровно один: значение диктует последний уровень, который его задал жёстко. Поэтому Сосуд, если захочет, закрывает базу класса и персоны своим абсолютом.
  • Модификаторы — прибавки и множители (+X, +X%, ×) от персоны, мементо, перков Сосуда и боевых баффов копятся и перемножаются поверх базы. «+20% HP от такого-то Сосуда» ложится сюда, не касаясь классовых баз.

Техническая формула сборки и операции (Override / Flat / PercentAdd / PercentMult) — Тех: 11. Стат-система.

Каскад врага: класс → вид → подвид → юнит

У врагов между классом и юнитом добавляются групповые скейл-слои — та же механика групп, просто носитель (враг) подставляет свои уровни:

StatsConfig  →  Класс(база)  →  Вид(скейл)  →  Подвид(скейл)  →  Юнит EnemyData(флэт)
  • Вид (Species) — стат-скейл общего вида: Гоблины ×0.4 HP, ×1.1 скорость; Големы — стойкие и медленные и т.д. Единая шкала: «гоблин = 40% героя того же класса». Наследуется всеми юнитами вида — правится в одном месте.
  • Подвид (Subspecies) — малые модификаторы поверх вида (Северные гоблины: +резист Лёд). Задел; наполняется, когда подвид входит в игру.
  • Юнит (EnemyData) — флэт конкретного врага, как персональный стат-блок мементо.

Фракция (Faction) к этому каскаду не относится — это пул генерации волн (кто может выпасть вместе), а не стат-ось. CreatureType (Живое/Зверь/Нежить) — тоже отдельная ось (сродства, см. ниже), не путать с Видом, даже если имена совпадают («Звери» / Зверь).

У героя параллельный каскад: StatsConfig → Класс → Мементо(персона) → Сосуд(Vessel).


Категории Мементо (не числа)

НастройкаВарианты
Тип урона (обязателен)Физическая ветка: Дробящий / Режущий / Колющий / Кровотечение / Яд физический. Магическая: Огонь / Лёд / Молния / Аркана / Яд магический. Чистая (мимо брони): Свет / Тьма / Чистый. Тип обязателен у каждого источника урона отдельно — у автоатаки свой, у каждой способности свой, наследования от юнита нет (реформа 2026-07-30). Аркана — законная «магия без стихии». Чистый — урон мимо брони без окраски (Раскол холодной статуи).
Школа урона (следствие)Физическая / Магическая / Чистая — автором не задаётся, а выводится из типа: это то, какая броня гасит удар. Отдельного поля школы нет ни в ассете, ни в запросе урона, поэтому тип и школа не могут разойтись.
Тип существаЖивое / Нежить / Конструкт / Демон / Зверь / … Таксономия юнита (у мементо тоже, не только у врагов). Редкая специя на отдельных врагах (напр. Нежить устойчива к Яду), а не главный гейт сродства — решено 2026-07-15. Отдельно от фракции (фракция — организационная группа врагов; тип существа — что юнит есть).
Тип атакиБлижний бой / Снаряд / Луч / Мгновенно / Нет автоатаки / Наследует. Паттерн атаки дополнительно задаёт линию, AOE, цепь, пробивание и т. п.
Тип ресурсаНет / Мана / Ярость / … Базовая модель: Мана восстанавливается по времени, Ярость копится в бою (см. glossary); точные числа/кривые восстановления — прорабатываются.

Тип урона и школа (модель урона)

Канон-дом модели урона — этот раздел

Тех-вика описывает реализацию той же модели; при расхождении дизайна и реализации главнее этот док. Инженерная развилка и отвергнутые варианты — запись журнала «Damage Type Is One Axis And The School Follows» (2026-07-30).

Одна ось, и она обязательна (решено 2026-07-30)

Автор контента задаёт тип урона, и только его. Школа (Физическая / Магическая / Чистая) — следствие типа, отдельным полем не существует: «физический огонь» невыразим, а тип и школа не могут разойтись.

Тип обязателен у каждого источника отдельно: у автоатаки свой, у каждой способности свой, у каждого бьющего эффекта свой. Наследования от юнита нет — прежний Inherit был единственным способом не назвать тип и выглядеть при этом законно. Пропуск ловится тестом покрытия по всему контенту, а не внимательностью автора: раньше «просто физический» урон проходил молча, и взрыв костяного щита из-за этого не попадал в хрупкость холодной статуи.

Идентичность — это глагол, а не резист-матрица (решено 2026-07-26)

Яд травит (DoT + негативный дебафф), Свет очищает и лечит частью урона, Тьма бьёт голой мощью. Идентичность самодостаточна и работает против любого врага; «повезло с типом цели» её частью не является. Матрица «урон × тип существа» снята из кода 2026-07-26 (отклонена 2026-07-15/35), и её возврат ловит guard-тест DamageType_NeverScalesDamage_ByCreatureType. Уязвимости и иммунитеты вернутся контентом — свойством конкретного врага («нежить не кровоточит»), а не правилом для класса целей.

Как читать модель:

  • Школа — числовая ось, которую гасит броня. Их намеренно мало: две (Физическая, Магическая) плюс Чистая, которая броню игнорирует. Магия — одна броня на Огонь / Лёд / Молнию / Аркану; различия стихий живут в механике (поджог-DoT / заморозка-slow / цепь-burst), а не в отдельных резистах.
  • Тип — природа удара, и он несёт идентичность дальше по цепочке: «Угли» копятся только с Огня, промороженная цель получает +20% от Дробящего, «Разрыв» читает Кровотечение. Броню тип не делит.
  • Кровотечение — свой тип, а не «физика без уточнения». Школа у него фиксированно физическая, а природа своя: как Колющее оно попадало бы под «уязвимость к колющему» и не давало бы выразить «нежить не кровоточит».
  • Яд — единственная природа с переменной школой: DoT идёт по школе конкретного яда, Физической или Магической, и никогда не Чистой (решение 2026-07-25/4). В списке типов он поэтому занимает два значения — «Яд физический» и «Яд магический», — чтобы правило «тип → школа» оставалось без исключений в коде. Отравленный клинок выражается двумя ударами: Колющее на попадание, Яд на тик.
  • Свет и Тьма — Чистые, мимо брони (потому самые редкие): Свет с акцентом на очищение и хил союзнику, Тьма — на большую мощь. Идентичность — effects.
  • Гибриды бьют двумя ударами разных типов, а не одной цифрой с половинчатой школой: «Ядовитая печать» — половина Ядом физическим, половина магическим; взрыв «Водяного щита» — половина Дробящим, половина Льдом. Так каждая половина режется своей бронёй и будит своих потребителей, а игрок видит две честные цифры.

Почему не 12 броней: каждая ось брони — то, что игрок обязан отслеживать по каждой цели. Две читаемых оси дают глубину без броне-матрицы (кооп-координируемо). Глубину свапа несут в первую очередь роли, механики и синергии; типы — специя.


Характеристики

Выживаемость

СтатЧто значит
Макс. здоровьеЗапас HP. Кончилось — юнит выбывает
Реген HP (число/сек)Восстановление фиксированного числа HP в секунду
Реген HP (% макс/сек)Восстановление % от макс. HP в секунду
Физ. броняСнижает урон физической школы (по убывающей — много брони не даёт 100% защиты). Может уходить в минус (тогда урон усиливается)
Магическая броняТо же для магической школы (Огонь / Лёд / Молния / Аркана)
Эфф. получаемого уронаОбщий множитель всего входящего урона (100% = норма; меньше = крепче)
Получаемая сила исцеления/щитовНасколько эффективно на юните работают лечение и щиты

Атака

СтатЧто значит
Урон автоатакиБазовый урон обычной атаки
Скорость атакиАтак в секунду
Дальность атакиНа каком расстоянии юнит может бить (с учётом размера)
Сила навыков (AP)Усиливает параметры способностей и пассивок, которые от неё зависят
Физ. пробивание (плоское / %)Игнорирует часть физ. брони цели (фикс. число и/или процент)
Магическое пробивание (плоское / %)То же для магической брони
Эфф. наносимого уронаОбщий множитель всего исходящего урона
Вампиризм% от нанесённого урона возвращается как HP

Исцеление / щиты

СтатЧто значит
Исходящая сила исцеления/щитовНасколько сильнее лечение и щиты, которые юнит выдаёт другим

Снаряд

СтатЧто значит
Скорость снарядаКак быстро летит снаряд дальнего юнита
Пробивание снарядаСколько целей снаряд проходит насквозь (0 — стоп на первой)

Подвижность

СтатЧто значит
Скорость передвиженияКак быстро юнит ходит по полю
Размер юнитаВлияет на модельку, радиус тела (расталкивание) и досягаемость атаки

Эффективность эффектов

Эти четыре стата меняют только длительность эффектов, не их силу. Но удлинение по времени увеличивает суммарный итог: HoT «160 HP за 5 сек», растянутый до 10 сек, восстановит 320 HP (та же скорость, вдвое дольше). Силу эффектов (урон/тик, хил/тик, величину щита) меняют другие статы — сила навыков и множители урона/исцеления.

СтатЧто значит
Эфф. наложения положительныхДлительность баффов, которые юнит накладывает
Эфф. наложения негативныхДлительность дебаффов, которые юнит накладывает
Эфф. получаемых положительныхДлительность баффов, которые юнит получает
Эфф. получаемых негативныхДлительность дебаффов на юните, включая контроль (меньше = устойчивее к оглушениям и т.п. = tenacity)
Эфф. перезарядкиМножитель времени КД способностей (меньше = чаще касты)

Ресурс (только геройские мементо)

СтатЧто значит
Макс. запас ресурсаПотолок маны/ярости/…
Начальный запасСколько ресурса в начале боя
Эфф. получения ресурсаМножитель набора ресурса

Восстановление ресурса (решение 2026-07-27, уточнено 2026-07-28)

Ресурс капает по времени: 5 в секунду, одинаково у всех. Темп способности считается в уме: стоимость ÷ 5 = секунды между кастами.

Набор от попаданий снят. Пока ресурс капал с ударов, скорость атаки была двойным бустом — быстрее бьёшь, чаще ульта, — а темп способности зависел ещё и от того, дотянулся ли кит до цели.

Три уточнения от 2026-07-28:

  1. Запас маны равен стоимости активки. Полная шкала = ровно один каст, поэтому заполненная полоска и есть «готово» — игроку не нужно держать в голове ни запас, ни отдельный кулдаун.
  2. Гейт каста один — ресурсный. Кулдаун у ресурсных активок равен нулю. Иначе темп держат два владельца сразу, разгон набора ресурса теряет смысл, а числа расходятся при каждой правке.
  3. Ману тратит ровно одна способность кита, не больше. Остальные навыки — пассивки (со своими зарядами или внутренним КД) либо бесплатные активки вроде «Марша» Барабанщика.

Действующие числа ростера (запас = стоимость):

КитСпособность на манеСтоимость и запасКаст раз в
Ассасин«Уйти в тень»7515 с
Огненный мечник, Надёжный защитник«Воспламенение», «Решительный удар»5010 с
Железный копейщик«Стальной вихрь»459 с
Друид«Взрыв спор»459 с
Монах вихря«Шквальный толчок»6012 с
Криомант«Ледяная зона»408 с
Древень«Разрастание»408 с
Лесной следопыт, Светлый пастырь«Метка охотника», «Длань жизни»306 с

Друид и Древень переведены на ману с чистого кулдауна (были 11 и 12 с), Ассасин получил активку специально ради того, чтобы ресурс был и у него.

Стартового ресурса нет ни у кого (решение 2026-07-28): шкала набирается с нуля, первый каст приходит по темпу. Прежние StartResource в статблоках были тестовыми — у Монаха он позволял открыть бой толчком, и это второй владелец темпа: способность выходила раньше собственного интервала.

Тип ресурса пока один — Мана (либо его нет вовсе, как у Убийцы). Ярость откладывается сознательно: разделение «мана по времени / ярость от действий» остаётся вектором, но второй режим не заводим, пока не выстроен баланс одного. Плата известна — Мечник временно не может разгонять темп ульты вложениями; вернётся вместе с Яростью.

Сила навыков (AP): модель роста (решение 2026-07-28)

AP — ось роста внутри забега, а не часть базовой силы. Базовое значение способности уже достаточное; AP — то, чем игрок разгоняет его до поломки, если решил в это вложиться.

Шкала: старт 0 у всех, средний реальный вклад за забег ~50, конец акта при осознанной ставке ~100, мега-везение и практический максимум ~200. AP качают нечасто — это не обязательная стата.

Откуда AP берётся (решение 2026-07-28): квесты (Судьбы «Сосуда» — см. Run - Vessel Progression), уникальные эффекты, выдаваемые за квесты, и предметы. Классы и мементо базового AP не дают — иначе он перестаёт быть ставкой игрока и становится невидимой частью базы.

Форма скейла — аддитивная: итог = база + коэффициент × AP. В карточках пишется как «+3 урона за 10 AP», а не коэффициентом: числа должны читаться с листа.

Щедрость зависит от того, насколько AP ожидаем для кита:

ОсьКомуЧто раститНасколько
ОжидаемаяКастеры: маги, хилы, контроллерыГлавные числа — урон, лечение, щит, длительность контроляПредсказуемо: AP их основной способ усиления
ОпциональнаяФизические киты: убийцы, танки, брузерыВторичное — дальность, радиус, длительность бафов, множителиЩедро: вкладываться им нелогично, значит ставка обязана окупаться заметно

Правила, действующие поверх:

  1. Капов почти нет. Игрок должен иметь возможность разогнать способность до поломки; ограничение ставится только там, где без него параметр теряет смысл (штраф скорости «Стрельбы на ходу» ушёл бы в плюс и стал ускорением).
  2. Длительность контроля скейлить можно — стан, корень, заморозка. Это самый мощный вектор, поэтому он отдаётся тем, чья фантазия и есть контроль (Криомант).
  3. Один параметр может расти от нескольких статов сразу (AP + сила атаки + скорость атаки + броня), если это логично по концепции кита. Запрета на «двойной источник» нет.
  4. Где у величины потолок встроен в смысл (снижение урона, замедление, доля), AP растит не процент, а то, что рядом: длительность, величину, радиус, число зарядов. Так поломка остаётся возможной, а значение не упирается в математический предел.

Конкретные скейлы по каждому мементо и порядок реализации — docs/ap-and-skills-progress.md.


На будущее (отложено)

  • Уровни юнитов в бою — пока нет; прогрессия идёт между боями через Мементо и перки. Решение отложено.
  • Криты — пока нет. Если появятся, будут детерминированными (например «каждый 3-й удар — крит»), без случайности.
  • Ярость как второй тип ресурса (копится в бою от действий) — отложена 2026-07-27, см. §Восстановление ресурса.
  • Анти-хил (grievous wounds) — множитель −% к получаемому лечению как каунтер против хил-комбо. Существует и как чистый дебафф, и свёрнут в идентичность Яда (отравлённый лечится хуже) — см. effects. Нужен, т.к. в ростере есть сильный хил.
  • Формулы физической и магической брони и стандартные значения по классамЗАКРЫТО, и закрыто было выше в этом же файле: формула урон × K / (K + броня) при K = 100 и классовые бюджеты брони живут в §Броня (решение 2026-07-26/12). Строка «открыты» пережила собственный вердикт и врала три дня, делая файл вторым владельцем своего же факта. Снято 2026-07-30 по указанию Макса.
  • Статы силы призывов (заявка Макса 2026-07-29) — отдельно живучесть призывов и отдельно их урон, чтобы предметы и эффекты могли усиливать одно без другого. Сейчас призыв наследует числа своего определения, и «усилить призывы» нечем. Первый носитель — предметы (items-banners).
  • Скейлы «первой атаки» (заявка Макса 2026-07-29): урон от AD и скорости атаки, дальность от силы умений, у физических китов сила умений даёт бонусы дополнительным параметрам; сама атака игнорирует flat-часть брони. Последнее требует ответа: броня у нас процентная K/(K+armor) и flat-части в формуле нет — либо вводится плоское слагаемое, либо формулировка означает другое («игнорирует N единиц брони»).