mirror of
https://github.com/creyD/ludum_dare_46.git
synced 2026-06-11 21:22:22 +02:00
Merge branch 'dev' into dev-gameplay
This commit is contained in:
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
42
src/Boss/SlimeBoss/States/BossState.gd
Normal file
42
src/Boss/SlimeBoss/States/BossState.gd
Normal 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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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')
|
||||
|
||||
19
src/Boss/SlimeBoss/States/Charge/Sprint.gd
Normal file
19
src/Boss/SlimeBoss/States/Charge/Sprint.gd
Normal 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')
|
||||
7
src/Boss/SlimeBoss/States/Die.gd
Normal file
7
src/Boss/SlimeBoss/States/Die.gd
Normal 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")
|
||||
@@ -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):
|
||||
|
||||
20
src/Boss/SlimeBoss/States/ReturnToCenter.gd
Normal file
20
src/Boss/SlimeBoss/States/ReturnToCenter.gd
Normal 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')
|
||||
@@ -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')
|
||||
|
||||
|
||||
|
||||
17
src/Boss/SlimeBoss/States/Stomp.gd
Normal file
17
src/Boss/SlimeBoss/States/Stomp.gd
Normal 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")
|
||||
@@ -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):
|
||||
20
src/Effects/Charge/ChargeEffect.tscn
Normal file
20
src/Effects/Charge/ChargeEffect.tscn
Normal 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 )
|
||||
BIN
src/Effects/Charge/charge.png
Normal file
BIN
src/Effects/Charge/charge.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 143 B |
34
src/Effects/Charge/charge.png.import
Normal file
34
src/Effects/Charge/charge.png.import
Normal 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
|
||||
9
src/Effects/Stomp/StompEffect.gd
Normal file
9
src/Effects/Stomp/StompEffect.gd
Normal file
@@ -0,0 +1,9 @@
|
||||
extends AnimatedSprite
|
||||
|
||||
func stomp():
|
||||
visible = true
|
||||
frame = 0
|
||||
play("stomp")
|
||||
|
||||
func _animation_finished():
|
||||
visible = false
|
||||
138
src/Effects/Stomp/StompEffect.tscn
Normal file
138
src/Effects/Stomp/StompEffect.tscn
Normal 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"]
|
||||
BIN
src/Effects/Stomp/stomp-splash.png
Normal file
BIN
src/Effects/Stomp/stomp-splash.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.0 KiB |
34
src/Effects/Stomp/stomp-splash.png.import
Normal file
34
src/Effects/Stomp/stomp-splash.png.import
Normal 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
|
||||
BIN
src/Maps/Tilesets/Edge/tileset_edge.png
Normal file
BIN
src/Maps/Tilesets/Edge/tileset_edge.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 739 B |
34
src/Maps/Tilesets/Edge/tileset_edge.png.import
Normal file
34
src/Maps/Tilesets/Edge/tileset_edge.png.import
Normal 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
|
||||
@@ -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')
|
||||
|
||||
@@ -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:
|
||||
|
||||
276
src/World.tscn
276
src/World.tscn
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user