Решения Фазы 2 (эффекты), точные даты не зафиксированы; запись извлечена из замороженного 20-explanation/effects-abilities.

Решили два независимых правила внутри модели эффектов.

1. Порядок в списке активных эффектов — по id определения, а не по порядку наложения. По этому порядку идут pre-damage реакции, тик периодики и чек-сумма детерминизма. Вставка сортированная.

2. Атрибуция ведётся списком вкладчиков и их весов — двумя параллельными списками, не словарём. Вклад растёт при каждом наложении, даже когда правило Refresh и число стаков не изменилось.

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

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

Грабли: делить тик периодики по вкладчикам можно только у компонентов, чья величина скейлится потенцией (урон, лечение). Компонент состояния — например тот, что снимает стак по таймеру — обязан отработать ровно один раз: раздели его между вкладчиками, и несколько источников начнут ускорять сход стаков. Сумма долей равна единице.

Отдельно: у коммита эффектов есть второй вход, для юнита вне боевого тика. Только что собранный фабрикой юнит обязан родиться с уже действующими пассивками, иначе выходит на арену с недобранным HP и погашенными метками. Связано с Journal - RuntimeUnit Is A Mutable Bag On Purpose.

Владелец правды: Assets/_Project/Scripts/Combat/Effects/EffectSystem.cs и RuntimeEffect рядом; закон видимости и двухфазность тика — 40-planning/tick-resolution плюс тесты тик-ордера.