170 lines
4.1 KiB
GDScript
170 lines
4.1 KiB
GDScript
extends Area2D
|
|
|
|
var enemy_type: String = "boss"
|
|
|
|
var bullet_scene = preload("res://scenes/enemy_bullet.tscn")
|
|
var start_pos = Vector2.ZERO
|
|
var speed = 0
|
|
var tween_speed: float = 1.4
|
|
var pause: bool = false
|
|
|
|
|
|
var horse_counter: int = 0
|
|
var horse_phase: bool = true
|
|
var exploding:bool = false
|
|
var heart_taken: bool = false
|
|
var heart_broken: bool = false
|
|
|
|
@onready var boss = $AnimationPlayer
|
|
@onready var screensize = get_viewport_rect().size
|
|
|
|
func _ready():
|
|
EventBus.ending.connect(_on_ending)
|
|
boss_intro()
|
|
$Heart.monitoring = false
|
|
$Heart.monitorable = false
|
|
|
|
func _process(_delta: float) -> void:
|
|
if pause == true: return
|
|
|
|
|
|
func boss_intro():
|
|
# Move boss into screen
|
|
position = Vector2(screensize.x / 2, -screensize.y)
|
|
var tween = create_tween().set_ease(Tween.EASE_OUT)
|
|
tween.tween_property(self, "position:y", 100, 2)
|
|
await tween.finished
|
|
|
|
# Introduce Lady of Whispers
|
|
print("Boss intro!")
|
|
await get_tree().create_timer(2).timeout
|
|
boss.play("align")
|
|
await get_tree().create_timer(2).timeout
|
|
boss.play("rise")
|
|
await get_tree().create_timer(4).timeout
|
|
boss.play("whisper")
|
|
await get_tree().create_timer(1).timeout
|
|
|
|
# Check to see if horse phase is available
|
|
horse_phase_check()
|
|
|
|
|
|
func horse_phase_check():
|
|
if horse_phase == true: boss_horse()
|
|
if horse_phase == false:
|
|
print("No more horse!")
|
|
$Sprite2D.frame = 0
|
|
if horse_phase == false and heart_broken == true:
|
|
$Sprite2D.frame = 4
|
|
|
|
func boss_horse():
|
|
|
|
if heart_taken == false:
|
|
print("Boss horse!")
|
|
await get_tree().create_timer(2).timeout
|
|
EventBus.flash_screen.emit(.25)
|
|
$Heart.hide()
|
|
$Heart.monitoring = false
|
|
$Sprite2D.frame = 7
|
|
$Horse.show()
|
|
$Horse.start()
|
|
var horse_player = $Horse/AnimationPlayer
|
|
horse_player.play("run")
|
|
await get_tree().create_timer(10).timeout
|
|
EventBus.flash_screen.emit(.25)
|
|
$Horse.hide()
|
|
$Horse.end()
|
|
await get_tree().create_timer(5).timeout
|
|
horse_counter += 1
|
|
lady_of_whispers()
|
|
|
|
if heart_taken == true or heart_broken == true:
|
|
horse_phase = false
|
|
horse_phase_check()
|
|
|
|
|
|
func lady_of_whispers():
|
|
|
|
if horse_counter == 2:
|
|
offer_heart()
|
|
|
|
|
|
if horse_counter <= 1:
|
|
print("Lady of Whispers!")
|
|
boss.play("rise")
|
|
await get_tree().create_timer(4).timeout
|
|
boss.play("whisper")
|
|
await boss.animation_finished
|
|
await get_tree().create_timer(1).timeout
|
|
horse_phase_check()
|
|
|
|
func hit_detection():
|
|
return
|
|
|
|
func offer_heart():
|
|
print("Lady of Whispers offers you a heart!")
|
|
boss.play("rise")
|
|
await get_tree().create_timer(4).timeout
|
|
$Heart.show()
|
|
$Heart.monitoring = true
|
|
$Heart.monitorable = true
|
|
heart_check()
|
|
|
|
func heart_check():
|
|
print("Heart check!")
|
|
if heart_taken == false:
|
|
await get_tree().create_timer(4).timeout
|
|
horse_counter = 0
|
|
print("Horse Counter:",horse_counter)
|
|
|
|
if heart_taken == true or heart_broken == true:
|
|
#$Heart.monitoring = false
|
|
#$Heart.monitorable = false
|
|
horse_phase = false
|
|
|
|
horse_phase_check()
|
|
|
|
|
|
|
|
func _on_ending(value: int):
|
|
if value == 1:
|
|
heart_taken = true
|
|
horse_phase = false
|
|
#horse_phase_check()
|
|
print("Fix your broken heart or die")
|
|
$Sprite2D.frame = 0
|
|
EventBus.goose_talk.emit(3,6)
|
|
|
|
|
|
|
|
|
|
|
|
#var tween = create_tween()
|
|
#tween.tween_property($Player, "position:y", 180, 2)#.set_ease(Tween.EASE_OUT)
|
|
#tween.tween_property($Player, "position:y", 60 * -1, .25)#.set_ease(Tween.EASE_IN)
|
|
#await get_tree().create_timer(8).timeout
|
|
#EventBus.goose_talk.emit(3)
|
|
#self.monitoring = false
|
|
#self.monitorable = false
|
|
|
|
|
|
if value == 2:
|
|
heart_broken = true
|
|
horse_phase = false
|
|
horse_phase_check()
|
|
$Heart.monitoring = false
|
|
$Heart.monitorable = false
|
|
print("Some hearts are too wild.")
|
|
EventBus.heart_beat.emit(0)
|
|
await get_tree().create_timer(2).timeout
|
|
EventBus.flash_screen.emit(.25)
|
|
#$Heart.queue_free()
|
|
$Sprite2D.frame = 4
|
|
await get_tree().create_timer(4).timeout
|
|
EventBus.goose_talk.emit(4,6)
|
|
self.monitoring = false
|
|
self.monitorable = false
|
|
EventBus.win_game.emit(2)
|
|
|
|
|
|
|