name: sarcophagus type: interactable editable: true sprite: path: sarcophagus.gif size: [48, 32] # Footprint lògic en tiles: 3×1 (48×16 baix del sprite). Els 16 px de dalt # són "alçada" en falsa perspectiva, sense col·lisió. Perímetre ortogonal # de 8 tiles (3 N + 3 S + 1 O + 1 E). tile_size: [3, 1] collision: # Sarcòfag = obstacle massís: alçada efectiva infinita (999) per al # filtre del salt. Un jugador no el pot saltar per damunt encara que # el salt arribe al punt àlgid. La caixa de col·lisió real (logical # 48×16) la calcula `placeSarcophagus` a partir de la geometria del # mapa, no des d'aquest YAML. height: 999 flags: collides: true interactable: true animations: closed: { frames: [0], frame_ms: 1000, loop: true } opening: { frames: [1, 2], frame_ms: 167, loop: false } open: { frames: [3], frame_ms: 1000, loop: true } behaviour: states: [CLOSED, OPENING, OPEN] initial_state: CLOSED on_perimeter_complete: OPENING on_opening_end: OPEN emits_event_on_open: sarcophagus_opened # Sons opcionals. `opening` es dispara un sol cop en la transició # CLOSED → OPENING (quan el jugador completa el perímetre). Si la clau # manca, no sona res. El basename val tant de clau al Resource::Cache # com de path (`Defaults::Paths::AUDIO_SOUNDS_DIR + key`). # # `opening_pitch_spread`: variació uniforme del ratio de reproducció # centrada a 1.0. Amb 0.05 cada obertura sona entre 0.95× i 1.05× la # velocitat normal (puja/baixa també el to, efecte arcade clàssic). # 0 ⇒ sempre 1.0 (sense variació). sound: opening: open_sarc.wav opening_pitch_spread: 0.5 # Recompensa que rep el jugador que pinta el tile que tanca el perímetre # (el GameScene la reparteix consumint `sarcophagus_opened`). Si es lleva # aquest bloc o un dels camps, el camp absent val 0 i no s'aplica. reward: points: 100 treasures: 1