STG-2600 death animation.

This commit is contained in:
Haze Weathers 2023-10-16 11:21:49 -04:00
parent f61dbb3d32
commit 46578f033f
6 changed files with 703 additions and 18 deletions

View file

@ -15,6 +15,7 @@ func _on_2600_entered_phase(phase):
$ExitTimer.start()
var text_3d = Text3D.instance()
text_3d.anim = "victory"
yield(get_tree(), "idle_frame")
self.add_child(text_3d)

View file

@ -3,10 +3,14 @@ extends "res://objects/enemy/enemy.gd"
signal entered_phase(phase)
const Bullet = preload("res://objects/enemy/2600_bullet.tscn")
const SmallExplosion = preload("res://objects/enemy/boss/2600_small_explosion.tscn")
const IntelliHead = preload("res://objects/enemy/boss/intelli_head.tscn")
export var shot_speed: float = 50
export var fire_rate: float = 1
export var can_shoot: bool = false
export var explosion_rect: Rect2
export var make_explosions: bool = true
var hp: int = 3
@ -42,8 +46,22 @@ func _play_charge_sound(play: bool):
Audio.ac_boss.playing = false
func _spawn_explosions() -> void:
var head = IntelliHead.instance()
head.global_position = $"%IntelliHeadPos".global_position
get_parent().add_child(head)
while make_explosions:
yield(get_tree().create_timer(randf() * 0.5, false), "timeout")
var explosion = SmallExplosion.instance()
explosion.position = Vector2(
rand_range(explosion_rect.position.x, explosion_rect.end.x),
rand_range(explosion_rect.position.y, explosion_rect.end.y)
)
add_child(explosion)
func die():
hp -= 1
if hp > 0:
anims.play("Beam")
match hp:
2:
@ -53,9 +71,16 @@ func die():
1:
shot_speed = 70
fire_rate = 0.8
$"%GlassShape".queue_free()
emit_signal("entered_phase", 3)
head_sprite.texture = preload("res://graphics/enemy/boss/stg_2600/head_broken.png")
0:
queue_free()
Game.instance_node(load("res://objects/enemy/boss/2600_die.tscn"),position.x,position.y,get_parent())
anims.play("die")
Audio.play_sound(Audio.a_die, Audio.ac_die)
yield(anims, "animation_finished")
emit_signal("entered_phase", 4)
func _on_animation_finished(anim_name: String) -> void:
if anim_name == "Beam":
anims.play("stomping")

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=28 format=2]
[gd_scene load_steps=35 format=2]
[ext_resource path="res://objects/enemy/boss/2600.gd" type="Script" id=1]
[ext_resource path="res://graphics/enemy/boss/stg_2600/tailpipes.png" type="Texture" id=2]
@ -16,6 +16,8 @@
[ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=14]
[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=15]
[ext_resource path="res://graphics/particles/smoke.png" type="Texture" id=16]
[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=17]
[ext_resource path="res://graphics/fade_patterns/stg_explosion.png" type="Texture" id=18]
[sub_resource type="ShaderMaterial" id=11]
shader = ExtResource( 3 )
@ -45,12 +47,86 @@ shader_param/pixel_scale = 1.0
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 20.5, 15.5 )
[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 47, 16 )
[sub_resource type="RectangleShape2D" id=19]
extents = Vector2( 5.5, 5.5 )
[sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 23, 13 )
[sub_resource type="ShaderMaterial" id=16]
shader = ExtResource( 17 )
shader_param/color = Color( 1, 1, 1, 1 )
shader_param/smooth_mode = true
shader_param/reverse = true
shader_param/opacity = 0.0
[sub_resource type="Animation" id=17]
length = 0.001
tracks/0/type = "value"
tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 0.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("ExplosionRect:material:shader_param/reverse")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ true ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("ExplosionRect:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ) ]
}
[sub_resource type="Animation" id=18]
resource_name = "explode"
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.3 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("ExplosionRect:modulate")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.833333 ), Color( 1, 1, 1, 0.666667 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.333333 ), Color( 1, 1, 1, 0.166667 ), Color( 1, 1, 1, 0 ) ]
}
[sub_resource type="Animation" id=4]
resource_name = "Beam"
length = 4.0
@ -146,6 +222,90 @@ tracks/6/keys = {
"update": 1,
"values": [ true, false ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/keys = {
"times": PoolRealArray( 0.5, 4 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ -25.1199, -25.1199 ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/keys = {
"times": PoolRealArray( 0.5, 4 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 51.0254, 51.0254 ]
}
tracks/9/type = "value"
tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/keys = {
"times": PoolRealArray( 0.5, 4 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 0.0, 0.0 ]
}
tracks/10/type = "value"
tracks/10/path = NodePath("Axle/JointBack/LegBack:rotation_degrees")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/keys = {
"times": PoolRealArray( 0.5, 4 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ -26.8344, -26.8344 ]
}
tracks/11/type = "value"
tracks/11/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0.5, 4 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ -25.1199, -25.1199 ]
}
tracks/12/type = "value"
tracks/12/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/keys = {
"times": PoolRealArray( 0.5, 4 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 51.0254, 51.0254 ]
}
tracks/13/type = "value"
tracks/13/path = NodePath("Axle/JointFront/LegFront:rotation_degrees")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/keys = {
"times": PoolRealArray( 0.5, 4 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ -26.8344, -26.8344 ]
}
[sub_resource type="Animation" id=5]
length = 0.001
@ -233,11 +393,356 @@ tracks/6/keys = {
"update": 0,
"values": [ false ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ -25.1199 ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 51.0254 ]
}
tracks/9/type = "value"
tracks/9/path = NodePath("Axle/JointFront/LegFront:rotation_degrees")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ -26.8344 ]
}
tracks/10/type = "value"
tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ -25.1199 ]
}
tracks/11/type = "value"
tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 51.0254 ]
}
tracks/12/type = "value"
tracks/12/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 0.0 ]
}
tracks/13/type = "value"
tracks/13/path = NodePath("Axle/JointBack/LegBack:rotation_degrees")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ -26.8344 ]
}
tracks/14/type = "value"
tracks/14/path = NodePath("Axle:position")
tracks/14/interp = 1
tracks/14/loop_wrap = true
tracks/14/imported = false
tracks/14/enabled = true
tracks/14/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 66, 78 ) ]
}
tracks/15/type = "value"
tracks/15/path = NodePath("Axle/Head/Intelli:visible")
tracks/15/interp = 1
tracks/15/loop_wrap = true
tracks/15/imported = false
tracks/15/enabled = true
tracks/15/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ true ]
}
tracks/16/type = "value"
tracks/16/path = NodePath(".:make_explosions")
tracks/16/interp = 1
tracks/16/loop_wrap = true
tracks/16/imported = false
tracks/16/enabled = true
tracks/16/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ true ]
}
tracks/17/type = "value"
tracks/17/path = NodePath("Axle:visible")
tracks/17/interp = 1
tracks/17/loop_wrap = true
tracks/17/imported = false
tracks/17/enabled = true
tracks/17/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ true ]
}
tracks/18/type = "value"
tracks/18/path = NodePath("Hitbox:monitoring")
tracks/18/interp = 1
tracks/18/loop_wrap = true
tracks/18/imported = false
tracks/18/enabled = true
tracks/18/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ true ]
}
tracks/19/type = "value"
tracks/19/path = NodePath("Hitbox:monitorable")
tracks/19/interp = 1
tracks/19/loop_wrap = true
tracks/19/imported = false
tracks/19/enabled = true
tracks/19/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ true ]
}
[sub_resource type="Animation" id=15]
resource_name = "die"
length = 3.0
tracks/0/type = "value"
tracks/0/path = NodePath("Axle:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 0,
"values": [ Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ) ]
}
tracks/1/type = "method"
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"values": [ {
"args": [ ],
"method": "_spawn_explosions"
} ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Axle/Head/Intelli:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
tracks/3/type = "value"
tracks/3/path = NodePath(".:can_shoot")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
tracks/4/type = "animation"
tracks/4/path = NodePath("BigExplosion/ExplosionAnimation")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"clips": PoolStringArray( "explode" ),
"times": PoolRealArray( 2 )
}
tracks/5/type = "value"
tracks/5/path = NodePath(".:make_explosions")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0, 2 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ true, false ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("Axle:visible")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/keys = {
"times": PoolRealArray( 0, 2.5 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ true, false ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("Hitbox:monitoring")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/keys = {
"times": PoolRealArray( 0, 2.5 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ true, false ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("Hitbox:monitorable")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/keys = {
"times": PoolRealArray( 0, 2.5 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ true, false ]
}
[sub_resource type="Animation" id=14]
resource_name = "stomping"
length = 5.0
loop = true
tracks/0/type = "bezier"
tracks/0/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"points": PoolRealArray( -25.1199, -0.25, 0, 0, -2.10696, -33.4027, -0.7, 0.0638618, 0.25, 0, -33.4027, -0.25, 0, 0.25, 0, -22.7921, -0.25, 0, 0.25, 0, -25.1199, 0, -0.968742, 0, -2.10696 ),
"times": PoolRealArray( 0, 1.2, 1.5, 1.8, 1.9 )
}
tracks/1/type = "bezier"
tracks/1/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"points": PoolRealArray( 51.0254, -0.25, 0, 0, 6.18464, 84.1092, -0.5, 0.233734, 0.25, 0, 84.1092, -0.25, 0, 0.25, 0, 43.8714, -0.25, 0, 0.25, 0, 51.0254, 0, 5.17889, 0, 6.18464 ),
"times": PoolRealArray( 0, 1.2, 1.5, 1.8, 1.9 )
}
tracks/2/type = "bezier"
tracks/2/path = NodePath("Axle/JointFront/LegFront:rotation_degrees")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"points": PoolRealArray( -26.8344, -0.25, 0, 0, -5.79777, -51.6355, -0.6, 0.20406, 0.25, 0, -51.6355, -0.25, 0, 0.25, 0, -22.0103, -0.25, 0, 0.25, 0, -26.8344, 0, -5.58774, 0, -5.79777 ),
"times": PoolRealArray( 0, 1.2, 1.5, 1.8, 1.9 )
}
tracks/3/type = "bezier"
tracks/3/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"points": PoolRealArray( -25.1199, -0.25, 0, 0.25, 0, -25.1199, -0.25, 0, 0, -2.10696, -33.4027, -0.7, 0.0638618, 0.25, 0, -33.4027, -0.25, 0, 0.25, 0, -22.7921, -0.25, 0, 0.25, 0, -25.1199, 0, -0.968742, 0, -2.10696 ),
"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3, 4.4 )
}
tracks/4/type = "bezier"
tracks/4/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"points": PoolRealArray( 51.0254, -0.25, 0, 0.25, 0, 51.0254, -0.25, 0, 0, 6.18464, 84.1092, -0.5, 0.233734, 0.25, 0, 84.1092, -0.25, 0, 0.25, 0, 43.8714, -0.25, 0, 0.25, 0, 51.0254, 0, 5.17889, 0, 6.18464 ),
"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3, 4.4 )
}
tracks/5/type = "bezier"
tracks/5/path = NodePath("Axle/JointBack/LegBack:rotation_degrees")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"points": PoolRealArray( -26.8344, -0.25, 0, 0.25, 0, -26.8344, -0.25, 0, 0, -5.79777, -51.6355, -0.6, 0.20406, 0.25, 0, -51.6355, -0.25, 0, 0.25, 0, -22.0103, -0.25, 0, 0.25, 0, -26.8344, 0, -5.58774, 0, -5.79777 ),
"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3, 4.4 )
}
tracks/6/type = "value"
tracks/6/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 0.0 ]
}
[node name="2600" type="Node2D"]
position = Vector2( 0, -16 )
script = ExtResource( 1 )
can_shoot = true
explosion_rect = Rect2( 7, 17, 83, 63 )
[node name="Axle" type="Node2D" parent="."]
position = Vector2( 66, 78 )
@ -252,7 +757,7 @@ __meta__ = {
[node name="LegBack" type="Sprite" parent="Axle/JointBack"]
show_behind_parent = true
rotation = -0.436332
rotation = -0.468349
texture = ExtResource( 9 )
offset = Vector2( 0, 18 )
region_enabled = true
@ -269,7 +774,7 @@ __meta__ = {
}
[node name="ShinBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack"]
rotation = 0.872665
rotation = 0.890561
texture = ExtResource( 9 )
offset = Vector2( 0, 24 )
region_enabled = true
@ -280,7 +785,7 @@ __meta__ = {
[node name="FootBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack/ShinBack"]
position = Vector2( 0.00983047, 47.8521 )
rotation = -0.436332
rotation = -0.438425
texture = ExtResource( 12 )
offset = Vector2( -11.6527, 2.61113 )
script = ExtResource( 10 )
@ -397,6 +902,10 @@ position = Vector2( -37, -32 )
texture = ExtResource( 5 )
flip_h = true
[node name="IntelliHeadPos" type="Position2D" parent="Axle/Head/Intelli"]
unique_name_in_owner = true
position = Vector2( 0, -4 )
[node name="Beam" type="Sprite" parent="Axle/Head"]
show_behind_parent = true
material = SubResource( 10 )
@ -455,7 +964,7 @@ __meta__ = {
[node name="LegFront" type="Sprite" parent="Axle/JointFront"]
show_behind_parent = true
rotation = -0.436332
rotation = -0.468349
texture = ExtResource( 9 )
offset = Vector2( 0, 18 )
region_enabled = true
@ -468,7 +977,7 @@ __meta__ = {
[node name="ShinFront" type="Sprite" parent="Axle/JointFront/LegFront"]
material = SubResource( 8 )
position = Vector2( 3.8147e-06, 36 )
rotation = 0.872665
rotation = 0.890561
texture = ExtResource( 9 )
offset = Vector2( 0, 24 )
region_enabled = true
@ -479,7 +988,7 @@ __meta__ = {
[node name="FootFront" type="Sprite" parent="Axle/JointFront/LegFront/ShinFront"]
position = Vector2( 0.00983047, 47.8521 )
rotation = -0.436332
rotation = -0.438425
texture = ExtResource( 12 )
offset = Vector2( -11.6527, 2.61113 )
script = ExtResource( 10 )
@ -529,30 +1038,55 @@ autostart = true
[node name="WeakSpot" type="Area2D" parent="." groups=["boss_weakspot", "enemy_hitbox"]]
position = Vector2( 1, 0 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="WeakSpot"]
[node name="GlassShape" type="CollisionShape2D" parent="WeakSpot"]
unique_name_in_owner = true
position = Vector2( 26.5, 32.5 )
shape = SubResource( 1 )
[node name="IntelliShape" type="CollisionShape2D" parent="WeakSpot"]
position = Vector2( 27.5, 37.5 )
shape = SubResource( 19 )
[node name="Hitbox" type="Area2D" parent="." groups=["blocks_arrow", "enemy_hitbox"]]
position = Vector2( 1, 0 )
[node name="HeadShape" type="CollisionShape2D" parent="Hitbox"]
[node name="HeadShape" type="CollisionPolygon2D" parent="Hitbox"]
position = Vector2( 47, 64 )
shape = SubResource( 2 )
polygon = PoolVector2Array( -1, -48, 25, -48, 37, -36, 47, 8, 39, 17, -42, 17, -47, 6, -47, -6, -42, -17, -1, -17 )
[node name="FootShapeFront" type="CollisionShape2D" parent="Hitbox"]
position = Vector2( 62, 155 )
position = Vector2( 63.7333, 154.923 )
rotation = -0.0162124
shape = SubResource( 3 )
[node name="FootShapeBack" type="CollisionShape2D" parent="Hitbox"]
position = Vector2( 41, 155 )
position = Vector2( 42.7333, 154.923 )
rotation = -0.0162124
shape = SubResource( 3 )
[node name="BigExplosion" type="CanvasLayer" parent="."]
layer = 101
[node name="ExplosionRect" type="TextureRect" parent="BigExplosion"]
material = SubResource( 16 )
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 18 )
[node name="ExplosionAnimation" type="AnimationPlayer" parent="BigExplosion"]
anims/RESET = SubResource( 17 )
anims/explode = SubResource( 18 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "stomping"
playback_default_blend_time = 0.5
anims/Beam = SubResource( 4 )
anims/RESET = SubResource( 5 )
anims/die = SubResource( 15 )
anims/stomping = SubResource( 14 )
[connection signal="area_entered" from="Axle/Head/Beam/Hitbox" to="." method="_on_Hitbox_area_entered"]
[connection signal="timeout" from="ShootTimer" to="." method="_on_ShootTimer_timeout"]
[connection signal="area_entered" from="WeakSpot" to="." method="_on_WeakSpot_area_entered"]
[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"]
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_finished"]

View file

@ -0,0 +1,11 @@
extends Node2D
func _ready() -> void:
Audio.play_sound(Audio.a_explosion,Audio.ac_die)
var sprite: AnimatedSprite = get_child(randi() % get_child_count())
sprite.visible = true
sprite.play()
func _on_animation_finished() -> void:
queue_free()

View file

@ -0,0 +1,85 @@
[gd_scene load_steps=18 format=2]
[ext_resource path="res://objects/enemy/boss/2600_small_explosion.gd" type="Script" id=1]
[ext_resource path="res://graphics/enemy/explosion_small.png" type="Texture" id=2]
[ext_resource path="res://graphics/enemy/explosion.png" type="Texture" id=3]
[sub_resource type="AtlasTexture" id=1]
atlas = ExtResource( 2 )
region = Rect2( 0, 0, 16, 16 )
[sub_resource type="AtlasTexture" id=2]
atlas = ExtResource( 2 )
region = Rect2( 16, 0, 16, 16 )
[sub_resource type="AtlasTexture" id=3]
atlas = ExtResource( 2 )
region = Rect2( 32, 0, 16, 16 )
[sub_resource type="AtlasTexture" id=4]
atlas = ExtResource( 2 )
region = Rect2( 48, 0, 16, 16 )
[sub_resource type="AtlasTexture" id=5]
atlas = ExtResource( 2 )
region = Rect2( 64, 0, 16, 16 )
[sub_resource type="AtlasTexture" id=6]
atlas = ExtResource( 2 )
region = Rect2( 80, 0, 16, 16 )
[sub_resource type="SpriteFrames" id=14]
animations = [ {
"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ) ],
"loop": false,
"name": "explode",
"speed": 20.0
} ]
[sub_resource type="AtlasTexture" id=8]
atlas = ExtResource( 3 )
region = Rect2( 0, 0, 64, 64 )
[sub_resource type="AtlasTexture" id=9]
atlas = ExtResource( 3 )
region = Rect2( 64, 0, 64, 64 )
[sub_resource type="AtlasTexture" id=10]
atlas = ExtResource( 3 )
region = Rect2( 128, 0, 64, 64 )
[sub_resource type="AtlasTexture" id=11]
atlas = ExtResource( 3 )
region = Rect2( 192, 0, 64, 64 )
[sub_resource type="AtlasTexture" id=12]
atlas = ExtResource( 3 )
region = Rect2( 256, 0, 64, 64 )
[sub_resource type="AtlasTexture" id=13]
atlas = ExtResource( 3 )
region = Rect2( 320, 0, 64, 64 )
[sub_resource type="SpriteFrames" id=15]
animations = [ {
"frames": [ SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ) ],
"loop": false,
"name": "explode",
"speed": 10.0
} ]
[node name="2600Explosion" type="Node2D"]
script = ExtResource( 1 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
visible = false
frames = SubResource( 14 )
animation = "explode"
[node name="AnimatedSprite2" type="AnimatedSprite" parent="."]
visible = false
frames = SubResource( 15 )
animation = "explode"
[connection signal="animation_finished" from="AnimatedSprite" to="." method="_on_animation_finished"]
[connection signal="animation_finished" from="AnimatedSprite2" to="." method="_on_animation_finished"]

View file

@ -0,0 +1,29 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://graphics/npc/intelli_head.png" type="Texture" id=1]
[ext_resource path="res://objects/enemy/constant_bleed.tscn" type="PackedScene" id=2]
[sub_resource type="PhysicsMaterial" id=17]
bounce = 0.5
[sub_resource type="CircleShape2D" id=16]
radius = 5.0
[node name="IntelliHead" type="RigidBody2D"]
position = Vector2( 0, -4 )
mass = 2.0
physics_material_override = SubResource( 17 )
linear_velocity = Vector2( -80, -80 )
[node name="DeathSplatter" parent="." instance=ExtResource( 2 )]
position = Vector2( -1, 5 )
emission_shape = 0
direction = Vector2( 0, 1 )
spread = 60.0
[node name="Sprite" type="Sprite" parent="."]
texture = ExtResource( 1 )
flip_h = true
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 16 )