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/enemy/boss/boss1.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2]
|
[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://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://tilesets/t_mountain.tres" type="TileSet" id=5]
|
||||||
[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=6]
|
[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/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://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://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"]]
|
[node name="Map" type="Node2D" groups=["map"]]
|
||||||
pause_mode = 1
|
pause_mode = 1
|
||||||
|
@ -73,3 +75,25 @@ position = Vector2( 112, 144 )
|
||||||
[node name="Ladder2" parent="." instance=ExtResource( 10 )]
|
[node name="Ladder2" parent="." instance=ExtResource( 10 )]
|
||||||
position = Vector2( 64, 104 )
|
position = Vector2( 64, 104 )
|
||||||
scale = Vector2( 1, 3 )
|
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"
|
extends "res://objects/enemy/enemy_move_sidesideupdown.gd"
|
||||||
|
|
||||||
|
signal entered_phase(phase)
|
||||||
|
|
||||||
var hp = 3
|
var hp = 3
|
||||||
var arrow_speed = 80
|
var arrow_speed = 80
|
||||||
export var phase2_speed = 100
|
export var phase2_speed = 100
|
||||||
|
@ -13,16 +15,6 @@ export var arrow_spawns = [Vector2(0,0),Vector2(0,0),Vector2(0,0)]
|
||||||
func _ready():
|
func _ready():
|
||||||
seed(hash("HEROMARK2"))
|
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():
|
func shoot():
|
||||||
var arrow = ArrowProjectile.instance()
|
var arrow = ArrowProjectile.instance()
|
||||||
arrow.global_position = Vector2(
|
arrow.global_position = Vector2(
|
||||||
|
@ -38,3 +30,17 @@ func shoot():
|
||||||
func _on_ShootTimer_timeout():
|
func _on_ShootTimer_timeout():
|
||||||
shoot_timer.start(rand_range(shoot_time.x,shoot_time.y))
|
shoot_timer.start(rand_range(shoot_time.x,shoot_time.y))
|
||||||
shoot()
|
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")
|
const DeathParticles = preload("res://objects/enemy/death_particles.tscn")
|
||||||
|
|
||||||
|
signal died()
|
||||||
|
|
||||||
### these variables have been replaced with groups to put on the hitbox
|
### these variables have been replaced with groups to put on the hitbox
|
||||||
### - "blocks_arrow"
|
### - "blocks_arrow"
|
||||||
### - "blocks_sword"
|
### - "blocks_sword"
|
||||||
|
@ -36,4 +38,5 @@ func die():
|
||||||
|
|
||||||
Game.play_sound(death_sound, Game.ac_die)
|
Game.play_sound(death_sound, Game.ac_die)
|
||||||
Game.score += score_for_killing
|
Game.score += score_for_killing
|
||||||
|
emit_signal("died")
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
|
@ -45,10 +45,7 @@ func _on_Hitbox_area_entered(area):
|
||||||
_make_sparks()
|
_make_sparks()
|
||||||
else:
|
else:
|
||||||
# kill targeted node
|
# kill targeted node
|
||||||
if !area.is_in_group("boss_weakspot"):
|
|
||||||
target.die()
|
target.die()
|
||||||
else:
|
|
||||||
target.hp -=1
|
|
||||||
#decrease arrows if enemy killed
|
#decrease arrows if enemy killed
|
||||||
if target_group == "enemy_hitbox":
|
if target_group == "enemy_hitbox":
|
||||||
Game.arrows = max(0, Game.arrows - 1) # clamp arrows above 0
|
Game.arrows = max(0, Game.arrows - 1) # clamp arrows above 0
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue