name: mummy type: dynamic_hazard sprite: path: mummy.gif size: [16, 32] tile_size: [1, 1] # Variant 16×32 de la momia: el sprite fa 16×32 (dos 16×16: cap i peus) # i la caja de col·lisió amb el mapa és 16×16, coincident amb el # rectangle-base 16×16 dels peus. Com que `size` i `base_size` són # iguals, el padding és zero i la caja s'alinea exactament amb la # silueta inferior del sprite; amb `anchor: feet` ocupa la cel·la # 16×16 del corredor on naix. anchor: feet collision: size: [16, 16] base_size: [16, 16] # Alçada del cos en píxels per al filtre de col·lisió per salt: un # jugador amb jump_z > height no col·lisiona amb la momia (la salta # per damunt). Amb impulse=240 + gravity=600 el pic ronda els 48 px, # així que 24 deixa marge per esquivar amb un salt no perfecte. height: 12 flags: collides: true interactable: false # Strip de 12 frames en graella 4×3 (mateix esquema que el jugador): # 0..3 → walk_south (cara avall) # 4..7 → walk_north (cara amunt) # 8..11 → walk_east (lateral cap a l'est) # La variant `walk_west` reaprofita els frames de l'est amb `flip_h: true`: # el motor d'animació aplica el flip al sprite, així el codi de la mòmia # no decideix flip per direcció (només selecciona quina animació mostrar). # La momia no té variants `stand_*` perquè mai no para. animations: walk_south: { frames: [0, 1, 2, 3], fps: 8, loop: true } walk_north: { frames: [4, 5, 6, 7], fps: 8, loop: true } walk_east: { frames: [8, 9, 10, 11], fps: 8, loop: true } walk_west: { frames: [8, 9, 10, 11], fps: 8, loop: true, flip_h: true } ai: type: corridor_wanderer direction_choice: random initial_direction: east stats: speed: 30 damage: 1 # Quan true, el contacte amb el jugador no aplica `hurt` ni knockback: # mata d'un sol toc i dispara el cicle DYING → respawn. El path `hurt` # del jugador segueix funcionant per a futurs hazards no-letals (avui # no n'hi ha cap que el dispari). kills_outright: true # Estat HURT: post-fuetada, fugint en línia recta. Si la direcció # preferida (la del whip) està bloquejada, prova perpendiculars; si totes # ho estan, queda quieta tot el `duration_ms` i després torna a ROAMING. # `speed` opcional: si no apareix, s'usa `stats.speed`. El `whippable` # habilita la reacció al látigo (false ⇒ el whip la ignora). hurt: duration_ms: 600 speed: 60 whippable: true