extends Node3D @export var player : Node @export var money = 250 @export var health = 3 @export var MAX_PARTICLES = 100 @export var gun_1 : Resource @export var gun_2 : Resource @export_group("Drops") @export var ammo_drop_enabled = true @export var stamina_drop_enabled = true @export var health_drop_enabled = true @export var money_drop_enabled = true var ammo_drop = load("res://assets/ammo_pickup.tscn") var stamina_drop = load("res://assets/stamina_pickup.tscn") var health_drop = load("res://assets/health_pickup.tscn") var money_drop = load("res://assets/money_pickup.tscn") const CLEARED_ANNOUNCE = preload("res://assets/cleared_announce.tscn") const DEAD_ANNOUNCE = preload("res://assets/dead_announce.tscn") var pickups = [] var held_guns = [] var ammo_current = [0] var ammo_reserve = [0] var guns_dict = {} var current_gun_index var particle_number = 0 var enemy_hiveminds = [] var remaining_enemies # Called when the node enters the scene tree for the first time. func _ready(): #global randomize function randomize() #assign pickups to array if ammo_drop_enabled == true: pickups.append(ammo_drop) if stamina_drop_enabled == true: pickups.append(stamina_drop) if health_drop_enabled == true: pickups.append(health_drop) if ammo_drop_enabled == true: pickups.append(ammo_drop) #Set up starting guns and ammo held_guns = [gun_1] var instance_gun = held_guns[0].instantiate() ammo_current[0] = instance_gun.max_ammo ammo_reserve[0] = instance_gun.max_ammo * instance_gun.start_mags if gun_2 != null: held_guns.append(gun_2) var instance_gun_2 = held_guns[1].instantiate() ammo_current.append(instance_gun_2.max_ammo) ammo_reserve.append(instance_gun_2.max_ammo * instance_gun_2.start_mags) # Spawn first gun current_gun_index = 0 gun_spawn(0) #find enemy hiveminds for node in get_tree().get_nodes_in_group("enemy_hivemind"): enemy_hiveminds.append(node) #count starting enemies enemy_count() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta): pass func gun_spawn(index): #loop around if scrolling past available guns if index > held_guns.size() - 1: index = 0 elif index < 0: index = held_guns.size() - 1 current_gun_index = index var instance_gun = held_guns[index].instantiate() instance_gun.global_transform.origin = player.weapon_spawner.position player.gun = instance_gun player.def_weapon_holder_pos = player.weapon_holder.position player.ammo = player.gun.max_ammo player.ammo_reserve = player.gun.max_ammo * player.gun.start_mags #player.gun_fire_pitch_starting = player.gun.audio_fire.pitch_scale instance_gun.gun_index = index instance_gun.anim_player.play("swap_in") player.weapon_holder.add_child(instance_gun) func enemy_count(): var sum = 0 for i in enemy_hiveminds: sum += i.minions.size() print("enemies: " + str(sum)) if sum == 0: cleared() func cleared(): Engine.time_scale = .05 var clearedmsg = CLEARED_ANNOUNCE.instantiate() get_parent().add_child(clearedmsg) await get_tree().create_timer(.3).timeout get_tree().reload_current_scene() func die(): Engine.time_scale = .05 var deadmsg = DEAD_ANNOUNCE.instantiate() get_parent().add_child(deadmsg) await get_tree().create_timer(.3).timeout get_tree().reload_current_scene() #var instance_dead = dead_player.instantiate() #instance_dead.position = head.global_position #instance_dead.transform.basis = head.global_transform.basis #get_tree().get_root().add_child(instance_dead) func pickup_spawn(): pickups.pick_random() print(pickups.pick_random())