extends "res://objects/enemy/enemy.gd" const ArrowProjectile = preload("res://objects/enemy/enemy_arrow.tscn") const BoneParticle = preload("res://objects/enemy/bone_particle.tscn") export var shoot_time = 1.0 export var arrow_speed = 60.0 # bone death particles export var bones_amount = 12 export var bones_speed = 50.0 onready var timer = $Timer onready var anims = $AnimationPlayer onready var sprite = $Sprite onready var arrow_spawn_l = $ArrowSpawnL onready var arrow_spawn_r = $ArrowSpawnR func _ready(): death_sound = Audio.a_die_skeleton timer.start(shoot_time) # adjust to difficulty shoot_time /= Game.enemy_speed_factor arrow_speed *= Game.enemy_speed_factor func _on_Timer_timeout(): anims.play("shoot") func spawn_arrow(): var arrow = ArrowProjectile.instance() if scale.x > 0: arrow.global_position = global_position + arrow_spawn_r.position else: arrow.global_position = global_position + arrow_spawn_l.position arrow.direction = scale.x arrow.target_group = "player_hitbox" arrow.speed = arrow_speed Game.get_map().add_child(arrow) timer.start(shoot_time) func die(): for n in bones_amount: var bone = BoneParticle.instance() bone.rotation = rand_range(0.0, 2.0*PI) # random rotation bone.global_position = global_position bone.linear_velocity = Vector2(bones_speed * rand_range(0.5, 1.5), 0.0).rotated(rand_range(-PI, 0.0)) bone.angular_velocity = rand_range(-PI*2.0, PI*2.0) var timer = get_tree().create_timer(3.0 + rand_range(0.0, 1.0), false) timer.connect("timeout", bone, "queue_free") get_parent().call_deferred("add_child", bone) .die() # call rest of enemy.gd die() funciton