extends Node2D func _ready() -> void: GameState.start_new_run() seed(56789) var ship := preload("res://scenes/game/player_ship.tscn").instantiate() add_child(ship) ship.set_physics_process(false) ship.get_node("WeaponController").set_physics_process(false) ship.shields = 1000.0 ship.max_shields = 1000.0 var enemy := preload("res://scenes/game/enemy_ship.tscn").instantiate() enemy.position = Vector2(400, 0) add_child(enemy) enemy.set_physics_process(false) enemy.set("_player", ship) enemy.weapon_kind = ItemDefinition.WeaponKind.LASER enemy.weapon_damage = 1.0 enemy.weapon_cooldown = 1.5 assert(is_equal_approx(enemy.get_fire_interval(), 3.0)) assert(is_equal_approx(enemy.get_weapon_dps(), 1.0 / 3.0)) enemy.weapon_cooldown = 0.275 assert(enemy.get_fire_interval() >= 1.4) await get_tree().physics_frame await get_tree().physics_frame for index in 100: enemy._fire_plasma(Vector2.LEFT) var hits := 1000.0 - float(ship.shields) assert(hits >= 45.0 and hits <= 85.0) print("ENEMY_LASER_TEST: PASS (slower cooldown, minimum interval, displayed DPS, %d real hits / 100 shots)" % roundi(hits)) await get_tree().create_timer(0.15).timeout get_tree().quit()