Решили: у периодического лечения появилось убывание по стакам — _stackFalloffPct. Первый стак
идёт целиком, каждый следующий со скидкой (у «Грибного покрова» Друида — 30%). Рядом завёлся потолок
на число РАЗНЫХ эффектов с триггер-тегом, засчитываемых за одну детонацию (_maxTriggerUniques).
Почему: линейные стаки делают силу кита функцией отряда, а не его самого. У Друида взрыв лечит за каждый уникальный яд на цели: с шестью источниками яда в команде он лечил бы вшестеро, ничего не меняя в себе. Убывание оставляет первый стак весомым — ради него и стоит брать кита, — а гору стаков превращает в затухающий хвост.
Сказано: «Друид - сделай макс количество разных ядов - до 3 шт. Сделай не более 4 стаков эффекта. Повысь сильно хил за 1 стак и понизь за последующие на 30%» (2026-08-04, сессия 86077da2).
Грабли:
- Сумму стаков считаем циклом, а не степенью.
Mathf.Powв детерминированной симуляции — лишний источник расхождения между платформами, а стаков единицы: цикл дешевле и честнее. - Убывание живёт в компоненте, а не в вызывающем. Стаки набиваются повторным наложением
(
StackRule.Stack), и точка, где известно их число, ровно одна — тик компонента. Считать скидку снаружи значило бы завести второго владельца формулы.
Владелец правды: PeriodicHealComponent.EffectiveStacks, AbilityData.MaxTriggerUniques,
AbilitySystem.ApplyAllWithTag.