48 lines
1.5 KiB
GDScript
48 lines
1.5 KiB
GDScript
extends "res://objects/enemy/enemy.gd"
|
|
|
|
const ArrowProjectile = preload("res://objects/enemy/enemy_arrow.tscn")
|
|
const BoneParticle = preload("res://objects/enemy/bone_particle.tscn")
|
|
const arrowpos = Vector2(9,2)
|
|
|
|
export var shoot_time = 1.0
|
|
export var arrow_speed = 120.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 = Game.a_die_skeleton
|
|
timer.start(shoot_time)
|
|
|
|
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"
|
|
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
|