61 lines
1.7 KiB
GDScript
61 lines
1.7 KiB
GDScript
extends "res://objects/enemy/enemy.gd"
|
|
|
|
signal entered_phase(phase)
|
|
|
|
const Bullet = preload("res://objects/enemy/2600_bullet.tscn")
|
|
|
|
export var shot_speed: float = 50
|
|
export var fire_rate: float = 1
|
|
export var can_shoot: bool = false
|
|
|
|
var hp: int = 3
|
|
|
|
onready var bullet_positions = $"%BulletPositions"
|
|
onready var shoot_timer = $ShootTimer
|
|
onready var anims = $AnimationPlayer
|
|
onready var head_sprite = $"%Head"
|
|
|
|
|
|
func _on_ShootTimer_timeout():
|
|
if can_shoot: shoot()
|
|
|
|
func shoot():
|
|
Audio.play_sound(Audio.a_bullet_barrage,Audio.ac_boss)
|
|
for pos in bullet_positions.get_children():
|
|
var bullet = Bullet.instance()
|
|
bullet.global_position = pos.global_position
|
|
bullet.direction = Vector2.LEFT.rotated(pos.rotation)
|
|
bullet.speed = shot_speed
|
|
get_parent().add_child(bullet)
|
|
shoot_timer.wait_time = fire_rate
|
|
|
|
func _play_laser_sound(play: bool):
|
|
if play:
|
|
Audio.play_sound(Audio.a_rainbow_laser,Audio.ac_boss)
|
|
else:
|
|
Audio.ac_boss.playing = false
|
|
|
|
func _play_charge_sound(play: bool):
|
|
if play:
|
|
Audio.play_sound(Audio.a_2600_charge,Audio.ac_boss)
|
|
else:
|
|
Audio.ac_boss.playing = false
|
|
|
|
|
|
func die():
|
|
hp -= 1
|
|
anims.play("Beam")
|
|
match hp:
|
|
2:
|
|
Game.instance_node(preload("res://objects/enemy/boss/collapse_blocks.tscn"),0,0,get_parent())
|
|
emit_signal("entered_phase", 2)
|
|
head_sprite.texture = preload("res://graphics/enemy/boss/stg_2600/head_cracked.png")
|
|
1:
|
|
shot_speed = 70
|
|
fire_rate = 0.8
|
|
emit_signal("entered_phase", 3)
|
|
head_sprite.texture = preload("res://graphics/enemy/boss/stg_2600/head_broken.png")
|
|
0:
|
|
queue_free()
|
|
Game.instance_node(load("res://objects/enemy/boss/2600_die.tscn"),position.x,position.y,get_parent())
|
|
emit_signal("entered_phase", 4)
|