boss behavior stuff

This commit is contained in:
Haze Weathers 2023-02-16 18:44:17 -05:00
parent 38e60fad93
commit e04c1f3bf5
5 changed files with 60 additions and 16 deletions

14
maps/boss/boss1_arena.gd Normal file
View file

@ -0,0 +1,14 @@
extends "res://maps/map.gd"
func _on_Boss1_died():
Game.change_map(load("res://maps/level_select.tscn"))
func _on_Boss1_entered_phase(phase):
match phase:
2:
$DelayedArrow2.start()
3:
$DelayedArrow3.start()

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=11 format=2]
[gd_scene load_steps=13 format=2]
[ext_resource path="res://objects/enemy/boss/boss1.tscn" type="PackedScene" id=1]
[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2]
@ -6,10 +6,12 @@
[ext_resource path="res://graphics/backgrounds/mountain_sunset.png" type="Texture" id=4]
[ext_resource path="res://tilesets/t_mountain.tres" type="TileSet" id=5]
[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=6]
[ext_resource path="res://maps/map.gd" type="Script" id=7]
[ext_resource path="res://maps/boss/boss1_arena.gd" type="Script" id=7]
[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=8]
[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=9]
[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=10]
[ext_resource path="res://audio/music/klystron.mp3" type="AudioStream" id=11]
[ext_resource path="res://objects/delayed_instance.tscn" type="PackedScene" id=12]
[node name="Map" type="Node2D" groups=["map"]]
pause_mode = 1
@ -73,3 +75,25 @@ position = Vector2( 112, 144 )
[node name="Ladder2" parent="." instance=ExtResource( 10 )]
position = Vector2( 64, 104 )
scale = Vector2( 1, 3 )
[node name="DelayedArrow" parent="." instance=ExtResource( 12 )]
delay = 5.0
autostart = true
[node name="Arrow" parent="DelayedArrow" instance=ExtResource( 8 )]
position = Vector2( 96, 128 )
[node name="DelayedArrow2" parent="." instance=ExtResource( 12 )]
delay = 5.0
[node name="Arrow2" parent="DelayedArrow2" instance=ExtResource( 8 )]
position = Vector2( 40, 96 )
[node name="DelayedArrow3" parent="." instance=ExtResource( 12 )]
delay = 5.0
[node name="Arrow3" parent="DelayedArrow3" instance=ExtResource( 8 )]
position = Vector2( 96, 80 )
[connection signal="died" from="Boss1" to="." method="_on_Boss1_died"]
[connection signal="entered_phase" from="Boss1" to="." method="_on_Boss1_entered_phase"]

View file

@ -1,5 +1,7 @@
extends "res://objects/enemy/enemy_move_sidesideupdown.gd"
signal entered_phase(phase)
var hp = 3
var arrow_speed = 80
export var phase2_speed = 100
@ -13,16 +15,6 @@ export var arrow_spawns = [Vector2(0,0),Vector2(0,0),Vector2(0,0)]
func _ready():
seed(hash("HEROMARK2"))
func _physics_process(delta):
match hp:
2:
speed = phase2_speed
shoot_time = Vector2(0.4,0.5)
1:
speed = phase3_speed
shoot_time = Vector2(0.3,0.5)
0: die()
func shoot():
var arrow = ArrowProjectile.instance()
arrow.global_position = Vector2(
@ -38,3 +30,17 @@ func shoot():
func _on_ShootTimer_timeout():
shoot_timer.start(rand_range(shoot_time.x,shoot_time.y))
shoot()
func die():
hp -= 1
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:
.die()

View file

@ -8,6 +8,8 @@ extends Node2D
const DeathParticles = preload("res://objects/enemy/death_particles.tscn")
signal died()
### these variables have been replaced with groups to put on the hitbox
### - "blocks_arrow"
### - "blocks_sword"
@ -36,4 +38,5 @@ func die():
Game.play_sound(death_sound, Game.ac_die)
Game.score += score_for_killing
emit_signal("died")
queue_free()

View file

@ -45,10 +45,7 @@ func _on_Hitbox_area_entered(area):
_make_sparks()
else:
# kill targeted node
if !area.is_in_group("boss_weakspot"):
target.die()
else:
target.hp -=1
#decrease arrows if enemy killed
if target_group == "enemy_hitbox":
Game.arrows = max(0, Game.arrows - 1) # clamp arrows above 0