SunMirror
Catch the sun with a frisbee-mirror and blind a teammate: they cover their face, freeze with spiral eyes, and can't move until you look away. Hold the beam on their eyes long enough and they drop.Changelog
0.1.22
- Клавиша-дубль (
Controls/UseKey, по умолчанию F) снова работает. Она требовала_held != null— ссылку на старый предмет-проп, — а с нынешним зеркалом как viewmodel-клоном_heldпуст. В логе это выглядело как «F press: held=НЕТ holdingMirror=True active=False»: нажатие проходило, калитка не открывалась. Теперь условие принимает оба случая.
0.1.21
- Тряска ещё сильнее:
Effect/FallShake10 (как срыв на стене у самой игры),Emote/RootFallShake5. Напоминание про потолок: у игрока с настройкой «меньше тряски» значение делится на 2 и обрезается до 3, выше 6 смысла нет. - Отладка, чтобы поймать пропажу зайчика: раньше калитка луча молчала. Условие
включения —
(_holdingMirror && ЛКМ) || (_held != null && клавиша F), и по логу нельзя было отличить «не нажимал» от «нажимал, но калитка закрыта»: клавиша F не логировалась вовсе. Теперь логируются нажатие F (с состояниемheld,holdingMirror,active) и два молчавших выходаUpdateSpot— «персонажа или камеры нет» и «луч ни во что не попал».
0.1.20
- Тряска камеры поднята до масштаба игры. В игре её не чувствовалось вовсе, и
дело оказалось не в доставке, а в единицах.
RPCA_FallзовётAddPerlinShake(shake, 0.4f), а сама игра работает так: приземление — 5, срыв на стене — 10, лава — 5, удары по интерфейсу — до 30. Наши 0.6 и 1 были в разы ниже самой слабой штатной тряски, то есть неотличимы от нуля. Новые значения по умолчанию:Effect/FallShake5 (было 0.6),Emote/RootFallShake2.5 (было 1; оно обновляется каждые 0.5 с, поэтому мягче). Выше 6 ставить бессмысленно: у игрока с настройкой «меньше тряски» значение делится на 2 и обрезается до 3 (amount *= 0.5f; amount = Mathf.Min(amount, 3f)). Поправка к записи 0.1.16: там сказано, что тряска «теперь доходит». Доходила она и тогда — просто амплитудой, которой не видно. - Проверено в игре на 0.1.19: падение на четвёртой секунде работает, удержание
держит, вбок больше не уйти. Якорь из 0.1.18 и убранный
UnFallиз 0.1.19 подтверждены живым прогоном.
0.1.19
- Починено: на четвёртой секунде жертва не падала в стан. Падение
отправлялось и тут же отменялось — своим же вызовом. Снятие по потолку идёт
TryFireCap→DropVictim(RPCA_Fallна 1.6 с) →RestoreBlind→UnrootVictim, а тот с 0.1.16 шлётRPCA_UnFall, который обнуляетfallSeconds. Всё в одном кадре и в том же порядке по сети:UnFallприходил последним и гасил падение. В логе это видно прямо — строка «Падение ... на 1,6 с, по сети» и сразу за ней «Blind RESTORE». В игре выглядело так: эмоуты прекращаются, стана нет, можно убежать.RPCA_UnFallбыл нужен в 0.1.16, когда само удержание шло падением. После возврата на крепление в 0.1.17 он стал чистым вредом и убран:fallSecondsстекает сам, а удержание снимается чисткой сустава.
0.1.18
- Починено: от прибитого зайчика можно было уйти, просто давя вбок. Крепление обновлялось каждые полсекунды по ТЕКУЩЕМУ месту бедра — то есть работало храповиком: человек, упираясь в сторону, за полсекунды сдвигался на шаг, а следующее крепление принимало этот шаг за новую норму. Так и выходил из луча, медленно, но беспрепятственно. Теперь якорь берётся один раз на эпизод, и все обновления тянут к одной и той же точке. Если жертву всё же унесло дальше 2.5 м (упала, столкнули), якорь переносится к ней — тащить человека через полкарты на верёвке незачем.
- Починено: спиральные глаза оставались навсегда, даже когда луч не светит.
Виноваты два обстоятельства, наложившиеся друг на друга. Первое: оба метода
игры, которые ставят и снимают спираль, заперты за одним флагом —
CharacterPassedOutиOnRevive_RPCначинаются сif (!forcePresetEyes), — а мод этот флаг сам поднимает, чтобы игра не возвращала обычные глаза каждый кадр. Второе:BeginBlindсрабатывал повторно поверх живого эффекта (в логе два «Blind begin» подряд без снятия между ними), и новое состояние затирало прежнее. Вместе это давало замок:forcePrevзаписывался какtrue, потому что флаг уже был поднят первым вызовом, а бэкап лица снимался с уже подменённых текстур — «оригиналом» становилась спираль. После такого возврат ставил спираль обратно, а игре возврат был заперт поднятым флагом. Теперь повторныйBeginBlindсначала честно снимает прежний эффект, а в бэкап не попадает то, что уже подменено. - Отладка:
F1ответил на вопрос, открытый с 1 ноября. Ни один префаб игры не несёт ослепления в полях —Affliction_Blindигроку БЕЗ мода действительно недостижим. Канала, который передал бы его, в игре нет.
0.1.17
- Обездвиживание возвращено на прибитие: падение убивало всё зрелище.
Проверка в живой игре показала то, чего не видно по коду: с
RPCA_Fallжертву «станит сразу», без эмоутов и без нарастания. Причина в устройстве персонажа. Падение обнуляет контроль над телом (GetTargetRagdollControll()возвращает 0), а персонаж в PEAK — физическая кукла: аниматор только задаёт ей цели, которые отрабатывают мышцы. При нулевом контроле цели ни на что не влияют, и руки к лицу, «нет-нет», удержание позы — всё пропадает. Остаётся мгновенно обмякший человек. Выбор здесь жёсткий, одно взамен другого: либо полноэкранный пост-эффект игры и обмякшее тело, либо поза и мимика. Поза важнее, в ней весь мод, поэтому удержание снова идёт черезRPCA_Stick, а пост-эффект остаётся на финал — в падении на четвёртой секунде, где он и задуман. - Механизм теперь один на все случаи: крепление не роняет ни стоящего, ни
висящего на стене, так что разделение «на земле иначе, чем в воздухе» не нужно.
Emote/RootFallSecondsубран — он относился только к падению. Тряска камеры осталась:RPCA_Fall(0f, shake)счётчик не поднимает (if (seconds > data.fallSeconds)), аAddPerlinShakeзовётся, то есть трясёт, не обмякая. - Уточнение к записи 0.1.16: там сказано, что переприбивание из 0.1.15 «лечило
криво». Это было сказано зря — ту починку на живом ванильном клиенте не
проверяли ни разу. Лазейка с прыжком известна по коду игры (
JumpStickEffectдобавляет 0.5–1.5 с при пороге 4 с), но новое крепление счётчик обнуляет, а обновление идёт каждые 0.5 с, так что напрыгать побег за полсекунды нечем. Проверять это надо в игре, а не в рассуждении.
0.1.16
- Обездвиживание переведено с прибития на падение. Прибитие (
RPCA_Stick) держало плохо по причине, заложенной в самой игре:jumpActionподписан наJumpStickEffect, и каждый прыжок приближает освобождение на 0.5–1.5 секунды при пороге в 4. Переприбивание каждые 0.8 секунды из 0.1.15 это лечило, но криво. Теперь идётRPCA_Fall, и он делает на клиенте жертвы сразу три вещи:fallSecondsобнуляет контроль над телом (GetTargetRagdollControll()возвращает 0, как у потерявшего сознание), поднимает вес Volume уFallPost— то есть у жертвы идёт полноэкранный пост-эффект самой игры, — и трясёт камеру. Прыжком это не обойти: при нулевом контроле прыгать нечем. Урона нет. Настройки:Emote/RootFallSeconds(1.2),Emote/RootFallShake(1.0),Emote/RootRepeatSeconds(0.5 — частота обновления). - Починено: тряска экрана никогда не доходила до жертвы. Падение в конце
ослепления шло через
Character.Fall, а тот молча глушит тряску для чужих персонажей:if (!refs.view.IsMine || screenShake < 1E-05f) screenShake = 0f;. НастройкаEffect/FallShakeсуществовала с самого начала и не делала ничего. Теперь тряска уходит отдельным адресным вызовом — лично жертве, а не всему лобби:GamefeelHandlerв игре синглтон, и общий вызов затряс бы камеры всем. - На стене и в воздухе теперь не отпускает, а держит. Первая версия этой
правки просто не трогала висящих — ронять их нельзя, в игре про подъём на гору
это означает сорваться. Но и отпускать незачем, так что для них идёт другой
механизм:
RPCA_Stick— крепление к миру с запертым перемещением и свободным вращением. Человек остаётся жёстким и висит там, где был, состояние климба игра при этом не трогает вовсе. Падения нет и быть не может: пока крепление держит,HandleStickUpdateкаждый кадр зовётClampSinceGrounded(0.5f), так что счётчик полёта не растёт и урон от падения не копится. Тряска до них доходит тоже —RPCA_Fall(0f, shake). Ноль секунд счётчик не поднимает, внутри стоитif (seconds > data.fallSeconds), аAddPerlinShakeзовётся всё равно: получается чистая тряска камеры без обмякшего тела. - Отладка:
F1теперь, кроме списка имён, ищет префабы, у которых состояние прописано в полях — компонентыAOEиAction_ApplyAffliction. Это нужно, чтобы закрыть вопрос про своё ослепление игры (см. CLAUDE.md): передать его игроку без мода можно только через префаб, в котором оно уже настроено, а по файлам данных это не проверяется. - Состояние игры (
BlindStatusType,BlindStatusAmount) вынесено в отдельный метод и по-прежнему выключено по умолчанию. Оно больше не привязано к механизму обездвиживания.
0.1.15
- Ослеплённый больше не уходит прыжками. Главное обещание мода — «не может
двигаться, пока на него светят» — у игроков БЕЗ мода не выполнялось: человек
спокойно уходил в сторону, останавливаясь лишь на секунду анимации эмоута.
Причина в самой игре: каждый прыжок приближает освобождение от удержания на
0.5–1.5 секунды при пороге в 4, а мод прибивал жертву ровно один раз и больше
к этому не возвращался. Теперь прибивает заново, пока держится луч. Частота —
Emote/RootRepeatSeconds, по умолчанию 0.8 секунды;0возвращает прежнее поведение. Потолок в 4 секунды и пауза после него не тронуты, окно для побега у жертвы остаётся. - Новое: экранный эффект можно передать игроку без мода. Раньше считалось,
что это невозможно в принципе. Оказалось, у игры есть свой канал:
RPCA_Stickнесёт состояние вместе с удержанием, и клиент жертвы сам играет звук, частицы и эффект на экране. Включается настройкамиEmote/BlindStatusType(по умолчаниюDrowsy) иEmote/BlindStatusAmount. По умолчанию выключено: состояния в PEAK наносят настоящий урон и копятся, величину надо подбирать с малого.Sporesне ставьте — при 0.5 начинается превращение в зомби. - Отладка: дамп префабов переехал с
GнаF1. НаGпо умолчанию виситControls/EquipKey, и одно нажатие делало сразу два дела — брало зеркало и сыпало в лог список префабов. - Отладка: описание
Debug/DebugKeysв конфиге приведено к тому, что на самом деле обрабатывается. Прежний список отстал от кода. - Отладка: починено рукопожатие двух клиентов на одной машине — терялся регион Photon и подменялась аутентификация. Правда, выяснилось, что двум клиентам с одного Steam-аккаунта в одну комнату не попасть никак: сервер выдаёт идентификатор по Steam-билету. Нужны два аккаунта.
0.1.14
- Зеркало больше не светит само по себе. У вспышки на диске висел настоящий
точечный светильник — яркость 12, радиус 8 метров, во все стороны, прямо в
руке у игрока: вокруг тебя подсвечивались земля, камни и стены. Светить
должно туда, куда направлен зайчик, и больше никуда. Светильник выключен,
светящаяся картинка вспышки осталась. Вернуть можно в конфиге,
Spot/SignalLightBrightness. - Блик и вспышку больше не видно с задней стороны зеркала. Тот, кто держит зеркало, видел у себя в руках яркую звезду, хотя смотрит диску в спину. Теперь обе вещи считают лицевую сторону по лучу: их видит только тот, кто стоит со стороны зайчика.
- Пульсация яркости свелась к одной настройке
Model/FlashPulseAmount. Раньше таких синусоид было три в разных местах, и выключение одной ничего не меняло.0— совершенно ровное свечение. - Для отладки: клавиша
Y(приDebug/DebugKeys = true) выдаёт боту зеркало и заставляет светить в тебя — чтобы посмотреть на ослепление глазами жертвы.
0.1.13
- Свой сетевой вызов мода теперь уходит только игрокам, у которых мод стоит. Раньше он рассылался всем, и у игроков без мода Photon писал в лог ошибку «метод не найден» на каждую посылку луча. Мод отмечается в каждой комнате свойством игрока и шлёт свой вызов только отмеченным.
- Для игроков без мода ничего не изменилось: руки к лицу, удержание на месте, спиральные глаза и падение по-прежнему доставляются родными вызовами игры.
0.1.12
- Проверено на PEAK 3.0.1 (обновление игры 24.10.2026): мод загружается без ошибок, зеркало, луч и стенд F4 работают. Код не менялся.
0.1.11
Игроки БЕЗ мода теперь видят почти весь эффект. Было три пункта из восьми, стало пять. Нового кода для этого почти не потребовалось: нужно было найти в самой игре сетевые методы, делающие то же самое, — их исполняет клиент жертвы своим кодом, и мод ему не нужен.
- Обездвиживание (
Emote/RootVictim). РоднойRPCA_Stickприбивает цель на месте. Урона нет: внутри стоит проверка на величину статуса, мы передаём ноль. Зависнуть нельзя — игра сама снимает удержание через 4 секунды, причём командует этим клиент самой жертвы, так что вылет стрелка ничего не ломает. На карабкающихся не применяется. - Спиральные глаза (
Emote/SpiralEyesForEveryone). РоднойCharacterCustomization.CharacterPassedOut— чисто косметический: ставит текстуру и включает вращение. Настоящая отключка живёт в другом методе и не затрагивается: человек не теряет сознание, у него просто крутятся глаза. - Потолок сведён к 4 секундам. Было пять, и получался разрыв: на 4-й секунде игра снимала удержание, жертва секунду стояла свободной и только потом падала. Теперь освобождение и падение совпадают.
Чего передать нельзя и почему: рот и засвет экрана сетевого пути в игре не имеют, а вспышки света нет среди ресурсов — в них 285 префабов, и подходящего не нашлось. Это предел, а не недоделка.
0.1.10
- У мода появился свой Discord: https://discord.gg/ARuemW9sbB — ссылка бессрочная, проверено через API Discord (expires_at = null). Обычные приглашения живут сутки, и в описании мода такая ссылка быстро стала бы битой. GitHub Issues остаётся вторым каналом для тех, кому так привычнее.
- Отладка: клавиша G печатает список префабов, которые игра может создать у ЛЮБОГО клиента по сети — в том числе у игрока без мода. Нужно для работы над тем, чтобы эффект был виден всем, а не только владельцам мода. Автоматический вывод при запуске — Debug/PrefabDumpSecondsAfterStart.
0.1.9
Падение в конце ослепления наконец работает так, как написано. Три причины, по которым оно не наступало, — все три в нашем коде.
- Потолок не зависит от сети. Проверка жила только в обработчике обновления эффекта, а он вызывается, пока стрелок шлёт ослепление по сети. При удержании луча обновление шло каждые 0.25 с и всё работало; при одном попадании потолок не проверялся вовсе и падение не наступало никогда. Теперь проверка идёт каждый кадр, независимо от сетевых посылок.
- «Фитиль» горел вдвое медленнее реального времени. При накоплении слив вычитался и за текущий кадр тоже: прибавили dt и тут же отняли dt × BlindChargeDrain. Потолок в 5 секунд набирался за 10. Теперь сливается только то время, что цель была без луча.
- Debug/SelfTarget больше не переживает перезапуск. Это тестовый тумблер (клавиша J), но он сохранялся в файл: одно случайное нажатие — и мод молча начинал слепить хозяина вместо цели, причём в логе всё выглядело исправным. Теперь гасится при каждом запуске, и если в конфиге стояло «включено», об этом пишется предупреждение.
Проверено на лезущем по скале: ослепление держится, падение срабатывает, персонаж не срывается и не гибнет. Защиту «не ронять карабкающихся» решено не добавлять — она оказалась не нужна.
Первая строка описания возвращена к прежней: вариант про уступ обещал, что ослеплённый сорвётся вниз, а это неправда.
0.1.8
- Новая иконка: рисунок в стиле карточек PEAK вместо прежнего скриншота. Старая была собрана из далёкого кадра, где голова персонажа занимала около 80 пикселей, и растянута до 256 — отсюда каша. Новая собрана уменьшением один раз из рисунка 1254x1254, поэтому резкая, и читается даже в списке модов, где иконку показывают размером с ноготь.
- Гифка на странице стала 800x450 вместо 480x270 при том же весе: страница показывает её без растягивания.
0.1.7
- Страница мода переписана. Видимая часть втрое короче, технические подробности убраны в сворачиваемые блоки, фидбек поднят из подвала наверх. Заголовок таблицы совместимости теперь прямо заявляет главное: эффект работает и на тех, у кого мода нет.
Spot/UseLight— отдельный выключатель прожектора в точке попадания. Нужен, чтобы проверять причастность света к мерцанию соседних поверхностей без пересборки мода.
0.1.6
- На странице мода появился ролик: пятно приходит по песку к лицу, жертва закрывается руками, спиральные глаза, и через пять секунд падение.
- Свечение зеркала больше не раскачивает автоэкспозицию игры. Оно пульсировало
синусоидой с периодом 0.52 с, зеркало занимает низ экрана и светится ярче
белого — экспозиция шла за этой пульсацией, и вместе с зеркалом «дышала»
вся картинка. Со стороны это читалось как мерцание поверхностей, хотя
поверхности были ни при чём. Пульсация и яркость вынесены в настройки:
Model/FlashPulseAmount,Model/FlashEmission,Model/FlashPulseSpeed. - Прожектор зайчика больше не подсвечивает то, что стоит за целью. Его
дальность задавалась с запасом «размер + 0.5 м»: на песке запас уходил под
землю и был незаметен, а при попадании в лицо за поверхностью оказывалась
стена, и на ней загоралось второе, паразитное пятно
(
Spot/LightReachBeyond).
0.1.5
-
Падение включено по умолчанию. Жертва валится с ног, накопив пять секунд ослепления в глаза, и встаёт через полторы. Повторно ослепить ту же цель нельзя ещё четыре секунды.
До этой версии падение было выключено: оно летит штатным RPC игры и валит даже тех, у кого мода нет. Автор решил, что так и надо — зайчик в глаза, от которого можно просто уйти, не читается как шутка. Выключается в
Emote/FallAtMaxBlind.
0.1.4
Зайчик стал вести себя так, как от него и ждёшь: слепит глаза, а не тело, и гаснет вместе с лучом.
- Слепит только попадание в глаза. Раньше ослепление вызывало попадание в любую часть тела — хватало луча по ноге. Теперь цель определяется по попаданию в голову. Пятно при этом по-прежнему ползёт по телу и его видно со стороны: оно идёт по земле, поднимается по человеку и слепит, только дойдя до лица. Точка глаз берётся у самой игры, а не высчитывается по кости головы — кость смещена относительно глаз.
- Зайчик работает только когда зеркало реально в руках. Прежде мод считал зеркало взятым, если тарелочка просто нашлась в сцене: лежащая на земле или чужая в руках соседа тоже подходили, и луч светил с пустыми руками.
- Жертва жмурится непрерывно, пока светят. Поза больше не держится на одном
кадре: участок эмоута прокручивается по кругу всё время ослепления.
Старое поведение осталось на
Emote/PoseLoop = false. - Глаза открываются сразу, как луч ушёл. Спиральные глаза держались ещё три
секунды после ухода луча, а нативная пелена — две с половиной. Теперь и то,
и другое гаснет почти сразу (
BeamLingerSeconds,BlindAfflictionSeconds). - Падение в конце ослепления наконец срабатывает. Потолок считался от
непрерывного ослепления, поэтому после правки выше любой разрыв луча обнулял
счёт и пять секунд подряд стали недостижимы. Теперь по цели копится «фитиль»:
он растёт, пока луч в глазах, и стекает вдвое медленнее, когда луч ушёл
(
Emote/BlindChargeDrain). По-прежнему выключено по умолчанию — см. ниже. - Свой звук при попадании в глаза — колокольчик (
synth:bell). Ни один из 885 звуков игры не подошёл: все они про удар, падение или интерфейс. Клип синтезируется в коде, поэтому в пакете не появилось ни одного аудиофайла. Громкость и высота правятся на ходу:SynthVolume,SynthPitch. Есть ещё пять вариантов характера:shing,sparkle,wobble,zap,hum. - Порядок реакции стал правильным: сначала жертва закрывается руками,
и только потом начинает отмахиваться (
no no no). Прежде чередование перекидывало на второй эмоут на первом же кадре, и человек отмахивался от того, чего ещё не было. Задержка настраивается:Emote/EmoteFirstHoldSeconds. Само чередование теперь включено по умолчанию — имя второго состояния подтверждено в игре. - Падение работало только на сетевых персонажах.
Character.Fallотправляет RPC через PhotonView, и у персонажа без регистрации в сети он уходил в пустоту — молча, без ошибки. Теперь для таких целей вызов идёт напрямую. - Удар головой и звук повторяются не чаще раза в 1.2 с
(
Emote/ReactionEverySeconds) — иначе при поводке луча по лицу голова дёргалась несколько раз в секунду, а звук превращался в треск.
0.1.3
Совместимость с PEAK 3.0.0 и инструменты отладки.
- Пересобрано против новой версии игры. Проверено: мод грузится, рескин,
эмоут, ослепление и сеть работают. Из того, чем мод пользуется, обновление
задело одно: у
NetworkingUtilities.ConnectToNetworkдобавился параметр — это ломало только отладочный автовход, не обычную игру. - Отладка:
F4собирает испытательный стенд одной клавишей (зеркало, полдень, бот),F3ослепляет ближайшего персонажа без прицеливания — чтобы проверять вид эффекта отдельно от попадания луча. Debug/FreezeNoon— держать игровое время на полудне.
0.1.2
Исправление: поза «руки к лицу» не проигрывалась вообще.
Значение Emote/EmoteName по умолчанию было русской локализованной подписью
(«ну хватит»). Сопоставление идёт по локализации игры, поэтому у игрока с
английским (то есть почти у всех) имя не находилось, и в аниматор уходил
сам текст настройки. Состояния с таким именем нет — поза молча не
проигрывалась, а в логе не было ни слова.
- Умолчание переведено на устойчивый английский ключ
Defeat. - Если имя не сопоставилось, мод теперь пишет об этом в лог вместо молчания.
0.1.1
- Реакция ослеплённого стала живой: поза больше не прибита к одному кадру,
руки у лица шевелятся (
Emote/PoseSwing). Замершая фигура со стороны читалась как зависший персонаж, а не как человек, которому бьют в глаза. - Жертву пошатывает, пока держится ослепление, и встряхивает в конце
(
StaggerForce,WobbleForce,ShakeOffForce). Толчки идут штатными сетевыми методами игры, поэтому их видно и у игроков БЕЗ мода. - Появилась возможность чередовать позу со вторым эмоутом (
BlindEmoteB) и играть звук из набора самой игры при попадании (BlindSfxName). Оба по умолчанию выключены — см. ниже. - Добавлена ссылка на репозиторий: теперь есть куда написать об ошибке.
0.1.0
Первая версия. Зеркало-тарелочка ловит солнце и пускает зайчик в тиммейта.
- Предмет — игровая тарелочка (Frisbee): держится двумя руками внизу. Поверхность, обращённая к тиммейту, настоящее зеркало (шейдер игры GD/Mirror).
- Зайчик расходится на 9 мм с каждым метром — настоящая расходимость солнечного зайчика (угловой размер Солнца 0,53°). На 60 метрах пятно около метра. Работает только когда солнце реально падает на игрока: день и не в тени.
- Попадание в глаза: жертва закрывает лицо руками, спиральные глаза, «поплывший» рот, не может двигаться и отвести взгляд.
- Защита от удержания: не дольше 5 секунд подряд, затем 4 секунды по той же цели ничего не проходит. Зеркалом нельзя выключить человека из игры.
- Ослепление летит по сети. У кого мод — видит эффект целиком. У кого мода нет — всё равно видит позу и получает отдёргивание головы.
Настройки, выключенные по умолчанию
Выключены не случайно: это то, что я не смог подтвердить сам.
Emote/EmoteSwapSeconds— чередование позы со вторым эмоутом. Имя второго состояния в бою подтвердить не удалось; при опечатке поза пропадала бы через раз.Spot/ContrastRing— тёмный ободок вокруг зайчика для читаемости на ярком песке. Собран, но в игре не проверен.
Известное ограничение
Спиральные глаза, рот и обездвиживание доставляются своим RPC, поэтому у игрока без мода их не будет. Это ограничение Photon, обойти нельзя. Жертва с предметом в руках не показывает позу «руки к лицу» — анимация удержания предмета её перебивает.
