Randoloot/tests/items/enemy_laser_test.gd
2026-10-13 21:50:09 +02:00

33 lines
1.2 KiB
GDScript

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()