forked from team-sg/hero-mark-2
boss behavior stuff
This commit is contained in:
parent
38e60fad93
commit
e04c1f3bf5
5 changed files with 60 additions and 16 deletions
14
maps/boss/boss1_arena.gd
Normal file
14
maps/boss/boss1_arena.gd
Normal 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()
|
|
@ -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"]
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue