Tres canvis coordinats que tanquen la cinemàtica desitjada de
ROOM_INTRO:
1. `spawn.duration_s` de mummy.yaml passa de 0.6 a 1.0 s. Les mòmies
tarden ~1 segon a "emergir" — temps suficient perquè el jugador
noti que estan apareixent, no que ja eren a la sala.
2. El disparador es mou de fase 5 (music_tail) a fase 4 (text-exit).
Ara, just quan el text "PIRÀMIDE X, SALA Y" comença a sortir de
pantalla, GameScene crida `entity_manager_.spawnPendingActors()`
i les mòmies s'instancien ja en EMERGING. Visualment apareixen
alhora que el text desapareix; durant la fase 5 acaben d'emergir
i a l'entrada a PLAYING ja són ACTIVE — coincidint amb la caiguda
aèria dels jugadors.
3. `completeIntro` afegeix un fallback: si arribem a PLAYING sense
haver passat per fase 4 (config patològica, fases molt curtes),
instanciem els pending igualment per garantir que la sala mai no
queda sense enemics.
Renomenat: `hazards_spawn_triggered_` → `pending_actors_spawned_`,
nom que reflecteix què representa el flag al model nou.
El mètode privat `triggerHazardSpawnExit()` desapareix: era un
wrapper que ja només cridava `spawnPendingActors()`. Crida directa
des de `updateRoomTransition`, `respawnPlayersInstant` i
`completeIntro` (fallback).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
La mòmia ara entra a l'estat SPAWN al construir-se: visible al
pixel_rect_ inicial, sense moviment ni dany, esperant que algú extern
(GameScene) li armi el comptador via `triggerSpawnExit()`.
La durada (`spawn.duration_s` al YAML, default 0) controla quan passa
a ROAMING una vegada armat el comptador. Posat a 0.6s a mummy.yaml.
Aquest commit encara no enganxa el trigger: la mòmia es queda quieta
tota la partida — comportament visual intermedi, esperat. El commit
següent posarà el trigger a GameScene al final del text-exit de
ROOM_INTRO.
Tests de smoke i whip ajustats: les mòmies construïdes en stand-alone
necessiten `triggerSpawnExit()` + un update gran abans d'interactuar
amb `enterHurt`/contacto. Helper `exitMummySpawn` afegit a cada fitxer.
Guards defensius a `enterHurt` i `onPlayerContact`: encara que el filtre
central a EntityManager salta DynamicHazards en SPAWN, blindem la
crida directa per a futurs camins (whip propers, scripts...).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>