Меши NPC ставились isPickable=false → raycast бластера/меча проходил сквозь
них, урон и авто-floater не срабатывали. Теперь меши NPC pickable + npcId в
metadata; damageByMesh находит NPC по metadata (быстро) или по rootMesh.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
game.fx.autoMobFloaters(true) — включает облачка урона над NPC при любой потере
HP (NpcManager.damage). NpcManager.damageByMesh — оружие (бластер/меч) наносит
урон скриптовым NPC (weapons.setOnHit → npcManager.damageByMesh). Связка:
выстрел бластера → урон NPC → авто-floater «-N» над целью.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1+2) Враг с HP / волна врагов: радиус удара 3.5 (NPC останавливался на
followGap=2.5, урон-чек d<2.5 не срабатывал). Добавлена анимация атаки —
R15Animator.attack (выпад рукой), npc.setAttacking, NpcManager.setAttacking.
3) Ключ исчезает при подборе: scene.setVisible теперь парсит ref ('primitive:N')
— obj.visible=false слал {ref} без kind/id, поэтому ключ не пропадал.
4) Машина — остаётся рантайм vehicle:car (особенность транспорта).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1) Дверь по коду: открытую можно закрыть по E (onInteract) → снова вводить код.
2) NPC: процедурная анимация ходьбы (покачивание по Y + наклон корпуса) для
Kenney-моделей — раньше скользили без анимации.
3) Торговец переделан в NPC-персонажа (spawnNpc character-a) + невидимый
триггер с диалогом по E (вместо примитивов).
4) Тени: убрана «полоса через всю карту» — autoCalcDepthBounds off,
shadowMaxZ 90/60 (было 200/120), lambda 0.6, frustumEdgeFalloff 12.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>