hero-mark-2/maps/boss/boss3_arena.gd

100 lines
2.9 KiB
GDScript

extends "res://maps/map.gd"
onready var sg_health: TextureProgress = $"%SGHealthBar"
onready var sg_energy: TextureProgress = $"%SGEnergyBar"
onready var fami_health: TextureProgress = $"%FamiHealthBar"
onready var laser_ok: TextureRect = $"%LaserOk"
onready var sg2083: KinematicBody2D = $"2083"
onready var famira: Node2D = $Famira
func _ready() -> void:
sg_energy.max_value = sg2083.max_energy
sg2083.state = sg2083.State.INACTIVE
famira.animation_player.play("grow", -1.0, 0.0)
Audio.play_sound(Audio.a_ominous,Audio.ac_collectible)
Audio.play_music(load("res://audio/music/the_dirt_under_the_meadow.ogg"))
func _on_2083_health_changed(amount) -> void:
sg_health.value = amount - 4
func _on_Famira_health_changed(amount) -> void:
fami_health.value = ceil(amount) - 3
func _on_cutscene_finished() -> void:
sg2083.visible = true
famira.visible = true
famira.animation_player.play("grow")
$AnimationPlayer.play("drop-stg")
Audio.play_music(load("res://audio/music/rumble_revolution.ogg"))
yield(get_tree().create_timer(0.5), "timeout")
$FamiCutscene/FamiHuman.visible = false
func fade() -> void:
Fade.fade_out(0.4)
Game.can_pause = true
yield(Fade, "fade_finished")
sg2083.anims.play("force idle")
Fade.fade_in(0.4)
$"%GUI".visible = true
yield(Fade, "fade_finished")
sg2083.state = sg2083.State.STAND
$FamiCutscene.queue_free()
Game.can_pause = true
Game.can_restart = true
famira.state_chart.send_event("transformed")
func start_fight() -> void:
famira.animation_player.state_chart.send_event("transformed")
func _on_2083_energy_changed(amount,laser_energy) -> void:
sg_energy.value = amount - 3
#Display heads up of laser status
if amount >= laser_energy:
if !Audio.ac_collectible.is_playing() && $"%LaserOk".visible == false: Audio.play_sound(Audio.a_laser_ready,Audio.ac_collectible)
$"%LaserOk".visible = true
else:
$"%LaserOk".visible = false
func _on_Famira_died() -> void:
sg2083.state = sg2083.State.INACTIVE
SpeedrunTimer.timer_running = false
Game.can_pause = false
var tween = create_tween()
tween.set_trans(Tween.TRANS_CUBIC)
tween.tween_property($"%Camera", "global_position:x", famira.global_position.x - 128, 0.5)
tween.tween_interval(10.0)
tween.tween_callback(self, "_on_death_cooldown")
func _on_death_cooldown() -> void:
Game.can_pause = false
if Game.marathon_mode:
Game.current_level += 1
if Game.current_level > LevelData.marathon_end:
Fade.fade_out(Options.transition_speed_secs)
yield(Fade, "fade_finished")
SceneManager.change_scene(load("res://menus/marathon_results.tscn").instance())
else:
Game.change_map(LevelData.levels[Game.current_level].scene)
else:
Game.change_map(load("res://cutscenes/ending_future.tscn"))
func _notification(what: int) -> void:
match what:
NOTIFICATION_WM_FOCUS_OUT:
if !Game.can_pause:
Audio.pause_all(true)
get_tree().paused = true
NOTIFICATION_WM_FOCUS_IN:
if !Game.can_pause:
Audio.pause_all(false)
get_tree().paused = false