extends Node2D const GENERATOR := preload("res://scripts/items/item_generator.gd") func _ready() -> void: GameState.start_new_run() var ship := preload("res://scenes/game/player_ship.tscn").instantiate() as CharacterBody2D ship.name = "PlayerShip" add_child(ship) ship.set_physics_process(false) ship.get_node("WeaponController").set_physics_process(false) var inventory := ship.get_node("ShipInventory") as ShipInventory var scanner := GENERATOR.generate_for_definition(preload("res://resources/items/scanner.tres"), 5) assert(scanner.get_addon_count() > 0) assert(inventory.add_item(scanner)) assert(inventory.move_item("cargo", inventory.cargo.find(scanner), "module", 0)) var enemy := preload("res://scenes/game/enemy_ship.tscn").instantiate() as CharacterBody2D enemy.position = Vector2(900, 0) add_child(enemy) enemy.set_physics_process(false) for kind in ["asteroid", "wreck", "ruin"]: var poi := StaticBody2D.new() poi.set_script(preload("res://scripts/levels/exploration_poi.gd")) poi.set("kind", kind) poi.set("player", ship) poi.position = Vector2(1500, 100) add_child(poi) poi.set_physics_process(false) var maximum := float(ship.get("max_energy")) ship.set("energy", maximum * 0.49) assert(not ship.activate_ability(0)) ship.set("energy", maximum * 0.8) assert(ship.activate_ability(0)) assert(is_equal_approx(ship.get("energy"), maximum * 0.3)) var layer := ship.get_node("ScannerOverlay") as CanvasLayer var overlay := layer.get_child(0) as Control assert(overlay.get("targets").size() == 4) assert(overlay.mouse_filter == Control.MOUSE_FILTER_IGNORE) assert(not ship.activate_ability(0)) await get_tree().process_frame overlay.call("_process", 8.1) await get_tree().process_frame assert(not ship.has_node("ScannerOverlay")) ship.set("energy", maximum * 0.5) assert(ship.activate_ability(0)) assert(is_zero_approx(ship.get("energy"))) print("SCANNER_TEST: PASS loot addons, module activation, 50% max energy cost, four target types, repeat prevention, 8s expiry, reactivation") get_tree().quit()