60 lines
1.7 KiB
GDScript
60 lines
1.7 KiB
GDScript
extends "res://objects/enemy/enemy_move_sidesideupdown.gd"
|
|
|
|
signal entered_phase(phase)
|
|
|
|
#Stats
|
|
var hp = 3
|
|
var arrow_speed = 80
|
|
var shoot_time = Vector2(0.4,0.7)
|
|
export var phase2_speed = 100
|
|
export var phase3_speed = 150
|
|
#Onready
|
|
onready var shoot_timer = $ShootTimer
|
|
onready var shootpoint = $Position2D
|
|
onready var blood_position = $BloodPosition
|
|
onready var map = get_owner()
|
|
const Projectile = preload("res://objects/enemy/boss/scrump_projectile.tscn")
|
|
const Gore = preload("res://objects/enemy/boss/scrump_gore.tscn")
|
|
|
|
|
|
func _ready():
|
|
seed(hash("HEROMARK2"))
|
|
# adjust to difficulty
|
|
arrow_speed *= Game.enemy_speed_factor
|
|
shoot_time /= Game.enemy_speed_factor
|
|
speed *= Game.enemy_speed_factor
|
|
phase2_speed *= Game.enemy_speed_factor
|
|
phase3_speed *= Game.enemy_speed_factor
|
|
|
|
func shoot():
|
|
Game.instance_node(Projectile,shootpoint.global_position.x,stepify(shootpoint.global_position.y,8),map)
|
|
|
|
func _on_ShootTimer_timeout():
|
|
shoot_timer.start(rand_range(shoot_time.x,shoot_time.y))
|
|
shoot()
|
|
|
|
func die():
|
|
hp -= 1
|
|
Audio.play_sound(Audio.a_boss_hurt,Audio.ac_boss)
|
|
match hp:
|
|
2:
|
|
emit_signal("entered_phase", 2)
|
|
speed = phase2_speed
|
|
shoot_time = Vector2(0.4,0.5)
|
|
1:
|
|
emit_signal("entered_phase", 3)
|
|
speed = phase3_speed
|
|
shoot_time = Vector2(0.3,0.5)
|
|
0:
|
|
Game.instance_node(Gore,position.x,position.y,map)
|
|
Audio.play_sound(Audio.a_scrump_die,Audio.ac_boss)
|
|
emit_signal("entered_phase",4)
|
|
queue_free()
|
|
|
|
#Bleed particles
|
|
var death_particles = DeathParticles.instance()
|
|
death_particles.global_position = blood_position.global_position
|
|
death_particles.emitting = true
|
|
death_particles.amount = 64
|
|
death_particles.lifetime = 0.45
|
|
get_parent().add_child(death_particles)
|