Решили: CombatFeelConfig больше не хранит ни одного Color — называет роли
--gm-color-combat-* и берёт значения из снимка палитры, как это уже делают MapStyle и
CombatColorPalette. Два HDR-цвета свелись к ОДНОЙ роли пересвета плюс два числа-множителя
(_shardWhiteBrightness 2.75, _deathFlashBrightness 1.8).
Почему: это был не перенос, а снятие УЖЕ существующего дубля. Семь цветов конфига совпадали с
семантическими токенами значение в значение (_flashPhysical↔--gm-flare-white,
_flashElemental↔amber, _flashTrue↔gold, _flashPoison↔venom, _flashLight↔halo,
_flashDark↔violet, _healFlashColor↔mint) — и держались так ровно потому, что их никто не правил:
правка токена не меняла бой, правка конфига не меняла интерфейс. Ровно так уже разошлась карта акта.
Отвергли вариант «оставить HDR-цвета полями»: осколки и вспышка смерти отличаются не оттенком, а СИЛОЙ
свечения, и как два цвета они двоили бы один факт; в палитру же HDR не едет по правилу от 27.07.
Грабли: сверять надо было не глазами, а числами. После переезда цвета совпали с прежними до третьего знака (токен 8-битный), кроме зелёного вспышки смерти: 1.715 против 1.7 — потому что оттенок пересвета теперь один на два события, а раньше у них были свои округления. Расхождение принято сознательно, но увидеть его можно было только замером через резолверы, а не диффом ассета.
Владелец правды: Assets/_Project/UI/Theme/tokens.semantic.uss (значения),
Assets/_Project/Scripts/Presentation/Design/CombatFeelConfig.cs (роли и множители),
тест Assets/_Project/Tests/EditMode/Content/PaletteSnapshotTests.cs
(Все_роли_боевого_фидбэка_есть_в_палитре — 13 ролей по именам).