Решили: стат стартового здоровья заведён как доляStatType.StartHpPct, старт 1.0, — а не как абсолютное значение по образцу соседнего StartResource.

Почему: MaxHP у нас двигают пять слоёв каскада (класс, вид, персона, Судьба, предметы) плюс пассивки, которые применяются уже после сборки. Абсолютный «старт 84 HP» верен ровно для одного набора модификаторов и расходится с потолком на первом же баффе: рана «−30% стартового HP» била бы то сильнее, то слабее обещанного карточкой. Доля от потолка означает ровно то, что написано, при любом MaxHP.

Отвергнут абсолют по образцу StartResource: там потолок задаётся китом и стоит на месте, поэтому абсолют честен — сходство имён обманчиво, механика разная.

Грабли: имя выбрано не косметически. Инвариант StatKindsTests требует, чтобы каждый стат с суффиксом Pct показывался процентом, а с суффиксом Eff — множителем; назвав стат StartHp, получили бы показ «1.0» вместо «100%» и красный тест на ровном месте. Суффикс здесь — часть контракта, а не стиль.

Владелец правды: StatType.cs, StatsConfig.NaturalDefault, тест StatKindsTests.