Merge branch 'dev' into dev-gameplay

This commit is contained in:
2020-04-20 21:53:10 +02:00
committed by GitHub
23 changed files with 1386 additions and 199 deletions

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=31 format=2]
[gd_scene load_steps=39 format=2]
[ext_resource path="res://Overlap/HurtHit_Box/Hurtbox.tscn" type="PackedScene" id=1]
[ext_resource path="res://Overlap/HurtHit_Box/Hitbox.tscn" type="PackedScene" id=2]
@@ -7,31 +7,509 @@
[ext_resource path="res://Boss/SlimeBoss/Animations/move_down.png" type="Texture" id=5]
[ext_resource path="res://Boss/SlimeBoss/Animations/move_right.png" type="Texture" id=6]
[ext_resource path="res://Boss/SlimeBoss/States/Roam/RoamSequence.gd" type="Script" id=7]
[ext_resource path="res://Boss/SlimeBoss/States/Roam/Wait.gd" type="Script" id=8]
[ext_resource path="res://Boss/SlimeBoss/States/Wait.gd" type="Script" id=8]
[ext_resource path="res://Boss/SlimeBoss/States/FightStart.gd" type="Script" id=9]
[ext_resource path="res://Boss/SlimeBoss/Animations/move_down_angry.png" type="Texture" id=10]
[ext_resource path="res://Boss/SlimeBoss/Animations/move_up.png" type="Texture" id=11]
[ext_resource path="res://Boss/SlimeBoss/States/Roam/MoveToRandomPosition.gd" type="Script" id=12]
[ext_resource path="res://Overlap/Kind.tscn" type="PackedScene" id=13]
[ext_resource path="res://Boss/SlimeBoss/HeroCloseZone.gd" type="Script" id=14]
[ext_resource path="res://Boss/SlimeBoss/States/Die.gd" type="Script" id=14]
[ext_resource path="res://Overlap/StateMachine/SequenceState.gd" type="Script" id=15]
[ext_resource path="res://Boss/SlimeBoss/States/Charge/Prepare.gd" type="Script" id=16]
[ext_resource path="res://Boss/SlimeBoss/States/Charge/Sprint.gd" type="Script" id=17]
[ext_resource path="res://Effects/Charge/ChargeEffect.tscn" type="PackedScene" id=18]
[ext_resource path="res://Boss/SlimeBoss/States/ReturnToCenter.gd" type="Script" id=19]
[ext_resource path="res://Boss/SlimeBoss/States/Stomp.gd" type="Script" id=20]
[ext_resource path="res://Effects/Stomp/StompEffect.tscn" type="PackedScene" id=21]
[ext_resource path="res://Boss/SlimeBoss/States/BossState.gd" type="Script" id=22]
[sub_resource type="CapsuleShape2D" id=1]
radius = 18.0
height = 18.0
radius = 30.0
height = 50.0
[sub_resource type="CapsuleShape2D" id=2]
radius = 20.0
height = 18.0
radius = 13.0
height = 30.0
[sub_resource type="CircleShape2D" id=3]
radius = 150.0
[sub_resource type="CapsuleShape2D" id=3]
radius = 20.0
height = 30.0
[sub_resource type="CapsuleShape2D" id=4]
radius = 8.0
height = 32.0
[sub_resource type="Animation" id=5]
resource_name = "FightStart"
length = 0.45
step = 0.025
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.45 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ ExtResource( 5 ), ExtResource( 5 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:vframes")
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": 1,
"values": [ 10 ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:hframes")
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": [ 24 ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("Sprite:position")
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": [ Vector2( 0, -28 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("Sprite:flip_h")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("Sprite:frame")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0, 0.025, 0.05, 0.075, 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275, 0.3, 0.325, 0.35, 0.375, 0.4, 0.425 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]
}
[sub_resource type="Animation" id=6]
length = 0.45
step = 0.025
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.45 ),
"transitions": PoolRealArray( 2, 2 ),
"update": 0,
"values": [ ExtResource( 6 ), ExtResource( 6 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:vframes")
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": 1,
"values": [ 7 ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:hframes")
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": [ 11 ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("Sprite:position")
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": [ Vector2( 5, -28 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("Sprite:flip_h")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("Sprite:frame")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0, 0.025, 0.05, 0.075, 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275, 0.3, 0.325, 0.35, 0.375, 0.4, 0.425 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]
}
[sub_resource type="Animation" id=7]
length = 0.45
step = 0.025
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.45 ),
"transitions": PoolRealArray( 2, 2 ),
"update": 0,
"values": [ ExtResource( 6 ), ExtResource( 6 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:vframes")
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": 1,
"values": [ 7 ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:hframes")
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": [ 11 ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("Sprite:position")
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": [ Vector2( -5, -28 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("Sprite:flip_h")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("Sprite:frame")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0, 0.025, 0.05, 0.075, 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275, 0.3, 0.325, 0.35, 0.375, 0.4, 0.425 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]
}
[sub_resource type="Animation" id=8]
length = 0.45
step = 0.025
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.45 ),
"transitions": PoolRealArray( 36.7583, 36.7583 ),
"update": 0,
"values": [ ExtResource( 11 ), ExtResource( 11 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:vframes")
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": 1,
"values": [ 7 ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:hframes")
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": [ 11 ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("Sprite:position")
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": [ Vector2( 0, -28 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("Sprite:flip_h")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("Sprite:frame")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0, 0.025, 0.05, 0.075, 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275, 0.3, 0.325, 0.35, 0.375, 0.4, 0.425 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]
}
[sub_resource type="Animation" id=9]
length = 1.9
step = 0.025
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.175, 0.3, 0.65, 0.775, 1.05, 1.9 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ ExtResource( 5 ), ExtResource( 10 ), ExtResource( 5 ), ExtResource( 10 ), ExtResource( 5 ), ExtResource( 10 ), ExtResource( 5 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:vframes")
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": 1,
"values": [ 10 ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:hframes")
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": [ 24 ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("Sprite:position")
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": [ Vector2( 0, -28 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("Sprite:flip_h")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("Sprite:frame")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0, 0.025, 0.05, 0.075, 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275, 0.3, 0.325, 0.35, 0.375, 0.4, 0.425, 0.45, 0.475, 0.5, 0.525, 0.55, 0.575, 0.6, 0.625, 0.65, 0.675, 0.7, 0.725, 0.75, 0.775, 0.8, 0.825, 0.85, 0.875, 0.9, 0.925, 0.95, 0.975, 1, 1.025, 1.05, 1.075, 1.1, 1.125, 1.15, 1.175, 1.2, 1.225, 1.25, 1.275, 1.3, 1.325, 1.35, 1.375, 1.4, 1.425, 1.45, 1.475, 1.5, 1.525, 1.55, 1.575, 1.6, 1.625, 1.65, 1.675, 1.7, 1.725, 1.75, 1.775, 1.8, 1.825, 1.85, 1.875 ),
"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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ]
}
[sub_resource type="Animation" id=15]
resource_name = "Die"
length = 0.6
step = 0.025
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:texture")
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": 1,
"values": [ ExtResource( 10 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:vframes")
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": 1,
"values": [ 10 ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:hframes")
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": [ 24 ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("Sprite:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0, 0.55 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector2( 0, -28 ), Vector2( 0, -1.90735e-06 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("Sprite:flip_h")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("Sprite:frame")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0, 0.025, 0.05, 0.075, 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275, 0.3, 0.325, 0.35, 0.375, 0.4, 0.425, 0.45, 0.475, 0.5, 0.525, 0.55 ),
"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 ),
"update": 1,
"values": [ 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 2, 3, 4 ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("Sprite:scale")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/keys = {
"times": PoolRealArray( 0, 0.55 ),
"transitions": PoolRealArray( 1, 1.93187 ),
"update": 0,
"values": [ Vector2( 1, 1 ), Vector2( 1e-05, 1e-05 ) ]
}
[sub_resource type="Animation" id=10]
length = 1.9
step = 0.025
tracks/0/type = "value"
@@ -107,9 +585,8 @@ tracks/5/keys = {
"values": [ 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ]
}
[sub_resource type="Animation" id=6]
[sub_resource type="Animation" id=11]
length = 2.66666
loop = true
step = 0.0111111
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
@@ -130,10 +607,10 @@ tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ ExtResource( 5 ) ]
"times": PoolRealArray( 0, 2.66666 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ ExtResource( 5 ), ExtResource( 5 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:vframes")
@@ -184,9 +661,8 @@ tracks/5/keys = {
"values": [ false ]
}
[sub_resource type="Animation" id=7]
[sub_resource type="Animation" id=12]
length = 1.28333
loop = true
step = 0.0166667
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
@@ -207,10 +683,10 @@ tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ ExtResource( 6 ) ]
"times": PoolRealArray( 0, 1.28333 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ ExtResource( 6 ), ExtResource( 6 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:vframes")
@@ -261,9 +737,8 @@ tracks/5/keys = {
"values": [ true ]
}
[sub_resource type="Animation" id=8]
[sub_resource type="Animation" id=13]
length = 1.28333
loop = true
step = 0.0166667
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
@@ -284,10 +759,10 @@ tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ ExtResource( 6 ) ]
"times": PoolRealArray( 0, 1.28334 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ ExtResource( 6 ), ExtResource( 6 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:vframes")
@@ -338,9 +813,8 @@ tracks/5/keys = {
"values": [ false ]
}
[sub_resource type="Animation" id=9]
[sub_resource type="Animation" id=14]
length = 1.28333
loop = true
step = 0.0166667
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:texture")
@@ -349,10 +823,10 @@ tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ ExtResource( 11 ) ]
"times": PoolRealArray( 0, 1.28334 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ ExtResource( 11 ), ExtResource( 11 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:vframes")
@@ -415,40 +889,37 @@ tracks/5/keys = {
"values": [ Vector2( 0, -28 ) ]
}
[sub_resource type="AnimationNodeAnimation" id=10]
animation = "MoveRight"
[sub_resource type="AnimationNodeAnimation" id=11]
animation = "MoveUp"
[sub_resource type="AnimationNodeAnimation" id=12]
animation = "MoveDown"
[sub_resource type="AnimationNodeAnimation" id=13]
animation = "MoveLeft"
[sub_resource type="AnimationNodeBlendSpace2D" id=14]
blend_point_0/node = SubResource( 10 )
blend_point_0/pos = Vector2( 1, 0 )
blend_point_1/node = SubResource( 11 )
blend_point_1/pos = Vector2( 0, -1.1 )
blend_point_2/node = SubResource( 12 )
blend_point_2/pos = Vector2( 0, 1.1 )
blend_point_3/node = SubResource( 13 )
blend_point_3/pos = Vector2( -1, 0 )
min_space = Vector2( -1, -1.1 )
max_space = Vector2( 1, 1.1 )
blend_mode = 1
[sub_resource type="AnimationNodeStateMachine" id=15]
states/move/node = SubResource( 14 )
states/move/position = Vector2( 143, 70 )
[sub_resource type="AnimationNodeStateMachinePlayback" id=16]
[sub_resource type="Animation" id=16]
resource_name = "__INIT__"
length = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:position")
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": [ Vector2( 0, -28 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:scale")
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": [ Vector2( 1, 1 ) ]
}
[node name="SlimeBoss" type="KinematicBody2D"]
collision_layer = 4
collision_mask = 131
collision_mask = 2
script = ExtResource( 4 )
__meta__ = {
"_edit_group_": true
@@ -456,6 +927,16 @@ __meta__ = {
[node name="Kind" parent="." instance=ExtResource( 13 )]
[node name="Effects" type="Node2D" parent="."]
[node name="ChargeEffect" parent="Effects" instance=ExtResource( 18 )]
position = Vector2( 0, -8 )
emitting = false
[node name="StompEffect" parent="Effects" instance=ExtResource( 21 )]
visible = false
frame = 29
[node name="Stats" parent="." instance=ExtResource( 3 )]
max_health = 3
@@ -476,20 +957,62 @@ one_shot = true
[node name="MoveToRandomPosition" type="Node" parent="States/RoamSequence"]
script = ExtResource( 12 )
[node name="Timer" type="Timer" parent="States/RoamSequence/MoveToRandomPosition"]
one_shot = true
[node name="ChargeSequence" type="Node" parent="States"]
script = ExtResource( 15 )
[node name="Charge" type="Node" parent="States/ChargeSequence"]
script = ExtResource( 16 )
[node name="Timer" type="Timer" parent="States/ChargeSequence/Charge"]
wait_time = 0.8
one_shot = true
[node name="Sprint" type="Node" parent="States/ChargeSequence"]
script = ExtResource( 17 )
[node name="Wait" type="Node" parent="States/ChargeSequence"]
script = ExtResource( 8 )
[node name="Timer" type="Timer" parent="States/ChargeSequence/Wait"]
wait_time = 0.25
one_shot = true
[node name="ReturnToCenter" type="Node" parent="States"]
script = ExtResource( 19 )
[node name="Stomp" type="Node" parent="States"]
script = ExtResource( 20 )
[node name="Die" type="Node" parent="States"]
script = ExtResource( 14 )
[node name="Death" type="Node" parent="States"]
script = ExtResource( 22 )
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 0, -28 )
texture = ExtResource( 5 )
texture = ExtResource( 10 )
vframes = 10
hframes = 24
frame = 2
[node name="StompHitbox" parent="." instance=ExtResource( 2 )]
[node name="CollisionShape2D" parent="StompHitbox" index="0"]
position = Vector2( 0, 10 )
rotation = 1.5708
shape = SubResource( 1 )
disabled = true
[node name="Hitbox" parent="." instance=ExtResource( 2 )]
visible = false
collision_layer = 4
[node name="CollisionShape2D" parent="Hitbox" index="0"]
position = Vector2( 0, -15 )
shape = SubResource( 1 )
position = Vector2( 0, -5 )
rotation = 1.5708
shape = SubResource( 2 )
[node name="Hurtbox" parent="." groups=[
"HittableByPlayer",
@@ -498,14 +1021,7 @@ collision_layer = 4
collision_mask = 128
[node name="CollisionShape2D" parent="Hurtbox" index="0"]
position = Vector2( 0, -15 )
shape = SubResource( 2 )
[node name="HeroCloseZone" type="Area2D" parent="."]
collision_layer = 0
script = ExtResource( 14 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="HeroCloseZone"]
rotation = 1.5708
shape = SubResource( 3 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
@@ -514,6 +1030,7 @@ rotation = 1.5708
shape = SubResource( 4 )
[node name="DebugLabel" type="Label" parent="."]
visible = false
margin_left = -42.2456
margin_top = -65.04
margin_right = 42.7544
@@ -525,22 +1042,26 @@ __meta__ = {
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "MoveRight"
anims/FightStart = SubResource( 5 )
anims/MoveDown = SubResource( 6 )
anims/MoveLeft = SubResource( 7 )
anims/MoveRight = SubResource( 8 )
anims/MoveUp = SubResource( 9 )
[node name="AnimationTree" type="AnimationTree" parent="."]
tree_root = SubResource( 15 )
anim_player = NodePath("../AnimationPlayer")
active = true
parameters/playback = SubResource( 16 )
parameters/move/blend_position = Vector2( 0.210872, 0.275 )
anims/ChargeDown = SubResource( 5 )
anims/ChargeLeft = SubResource( 6 )
anims/ChargeRight = SubResource( 7 )
anims/ChargeUp = SubResource( 8 )
anims/Charging = SubResource( 9 )
anims/Die = SubResource( 15 )
anims/FightStart = SubResource( 10 )
anims/MoveDown = SubResource( 11 )
anims/MoveLeft = SubResource( 12 )
anims/MoveRight = SubResource( 13 )
anims/MoveUp = SubResource( 14 )
anims/__INIT__ = SubResource( 16 )
[connection signal="animation_finished" from="Effects/StompEffect" to="States/Stomp" method="_on_StompEffect_animation_finished"]
[connection signal="health_changed" from="Stats" to="." method="_on_Stats_health_changed"]
[connection signal="no_health" from="Stats" to="." method="_on_Stats_no_health"]
[connection signal="area_entered" from="Hurtbox" to="." method="_on_Hurtbox_area_entered"]
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_finished"]
[editable path="StompHitbox"]
[editable path="Hitbox"]
[editable path="Hurtbox"]

View File

@@ -1,6 +1,5 @@
extends KinematicBody2D
onready var animation_playback = $AnimationTree.get("parameters/playback")
signal target_position_changed
signal state_changed(new_state_name)
signal phase_changed(new_phase_name)
@@ -8,7 +7,7 @@ signal phase_changed(new_phase_name)
export(float) var MASS = 8.0
onready var start_global_position = global_position
var target_position = Vector2()
var last_look = Vector2()
var state_active = null
var sequence_cycles = 0
@@ -26,7 +25,7 @@ func _ready():
if get_parent().has_node('Player'):
var player_node = get_parent().get_node('Player')
player_node.connect('position_changed', self, '_on_target_position_changed')
target_position = player_node.global_position
# target_position = player_node.global_position
for state_node in $States.get_children():
state_node.connect('finished', self, '_on_active_state_finished')
@@ -51,31 +50,29 @@ func _on_Stats_no_health():
set_invincible(true)
go_to_next_state($States/Die)
func _on_Stats_health_changed(new_health):
if _phase == PHASES.PHASE_ONE and new_health == 2:
_change_phase(PHASES.PHASE_TWO)
elif _phase == PHASES.PHASE_TWO and new_health == 1:
_change_phase(PHASES.PHASE_THREE)
elif _phase == PHASES.PHASE_THREE and new_health < 1:
go_to_next_state($States/Die)
func go_to_next_state(state_override=null):
if state_active:
state_active.exit()
if state_override != null:
state_active = state_override
else:
state_active = _decide_on_next_state()
emit_signal("state_changed", state_active.name)
state_active.enter()
func _on_Health_health_changed(new_health):
$Tween.interpolate_property($Pivot, 'scale', Vector2(0.92, 1.12), Vector2(1.0, 1.0), 0.3, Tween.TRANS_ELASTIC, Tween.EASE_IN_OUT)
$Tween.interpolate_property($Pivot/Body, 'modulate', Color('#ff48de'), Color('#ffffff'), 0.2, Tween.TRANS_QUINT, Tween.EASE_IN)
$Tween.start()
if _phase == PHASES.PHASE_ONE and new_health < 100:
_change_phase(PHASES.PHASE_TWO)
if _phase == PHASES.PHASE_TWO and new_health < 50:
_change_phase(PHASES.PHASE_THREE)
func _change_phase(new_phase):
set_invincible(true)
var phase_name = ""
match new_phase:
PHASES.PHASE_ONE:
@@ -92,90 +89,100 @@ func _change_phase(new_phase):
_phase = new_phase
# The AI's brain. This function defines the flow of states
# That's a big advantage of the state pattern
# If it grows too big you can swap it with a node
# Or move the flow of states to a data file, like JSON or a text file
var angry_phases_done = 0
func _decide_on_next_state():
# Battle start
if state_active == null:
set_invincible(true)
return $States/FightStart
if state_active == $States/FightStart:
set_invincible(false)
return $States/RoamSequence
if state_active == $States/RoamSequence:
return $States/FightStart
return $States/ChargeSequence
# Death
if state_active == $States/Die:
queue_free()
# return $States/Dead
if _phase == PHASES.PHASE_ONE:
if angry_phases_done < 1:
set_invincible(true)
sequence_cycles += 1
if sequence_cycles < 2:
return $States/ChargeSequence
else:
angry_phases_done = 1
sequence_cycles = 0
return $States/ReturnToCenter
else:
if state_active == $States/ReturnToCenter:
return $States/Stomp # TODO: Maybe Stomp.
if state_active == $States/Stomp:
set_invincible(false)
return $States/RoamSequence
if state_active == $States/RoamSequence:
return $States/ChargeSequence
if state_active == $States/ChargeSequence:
return $States/Stomp
if _phase == PHASES.PHASE_TWO:
if angry_phases_done < 2:
set_invincible(true)
if sequence_cycles < 4:
if state_active == $States/ChargeSequence:
return $States/Stomp
if state_active == $States/Stomp:
sequence_cycles += 1
return $States/ChargeSequence
return $States/ChargeSequence
else:
angry_phases_done = 2
sequence_cycles = 0
return $States/ReturnToCenter
else:
if state_active == $States/ReturnToCenter:
return $States/Stomp # TODO: Maybe Stomp.
if state_active == $States/Stomp:
set_invincible(false)
return $States/RoamSequence
if state_active == $States/RoamSequence:
return $States/ChargeSequence
if state_active == $States/ChargeSequence:
return $States/Stomp
if _phase == PHASES.PHASE_THREE:
if angry_phases_done < 3:
set_invincible(true)
if sequence_cycles < 6:
if state_active == $States/ChargeSequence:
return $States/Stomp
if state_active == $States/Stomp:
sequence_cycles += 1
return $States/ChargeSequence
return $States/ChargeSequence
else:
angry_phases_done = 3
sequence_cycles = 0
return $States/ReturnToCenter
else:
if state_active == $States/ReturnToCenter:
return $States/Stomp # TODO: Maybe Stomp.
if state_active == $States/Stomp:
set_invincible(false)
return $States/RoamSequence
if state_active == $States/RoamSequence:
return $States/ChargeSequence
if state_active == $States/ChargeSequence:
return $States/Stomp
# # Death
# if state_active == $States/Die:
# queue_free()
# return $States/Dead
#
# # PHASE ONE
# if _phase == PHASES.PHASE_ONE:
# if state_active == $States/RoamSequence:
# sequence_cycles += 1
# if sequence_cycles < 2:
# return $States/RoamSequence
# else:
# sequence_cycles = 0
# return $States/Stomp
# if state_active == $States/Stomp:
# return $States/RoamSequence
#
# # PHASE TWO
# elif _phase == PHASES.PHASE_TWO:
# if state_active == $States/RoamSequence:
# return $States/Stomp
# if state_active == $States/Stomp:
# if sequence_cycles < 2:
# sequence_cycles += 1
# return $States/Stomp
# else:
# sequence_cycles = 0
# return $States/ChargeSequence
# if state_active == $States/ChargeSequence:
# return $States/RoamSequence
#
#
# # PHASE THREE
# elif _phase == PHASES.PHASE_THREE:
# if state_active == $States/RoamSequence:
# return $States/Stomp
# if state_active == $States/Stomp:
# if sequence_cycles < 2:
# sequence_cycles += 1
# return $States/Stomp
# else:
# sequence_cycles = 0
# return $States/ChargeSequence
# if state_active == $States/ChargeSequence:
# if sequence_cycles < 2:
# sequence_cycles += 1
# return $States/ChargeSequence
# else:
# sequence_cycles = 0
# return $States/Stomp
# Using a public method makes it so we can change the entire particle setup anytime
func set_particles_active(value):
$DustPuffsLarge.emitting = value
# Same thing here, we will likely need more collision shapes in the final version
# So using a function we can group these disabled toggles together
func set_invincible(value):
$CollisionShape2D.disabled = value
$Hitbox/CollisionShape2D.disabled = value
# $CollisionShape2D.disabled = value
# $Hitbox/CollisionShape2D.disabled = value
$Hurtbox/CollisionShape2D.disabled = value
func _on_target_position_changed(new_position):
target_position = new_position
func _on_Hurtbox_area_entered(area):
$Stats.health -= area.damage

View File

@@ -0,0 +1,42 @@
extends "res://Overlap/StateMachine/State.gd"
onready var animation_player = owner.get_node("AnimationPlayer")
func play_directional_animation(name, vec):
var anim_name = name + get_nearest_diretion(vec)
if animation_player.current_animation != anim_name:
animation_player.play(anim_name)
func get_base_anim_name(name):
var base_name = name[0]
for i in range(1, len(name)):
if name[i] == name[i].to_upper():
return base_name
base_name += name[i]
func get_nearest_diretion(vec):
var directions = {
"Up": Vector2(0, -1.1),
"Down": Vector2(0, 1.1),
"Left": Vector2(-1.0, 0),
"Right": Vector2(1.0, 0)
}
var nearest_direction = "Left"
var smallest_distance = 999999999
for direction in directions.keys():
var vector = directions.get(direction)
var distance = vec.distance_to(vector)
if distance < smallest_distance:
nearest_direction = direction
smallest_distance = distance
return nearest_direction

View File

@@ -1,7 +1,16 @@
extends "res://Overlap/StateMachine/State.gd"
extends "res://Boss/SlimeBoss/States/BossState.gd"
onready var charge_effect = owner.get_node("Effects/ChargeEffect")
func enter():
owner.get_node('AnimationPlayer').play('prepare')
charge_effect.emitting = true
animation_player.play('Charging')
$Timer.start()
func _on_animation_finished(anim_name):
emit_signal('finished')
func exit():
charge_effect.emitting = false
$Timer.stop()
func update(delta):
if $Timer.time_left <= 0.0:
emit_signal('finished')

View File

@@ -0,0 +1,19 @@
extends "res://Boss/SlimeBoss/States/BossState.gd"
export(float) var SPEED = 300.0
var direction = Vector2()
func enter():
var player_pos = owner.get_parent().get_node("Player").global_position
direction = (player_pos - owner.global_position).normalized()
func exit():
owner.last_look = direction
func update(delta):
var last_vel = owner.move_and_slide(SPEED * direction)
play_directional_animation("Move", last_vel)
if owner.get_slide_count() > 0 or owner.position.x > 1800:
emit_signal('finished')

View File

@@ -0,0 +1,7 @@
extends "res://Boss/SlimeBoss/States/BossState.gd"
func enter():
animation_player.play("Die")
func _on_animation_finished(anim_name):
emit_signal("finished")

View File

@@ -1,11 +1,6 @@
extends "res://Overlap/StateMachine/State.gd"
onready var animation_player = owner.get_node("AnimationPlayer")
onready var animation_tree = owner.get_node("AnimationTree")
extends "BossState.gd"
func enter():
animation_tree.active = false
animation_player.playback_active = true
animation_player.play('FightStart')
func _on_animation_finished(anim_name):

View File

@@ -0,0 +1,20 @@
extends "res://Boss/SlimeBoss/States/BossState.gd"
export(float) var MASS = 4.0
export(float) var SLOW_RADIUS = 200.0
export(float) var MAX_SPEED = 300.0
export(float) var ARRIVE_DISTANCE = 6.0
var velocity = Vector2.ZERO
func update(delta):
velocity = Steering.arrive_to(velocity,
owner.global_position,
owner.start_global_position,
MASS,
SLOW_RADIUS,
MAX_SPEED)
play_directional_animation("Move", velocity)
owner.move_and_slide(velocity)
if owner.global_position.distance_to(owner.start_global_position) < ARRIVE_DISTANCE:
emit_signal('finished')

View File

@@ -1,28 +1,36 @@
extends "res://Overlap/StateMachine/State.gd"
extends "../BossState.gd"
export(float) var ARRIVE_DISTANCE = 6.0
export(float) var SLOW_RADIUS = 200.0
export(float) var MASS = 4.0
export(float) var MASS = 5.0
export(float) var MAX_SPEED = 300.0
export(float) var ROAM_RADIUS = 150.0
export(float) var ROAM_RADIUS = 100.0
var time_since_start = 0
var target_position = Vector2()
var start_position = Vector2()
var velocity = Vector2()
var last_vel = Vector2()
func enter():
start_position = get_parent().start_position
target_position = calculate_new_target_position()
owner.get_node('AnimationPlayer').play('move')
$Timer.start()
func exit():
owner.last_look = last_vel
$Timer.stop()
func update(delta):
# Set animation
velocity = Steering.arrive_to(velocity, owner.global_position, target_position, MASS, SLOW_RADIUS, MAX_SPEED)
owner.move_and_slide(velocity)
last_vel = owner.move_and_slide(velocity)
if owner.global_position.distance_to(target_position) < ARRIVE_DISTANCE:
play_directional_animation("Move", last_vel)
if owner.global_position.distance_to(target_position) < ARRIVE_DISTANCE or $Timer.time_left <= 0.0:
emit_signal('finished')

View File

@@ -0,0 +1,17 @@
extends "res://Boss/SlimeBoss/States/BossState.gd"
onready var stomp_hitbox = owner.get_node("StompHitbox/CollisionShape2D")
onready var stomp_effect = owner.get_node("Effects/StompEffect")
func enter():
stomp_hitbox.disabled = false
stomp_effect.stomp()
func exit():
stomp_hitbox.disabled = true
func update(delta):
play_directional_animation("Charge", owner.last_look)
func _on_StompEffect_animation_finished():
emit_signal("finished")

View File

@@ -1,7 +1,6 @@
extends "res://Overlap/StateMachine/State.gd"
extends "res://Boss/SlimeBoss/States/BossState.gd"
func enter():
owner.get_node('AnimationPlayer').play('idle')
$Timer.start()
func update(delta):

View File

@@ -0,0 +1,20 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Effects/Charge/charge.png" type="Texture" id=1]
[sub_resource type="ParticlesMaterial" id=1]
emission_shape = 2
emission_box_extents = Vector3( 50, 20, 1 )
flag_disable_z = true
gravity = Vector3( 0, -40, 0 )
orbit_velocity = 0.0
orbit_velocity_random = 0.0
tangential_accel = 80.0
scale = 0.1
scale_random = 1.0
[node name="ChargeEffect" type="Particles2D"]
amount = 20
lifetime = 0.8
process_material = SubResource( 1 )
texture = ExtResource( 1 )

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/charge.png-ac36c6bab3ea421fea437d8d775673a9.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Effects/Charge/charge.png"
dest_files=[ "res://.import/charge.png-ac36c6bab3ea421fea437d8d775673a9.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@@ -0,0 +1,9 @@
extends AnimatedSprite
func stomp():
visible = true
frame = 0
play("stomp")
func _animation_finished():
visible = false

View File

@@ -0,0 +1,138 @@
[gd_scene load_steps=34 format=2]
[ext_resource path="res://Effects/Stomp/stomp-splash.png" type="Texture" id=1]
[ext_resource path="res://Effects/Stomp/StompEffect.gd" type="Script" id=2]
[sub_resource type="AtlasTexture" id=2]
atlas = ExtResource( 1 )
region = Rect2( 0, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=3]
atlas = ExtResource( 1 )
region = Rect2( 120, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=4]
atlas = ExtResource( 1 )
region = Rect2( 240, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=5]
atlas = ExtResource( 1 )
region = Rect2( 360, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=6]
atlas = ExtResource( 1 )
region = Rect2( 480, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=7]
atlas = ExtResource( 1 )
region = Rect2( 600, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=8]
atlas = ExtResource( 1 )
region = Rect2( 720, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=9]
atlas = ExtResource( 1 )
region = Rect2( 840, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=10]
atlas = ExtResource( 1 )
region = Rect2( 960, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=11]
atlas = ExtResource( 1 )
region = Rect2( 1080, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=12]
atlas = ExtResource( 1 )
region = Rect2( 1200, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=13]
atlas = ExtResource( 1 )
region = Rect2( 1320, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=14]
atlas = ExtResource( 1 )
region = Rect2( 1440, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=15]
atlas = ExtResource( 1 )
region = Rect2( 1560, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=16]
atlas = ExtResource( 1 )
region = Rect2( 1680, 0, 120, 120 )
[sub_resource type="AtlasTexture" id=17]
atlas = ExtResource( 1 )
region = Rect2( 0, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=18]
atlas = ExtResource( 1 )
region = Rect2( 120, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=19]
atlas = ExtResource( 1 )
region = Rect2( 240, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=20]
atlas = ExtResource( 1 )
region = Rect2( 360, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=21]
atlas = ExtResource( 1 )
region = Rect2( 480, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=22]
atlas = ExtResource( 1 )
region = Rect2( 600, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=23]
atlas = ExtResource( 1 )
region = Rect2( 720, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=24]
atlas = ExtResource( 1 )
region = Rect2( 840, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=25]
atlas = ExtResource( 1 )
region = Rect2( 960, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=26]
atlas = ExtResource( 1 )
region = Rect2( 1080, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=27]
atlas = ExtResource( 1 )
region = Rect2( 1200, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=28]
atlas = ExtResource( 1 )
region = Rect2( 1320, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=29]
atlas = ExtResource( 1 )
region = Rect2( 1440, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=30]
atlas = ExtResource( 1 )
region = Rect2( 1560, 120, 120, 120 )
[sub_resource type="AtlasTexture" id=31]
atlas = ExtResource( 1 )
region = Rect2( 1680, 120, 120, 120 )
[sub_resource type="SpriteFrames" id=32]
animations = [ {
"frames": [ SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ), SubResource( 29 ), SubResource( 30 ), SubResource( 31 ) ],
"loop": false,
"name": "stomp",
"speed": 60.0
} ]
[node name="StompEffect" type="AnimatedSprite"]
frames = SubResource( 32 )
animation = "stomp"
script = ExtResource( 2 )
[connection signal="animation_finished" from="." to="." method="_animation_finished"]

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/stomp-splash.png-8255ebc3952d7a9d2ea05b169c877e7f.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Effects/Stomp/stomp-splash.png"
dest_files=[ "res://.import/stomp-splash.png-8255ebc3952d7a9d2ea05b169c877e7f.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/tileset_edge.png-9676f4036529ea7cfae58e9cbb837b60.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Maps/Tilesets/Edge/tileset_edge.png"
dest_files=[ "res://.import/tileset_edge.png-9676f4036529ea7cfae58e9cbb837b60.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@@ -31,7 +31,6 @@ func _on_state_active_finished():
func go_to_next_state_in_sequence():
state_active.exit()
var new_state_index = (state_active.get_index() + 1) % get_child_count()
if new_state_index == 0:
emit_signal('finished')

View File

@@ -7,6 +7,7 @@ export(float) var max_speed := 125.0
onready var speed := max_speed setget set_speed
signal no_health
signal health_changed
func set_health(value):
if value > max_health:
@@ -15,6 +16,8 @@ func set_health(value):
health = value
if health < 1:
emit_signal("no_health")
emit_signal("health_changed", health)
func set_speed(value):
if value > max_speed:

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=2]
[gd_scene load_steps=23 format=2]
[ext_resource path="res://Player/Player.tscn" type="PackedScene" id=1]
[ext_resource path="res://World.gd" type="Script" id=2]
@@ -9,8 +9,227 @@
[ext_resource path="res://Boss/SlimeBoss/SlimeBoss.tscn" type="PackedScene" id=8]
[ext_resource path="res://Menus/SelectUpgradeUI/SelectUpgradeUI.tscn" type="PackedScene" id=9]
[ext_resource path="res://Objects/Bonfire/Bonfire.tscn" type="PackedScene" id=10]
[ext_resource path="res://Debug/BossStateDisplay.gd" type="Script" id=11]
[ext_resource path="res://Maps/Tilesets/Edge/tileset_edge.png" type="Texture" id=12]
[ext_resource path="res://Maps/Grid.tscn" type="PackedScene" id=18]
[sub_resource type="ConvexPolygonShape2D" id=1]
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=2]
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=3]
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=4]
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=5]
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=6]
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=7]
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=8]
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
[sub_resource type="TileSet" id=9]
1/name = "tileset_edge.png 1"
1/texture = ExtResource( 12 )
1/tex_offset = Vector2( 0, 0 )
1/modulate = Color( 1, 1, 1, 1 )
1/region = Rect2( 0, -32, 96, 32 )
1/tile_mode = 1
1/autotile/bitmask_mode = 0
1/autotile/bitmask_flags = [ ]
1/autotile/icon_coordinate = Vector2( 0, 0 )
1/autotile/tile_size = Vector2( 32, 32 )
1/autotile/spacing = 0
1/autotile/occluder_map = [ ]
1/autotile/navpoly_map = [ ]
1/autotile/priority_map = [ ]
1/autotile/z_index_map = [ ]
1/occluder_offset = Vector2( 0, 0 )
1/navigation_offset = Vector2( 0, 0 )
1/shape_offset = Vector2( 0, 0 )
1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
1/shape_one_way = false
1/shape_one_way_margin = 0.0
1/shapes = [ ]
1/z_index = 0
2/name = "tileset_edge.png 2"
2/texture = ExtResource( 12 )
2/tex_offset = Vector2( 0, 0 )
2/modulate = Color( 1, 1, 1, 1 )
2/region = Rect2( 0, 0, 32, 32 )
2/tile_mode = 0
2/occluder_offset = Vector2( 0, 0 )
2/navigation_offset = Vector2( 0, 0 )
2/shape_offset = Vector2( 0, 0 )
2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
2/shape = SubResource( 1 )
2/shape_one_way = false
2/shape_one_way_margin = 1.0
2/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 1 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
2/z_index = 0
3/name = "tileset_edge.png 3"
3/texture = ExtResource( 12 )
3/tex_offset = Vector2( 0, 0 )
3/modulate = Color( 1, 1, 1, 1 )
3/region = Rect2( 32, 0, 32, 32 )
3/tile_mode = 0
3/occluder_offset = Vector2( 0, 0 )
3/navigation_offset = Vector2( 0, 0 )
3/shape_offset = Vector2( 0, 0 )
3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
3/shape = SubResource( 2 )
3/shape_one_way = false
3/shape_one_way_margin = 1.0
3/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 2 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
3/z_index = 0
4/name = "tileset_edge.png 4"
4/texture = ExtResource( 12 )
4/tex_offset = Vector2( 0, 0 )
4/modulate = Color( 1, 1, 1, 1 )
4/region = Rect2( 64, 0, 32, 32 )
4/tile_mode = 0
4/occluder_offset = Vector2( 0, 0 )
4/navigation_offset = Vector2( 0, 0 )
4/shape_offset = Vector2( 0, 0 )
4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
4/shape = SubResource( 3 )
4/shape_one_way = false
4/shape_one_way_margin = 1.0
4/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 3 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
4/z_index = 0
5/name = "tileset_edge.png 5"
5/texture = ExtResource( 12 )
5/tex_offset = Vector2( 0, 0 )
5/modulate = Color( 1, 1, 1, 1 )
5/region = Rect2( 96, 0, 32, 32 )
5/tile_mode = 0
5/occluder_offset = Vector2( 0, 0 )
5/navigation_offset = Vector2( 0, 0 )
5/shape_offset = Vector2( 0, 0 )
5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
5/shape = SubResource( 4 )
5/shape_one_way = false
5/shape_one_way_margin = 1.0
5/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 4 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
5/z_index = 0
6/name = "tileset_edge.png 6"
6/texture = ExtResource( 12 )
6/tex_offset = Vector2( 0, 0 )
6/modulate = Color( 1, 1, 1, 1 )
6/region = Rect2( 0, 32, 32, 32 )
6/tile_mode = 0
6/occluder_offset = Vector2( 0, 0 )
6/navigation_offset = Vector2( 0, 0 )
6/shape_offset = Vector2( 0, 0 )
6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
6/shape = SubResource( 5 )
6/shape_one_way = false
6/shape_one_way_margin = 1.0
6/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 5 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
6/z_index = 0
7/name = "tileset_edge.png 7"
7/texture = ExtResource( 12 )
7/tex_offset = Vector2( 0, 0 )
7/modulate = Color( 1, 1, 1, 1 )
7/region = Rect2( 32, 32, 32, 32 )
7/tile_mode = 0
7/occluder_offset = Vector2( 0, 0 )
7/navigation_offset = Vector2( 0, 0 )
7/shape_offset = Vector2( 0, 0 )
7/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
7/shape = SubResource( 6 )
7/shape_one_way = false
7/shape_one_way_margin = 1.0
7/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 6 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
7/z_index = 0
8/name = "tileset_edge.png 8"
8/texture = ExtResource( 12 )
8/tex_offset = Vector2( 0, 0 )
8/modulate = Color( 1, 1, 1, 1 )
8/region = Rect2( 64, 32, 32, 32 )
8/tile_mode = 0
8/occluder_offset = Vector2( 0, 0 )
8/navigation_offset = Vector2( 0, 0 )
8/shape_offset = Vector2( 0, 0 )
8/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
8/shape = SubResource( 7 )
8/shape_one_way = false
8/shape_one_way_margin = 1.0
8/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 7 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
8/z_index = 0
9/name = "tileset_edge.png 9"
9/texture = ExtResource( 12 )
9/tex_offset = Vector2( 0, 0 )
9/modulate = Color( 1, 1, 1, 1 )
9/region = Rect2( 96, 32, 32, 32 )
9/tile_mode = 0
9/occluder_offset = Vector2( 0, 0 )
9/navigation_offset = Vector2( 0, 0 )
9/shape_offset = Vector2( 0, 0 )
9/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
9/shape = SubResource( 8 )
9/shape_one_way = false
9/shape_one_way_margin = 1.0
9/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 8 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
9/z_index = 0
[node name="World" type="Node2D"]
pause_mode = 2
script = ExtResource( 2 )
@@ -26,6 +245,7 @@ pause_mode = 1
frame = 20
playing = false
[node name="FloorTileMap" type="TileMap" parent="."]
pause_mode = 1
position = Vector2( 16, 16 )
@@ -36,14 +256,23 @@ collision_mask = 0
format = 1
tile_data = PoolIntArray( -131074, 47, 0, -131073, 47, 1, -196608, 47, 1, -196607, 47, 1, -196606, 47, 1, -196605, 47, 1, -196604, 47, 1, -196603, 47, 1, -196602, 47, 1, -196601, 47, 1, -196600, 47, 1, -196599, 47, 1, -196598, 47, 1, -196597, 47, 1, -196596, 47, 1, -196595, 47, 1, -196594, 47, 1, -196593, 47, 1, -196592, 47, 2, -65538, 47, 65536, -65537, 47, 65537, -131072, 47, 65537, -131071, 47, 65537, -131070, 47, 65537, -131069, 47, 65537, -131068, 47, 65537, -131067, 47, 65537, -131066, 47, 65537, -131065, 47, 65537, -131064, 47, 65537, -131063, 47, 65537, -131062, 47, 65537, -131061, 47, 65537, -131060, 47, 65537, -131059, 47, 65537, -131058, 47, 65537, -131057, 47, 65537, -131056, 47, 65538, -2, 47, 65536, -1, 47, 65541, -65536, 47, 131073, -65535, 47, 131073, -65534, 47, 131073, -65533, 47, 131073, -65532, 47, 131073, -65531, 47, 131073, -65530, 47, 131073, -65529, 47, 131073, -65528, 47, 131073, -65527, 47, 131073, -65526, 47, 131073, -65525, 47, 131073, -65524, 47, 131073, -65523, 47, 131073, -65522, 47, 65542, -65521, 47, 65537, -65520, 47, 65538, 65534, 47, 65536, 65535, 47, 65538, 14, 47, 65536, 15, 47, 65537, 16, 47, 65538, 131070, 47, 65536, 131071, 47, 65538, 65550, 47, 65536, 65551, 47, 65537, 65552, 47, 65538, 196606, 47, 65536, 196607, 47, 65538, 131086, 47, 65536, 131087, 47, 65537, 131088, 47, 65538, 262142, 47, 65536, 262143, 47, 65538, 196622, 47, 65536, 196623, 47, 65537, 196624, 47, 65538, 327678, 47, 65536, 327679, 47, 65538, 262158, 47, 65536, 262159, 47, 65537, 262160, 47, 65538, 393214, 47, 65536, 393215, 47, 65538, 327694, 47, 65536, 327695, 47, 65537, 327696, 47, 65538, 458750, 47, 65536, 458751, 47, 131077, 393216, 47, 1, 393217, 47, 1, 393218, 47, 1, 393219, 47, 1, 393220, 47, 1, 393221, 47, 1, 393222, 47, 1, 393223, 47, 1, 393224, 47, 1, 393225, 47, 1, 393226, 47, 1, 393227, 47, 1, 393228, 47, 1, 393229, 47, 1, 393230, 47, 131078, 393231, 47, 65537, 393232, 47, 65538, 524286, 47, 65536, 524287, 47, 65537, 458752, 47, 65537, 458753, 47, 65537, 458754, 47, 65537, 458755, 47, 65537, 458756, 47, 65537, 458757, 47, 65537, 458758, 47, 65537, 458759, 47, 65537, 458760, 47, 65537, 458761, 47, 65537, 458762, 47, 65537, 458763, 47, 65537, 458764, 47, 65537, 458765, 47, 65537, 458766, 47, 65537, 458767, 47, 65537, 458768, 47, 65538, 589822, 47, 65536, 589823, 47, 65537, 524288, 47, 65537, 524289, 47, 65537, 524290, 47, 65537, 524291, 47, 65537, 524292, 47, 65537, 524293, 47, 65537, 524294, 47, 65537, 524295, 47, 65537, 524296, 47, 65537, 524297, 47, 65537, 524298, 47, 65537, 524299, 47, 65537, 524300, 47, 65537, 524301, 47, 65537, 524302, 47, 65537, 524303, 47, 65537, 524304, 47, 65538, 655358, 47, 131072, 655359, 47, 131073, 589824, 47, 131073, 589825, 47, 131073, 589826, 47, 131073, 589827, 47, 131073, 589828, 47, 131073, 589829, 47, 131073, 589830, 47, 131073, 589831, 47, 131073, 589832, 47, 131073, 589833, 47, 131073, 589834, 47, 131073, 589835, 47, 131073, 589836, 47, 131073, 589837, 47, 131073, 589838, 47, 131073, 589839, 47, 131073, 589840, 47, 131074 )
[node name="Edge" type="TileMap" parent="."]
position = Vector2( 16, 16 )
tile_set = SubResource( 9 )
cell_size = Vector2( 32, 32 )
format = 1
tile_data = PoolIntArray( -1, 5, 0, -65536, 3, 0, -65535, 3, 0, -65534, 3, 0, -65533, 3, 0, -65532, 3, 0, -65531, 3, 0, -65530, 3, 0, -65529, 3, 0, -65528, 3, 0, -65527, 3, 0, -65526, 3, 0, -65525, 3, 0, -65524, 3, 0, -65523, 3, 0, -65522, 4, 0, 65535, 2, 0, 14, 6, 0, 131071, 2, 0, 65550, 6, 0, 196607, 2, 0, 131086, 6, 0, 262143, 2, 0, 196622, 6, 0, 327679, 2, 0, 262158, 6, 0, 393215, 9, 0, 327680, 7, 0, 327681, 7, 0, 327682, 7, 0, 327683, 7, 0, 327684, 7, 0, 327685, 7, 0, 327686, 7, 0, 327687, 7, 0, 327688, 7, 0, 327689, 7, 0, 327690, 7, 0, 327691, 7, 0, 327692, 7, 0, 327693, 7, 0, 327694, 8, 0, 458751, 0, 0 )
[node name="YSort" type="YSort" parent="."]
pause_mode = 1
[node name="Bonfire" parent="YSort" instance=ExtResource( 10 )]
position = Vector2( 379.618, 131.478 )
[node name="SlimeBoss" parent="YSort" instance=ExtResource( 8 )]
position = Vector2( 104, 80 )
position = Vector2( 240, 120 )
[node name="Minion" parent="YSort" instance=ExtResource( 9 )]
position = Vector2( 24, 184 )
@@ -57,6 +286,49 @@ pause_mode = 2
[node name="DialogueBox" parent="CanvasLayer" instance=ExtResource( 6 )]
visible = false
[node name="DebugLabel" type="Control" parent="CanvasLayer"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="BossStateDisplay" type="Panel" parent="CanvasLayer/DebugLabel"]
anchor_left = 1.0
anchor_right = 1.0
margin_left = -80.0
margin_bottom = 50.0
script = ExtResource( 11 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/DebugLabel/BossStateDisplay"]
margin_right = 40.0
margin_bottom = 40.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Title" type="Label" parent="CanvasLayer/DebugLabel/BossStateDisplay/VBoxContainer"]
margin_right = 40.0
margin_bottom = 12.0
custom_fonts/font = ExtResource( 9 )
text = "Boss"
[node name="Phase" type="Label" parent="CanvasLayer/DebugLabel/BossStateDisplay/VBoxContainer"]
margin_top = 16.0
margin_right = 40.0
margin_bottom = 28.0
custom_fonts/font = ExtResource( 9 )
[node name="State" type="Label" parent="CanvasLayer/DebugLabel/BossStateDisplay/VBoxContainer"]
margin_top = 32.0
margin_right = 40.0
margin_bottom = 44.0
custom_fonts/font = ExtResource( 9 )
[node name="DragNDropUI" parent="CanvasLayer" instance=ExtResource( 5 )]
anchor_top = -0.00171594
anchor_bottom = 0.998284