extends Node const BALANCE := preload("res://scripts/levels/level_balance.gd") const GENERATOR := preload("res://scripts/levels/system_generator.gd") const ENEMY := preload("res://scenes/game/enemy_ship.tscn") func _ready() -> void: assert(BALANCE.enemy_tiers(1).count(0) == 8) assert(preload("res://resources/items/gamma_cannon.tres").weapon_range == 300.0) for level in range(2, 1001): assert(BALANCE.enemy_count(level) >= BALANCE.enemy_count(level - 1)) for level in range(1, 1001): var tiers := BALANCE.enemy_tiers(level) assert(tiers.count(1) == 2 and tiers.count(2) == 1) assert(tiers.size() == BALANCE.enemy_count(level)) assert(tiers.count(0) >= 2) for level in [1, 10, 100, 1000]: var data: Dictionary = GENERATOR.generate(level, 314159) var elites := 0 var bosses := 0 for entry in data["enemies"]: elites += 1 if entry["tier"] == 1 else 0 bosses += 1 if entry["tier"] == 2 else 0 assert(elites == 2 and bosses == 1) for tier in 3: var enemy := ENEMY.instantiate() as CharacterBody2D add_child(enemy) enemy.set_physics_process(false) enemy.call("apply_level_settings", 1, tier) var bar := enemy.get_node("HealthBar") bar.call("_process", 0.0) var label := bar.get_child(0) as Label assert(label.text == ["", "ELITA", "BOSS"][tier]) assert(label.light_mask == 4) assert(enemy.get_node("Sprite2D").modulate == enemy.call("get_tier_tint")) enemy.queue_free() print("ENEMY_TIERS_TEST: PASS (1000 levels, generated encounters, exactly two elites/one boss, tint and labels)") get_tree().quit()