feat(stages): sistema d'onades declaratives amb condicions de transició
This commit is contained in:
+157
-144
@@ -1,169 +1,182 @@
|
||||
# stages.yaml - Configuració de les 10 etapes d'Orni Attack
|
||||
# stages.yaml - Configuració de les fases d'Orni Attack
|
||||
# © 2026 JailDesigner
|
||||
#
|
||||
# Format basat en onades (waves). Cada wave:
|
||||
# - spawn: list d'enemics a generar, en ordre.
|
||||
# - spawn_interval: segons entre spawns interns (default 0 = simultanis).
|
||||
# - next: condició per avançar a la wave següent.
|
||||
# - "all_dead" / "end" → quan tots els enemics de l'arena han mort.
|
||||
# - { timeout: T } → quan han passat T segons des de l'inici de la wave.
|
||||
# - { all_dead: true, timeout: T } → el que arribe abans (amuntegament si vas lent).
|
||||
#
|
||||
# Tipus d'enemic: pentagon, square (alias: cuadrado), pinwheel (alias: molinillo), star, big_pentagon.
|
||||
|
||||
metadata:
|
||||
version: "1.0"
|
||||
version: "2.0"
|
||||
total_stages: 10
|
||||
description: "Progressive difficulty curve from novice to expert"
|
||||
description: "Wave-based progression"
|
||||
|
||||
stages:
|
||||
# STAGE 1: Tutorial - 4 tipus (sense star: les bales fan injugable el test).
|
||||
# STAGE 1 — Tutorial: contacte amb pentagons i un cuadrado.
|
||||
- stage_id: 1
|
||||
total_enemies: 50
|
||||
spawn_config:
|
||||
mode: "progressive"
|
||||
initial_delay: 0.3
|
||||
spawn_interval: 0.4
|
||||
enemy_distribution:
|
||||
pentagon: 30
|
||||
cuadrado: 25
|
||||
molinillo: 25
|
||||
big_pentagon: 20
|
||||
difficulty_multipliers:
|
||||
speed_multiplier: 0.7
|
||||
rotation_multiplier: 0.8
|
||||
tracking_strength: 0.0
|
||||
multipliers: { velocity: 0.85, rotation: 0.9, tracking: 0.3 }
|
||||
waves:
|
||||
- spawn: [pentagon, pentagon]
|
||||
spawn_interval: 0.6
|
||||
next: all_dead
|
||||
- spawn: [pentagon, pentagon, square]
|
||||
spawn_interval: 0.5
|
||||
next: all_dead
|
||||
- spawn: [pentagon, pentagon, square, square]
|
||||
spawn_interval: 0.4
|
||||
next: end
|
||||
|
||||
# STAGE 2: Introduction to tracking enemies
|
||||
# STAGE 2 — Apareixen molinillos.
|
||||
- stage_id: 2
|
||||
total_enemies: 7
|
||||
spawn_config:
|
||||
mode: "progressive"
|
||||
initial_delay: 1.5
|
||||
spawn_interval: 2.5
|
||||
enemy_distribution:
|
||||
pentagon: 70
|
||||
cuadrado: 30
|
||||
molinillo: 0
|
||||
difficulty_multipliers:
|
||||
speed_multiplier: 0.85
|
||||
rotation_multiplier: 0.9
|
||||
tracking_strength: 0.3
|
||||
multipliers: { velocity: 0.95, rotation: 1.0, tracking: 0.4 }
|
||||
waves:
|
||||
- spawn: [pentagon, pentagon, pentagon]
|
||||
spawn_interval: 0.5
|
||||
next: all_dead
|
||||
- spawn: [pinwheel]
|
||||
next: all_dead
|
||||
- spawn: [pentagon, square, pinwheel]
|
||||
spawn_interval: 0.6
|
||||
next: all_dead
|
||||
- spawn: [pinwheel, pinwheel, pentagon]
|
||||
spawn_interval: 0.5
|
||||
next: end
|
||||
|
||||
# STAGE 3: All enemy types, normal speed
|
||||
# STAGE 3 — Primer big_pentagon (HP=10).
|
||||
- stage_id: 3
|
||||
total_enemies: 10
|
||||
spawn_config:
|
||||
mode: "progressive"
|
||||
initial_delay: 1.0
|
||||
spawn_interval: 2.0
|
||||
enemy_distribution:
|
||||
pentagon: 50
|
||||
cuadrado: 30
|
||||
molinillo: 20
|
||||
difficulty_multipliers:
|
||||
speed_multiplier: 1.0
|
||||
rotation_multiplier: 1.0
|
||||
tracking_strength: 0.5
|
||||
multipliers: { velocity: 1.0, rotation: 1.0, tracking: 0.5 }
|
||||
waves:
|
||||
- spawn: [pentagon, pentagon, square]
|
||||
spawn_interval: 0.4
|
||||
next: all_dead
|
||||
- spawn: [big_pentagon]
|
||||
next: { all_dead: true, timeout: 12.0 }
|
||||
- spawn: [pinwheel, pinwheel]
|
||||
spawn_interval: 0.5
|
||||
next: all_dead
|
||||
- spawn: [pentagon, square, pinwheel, pinwheel]
|
||||
spawn_interval: 0.4
|
||||
next: end
|
||||
|
||||
# STAGE 4: Increased count, faster enemies
|
||||
# STAGE 4 — Pressió creixent: timeouts curts que poden encavalcar onades.
|
||||
- stage_id: 4
|
||||
total_enemies: 12
|
||||
spawn_config:
|
||||
mode: "progressive"
|
||||
initial_delay: 0.8
|
||||
spawn_interval: 1.8
|
||||
enemy_distribution:
|
||||
pentagon: 40
|
||||
cuadrado: 35
|
||||
molinillo: 25
|
||||
difficulty_multipliers:
|
||||
speed_multiplier: 1.1
|
||||
rotation_multiplier: 1.15
|
||||
tracking_strength: 0.6
|
||||
multipliers: { velocity: 1.05, rotation: 1.1, tracking: 0.6 }
|
||||
waves:
|
||||
- spawn: [pentagon, pentagon, pentagon]
|
||||
spawn_interval: 0.3
|
||||
next: { all_dead: true, timeout: 5.0 }
|
||||
- spawn: [square, square]
|
||||
spawn_interval: 0.4
|
||||
next: { all_dead: true, timeout: 6.0 }
|
||||
- spawn: [pinwheel, pinwheel, pinwheel]
|
||||
spawn_interval: 0.4
|
||||
next: all_dead
|
||||
- spawn: [big_pentagon, pentagon, pentagon]
|
||||
spawn_interval: 0.5
|
||||
next: end
|
||||
|
||||
# STAGE 5: Maximum count reached
|
||||
# STAGE 5 — Apareix la star (zigzag clon del pentagon).
|
||||
- stage_id: 5
|
||||
total_enemies: 15
|
||||
spawn_config:
|
||||
mode: "progressive"
|
||||
initial_delay: 0.5
|
||||
spawn_interval: 1.5
|
||||
enemy_distribution:
|
||||
pentagon: 35
|
||||
cuadrado: 35
|
||||
molinillo: 30
|
||||
difficulty_multipliers:
|
||||
speed_multiplier: 1.2
|
||||
rotation_multiplier: 1.25
|
||||
tracking_strength: 0.7
|
||||
multipliers: { velocity: 1.1, rotation: 1.2, tracking: 0.7 }
|
||||
waves:
|
||||
- spawn: [star, star]
|
||||
spawn_interval: 0.4
|
||||
next: all_dead
|
||||
- spawn: [pentagon, square, star]
|
||||
spawn_interval: 0.4
|
||||
next: { all_dead: true, timeout: 6.0 }
|
||||
- spawn: [pinwheel, pinwheel, star, star]
|
||||
spawn_interval: 0.4
|
||||
next: all_dead
|
||||
- spawn: [big_pentagon, square, square]
|
||||
spawn_interval: 0.5
|
||||
next: end
|
||||
|
||||
# STAGE 6: Molinillo becomes dominant
|
||||
# STAGE 6 — Densitat alta, mix amb timeouts agressius.
|
||||
- stage_id: 6
|
||||
total_enemies: 15
|
||||
spawn_config:
|
||||
mode: "progressive"
|
||||
initial_delay: 0.3
|
||||
spawn_interval: 1.3
|
||||
enemy_distribution:
|
||||
pentagon: 30
|
||||
cuadrado: 30
|
||||
molinillo: 40
|
||||
difficulty_multipliers:
|
||||
speed_multiplier: 1.3
|
||||
rotation_multiplier: 1.4
|
||||
tracking_strength: 0.8
|
||||
multipliers: { velocity: 1.15, rotation: 1.25, tracking: 0.8 }
|
||||
waves:
|
||||
- spawn: [pentagon, pinwheel, pentagon, pinwheel]
|
||||
spawn_interval: 0.3
|
||||
next: { all_dead: true, timeout: 5.0 }
|
||||
- spawn: [square, square, star]
|
||||
spawn_interval: 0.4
|
||||
next: { all_dead: true, timeout: 5.0 }
|
||||
- spawn: [pinwheel, pinwheel, pinwheel]
|
||||
spawn_interval: 0.3
|
||||
next: all_dead
|
||||
- spawn: [big_pentagon, pinwheel, pinwheel]
|
||||
spawn_interval: 0.4
|
||||
next: end
|
||||
|
||||
# STAGE 7: High intensity, fast spawns
|
||||
# STAGE 7 — Tiradors i agressivitat.
|
||||
- stage_id: 7
|
||||
total_enemies: 15
|
||||
spawn_config:
|
||||
mode: "progressive"
|
||||
initial_delay: 0.2
|
||||
spawn_interval: 1.0
|
||||
enemy_distribution:
|
||||
pentagon: 25
|
||||
cuadrado: 30
|
||||
molinillo: 45
|
||||
difficulty_multipliers:
|
||||
speed_multiplier: 1.4
|
||||
rotation_multiplier: 1.5
|
||||
tracking_strength: 0.9
|
||||
multipliers: { velocity: 1.25, rotation: 1.35, tracking: 0.9 }
|
||||
waves:
|
||||
- spawn: [square, square, square]
|
||||
spawn_interval: 0.5
|
||||
next: { all_dead: true, timeout: 6.0 }
|
||||
- spawn: [pinwheel, pinwheel, pentagon, pentagon]
|
||||
spawn_interval: 0.3
|
||||
next: { all_dead: true, timeout: 5.0 }
|
||||
- spawn: [star, star, star]
|
||||
spawn_interval: 0.4
|
||||
next: all_dead
|
||||
- spawn: [big_pentagon, pinwheel, pinwheel, square]
|
||||
spawn_interval: 0.5
|
||||
next: end
|
||||
|
||||
# STAGE 8: Expert level, 50% molinillos
|
||||
# STAGE 8 — Pressió constant.
|
||||
- stage_id: 8
|
||||
total_enemies: 15
|
||||
spawn_config:
|
||||
mode: "progressive"
|
||||
initial_delay: 0.1
|
||||
spawn_interval: 0.8
|
||||
enemy_distribution:
|
||||
pentagon: 20
|
||||
cuadrado: 30
|
||||
molinillo: 50
|
||||
difficulty_multipliers:
|
||||
speed_multiplier: 1.5
|
||||
rotation_multiplier: 1.6
|
||||
tracking_strength: 1.0
|
||||
multipliers: { velocity: 1.35, rotation: 1.45, tracking: 1.0 }
|
||||
waves:
|
||||
- spawn: [pinwheel, pinwheel, pinwheel]
|
||||
spawn_interval: 0.3
|
||||
next: { all_dead: true, timeout: 4.0 }
|
||||
- spawn: [square, square, star, star]
|
||||
spawn_interval: 0.3
|
||||
next: { all_dead: true, timeout: 5.0 }
|
||||
- spawn: [big_pentagon]
|
||||
next: { all_dead: true, timeout: 8.0 }
|
||||
- spawn: [pinwheel, pinwheel, square, star, pentagon]
|
||||
spawn_interval: 0.3
|
||||
next: end
|
||||
|
||||
# STAGE 9: Near-maximum difficulty
|
||||
# STAGE 9 — Quasi-final.
|
||||
- stage_id: 9
|
||||
total_enemies: 15
|
||||
spawn_config:
|
||||
mode: "progressive"
|
||||
initial_delay: 0.0
|
||||
spawn_interval: 0.6
|
||||
enemy_distribution:
|
||||
pentagon: 15
|
||||
cuadrado: 25
|
||||
molinillo: 60
|
||||
difficulty_multipliers:
|
||||
speed_multiplier: 1.6
|
||||
rotation_multiplier: 1.7
|
||||
tracking_strength: 1.1
|
||||
multipliers: { velocity: 1.5, rotation: 1.6, tracking: 1.1 }
|
||||
waves:
|
||||
- spawn: [pinwheel, pinwheel, star, star]
|
||||
spawn_interval: 0.3
|
||||
next: { all_dead: true, timeout: 4.0 }
|
||||
- spawn: [big_pentagon, square, square]
|
||||
spawn_interval: 0.4
|
||||
next: { all_dead: true, timeout: 8.0 }
|
||||
- spawn: [pinwheel, pinwheel, pinwheel, pinwheel]
|
||||
spawn_interval: 0.3
|
||||
next: { all_dead: true, timeout: 5.0 }
|
||||
- spawn: [big_pentagon, pinwheel, pinwheel, square, star]
|
||||
spawn_interval: 0.4
|
||||
next: end
|
||||
|
||||
# STAGE 10: Final challenge, 70% molinillos
|
||||
# STAGE 10 — Repte final.
|
||||
- stage_id: 10
|
||||
total_enemies: 15
|
||||
spawn_config:
|
||||
mode: "progressive"
|
||||
initial_delay: 0.0
|
||||
spawn_interval: 0.5
|
||||
enemy_distribution:
|
||||
pentagon: 10
|
||||
cuadrado: 20
|
||||
molinillo: 70
|
||||
difficulty_multipliers:
|
||||
speed_multiplier: 1.8
|
||||
rotation_multiplier: 2.0
|
||||
tracking_strength: 1.2
|
||||
multipliers: { velocity: 1.7, rotation: 1.8, tracking: 1.2 }
|
||||
waves:
|
||||
- spawn: [pinwheel, pinwheel, pinwheel, pinwheel]
|
||||
spawn_interval: 0.25
|
||||
next: { all_dead: true, timeout: 4.0 }
|
||||
- spawn: [big_pentagon, square, star]
|
||||
spawn_interval: 0.4
|
||||
next: { all_dead: true, timeout: 6.0 }
|
||||
- spawn: [pinwheel, pinwheel, star, star, square]
|
||||
spawn_interval: 0.3
|
||||
next: { all_dead: true, timeout: 5.0 }
|
||||
- spawn: [big_pentagon, big_pentagon, pinwheel, pinwheel, star]
|
||||
spawn_interval: 0.4
|
||||
next: end
|
||||
|
||||
Reference in New Issue
Block a user