Решили: дев-дуэлянт BoneDevDuelist получает BodyShade = Ash — тело перестаёт быть белым везде, где этот юнит появляется (бой, карточки, дев-стенды), потому что ступень читают все потребители.

Почему: белое тело съедает светлые аддитивные искры (см. запись «A White Body Eats Its Own Effects»). Отвергнута покраска самого префаба UnitView_BoneStandart: презентер каждый кадр пишет тинт из данных через UnitView.SetTintIUnitBodyVisual.Apply, и цвет, выставленный на префабе, был бы затёрт в первом же кадре. Ash не выдуман под задачу — он уже описан в BodyShade как «единственная ступень, заметная на ЛЮБОМ арте», и его уже носят TrainingDummy и LightShepherd.

Грабли: метрика «средняя дельта по максимуму RGB-каналов», которой я мерила читаемость эффекта, показала прирост всего 0.09 → 0.11 — а глазами разница огромная: жёлтые искры на холодно-сером теле читаются, на белом растворяются. Метрика ловит ЯРКОСТЬ и почти не ловит ТОН, поэтому по ней нельзя делать вывод «не помогло». Контактный лист рядом с числом обязателен: число здесь врёт убедительнее, чем картинка.

Владелец правды: ScriptableObjects/DevTools/BoneDevDuelist.asset (_bodyShade), UnitColorRoles.Shade (ступень → цвет из палитры), Data/Definitions/UnitColorRoles.cs (смысл ступеней).