extends Node2D const POI = preload("res://scripts/levels/exploration_poi.gd") func _ready() -> void: GameState.start_new_run() var ship = preload("res://scenes/game/player_ship.tscn").instantiate() ship.name = "PlayerShip" add_child(ship) ship.set_physics_process(false) ship.get_node("WeaponController").set_physics_process(false) var inv = ship.get_node("ShipInventory") for kind in ["wreck", "asteroid", "ruin"]: for index in 12: var poi = StaticBody2D.new() poi.set_script(POI) poi.kind = kind poi.player = ship poi.reward_seed = index + 1 poi.poi_id = kind + str(index) add_child(poi) if kind == "asteroid": assert(poi.has_node("AsteroidSprite")) assert(poi.get_node("AsteroidSprite").texture is Texture2D) var asteroid = poi.get_node("AsteroidSprite") var previous_rotation = asteroid.rotation poi._process(1.0) assert(not is_equal_approx(asteroid.rotation, previous_rotation)) assert(absf(asteroid.rotation - previous_rotation) < 0.1) assert(poi.rotation == 0.0) poi.take_weapon_hit(poi.hull - 1) assert(not poi._claimed and is_equal_approx(poi.hull, 1)) poi.take_weapon_hit(1) assert(poi._claimed) else: if kind == "wreck": assert(poi.has_node("WreckSprite")) assert(poi.WRECK_TEXTURES.has(poi.get_node("WreckSprite").texture)) assert(poi.claim()) assert(not poi.claim()) await get_tree().process_frame assert(GameState.captain.parts > 0) assert(inv.ammunition > 50 and inv.missile_ammunition > 2) assert(GameState.captain.minerals.iron + GameState.captain.minerals.titanium + GameState.captain.minerals.aluminium > 0) var ancient = 0 var modules: Array = inv.cargo.filter(func(item): return item != null) for loot in get_tree().get_nodes_in_group("loot"): modules.append(loot.item) for item in modules: if item.item_level == 2: ancient += 1 if item.definition.category == ItemDefinition.Category.ACTIVE_EXTENSION: assert(item.get_addon_count() == 0) else: assert(item.get_addon_count() >= 4) for modifier in item.additional_modifiers: var bounds = modifier.affix.get_value_range(2) assert(modifier.value >= lerpf(bounds.x, bounds.y, 0.9) - 0.00001) assert(ancient == 12) var discovery = StaticBody2D.new() discovery.set_script(POI) discovery.kind = "ruin" discovery.player = ship discovery.poi_id = "auto-discovery" discovery.position = Vector2(1000, 0) discovery.approach_radius = 200 add_child(discovery) assert(discovery._label.text == "?") discovery._physics_process(0) assert(not discovery._claimed) ship.position = Vector2(810, 0) discovery._physics_process(0) assert(discovery._claimed and GameState.explored_pois.has("auto-discovery")) assert(not discovery.claim()) var data = preload("res://scripts/levels/system_generator.gd").generate(1, 1234) var bodies = Node2D.new() bodies.name = "CelestialBodies" add_child(bodies) preload("res://scripts/levels/exploration_generator.gd").spawn(self, data, ship) var generated = get_tree().get_nodes_in_group("exploration_pois").filter(func(p): return not p.is_queued_for_deletion()) assert(generated.size() >= 8 and generated.size() <= 14) var probe = generated[0] assert(probe.reward_scale() == 1.0) GameState.system_level = 10 assert(is_equal_approx(probe.reward_scale(), 1.45)) GameState.system_level = 1 print("EXPLORATION_TEST: PASS rewards, duplicate prevention, minerals, ancient level+1 and high addons, generation") get_tree().quit()