extends Node class_name Modifier @export var time_to_kill : float = 30.0 @export var percent_of_targets : float = 1.0 @onready var level_node: Node3D = $"../../Level" @onready var scene_parent: Node3D = $"../.." @onready var marker = preload("res://enemyTargetMarker.tscn") @onready var level_control = get_tree().current_scene var target_enemy var total_targets var active = false var timer func _ready() -> void: await level_node.all_enemies_spawned SignalBus.connect("enemy_killed",check_killed_target) SignalBus.connect("player_left_tube",begin_activity) timer = time_to_kill scene_parent.tube_top.switch.active = false scene_parent.tube_top.switch.label.text = str("Kill all vip \n targets to exit") func begin_activity(): select_random_enemy() func _process(delta: float) -> void: if active: if target_enemy != null: if timer > 0: timer -= delta update_timer("kill target") else: level_control.last_hit = target_enemy level_control.die() active = false else: select_random_enemy() func update_timer(label): var rounded_timer = round(timer) SignalBus.emit_signal("ui_timer_update",label,timer) func check_killed_target(enemy): print("ENEMY KILLED : ",enemy) if enemy == target_enemy: timer = time_to_kill target_enemy = null print("TARGET ENEMY : ",target_enemy) select_random_enemy() func add_marker_to_enemy(): if target_enemy != null: var instance_marker = marker.instantiate() target_enemy.add_child(instance_marker) instance_marker.global_position = target_enemy.global_position func select_random_enemy(): var level_stuff = level_node.get_children() var enemies = [] for node in level_stuff: print(node) if node is Enemy: enemies.append(node) if enemies.size() > 0: target_enemy = enemies.pick_random() add_marker_to_enemy() active = true print("TARGET ENEMY : ",target_enemy.name) else: activity_completed() SignalBus.emit_signal("ui_timer_visibility",false) func activity_completed(): scene_parent.tube_top.switch.active = true