diff --git a/.gitignore b/.gitignore
index 874c70e..c3bdbbe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
.godot
.codebuddy
-cvb*
\ No newline at end of file
+cvb*
+*.zip
\ No newline at end of file
diff --git a/components/Abstracts/BulletBase.tscn b/components/Abstracts/BulletBase.tscn
index 2a9beb8..09907f6 100644
--- a/components/Abstracts/BulletBase.tscn
+++ b/components/Abstracts/BulletBase.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=8 format=3 uid="uid://crtdkysmnkith"]
+[gd_scene format=3 uid="uid://crtdkysmnkith"]
[ext_resource type="Script" uid="uid://dp7c02tob106n" path="res://scripts/Statemachine/BulletBase.gd" id="1_pklpq"]
@@ -38,19 +38,19 @@ _data = {
[sub_resource type="CircleShape2D" id="CircleShape2D_ecl7m"]
-[node name="BulletBase" type="Area2D"]
+[node name="BulletBase" type="Area2D" unique_id=5571707]
script = ExtResource("1_pklpq")
-[node name="texture" type="AnimatedSprite2D" parent="."]
+[node name="texture" type="AnimatedSprite2D" parent="." unique_id=162977358]
unique_name_in_owner = true
sprite_frames = SubResource("SpriteFrames_vypy3")
-[node name="animator" type="AnimationPlayer" parent="texture"]
+[node name="animator" type="AnimationPlayer" parent="texture" unique_id=1114087117]
unique_name_in_owner = true
-libraries = {
-&"": SubResource("AnimationLibrary_dxweq")
-}
+libraries/ = SubResource("AnimationLibrary_dxweq")
-[node name="hitbox" type="CollisionShape2D" parent="."]
+[node name="audio" type="AudioStreamPlayer2D" parent="texture" unique_id=1167114186]
+
+[node name="hitbox" type="CollisionShape2D" parent="." unique_id=175349408]
unique_name_in_owner = true
shape = SubResource("CircleShape2D_ecl7m")
diff --git a/components/Abstracts/EffectBase.tscn b/components/Abstracts/EffectBase.tscn
index e43a974..7fadcfe 100644
--- a/components/Abstracts/EffectBase.tscn
+++ b/components/Abstracts/EffectBase.tscn
@@ -1,9 +1,17 @@
-[gd_scene load_steps=3 format=3 uid="uid://bcvuuy2m0pke0"]
+[gd_scene load_steps=4 format=3 uid="uid://bcvuuy2m0pke0"]
[ext_resource type="Script" uid="uid://0iwnvhdh645p" path="res://scripts/Statemachine/EffectController.gd" id="1_pt2rk"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7cv4k"]
+[sub_resource type="SpriteFrames" id="SpriteFrames_44wuf"]
+animations = [{
+"frames": [],
+"loop": true,
+"name": &"spawn",
+"speed": 5.0
+}]
+
[node name="EffectBase" type="Node2D"]
z_index = 1
script = ExtResource("1_pt2rk")
@@ -29,3 +37,9 @@ color = Color(1, 1, 1, 0)
[node name="animator" type="AnimationPlayer" parent="stage"]
unique_name_in_owner = true
+
+[node name="texture" type="AnimatedSprite2D" parent="stage"]
+unique_name_in_owner = true
+position = Vector2(50, 50)
+sprite_frames = SubResource("SpriteFrames_44wuf")
+animation = &"spawn"
diff --git a/components/Abstracts/WeaponCardBase.tscn b/components/Abstracts/WeaponCardBase.tscn
index 045f792..88ca697 100644
--- a/components/Abstracts/WeaponCardBase.tscn
+++ b/components/Abstracts/WeaponCardBase.tscn
@@ -1,7 +1,8 @@
-[gd_scene load_steps=7 format=3 uid="uid://ckq2cq6m23hq3"]
+[gd_scene format=3 uid="uid://ckq2cq6m23hq3"]
[ext_resource type="Script" uid="uid://c7odfwtug8ds4" path="res://scripts/Structs/Weapon.gd" id="1_g802t"]
[ext_resource type="Theme" uid="uid://dhvs6urgf6jr5" path="res://themes/main.tres" id="2_fwkd3"]
+[ext_resource type="Texture2D" uid="uid://dwwpkn4q07ja2" path="res://icon.svg" id="2_j0w4u"]
[ext_resource type="PackedScene" uid="uid://ch81vd3awkmhk" path="res://components/UI/WeaponName.tscn" id="3_qv0b1"]
[ext_resource type="Texture2D" uid="uid://k13cte17httt" path="res://resources/items/energy.svg" id="4_6gohw"]
[ext_resource type="PackedScene" uid="uid://bbm8l3hr4ihar" path="res://components/UI/ItemShow.tscn" id="4_k01vb"]
@@ -22,73 +23,80 @@ corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
-[node name="WeaponCard" type="PanelContainer"]
+[sub_resource type="LabelSettings" id="LabelSettings_b3nsw"]
+font_size = 12
+font_color = Color(0.55, 0.55, 0.55, 1)
+
+[node name="WeaponCard" type="PanelContainer" unique_id=2085048785]
offset_right = 350.0
offset_bottom = 304.0
theme_override_styles/panel = SubResource("StyleBoxFlat_n2ewr")
script = ExtResource("1_g802t")
+avatarTexture = ExtResource("2_j0w4u")
+sources = Array[String](["无灵"])
metadata/_edit_lock_ = true
-[node name="sounds" type="Node2D" parent="."]
+[node name="sounds" type="Node2D" parent="." unique_id=1775425991]
unique_name_in_owner = true
-[node name="attack" type="AudioStreamPlayer2D" parent="sounds"]
+[node name="attack" type="AudioStreamPlayer2D" parent="sounds" unique_id=853583292]
process_mode = 3
-[node name="container" type="VBoxContainer" parent="."]
+[node name="container" type="VBoxContainer" parent="." unique_id=575698869]
layout_mode = 2
theme_override_constants/separation = 10
alignment = 1
-[node name="wrapper" type="VBoxContainer" parent="container"]
+[node name="wrapper" type="VBoxContainer" parent="container" unique_id=673686123]
layout_mode = 2
-[node name="updateBtn" type="Button" parent="container/wrapper"]
+[node name="updateBtn" type="Button" parent="container/wrapper" unique_id=248603389]
unique_name_in_owner = true
layout_mode = 2
theme = ExtResource("2_fwkd3")
text = "升级"
-[node name="souls" type="HBoxContainer" parent="container/wrapper"]
+[node name="souls" type="HBoxContainer" parent="container/wrapper" unique_id=1439164733]
layout_mode = 2
-[node name="extractBtn" type="Button" parent="container/wrapper/souls"]
+[node name="extractBtn" type="Button" parent="container/wrapper/souls" unique_id=496889309]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("2_fwkd3")
text = "提炼"
-[node name="inlayBtn" type="Button" parent="container/wrapper/souls"]
+[node name="inlayBtn" type="Button" parent="container/wrapper/souls" unique_id=1008423578]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("2_fwkd3")
text = "镶嵌"
-[node name="info" type="VBoxContainer" parent="container"]
+[node name="info" type="VBoxContainer" parent="container" unique_id=1625294072]
layout_mode = 2
theme_override_constants/separation = 10
-[node name="avatar" type="TextureRect" parent="container/info"]
+[node name="avatar" type="TextureRect" parent="container/info" unique_id=1021985889]
unique_name_in_owner = true
custom_minimum_size = Vector2(75, 75)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 0
+texture = ExtResource("2_j0w4u")
expand_mode = 1
stretch_mode = 5
-[node name="infos" type="HBoxContainer" parent="container/info"]
+[node name="infos" type="HBoxContainer" parent="container/info" unique_id=492799150]
layout_mode = 2
theme_override_constants/separation = 20
alignment = 1
-[node name="energyInfo" type="HBoxContainer" parent="container/info/infos"]
+[node name="energyInfo" type="HBoxContainer" parent="container/info/infos" unique_id=644675021]
layout_mode = 2
alignment = 1
-[node name="icon" type="TextureRect" parent="container/info/infos/energyInfo"]
+[node name="icon" type="TextureRect" parent="container/info/infos/energyInfo" unique_id=2073246581]
custom_minimum_size = Vector2(15, 15)
layout_mode = 2
size_flags_horizontal = 4
@@ -97,26 +105,30 @@ texture = ExtResource("4_6gohw")
expand_mode = 1
stretch_mode = 5
-[node name="energy" type="Label" parent="container/info/infos/energyInfo"]
+[node name="energy" type="Label" parent="container/info/infos/energyInfo" unique_id=1664028115]
unique_name_in_owner = true
layout_mode = 2
text = "0.0"
-[node name="beachball" parent="container/info/infos" instance=ExtResource("4_k01vb")]
+[node name="beachball" parent="container/info/infos" unique_id=653442983 instance=ExtResource("4_k01vb")]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
type = 3
count = 500
-[node name="soul" parent="container/info/infos" instance=ExtResource("4_k01vb")]
+[node name="soul" parent="container/info/infos" unique_id=1367320807 instance=ExtResource("4_k01vb")]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
type = 4
count = 1
-[node name="name" parent="container/info" instance=ExtResource("3_qv0b1")]
+[node name="displays" type="VBoxContainer" parent="container/info" unique_id=784441328]
+layout_mode = 2
+theme_override_constants/separation = 0
+
+[node name="name" parent="container/info/displays" unique_id=1576068972 instance=ExtResource("3_qv0b1")]
unique_name_in_owner = true
layout_mode = 2
typeTopicColorMap = {
@@ -134,14 +146,27 @@ soulLevelColorMap = {
5: Color(1, 0.57713, 0.247421, 1)
}
-[node name="description" type="RichTextLabel" parent="container"]
+[node name="source" type="Label" parent="container/info/displays" unique_id=365191794]
+unique_name_in_owner = true
+layout_mode = 2
+text = "无灵"
+label_settings = SubResource("LabelSettings_b3nsw")
+horizontal_alignment = 1
+
+[node name="description" type="RichTextLabel" parent="container" unique_id=566230682]
unique_name_in_owner = true
layout_mode = 2
bbcode_enabled = true
text = "[center]造成[color=cyan]10[/color]点伤害。[/center]"
fit_content = true
-[node name="costs" type="GridContainer" parent="container"]
+[node name="tease" type="Label" parent="container" unique_id=689277044]
+unique_name_in_owner = true
+layout_mode = 2
+label_settings = SubResource("LabelSettings_b3nsw")
+horizontal_alignment = 1
+
+[node name="costs" type="GridContainer" parent="container" unique_id=1912749879]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 10
@@ -149,16 +174,16 @@ theme_override_constants/h_separation = 10
theme_override_constants/v_separation = 10
columns = 2
-[node name="control" type="HBoxContainer" parent="container"]
+[node name="control" type="HBoxContainer" parent="container" unique_id=1948685075]
layout_mode = 2
-[node name="moveleft" type="Button" parent="container/control"]
+[node name="moveleft" type="Button" parent="container/control" unique_id=2063008334]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "←"
-[node name="moveright" type="Button" parent="container/control"]
+[node name="moveright" type="Button" parent="container/control" unique_id=883570680]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
diff --git a/components/Bullets/AcidBulletBase.tscn b/components/Bullets/AcidBulletBase.tscn
index 2ac7d10..8c6b54b 100644
--- a/components/Bullets/AcidBulletBase.tscn
+++ b/components/Bullets/AcidBulletBase.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=5 format=3 uid="uid://qx8h1dcbyy1j"]
+[gd_scene format=3 uid="uid://qx8h1dcbyy1j"]
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_hfsul"]
[ext_resource type="Script" uid="uid://wt1fn2vjtlen" path="res://scripts/Contents/Bullets/AcidBulletBase.gd" id="2_y4hkm"]
@@ -15,14 +15,12 @@ animations = [{
"speed": 5.0
}]
-[node name="AcidBulletBase" instance=ExtResource("1_hfsul")]
+[node name="AcidBulletBase" unique_id=1827668506 instance=ExtResource("1_hfsul")]
script = ExtResource("2_y4hkm")
acidType = 0
displayName = "酸液"
-lifeTime = 2000.0
+speed = 15.0
+lifeTime = 1000.0
-[node name="texture" parent="." index="0"]
+[node name="texture" parent="." index="0" unique_id=162977358]
sprite_frames = SubResource("SpriteFrames_3gf7s")
-
-[node name="hitbox" parent="." index="1"]
-visible = false
diff --git a/components/Bullets/AcidC.tscn b/components/Bullets/AcidC.tscn
index 2035409..e60c451 100644
--- a/components/Bullets/AcidC.tscn
+++ b/components/Bullets/AcidC.tscn
@@ -7,7 +7,6 @@
script = ExtResource("2_nxpf5")
speed = 5.0
penerate = 1.0
-lifeTime = 4000.0
canDoDuplicate = false
[node name="texture" parent="." index="0"]
diff --git a/components/Bullets/AcidStorm.tscn b/components/Bullets/AcidStorm.tscn
new file mode 100644
index 0000000..c3eab9f
--- /dev/null
+++ b/components/Bullets/AcidStorm.tscn
@@ -0,0 +1,125 @@
+[gd_scene load_steps=9 format=3 uid="uid://clr5pbkifgear"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_qpsi6"]
+[ext_resource type="Script" uid="uid://dl7d0v7f2uute" path="res://scripts/Contents/Bullets/AcidStorm.gd" id="2_daxsl"]
+[ext_resource type="Texture2D" uid="uid://ckr8tw7fsa7qx" path="res://resources/weapons/AcidWind.png" id="2_ivaud"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_daxsl"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_ivaud")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Animation" id="Animation_hfcmp"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:scale")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.2, 0.2)]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_daxsl"]
+resource_name = "spawn"
+length = 5.0
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:scale")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 5),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(0.2, 0.2), Vector2(1, 1)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 5),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:rotation")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 5),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 12.566370614359172]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_5atmc"]
+_data = {
+&"RESET": SubResource("Animation_hfcmp"),
+&"spawn": SubResource("Animation_daxsl")
+}
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_daxsl"]
+radius = 59.008472
+
+[node name="AcidStorm" instance=ExtResource("1_qpsi6")]
+script = ExtResource("2_daxsl")
+speed = 2.5
+penerate = 1.0
+autoSpawnAnimation = true
+freeAfterSpawn = true
+
+[node name="texture" parent="." index="0"]
+scale = Vector2(0.2, 0.2)
+sprite_frames = SubResource("SpriteFrames_daxsl")
+
+[node name="animator" parent="texture" index="0"]
+libraries = {
+&"": SubResource("AnimationLibrary_5atmc")
+}
+
+[node name="hitbox" parent="." index="1"]
+shape = SubResource("CircleShape2D_daxsl")
+disabled = true
diff --git a/components/Bullets/Bengbeng.tscn b/components/Bullets/Bengbeng.tscn
new file mode 100644
index 0000000..afae6f2
--- /dev/null
+++ b/components/Bullets/Bengbeng.tscn
@@ -0,0 +1,112 @@
+[gd_scene format=3 uid="uid://d0g631tqx6w5q"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_tgiid"]
+[ext_resource type="Script" uid="uid://ddgydi8qj3t40" path="res://scripts/Contents/Bullets/Bengbeng.gd" id="2_165xl"]
+[ext_resource type="Texture2D" uid="uid://ccsq5rjmm2wbs" path="res://resources/bullets/bengbeng/0.png" id="2_jylg3"]
+[ext_resource type="Shader" uid="uid://dfd73rom161o4" path="res://shaders/FilledRing.gdshader" id="5_txsro"]
+[ext_resource type="Script" uid="uid://cgb01lelfg73p" path="res://scripts/Statemachine/ShaderStage.gd" id="6_6g0ep"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_1mqkh"]
+shader = ExtResource("5_txsro")
+shader_parameter/inner = 1.0
+shader_parameter/outer = 1.0
+shader_parameter/alpha = 1.0
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_5xjim"]
+shader = ExtResource("5_txsro")
+shader_parameter/inner = 0.98
+shader_parameter/outer = 1.0
+shader_parameter/alpha = 0.1
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_q5lkk"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_jylg3")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Animation" id="Animation_165xl"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:position:y")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+
+[sub_resource type="Animation" id="Animation_of0mu"]
+resource_name = "destroy"
+length = 0.5
+step = 0.1
+
+[sub_resource type="Animation" id="Animation_txsro"]
+resource_name = "loop"
+length = 0.88
+loop_mode = 1
+step = 0.01
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:position:y")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(2, 0),
+"points": PackedFloat32Array(-45, 0, 0, 0, -40, -45, 0, -40, 0, 0),
+"times": PackedFloat32Array(0, 0.88)
+}
+
+[sub_resource type="Animation" id="Animation_6g0ep"]
+resource_name = "spawn"
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_1mqkh"]
+_data = {
+&"RESET": SubResource("Animation_165xl"),
+&"destroy": SubResource("Animation_of0mu"),
+&"loop": SubResource("Animation_txsro"),
+&"spawn": SubResource("Animation_6g0ep")
+}
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_165xl"]
+radius = 334.14966
+
+[node name="Bengbeng" unique_id=5571707 instance=ExtResource("1_tgiid")]
+script = ExtResource("2_165xl")
+displayName = "蹦蹦炸弹"
+speed = 4.0
+baseDamage = 30.0
+lifeTime = 10000.0
+autoLoopAnimation = true
+
+[node name="warnbg" type="Node2D" parent="." index="0" unique_id=122409585]
+material = SubResource("ShaderMaterial_1mqkh")
+script = ExtResource("6_6g0ep")
+size = Vector2(250, 125)
+color = Color(0, 0, 0, 0.2)
+
+[node name="warn" type="Node2D" parent="." index="1" unique_id=804964529]
+material = SubResource("ShaderMaterial_5xjim")
+script = ExtResource("6_6g0ep")
+size = Vector2(250, 125)
+color = Color(1, 0, 0, 1)
+
+[node name="texture" parent="." index="2" unique_id=162977358]
+scale = Vector2(0.2, 0.2)
+sprite_frames = SubResource("SpriteFrames_q5lkk")
+
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_1mqkh")
+
+[node name="hitbox" parent="." index="3" unique_id=175349408]
+position = Vector2(0, -42)
+shape = SubResource("CircleShape2D_165xl")
+disabled = true
diff --git a/components/Bullets/BlockWall.tscn b/components/Bullets/BlockWall.tscn
new file mode 100644
index 0000000..006087b
--- /dev/null
+++ b/components/Bullets/BlockWall.tscn
@@ -0,0 +1,156 @@
+[gd_scene format=3 uid="uid://cch4xtc70ad5c"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_3kq6o"]
+[ext_resource type="Script" uid="uid://b6bkhv8nc1ao3" path="res://scripts/Contents/Bullets/BlockWall.gd" id="2_3x2nv"]
+[ext_resource type="Texture2D" uid="uid://cqcakyrw4vbfn" path="res://resources/bullets/blockwall/blockwall.svg" id="2_k65pw"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_3x2nv"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_k65pw")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Animation" id="Animation_k65pw"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:position:x")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.15, 0, 0.15, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_3x2nv"]
+resource_name = "spawn"
+length = 0.2
+step = 0.1
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:position:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0, 0),
+"points": PackedFloat32Array(0, 0, 0, 0.2, 0, -100, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.2)
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
+}
+
+[sub_resource type="Animation" id="Animation_cdtmv"]
+resource_name = "loop"
+loop_mode = 1
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 6.28319]
+}
+
+[sub_resource type="Animation" id="Animation_a0fqf"]
+resource_name = "spawn"
+length = 0.2
+step = 0.1
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:position:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(2, 0),
+"points": PackedFloat32Array(-100, 0, 0, 0, 0, 0, -0.2, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.2)
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_y5axk"]
+_data = {
+&"RESET": SubResource("Animation_k65pw"),
+&"destroy": SubResource("Animation_3x2nv"),
+&"loop": SubResource("Animation_cdtmv"),
+&"spawn": SubResource("Animation_a0fqf")
+}
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_k65pw"]
+size = Vector2(734, 56)
+
+[node name="BlockWall" unique_id=5571707 instance=ExtResource("1_3kq6o")]
+script = ExtResource("2_3x2nv")
+speed = -10.0
+baseDamage = 0.0
+penerate = 1.0
+lifeTime = 1000.0
+autoSpawnAnimation = true
+autoDestroyAnimation = true
+
+[node name="texture" parent="." index="0" unique_id=162977358]
+sprite_frames = SubResource("SpriteFrames_3x2nv")
+
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_y5axk")
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+rotation = 1.5707964
+shape = SubResource("RectangleShape2D_k65pw")
diff --git a/components/Bullets/Cement.tscn b/components/Bullets/Cement.tscn
new file mode 100644
index 0000000..1231ad0
--- /dev/null
+++ b/components/Bullets/Cement.tscn
@@ -0,0 +1,120 @@
+[gd_scene format=3 uid="uid://dlrpoaw7tvk4f"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_aqfa8"]
+[ext_resource type="Script" uid="uid://c1yuakupcia1u" path="res://scripts/Contents/Bullets/Cement.gd" id="2_4j0u0"]
+[ext_resource type="Texture2D" uid="uid://u2x7yggx8ga2" path="res://resources/bullets/cement/cement.png" id="2_rsq0g"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_4j0u0"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_rsq0g")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Animation" id="Animation_rsq0g"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("%texture/..:speed")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [10.0]
+}
+
+[sub_resource type="Animation" id="Animation_4j0u0"]
+resource_name = "destroy"
+length = 0.5
+step = 0.1
+
+[sub_resource type="Animation" id="Animation_rxm0l"]
+resource_name = "loop"
+loop_mode = 1
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 6.28319]
+}
+
+[sub_resource type="Animation" id="Animation_7mqyx"]
+resource_name = "spawn"
+length = 10.0
+step = 0.1
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0, 2),
+"points": PackedFloat32Array(0, -0.25, 0, 0, 0, 12.56, -1, 0, 0, 0),
+"times": PackedFloat32Array(0, 1)
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("%texture/..:speed")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [10.0, 0.0]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_g12wc"]
+_data = {
+&"RESET": SubResource("Animation_rsq0g"),
+&"destroy": SubResource("Animation_4j0u0"),
+&"loop": SubResource("Animation_rxm0l"),
+&"spawn": SubResource("Animation_7mqyx")
+}
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_b8r1x"]
+radius = 76.105194
+
+[node name="Cement" unique_id=5571707 instance=ExtResource("1_aqfa8")]
+script = ExtResource("2_4j0u0")
+baseDamage = 0.0
+penerate = 1.0
+autoSpawnAnimation = true
+freeAfterSpawn = true
+
+[node name="texture" parent="." index="0" unique_id=162977358]
+scale = Vector2(0.7, 0.7)
+sprite_frames = SubResource("SpriteFrames_4j0u0")
+
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_g12wc")
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+shape = SubResource("CircleShape2D_b8r1x")
diff --git a/components/Bullets/CursorKnife.tscn b/components/Bullets/CursorKnife.tscn
new file mode 100644
index 0000000..a5d43e3
--- /dev/null
+++ b/components/Bullets/CursorKnife.tscn
@@ -0,0 +1,170 @@
+[gd_scene format=3 uid="uid://cxjsajua2a82n"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_epcdw"]
+[ext_resource type="Script" uid="uid://c337id4kvvj58" path="res://scripts/Contents/Bullets/CursorKnife.gd" id="2_glt8o"]
+[ext_resource type="Texture2D" uid="uid://geax1diwtp48" path="res://resources/bullets/cursor/knife1.png" id="5_aqt0q"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_vdv8l"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("5_aqt0q")
+}],
+"loop": false,
+"name": &"default",
+"speed": 10.0
+}]
+
+[sub_resource type="Animation" id="Animation_glt8o"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:scale:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:scale:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_ioc4f"]
+resource_name = "spawn"
+step = 0.1
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:scale:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0),
+"points": PackedFloat32Array(0.5, -0.16111112, 0, 0, 0, 1.25, -0.25, 0, 0.25, 0, 0.5, -0.16111112, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:scale:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0),
+"points": PackedFloat32Array(0.5, -0.16111112, 0, 0, 0, 1.25, -0.25, 0, 0.25, 0, 0.5, -0.16111112, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.7, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_t6dk8"]
+_data = {
+&"RESET": SubResource("Animation_glt8o"),
+&"spawn": SubResource("Animation_ioc4f")
+}
+
+[sub_resource type="Curve" id="Curve_r4tbf"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_3757w"]
+curve = SubResource("Curve_r4tbf")
+
+[sub_resource type="Gradient" id="Gradient_epcdw"]
+colors = PackedColorArray(0, 1, 0, 1, 1, 1, 1, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_ioc4f"]
+gradient = SubResource("Gradient_epcdw")
+
+[sub_resource type="Curve" id="Curve_glt8o"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.7), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_t6dk8"]
+curve = SubResource("Curve_glt8o")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_aqt0q"]
+particle_flag_disable_z = true
+emission_shape = 3
+emission_box_extents = Vector3(1, 80, 1)
+angle_min = 1.0728835e-05
+angle_max = 360.00003
+direction = Vector3(-1, 0, 0)
+spread = 15.0
+initial_velocity_min = 100.0
+initial_velocity_max = 400.0
+gravity = Vector3(0, 0, 0)
+scale_min = 5.0
+scale_max = 10.0
+scale_curve = SubResource("CurveTexture_t6dk8")
+color_initial_ramp = SubResource("GradientTexture1D_ioc4f")
+alpha_curve = SubResource("CurveTexture_3757w")
+
+[sub_resource type="SegmentShape2D" id="SegmentShape2D_r4tbf"]
+a = Vector2(0, -80)
+b = Vector2(0, 80)
+
+[node name="CursorKnife" unique_id=736659683 instance=ExtResource("1_epcdw")]
+script = ExtResource("2_glt8o")
+speed = 5.0
+penerate = 1.0
+penerateDamageReduction = 0.25
+autoSpawnAnimation = true
+autoDestroyOnHitMap = false
+autoPlayTexture = true
+freeAfterSpawn = true
+
+[node name="texture" parent="." index="0" unique_id=162977358]
+position = Vector2(-33, 4)
+rotation = -0.6813664
+scale = Vector2(1e-05, 1e-05)
+sprite_frames = SubResource("SpriteFrames_vdv8l")
+frame_progress = 1.0
+
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_t6dk8")
+
+[node name="trail" type="GPUParticles2D" parent="texture" index="1" unique_id=1234210493]
+z_index = -1
+position = Vector2(28.85057, 31.122555)
+rotation = 0.6806784
+amount = 100
+preprocess = 1.0
+process_material = SubResource("ParticleProcessMaterial_aqt0q")
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+position = Vector2(40, 0)
+shape = SubResource("SegmentShape2D_r4tbf")
diff --git a/components/Bullets/Daoli.tscn b/components/Bullets/Daoli.tscn
new file mode 100644
index 0000000..6f522e5
--- /dev/null
+++ b/components/Bullets/Daoli.tscn
@@ -0,0 +1,28 @@
+[gd_scene format=3 uid="uid://b6ysa5wejv2hd"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_tgmam"]
+[ext_resource type="Texture2D" uid="uid://dp6memu16bc7b" path="res://resources/bullets/wood/daoli.png" id="2_cl8cv"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_odnqa"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_cl8cv")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_21d8r"]
+radius = 18.0
+
+[node name="Daoli" unique_id=5571707 instance=ExtResource("1_tgmam")]
+
+[node name="texture" parent="." index="0" unique_id=162977358]
+scale = Vector2(0.07520806, 0.07520806)
+sprite_frames = SubResource("SpriteFrames_odnqa")
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+position = Vector2(4, 4)
+shape = SubResource("CircleShape2D_21d8r")
diff --git a/components/Bullets/Egg.tscn b/components/Bullets/Egg.tscn
new file mode 100644
index 0000000..64087d5
--- /dev/null
+++ b/components/Bullets/Egg.tscn
@@ -0,0 +1,64 @@
+[gd_scene load_steps=11 format=3 uid="uid://df67upy2qhwng"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_q6qy4"]
+[ext_resource type="Script" uid="uid://cyaq3u5iu08uo" path="res://scripts/Contents/Bullets/Egg.gd" id="2_6esgc"]
+[ext_resource type="Texture2D" uid="uid://dn1rrlcltalbw" path="res://resources/bullets/Thunder/篮球.svg" id="3_6esgc"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_6esgc"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_6esgc")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Curve" id="Curve_6esgc"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_m48vu"]
+curve = SubResource("Curve_6esgc")
+
+[sub_resource type="Curve" id="Curve_qotgv"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.7), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_jb1ir"]
+curve = SubResource("Curve_qotgv")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_l0xv4"]
+particle_flag_disable_z = true
+direction = Vector3(0, 1, 0)
+spread = 0.0
+initial_velocity_min = 200.0
+initial_velocity_max = 200.0
+gravity = Vector3(0, 0, 0)
+scale_min = 0.79999995
+scale_max = 0.79999995
+scale_curve = SubResource("CurveTexture_jb1ir")
+alpha_curve = SubResource("CurveTexture_m48vu")
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_m48vu"]
+radius = 24.0
+
+[node name="Egg" instance=ExtResource("1_q6qy4")]
+script = ExtResource("2_6esgc")
+speed = 0.0
+lifeTime = 3000.0
+
+[node name="texture" parent="." index="0"]
+rotation = 1.5707964
+scale = Vector2(1.25, 1.25)
+sprite_frames = SubResource("SpriteFrames_6esgc")
+
+[node name="trail2" type="GPUParticles2D" parent="texture" index="1"]
+z_index = -1
+texture = ExtResource("3_6esgc")
+local_coords = true
+process_material = SubResource("ParticleProcessMaterial_l0xv4")
+
+[node name="hitbox" parent="." index="1"]
+shape = SubResource("CircleShape2D_m48vu")
diff --git a/components/Bullets/InfinitySword.tscn b/components/Bullets/InfinitySword.tscn
new file mode 100644
index 0000000..a83d68e
--- /dev/null
+++ b/components/Bullets/InfinitySword.tscn
@@ -0,0 +1,166 @@
+[gd_scene format=3 uid="uid://x1xi4efivpwj"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_na6tw"]
+[ext_resource type="Script" uid="uid://b7vswg8ju8a0u" path="res://scripts/Contents/Bullets/InfinitySword.gd" id="2_nbqhn"]
+[ext_resource type="Texture2D" uid="uid://bp687pj8b7wv0" path="res://resources/bullets/infinity-sword/Effect_DangerJumpSlash6.png" id="3_nbqhn"]
+[ext_resource type="AudioStream" uid="uid://b0emg4tbjpl1l" path="res://resources/sounds/effect/fireshot.mp3" id="4_gbi5w"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_c741v"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_nbqhn")
+}],
+"loop": false,
+"name": &"default",
+"speed": 15.0
+}]
+
+[sub_resource type="Animation" id="Animation_nbqhn"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:scale:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:scale:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_d85mn"]
+resource_name = "destroy"
+length = 0.5
+step = 0.1
+
+[sub_resource type="Animation" id="Animation_6n88i"]
+resource_name = "loop"
+loop_mode = 1
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 6.28319]
+}
+
+[sub_resource type="Animation" id="Animation_bk7mn"]
+resource_name = "spawn"
+length = 2.0
+step = 0.05
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:scale:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0, 2),
+"points": PackedFloat32Array(0, -0.25, 0, 0, 0, 0.5, -0.25, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, -0.25, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.2, 1.8, 2)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:scale:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(2, 0, 0, 0),
+"points": PackedFloat32Array(0, 0, 0, 0, 0, 0.5, -0.25, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, -0.25, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.2, 1.8, 2)
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.2, 1.8, 2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
+}
+tracks/3/type = "audio"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("audio")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"clips": [{
+"end_offset": 0.0,
+"start_offset": 0.0,
+"stream": ExtResource("4_gbi5w")
+}],
+"times": PackedFloat32Array(0)
+}
+tracks/3/use_blend = true
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_3cvbl"]
+_data = {
+&"RESET": SubResource("Animation_nbqhn"),
+&"destroy": SubResource("Animation_d85mn"),
+&"loop": SubResource("Animation_6n88i"),
+&"spawn": SubResource("Animation_bk7mn")
+}
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_v6780"]
+radius = 124.0
+height = 580.0
+
+[node name="InfinitySword" unique_id=2133299016 instance=ExtResource("1_na6tw")]
+script = ExtResource("2_nbqhn")
+speed = 25.0
+penerate = 1.0
+penerateDamageReduction = 0.1
+autoSpawnAnimation = true
+autoPlayTexture = true
+freeAfterSpawn = true
+
+[node name="texture" parent="." index="0" unique_id=162977358]
+rotation = 2.9485245
+scale = Vector2(1e-05, 1e-05)
+sprite_frames = SubResource("SpriteFrames_c741v")
+
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_3cvbl")
+
+[node name="audio" parent="texture" index="1" unique_id=1167114186]
+volume_db = 10.0
+max_distance = 10000.0
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+shape = SubResource("CapsuleShape2D_v6780")
diff --git a/components/Bullets/Kuaizi.tscn b/components/Bullets/Kuaizi.tscn
new file mode 100644
index 0000000..186f316
--- /dev/null
+++ b/components/Bullets/Kuaizi.tscn
@@ -0,0 +1,170 @@
+[gd_scene format=3 uid="uid://blfjkp81iljod"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_mb274"]
+[ext_resource type="Texture2D" uid="uid://c51735ydp13rw" path="res://resources/bullets/kuaizi/kuaizi.png" id="2_vrapo"]
+[ext_resource type="AudioStream" uid="uid://cmyq248jgd6kj" path="res://resources/sounds/effect/kuaizi.mp3" id="3_7qns6"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_7qns6"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_vrapo")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Animation" id="Animation_vrapo"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:position")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, 0)]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("%hitbox:disabled")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+
+[sub_resource type="Animation" id="Animation_7qns6"]
+resource_name = "destroy"
+length = 0.5
+step = 0.1
+
+[sub_resource type="Animation" id="Animation_lfw6u"]
+resource_name = "loop"
+loop_mode = 1
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 6.28319]
+}
+
+[sub_resource type="Animation" id="Animation_riea1"]
+resource_name = "spawn"
+step = 0.05
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.15),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(-400, 0), Vector2(-100, 0)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.15),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
+}
+tracks/2/type = "audio"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("audio")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"clips": [{
+"end_offset": 0.0,
+"start_offset": 0.0,
+"stream": ExtResource("3_7qns6")
+}],
+"times": PackedFloat32Array(0.11914943)
+}
+tracks/2/use_blend = true
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("%hitbox:disabled")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.15),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_ygnl7"]
+_data = {
+&"RESET": SubResource("Animation_vrapo"),
+&"destroy": SubResource("Animation_7qns6"),
+&"loop": SubResource("Animation_lfw6u"),
+&"spawn": SubResource("Animation_riea1")
+}
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_7qns6"]
+radius = 35.128338
+
+[node name="Kuaizi" unique_id=5571707 instance=ExtResource("1_mb274")]
+displayName = "筷子"
+penerate = 1.0
+autoSpawnAnimation = true
+freeAfterSpawn = true
+
+[node name="texture" parent="." index="0" unique_id=162977358]
+scale = Vector2(0.3, 0.3)
+sprite_frames = SubResource("SpriteFrames_7qns6")
+
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_ygnl7")
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+shape = SubResource("CircleShape2D_7qns6")
diff --git a/components/Bullets/MagicMissle.tscn b/components/Bullets/MagicMissle.tscn
new file mode 100644
index 0000000..82f1efb
--- /dev/null
+++ b/components/Bullets/MagicMissle.tscn
@@ -0,0 +1,123 @@
+[gd_scene format=3 uid="uid://db2jwaqphd1cx"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_4sjx4"]
+[ext_resource type="Script" uid="uid://b1y8r5xrhhso" path="res://scripts/Contents/Bullets/MagicMissle.gd" id="2_lrw10"]
+[ext_resource type="Texture2D" uid="uid://bl1i26ovfpxwc" path="res://resources/bullets/magic-missle/tr.webp" id="2_ross6"]
+[ext_resource type="AudioStream" uid="uid://cn876dtp1ypqx" path="res://resources/sounds/effect/Collect.wav" id="3_3jny5"]
+[ext_resource type="Texture2D" uid="uid://bkiaaucejquik" path="res://resources/bullets/light-express/Everlasting_Rainbow.png" id="3_lrw10"]
+
+[sub_resource type="Animation" id="Animation_3jny5"]
+resource_name = "destroy"
+length = 0.5
+step = 0.1
+
+[sub_resource type="Animation" id="Animation_grb5l"]
+tracks/0/type = "audio"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("audio")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"clips": [{
+"end_offset": 0.0,
+"start_offset": 0.0,
+"stream": ExtResource("3_3jny5")
+}],
+"times": PackedFloat32Array(0)
+}
+tracks/0/use_blend = true
+
+[sub_resource type="Animation" id="Animation_jigkj"]
+resource_name = "loop"
+loop_mode = 1
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 6.28319]
+}
+
+[sub_resource type="Animation" id="Animation_mgg76"]
+resource_name = "spawn"
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_s86wr"]
+_data = {
+&"destroy": SubResource("Animation_3jny5"),
+&"hit": SubResource("Animation_grb5l"),
+&"loop": SubResource("Animation_jigkj"),
+&"spawn": SubResource("Animation_mgg76")
+}
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_lrw10"]
+radius = 18.027756
+
+[sub_resource type="Curve" id="Curve_lrw10"]
+_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.2, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_3jny5"]
+curve = SubResource("Curve_lrw10")
+
+[sub_resource type="Curve" id="Curve_grb5l"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_jigkj"]
+curve = SubResource("Curve_grb5l")
+
+[sub_resource type="Curve" id="Curve_rugh7"]
+_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.2, 1), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_lrw10"]
+curve = SubResource("Curve_rugh7")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_mgg76"]
+particle_flag_disable_z = true
+angle_min = 1.0728835e-05
+angle_max = 360.00003
+angle_curve = SubResource("CurveTexture_jigkj")
+direction = Vector3(-1, 0, 0)
+spread = 15.0
+initial_velocity_min = 100.0
+initial_velocity_max = 200.0
+gravity = Vector3(0, 0, 0)
+scale_min = 0.5
+scale_max = 0.9
+scale_curve = SubResource("CurveTexture_lrw10")
+alpha_curve = SubResource("CurveTexture_3jny5")
+
+[node name="MagicMissle" unique_id=5571707 instance=ExtResource("1_4sjx4")]
+script = ExtResource("2_lrw10")
+penerate = 1.0
+penerateDamageReduction = 0.1
+
+[node name="animator" parent="texture" parent_id_path=PackedInt32Array(162977358) index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_s86wr")
+
+[node name="audio" parent="texture" parent_id_path=PackedInt32Array(162977358) index="1" unique_id=1167114186]
+stream = ExtResource("3_3jny5")
+
+[node name="static" type="Sprite2D" parent="texture" parent_id_path=PackedInt32Array(162977358) index="2" unique_id=1008850333]
+position = Vector2(-58.999996, 0)
+scale = Vector2(0.79195106, 0.79195106)
+texture = ExtResource("3_lrw10")
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+rotation = 1.5707964
+shape = SubResource("CircleShape2D_lrw10")
+
+[node name="trail" type="GPUParticles2D" parent="." index="2" unique_id=1403224943]
+z_index = -1
+amount = 50
+texture = ExtResource("2_ross6")
+visibility_rect = Rect2(-1000, -1000, 2000, 2000)
+process_material = SubResource("ParticleProcessMaterial_mgg76")
diff --git a/components/Bullets/Needle.tscn b/components/Bullets/Needle.tscn
new file mode 100644
index 0000000..f35bf47
--- /dev/null
+++ b/components/Bullets/Needle.tscn
@@ -0,0 +1,92 @@
+[gd_scene load_steps=14 format=3 uid="uid://bhnhfefm4m87i"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_yrddj"]
+[ext_resource type="Texture2D" uid="uid://d4h0i65n0dveo" path="res://resources/bullets/needle/1.svg" id="2_enod1"]
+[ext_resource type="Script" uid="uid://whqgw065ifss" path="res://scripts/Contents/Bullets/Needle.gd" id="2_mjqpl"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_mjqpl"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_enod1")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Curve" id="Curve_kvg2u"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_n2a3y"]
+curve = SubResource("Curve_kvg2u")
+
+[sub_resource type="Gradient" id="Gradient_ux5gl"]
+colors = PackedColorArray(1, 0.47012484, 0, 1, 1, 0.9023062, 0.70387197, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_ikerd"]
+gradient = SubResource("Gradient_ux5gl")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_3yvym"]
+particle_flag_disable_z = true
+emission_shape = 3
+emission_box_extents = Vector3(1, 40, 1)
+angle_min = 1.0728835e-05
+angle_max = 360.00003
+spread = 15.0
+initial_velocity_min = -50.0
+initial_velocity_max = 50.0
+gravity = Vector3(0, 200, 0)
+scale_max = 5.0
+color_initial_ramp = SubResource("GradientTexture1D_ikerd")
+alpha_curve = SubResource("CurveTexture_n2a3y")
+
+[sub_resource type="Curve" id="Curve_enod1"]
+_data = [Vector2(0, 0.4), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_mjqpl"]
+curve = SubResource("Curve_enod1")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_enod1"]
+particle_flag_disable_z = true
+direction = Vector3(0, 1, 0)
+spread = 0.0
+initial_velocity_min = 150.0
+initial_velocity_max = 150.0
+gravity = Vector3(0, 0, 0)
+scale_min = 0.79999995
+scale_max = 0.79999995
+alpha_curve = SubResource("CurveTexture_mjqpl")
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_enod1"]
+size = Vector2(138, 8.765)
+
+[node name="Needle" instance=ExtResource("1_yrddj")]
+script = ExtResource("2_mjqpl")
+penerate = 1.0
+lifeTime = 4000.0
+
+[node name="texture" parent="." index="0"]
+position = Vector2(73, 0)
+rotation = 1.5707964
+sprite_frames = SubResource("SpriteFrames_mjqpl")
+
+[node name="light" type="GPUParticles2D" parent="texture" index="1"]
+z_index = -1
+position = Vector2(0, 34)
+amount = 50
+preprocess = 1.0
+local_coords = true
+process_material = SubResource("ParticleProcessMaterial_3yvym")
+
+[node name="trail" type="GPUParticles2D" parent="texture" index="2"]
+z_index = -1
+texture = ExtResource("2_enod1")
+local_coords = true
+process_material = SubResource("ParticleProcessMaterial_enod1")
+
+[node name="hitbox" parent="." index="1"]
+position = Vector2(67, 0)
+shape = SubResource("RectangleShape2D_enod1")
diff --git a/components/Bullets/OxygenFire.tscn b/components/Bullets/OxygenFire.tscn
index bca37d0..a6ec9f1 100644
--- a/components/Bullets/OxygenFire.tscn
+++ b/components/Bullets/OxygenFire.tscn
@@ -146,7 +146,6 @@ penerate = 1.0
lifeTime = 1000.0
autoSpawnAnimation = true
freeAfterSpawn = true
-knockback = 10.0
[node name="animator" parent="texture" index="0"]
libraries = {
diff --git a/components/Bullets/Parrier.tscn b/components/Bullets/Parrier.tscn
new file mode 100644
index 0000000..7bbafa3
--- /dev/null
+++ b/components/Bullets/Parrier.tscn
@@ -0,0 +1,65 @@
+[gd_scene format=3 uid="uid://brt2q316hrswe"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_57y3f"]
+[ext_resource type="Script" uid="uid://bi7nde2rs0w4m" path="res://scripts/Contents/Bullets/Parrier.gd" id="2_li4th"]
+
+[sub_resource type="Animation" id="Animation_ksxds"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("%texture/..:parryRate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+
+[sub_resource type="Animation" id="Animation_li4th"]
+resource_name = "spawn"
+length = 0.3
+step = 0.01
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("%texture/..:parryRate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0, 0),
+"points": PackedFloat32Array(1, -0.25, 0, 0.1, 0, 0, -0.3, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.3)
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_k4ctn"]
+_data = {
+&"RESET": SubResource("Animation_ksxds"),
+&"spawn": SubResource("Animation_li4th")
+}
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_li4th"]
+radius = 60.0
+height = 300.0
+
+[node name="Parrier" unique_id=2089111975 instance=ExtResource("1_57y3f")]
+script = ExtResource("2_li4th")
+parryRate = 0.0
+displayName = "爪击"
+baseDamage = 5.0
+penerate = 1.0
+autoSpawnAnimation = true
+freeAfterSpawn = true
+
+[node name="texture" parent="." index="0" unique_id=162977358]
+modulate = Color(1, 1, 1, 0)
+scale = Vector2(0.8, 0.8)
+
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_k4ctn")
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+position = Vector2(150, 0)
+rotation = 1.5707964
+shape = SubResource("CapsuleShape2D_li4th")
diff --git a/components/Bullets/ParryBall.tscn b/components/Bullets/ParryBall.tscn
new file mode 100644
index 0000000..43501f6
--- /dev/null
+++ b/components/Bullets/ParryBall.tscn
@@ -0,0 +1,61 @@
+[gd_scene load_steps=11 format=3 uid="uid://cnvaff2nrgj17"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_xeuh5"]
+[ext_resource type="Texture2D" uid="uid://dk6basvgsbdqn" path="res://resources/bullets/parrier/Effect_ParryCounterPrepare8.png" id="2_3wdex"]
+[ext_resource type="Script" uid="uid://6to3ptrfe6dr" path="res://scripts/Contents/Bullets/ParryBall.gd" id="2_cc0al"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_cc0al"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_3wdex")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Curve" id="Curve_cc0al"]
+_data = [Vector2(0, 0.5), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_la26q"]
+curve = SubResource("Curve_cc0al")
+
+[sub_resource type="Curve" id="Curve_2gp61"]
+_data = [Vector2(0.5, 0.7), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_yhjlb"]
+curve = SubResource("Curve_2gp61")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_h6o5w"]
+particle_flag_disable_z = true
+angular_velocity_min = -200.00002
+angular_velocity_max = 199.99998
+gravity = Vector3(0, 0, 0)
+scale_min = 0.5
+scale_max = 0.5
+scale_curve = SubResource("CurveTexture_yhjlb")
+alpha_curve = SubResource("CurveTexture_la26q")
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_3wdex"]
+radius = 50.0
+
+[node name="ParryBall" instance=ExtResource("1_xeuh5")]
+script = ExtResource("2_cc0al")
+baseDamage = 0.0
+
+[node name="texture" parent="." index="0"]
+scale = Vector2(0.5, 0.5)
+sprite_frames = SubResource("SpriteFrames_cc0al")
+
+[node name="trail" type="GPUParticles2D" parent="texture" index="1"]
+z_index = -1
+amount = 10
+texture = ExtResource("2_3wdex")
+lifetime = 0.5
+process_material = SubResource("ParticleProcessMaterial_h6o5w")
+
+[node name="hitbox" parent="." index="1"]
+shape = SubResource("CircleShape2D_3wdex")
diff --git a/components/Bullets/PurpleCrystalSmall.tscn b/components/Bullets/PurpleCrystalSmall.tscn
index 5be6d6c..6c5be2e 100644
--- a/components/Bullets/PurpleCrystalSmall.tscn
+++ b/components/Bullets/PurpleCrystalSmall.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=6 format=3 uid="uid://c6wjncfsm2rxw"]
+[gd_scene format=3 uid="uid://c6wjncfsm2rxw"]
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_7tnrb"]
[ext_resource type="Script" uid="uid://t1q1eq8fk0ro" path="res://scripts/Contents/Bullets/PurpleCrystal.gd" id="2_it0pa"]
@@ -18,17 +18,18 @@ animations = [{
[sub_resource type="CircleShape2D" id="CircleShape2D_gdnkp"]
radius = 5.0
-[node name="PurpleCrystalSmall" instance=ExtResource("1_7tnrb")]
+[node name="PurpleCrystalSmall" unique_id=468411397 instance=ExtResource("1_7tnrb")]
modulate = Color(1.5, 1.5, 1.5, 1)
script = ExtResource("2_it0pa")
displayName = "微型水晶"
speed = 15.0
baseDamage = 1.0
+penerate = 0.25
lifeTime = 1000.0
-[node name="texture" parent="." index="0"]
+[node name="texture" parent="." index="0" unique_id=162977358]
scale = Vector2(0.6, 0.6)
sprite_frames = SubResource("SpriteFrames_r86b3")
-[node name="hitbox" parent="." index="1"]
+[node name="hitbox" parent="." index="1" unique_id=175349408]
shape = SubResource("CircleShape2D_gdnkp")
diff --git a/components/Bullets/QKSword.tscn b/components/Bullets/QKSword.tscn
new file mode 100644
index 0000000..5fe3a5e
--- /dev/null
+++ b/components/Bullets/QKSword.tscn
@@ -0,0 +1,141 @@
+[gd_scene format=3 uid="uid://bhp1ru3rjwkbf"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_1ke2b"]
+[ext_resource type="Texture2D" uid="uid://ctmxadaowx5ps" path="res://resources/weapons/Volcano.webp" id="2_q2yg1"]
+[ext_resource type="Script" uid="uid://chyrnrbgcudmk" path="res://scripts/Contents/Bullets/QKSword.gd" id="2_x26jp"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_x26jp"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_q2yg1")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Animation" id="Animation_x26jp"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:scale:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:scale:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/2/type = "bezier"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:rotation")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/3/type = "bezier"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath(".:modulate:a")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+
+[sub_resource type="Animation" id="Animation_q2yg1"]
+resource_name = "spawn"
+step = 0.1
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:scale:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0, 2),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 1.5, -0.16666667, 0, 0, 0),
+"times": PackedFloat32Array(0, 1)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:scale:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(2, 2),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 1.5, -0.16666667, 0, 0, 0),
+"times": PackedFloat32Array(0, 1)
+}
+tracks/2/type = "bezier"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:rotation")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"handle_modes": PackedInt32Array(2, 0),
+"points": PackedFloat32Array(-4.71, -0.25, 0, 0.25, 0, 0.78, -0.15, 0, 0, 0),
+"times": PackedFloat32Array(0, 1)
+}
+tracks/3/type = "bezier"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath(".:modulate:a")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"handle_modes": PackedInt32Array(2, 2),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 1, -0.16666667, 0, 0, 0),
+"times": PackedFloat32Array(0, 1)
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_evtlt"]
+_data = {
+&"RESET": SubResource("Animation_x26jp"),
+&"spawn": SubResource("Animation_q2yg1")
+}
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_q2yg1"]
+size = Vector2(146, 26)
+
+[node name="QKSword" unique_id=1066937094 instance=ExtResource("1_1ke2b")]
+script = ExtResource("2_x26jp")
+displayName = "乾坤剑"
+speed = 20.0
+baseDamage = 25.0
+penerate = 1.0
+penerateDamageReduction = 0.2
+lifeTime = 3000.0
+autoSpawnAnimation = true
+
+[node name="texture" parent="." index="0" unique_id=162977358]
+modulate = Color(1, 1, 1, 0)
+scale = Vector2(1e-05, 1e-05)
+sprite_frames = SubResource("SpriteFrames_x26jp")
+
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_evtlt")
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+shape = SubResource("RectangleShape2D_q2yg1")
diff --git a/components/Bullets/QKSwordHandler.tscn b/components/Bullets/QKSwordHandler.tscn
new file mode 100644
index 0000000..b215efb
--- /dev/null
+++ b/components/Bullets/QKSwordHandler.tscn
@@ -0,0 +1,13 @@
+[gd_scene load_steps=4 format=3 uid="uid://cocn5lqxetw2u"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_ixcon"]
+[ext_resource type="Script" uid="uid://cmph2bim5oro5" path="res://scripts/Contents/Bullets/QKSwordHandler.gd" id="2_y2oc8"]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_ixcon"]
+radius = 50.0
+
+[node name="QKSwordHandler" instance=ExtResource("1_ixcon")]
+script = ExtResource("2_y2oc8")
+
+[node name="hitbox" parent="." index="1"]
+shape = SubResource("CircleShape2D_ixcon")
diff --git a/components/Bullets/SCBlock.tscn b/components/Bullets/SCBlock.tscn
new file mode 100644
index 0000000..541d056
--- /dev/null
+++ b/components/Bullets/SCBlock.tscn
@@ -0,0 +1,52 @@
+[gd_scene format=3 uid="uid://oq2j018das8d"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_ceess"]
+[ext_resource type="Texture2D" uid="uid://b84vn2kmvsrhm" path="res://resources/bullets/scblock/0.png" id="2_78ubb"]
+[ext_resource type="Script" uid="uid://cek16mji13xpe" path="res://scripts/Contents/Bullets/SCBlock.gd" id="2_brae2"]
+
+[sub_resource type="Curve" id="Curve_brae2"]
+_data = [Vector2(0, 0.5), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_m2ljf"]
+curve = SubResource("Curve_brae2")
+
+[sub_resource type="Curve" id="Curve_m2ljf"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.7), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_bgwsv"]
+curve = SubResource("Curve_m2ljf")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_brae2"]
+particle_flag_disable_z = true
+direction = Vector3(-1, 0, 0)
+spread = 0.0
+initial_velocity_min = 500.0
+initial_velocity_max = 500.0
+gravity = Vector3(0, 0, 0)
+scale_curve = SubResource("CurveTexture_bgwsv")
+alpha_curve = SubResource("CurveTexture_m2ljf")
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_brae2"]
+size = Vector2(120, 32)
+
+[node name="SCBlock" unique_id=5571707 instance=ExtResource("1_ceess")]
+script = ExtResource("2_brae2")
+speed = 1.0
+baseDamage = 5.0
+lifeTime = 2000.0
+
+[node name="static" type="Sprite2D" parent="texture" parent_id_path=PackedInt32Array(162977358) index="2" unique_id=1262983065]
+scale = Vector2(0.3, 0.3)
+texture = ExtResource("2_78ubb")
+
+[node name="trail" type="GPUParticles2D" parent="texture/static" index="0" unique_id=1828495322]
+z_index = -1
+amount = 7
+texture = ExtResource("2_78ubb")
+local_coords = true
+process_material = SubResource("ParticleProcessMaterial_brae2")
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+shape = SubResource("RectangleShape2D_brae2")
diff --git a/components/Bullets/VolcanoShadow.tscn b/components/Bullets/VolcanoShadow.tscn
index 0276969..606e428 100644
--- a/components/Bullets/VolcanoShadow.tscn
+++ b/components/Bullets/VolcanoShadow.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=8 format=3 uid="uid://doytyuk72vr74"]
+[gd_scene format=3 uid="uid://doytyuk72vr74"]
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_4oiyn"]
[ext_resource type="Texture2D" uid="uid://ctmxadaowx5ps" path="res://resources/weapons/Volcano.webp" id="2_668mx"]
@@ -6,86 +6,32 @@
[sub_resource type="Animation" id="Animation_i7b6y"]
length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("static:modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("static:scale")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(1, 1)]
-}
-
-[sub_resource type="Animation" id="Animation_668mx"]
-resource_name = "spawn"
-step = 0.05
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("static:modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.1, 0.90000004, 1),
-"transitions": PackedFloat32Array(1, 1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.5), Color(1, 1, 1, 0.5), Color(1, 1, 1, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("static:scale")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.1, 1),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector2(0, 0), Vector2(1.5, 1.5), Vector2(0, 0)]
-}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_i7b6y"]
_data = {
-&"RESET": SubResource("Animation_i7b6y"),
-&"spawn": SubResource("Animation_668mx")
+&"RESET": SubResource("Animation_i7b6y")
}
[sub_resource type="RectangleShape2D" id="RectangleShape2D_668mx"]
-size = Vector2(76, 12)
+size = Vector2(192, 50)
-[node name="VolcanoShadow" instance=ExtResource("1_4oiyn")]
+[node name="VolcanoShadow" unique_id=1512282051 instance=ExtResource("1_4oiyn")]
script = ExtResource("2_i7b6y")
speed = 25.0
-penerate = 0.35
-penerateDamageReduction = 0.2
-autoSpawnAnimation = true
-freeAfterSpawn = true
+penerate = 0.85
+penerateDamageReduction = 0.1
+lifeTime = 2000.0
-[node name="texture" parent="." index="0"]
+[node name="texture" parent="." index="0" unique_id=162977358]
rotation = 0.7853982
-[node name="animator" parent="texture" index="0"]
-libraries = {
-&"": SubResource("AnimationLibrary_i7b6y")
-}
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_i7b6y")
-[node name="static" type="Sprite2D" parent="texture" index="1"]
+[node name="static" type="Sprite2D" parent="texture" index="1" unique_id=1656204664]
+modulate = Color(1, 1, 1, 0.5)
+scale = Vector2(2, 2)
texture = ExtResource("2_668mx")
-[node name="hitbox" parent="." index="1"]
+[node name="hitbox" parent="." index="1" unique_id=175349408]
shape = SubResource("RectangleShape2D_668mx")
diff --git a/components/Bullets/WhiteSoul.tscn b/components/Bullets/WhiteSoul.tscn
index 2e4646e..75788fd 100644
--- a/components/Bullets/WhiteSoul.tscn
+++ b/components/Bullets/WhiteSoul.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=10 format=3 uid="uid://gnenrlcspjuq"]
+[gd_scene format=3 uid="uid://gnenrlcspjuq"]
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_k41ea"]
[ext_resource type="Script" uid="uid://iylhd18nf5a1" path="res://scripts/Contents/Bullets/WhiteSoul.gd" id="2_ld7n7"]
@@ -15,6 +15,38 @@ animations = [{
"speed": 5.0
}]
+[sub_resource type="Animation" id="Animation_b8ukb"]
+resource_name = "destroy"
+length = 0.5
+step = 0.1
+
+[sub_resource type="Animation" id="Animation_7gepi"]
+resource_name = "loop"
+loop_mode = 1
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 6.28319]
+}
+
+[sub_resource type="Animation" id="Animation_vrtf3"]
+resource_name = "spawn"
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_tinfk"]
+_data = {
+&"destroy": SubResource("Animation_b8ukb"),
+&"loop": SubResource("Animation_7gepi"),
+&"spawn": SubResource("Animation_vrtf3")
+}
+
[sub_resource type="Curve" id="Curve_r03vp"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 2
@@ -41,18 +73,22 @@ scale_max = 0.8
scale_curve = SubResource("CurveTexture_7ga5a")
alpha_curve = SubResource("CurveTexture_bd63g")
-[node name="WhiteSoul" instance=ExtResource("1_k41ea")]
+[node name="WhiteSoul" unique_id=1863464355 instance=ExtResource("1_k41ea")]
texture_filter = 1
script = ExtResource("2_ld7n7")
displayName = "怪物灵魂"
speed = 20.0
+penerate = 0.5
autoDestroyOnHitMap = false
-[node name="texture" parent="." index="0"]
+[node name="texture" parent="." index="0" unique_id=162977358]
rotation = -1.5708
sprite_frames = SubResource("SpriteFrames_3yyb4")
-[node name="trail" type="GPUParticles2D" parent="texture" index="1"]
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_tinfk")
+
+[node name="trail" type="GPUParticles2D" parent="texture" index="1" unique_id=1079331435]
amount = 10
texture = ExtResource("2_mqva0")
preprocess = 1.0
diff --git a/components/Bullets/Wood.tscn b/components/Bullets/Wood.tscn
new file mode 100644
index 0000000..ad1e307
--- /dev/null
+++ b/components/Bullets/Wood.tscn
@@ -0,0 +1,168 @@
+[gd_scene format=3 uid="uid://jmpm68e3um3k"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_yfmqu"]
+[ext_resource type="Script" uid="uid://bkopn3gee3qp1" path="res://scripts/Contents/Bullets/Wood.gd" id="2_f5eiv"]
+[ext_resource type="Texture2D" uid="uid://bols4gt28y3a" path="res://resources/bullets/wood/wood.png" id="3_dol0b"]
+[ext_resource type="AudioStream" uid="uid://lwsltsv0tk0t" path="res://resources/sounds/effect/xiangkan.wav" id="4_7fjhq"]
+[ext_resource type="Texture2D" uid="uid://chn486hoa86bs" path="res://resources/bullets/wood/mother.png" id="4_dth5r"]
+[ext_resource type="Texture2D" uid="uid://dp6memu16bc7b" path="res://resources/bullets/wood/daoli.png" id="5_8j03k"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_dth5r"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_dol0b")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Animation" id="Animation_7i45i"]
+resource_name = "destroy"
+length = 0.5
+step = 0.1
+
+[sub_resource type="Animation" id="Animation_vvrml"]
+resource_name = "loop"
+loop_mode = 1
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 6.28319]
+}
+
+[sub_resource type="Animation" id="Animation_7cf0r"]
+resource_name = "spawn"
+
+[sub_resource type="Animation" id="Animation_0q72p"]
+resource_name = "xiangkan"
+length = 2.0
+step = 0.1
+tracks/0/type = "audio"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("audio")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"clips": [{
+"end_offset": 0.0,
+"start_offset": 0.0,
+"stream": ExtResource("4_7fjhq")
+}],
+"times": PackedFloat32Array(0)
+}
+tracks/0/use_blend = true
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_vaf4v"]
+_data = {
+&"destroy": SubResource("Animation_7i45i"),
+&"loop": SubResource("Animation_vvrml"),
+&"spawn": SubResource("Animation_7cf0r"),
+&"xiangkan": SubResource("Animation_0q72p")
+}
+
+[sub_resource type="Curve" id="Curve_dol0b"]
+_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.1, 1), 0.0, 0.0, 0, 0, Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 4
+
+[sub_resource type="CurveTexture" id="CurveTexture_dth5r"]
+curve = SubResource("Curve_dol0b")
+
+[sub_resource type="Curve" id="Curve_8j03k"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_7fjhq"]
+curve = SubResource("Curve_8j03k")
+
+[sub_resource type="Gradient" id="Gradient_7i45i"]
+colors = PackedColorArray(1, 0, 0, 1, 1, 0.8451766, 0, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_vvrml"]
+gradient = SubResource("Gradient_7i45i")
+
+[sub_resource type="Curve" id="Curve_7cf0r"]
+_data = [Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.1), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_0q72p"]
+curve = SubResource("Curve_7cf0r")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_vaf4v"]
+particle_flag_disable_z = true
+emission_shape = 1
+emission_sphere_radius = 50.0
+angle_min = 1.0728835e-05
+angle_max = 360.00003
+angle_curve = SubResource("CurveTexture_7fjhq")
+direction = Vector3(-1, 0, 0)
+spread = 0.0
+initial_velocity_min = 200.0
+initial_velocity_max = 500.0
+gravity = Vector3(0, 0, 0)
+radial_accel_min = -100.0
+radial_accel_max = -100.0
+scale_min = 10.0
+scale_max = 20.0
+scale_curve = SubResource("CurveTexture_0q72p")
+color_initial_ramp = SubResource("GradientTexture1D_vvrml")
+alpha_curve = SubResource("CurveTexture_dth5r")
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_8j03k"]
+size = Vector2(244, 32)
+
+[node name="Wood" unique_id=5571707 instance=ExtResource("1_yfmqu")]
+script = ExtResource("2_f5eiv")
+displayName = "浮木"
+penerate = 1.0
+lifeTime = 5000.0
+metadata/_edit_vertical_guides_ = [200.0, -260.0]
+
+[node name="texture" parent="." index="0" unique_id=162977358]
+scale = Vector2(0.4, 0.4)
+sprite_frames = SubResource("SpriteFrames_dth5r")
+
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_vaf4v")
+
+[node name="audio" parent="texture" index="1" unique_id=1167114186]
+max_distance = 10000.0
+
+[node name="trail" type="GPUParticles2D" parent="texture" index="2" unique_id=1380786582]
+z_index = 1
+position = Vector2(-322.50006, -10.000002)
+amount = 150
+local_coords = true
+process_material = SubResource("ParticleProcessMaterial_vaf4v")
+
+[node name="mother" type="Node2D" parent="texture" index="3" unique_id=673246472]
+unique_name_in_owner = true
+scale = Vector2(0.99999994, 0.99999994)
+
+[node name="motherStatic" type="Sprite2D" parent="texture/mother" index="0" unique_id=1786534151]
+position = Vector2(0, -170.00002)
+scale = Vector2(0.24794728, 0.24794728)
+texture = ExtResource("4_dth5r")
+
+[node name="daoli" type="Node2D" parent="texture" index="4" unique_id=1077452115]
+unique_name_in_owner = true
+position = Vector2(222.5, 0)
+scale = Vector2(0.99999994, 0.99999994)
+
+[node name="daoliStatic" type="Sprite2D" parent="texture/daoli" index="0" unique_id=1212418046]
+position = Vector2(0, -92.5)
+scale = Vector2(0.18411627, 0.18411627)
+texture = ExtResource("5_8j03k")
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+shape = SubResource("RectangleShape2D_8j03k")
diff --git a/components/Bullets/Wuwei.tscn b/components/Bullets/Wuwei.tscn
new file mode 100644
index 0000000..b5ee2fc
--- /dev/null
+++ b/components/Bullets/Wuwei.tscn
@@ -0,0 +1,290 @@
+[gd_scene format=3 uid="uid://bwr1jbnnkvkgi"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_eg848"]
+[ext_resource type="Texture2D" uid="uid://d1ismqrlhbv7f" path="res://resources/bullets/wuwei/Wuwei.png" id="2_6ny68"]
+[ext_resource type="Script" uid="uid://dxgplcmmg0dgi" path="res://scripts/Contents/Bullets/Wuwei.gd" id="2_vxgkj"]
+[ext_resource type="PackedScene" uid="uid://bog4t1abiv5sb" path="res://components/Effects/DangerAttackStar.tscn" id="4_rpg0e"]
+
+[sub_resource type="Animation" id="Animation_6ny68"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("%hitbox:disabled")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("static/DangerAttackStar:visible")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/4/type = "bezier"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("static/DangerAttackStar:position:x")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/5/type = "bezier"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("static/DangerAttackStar:position:y")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/6/type = "bezier"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath(".:scale:x")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/7/type = "bezier"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath(".:scale:y")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+
+[sub_resource type="Animation" id="Animation_vxgkj"]
+resource_name = "destroy"
+length = 0.5
+step = 0.1
+
+[sub_resource type="Animation" id="Animation_rpg0e"]
+resource_name = "loop"
+loop_mode = 1
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 6.28319]
+}
+
+[sub_resource type="Animation" id="Animation_06poh"]
+resource_name = "spawn"
+length = 3.0
+step = 0.05
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0, 2),
+"points": PackedFloat32Array(0, 0, 0, 3.5, 4, -1.57, -2, -2, 0, 0),
+"times": PackedFloat32Array(0, 3)
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.6, 2.2, 3),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("%hitbox:disabled")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 2, 3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, false]
+}
+tracks/3/type = "method"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("%texture/..")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(1.3, 2),
+"transitions": PackedFloat32Array(1, 1),
+"values": [{
+"args": [],
+"method": &"beReady"
+}, {
+"args": [],
+"method": &"shoot"
+}]
+}
+tracks/4/type = "method"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("static/DangerAttackStar")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0.9),
+"transitions": PackedFloat32Array(1),
+"values": [{
+"args": [],
+"method": &"shot"
+}]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("static/DangerAttackStar:visible")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.9),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, true]
+}
+tracks/6/type = "bezier"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("static/DangerAttackStar:position:x")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"handle_modes": PackedInt32Array(0, 0),
+"points": PackedFloat32Array(-176.115, -0.25, 0, 0, 0, 170.913, -0.24, 0, 0, 0),
+"times": PackedFloat32Array(0.9, 1.14)
+}
+tracks/7/type = "bezier"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("static/DangerAttackStar:position:y")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"handle_modes": PackedInt32Array(2, 0),
+"points": PackedFloat32Array(-5, -0.25, 0, 0.25, 0, -5, -0.036666673, 0, 0, 0),
+"times": PackedFloat32Array(0.9, 1.14)
+}
+tracks/8/type = "bezier"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath(".:scale:x")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"handle_modes": PackedInt32Array(2, 0),
+"points": PackedFloat32Array(0, 0, 0, 0, 0, 1, -0.2, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.25)
+}
+tracks/9/type = "bezier"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath(".:scale:y")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"handle_modes": PackedInt32Array(2, 0),
+"points": PackedFloat32Array(0, 0, 0, 0, 0, 1, -0.2, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.25)
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_57ptn"]
+_data = {
+&"RESET": SubResource("Animation_6ny68"),
+&"destroy": SubResource("Animation_vxgkj"),
+&"loop": SubResource("Animation_rpg0e"),
+&"spawn": SubResource("Animation_06poh")
+}
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_6ny68"]
+radius = 141.9448
+height = 725.7404
+
+[node name="Wuwei" unique_id=326826451 instance=ExtResource("1_eg848")]
+script = ExtResource("2_vxgkj")
+canMove = true
+penerate = 1.0
+autoSpawnAnimation = true
+freeAfterSpawn = true
+metadata/_edit_vertical_guides_ = [406.0]
+
+[node name="texture" parent="." index="0" unique_id=162977358]
+scale = Vector2(1e-05, 1e-05)
+
+[node name="animator" parent="texture" index="0" unique_id=1114087117]
+libraries/ = SubResource("AnimationLibrary_57ptn")
+
+[node name="static" type="Sprite2D" parent="texture" index="1" unique_id=892692141]
+position = Vector2(300, 0)
+texture = ExtResource("2_6ny68")
+
+[node name="anchorSpawn" type="Node2D" parent="texture/static" index="0" unique_id=1327931418]
+unique_name_in_owner = true
+position = Vector2(170.913, -7)
+
+[node name="DangerAttackStar" parent="texture/static" index="1" unique_id=1065258878 instance=ExtResource("4_rpg0e")]
+
+[node name="hitbox" parent="." index="1" unique_id=175349408]
+position = Vector2(235, -77)
+rotation = -0.29216617
+shape = SubResource("CapsuleShape2D_6ny68")
diff --git a/components/Bullets/Yangyi.tscn b/components/Bullets/Yangyi.tscn
new file mode 100644
index 0000000..76438b1
--- /dev/null
+++ b/components/Bullets/Yangyi.tscn
@@ -0,0 +1,99 @@
+[gd_scene load_steps=12 format=3 uid="uid://mo3t1r3ydrx4"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_i51w8"]
+[ext_resource type="Script" uid="uid://c3ax35jdfjqox" path="res://scripts/Contents/Bullets/Yangyi.gd" id="2_sku1m"]
+[ext_resource type="Texture2D" uid="uid://dnpqfqfg6dwt4" path="res://resources/bullets/pencil/frames/pencil-a.svg" id="3_c3irh"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_peenw"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_c3irh")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Animation" id="Animation_peenw"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+
+[sub_resource type="Animation" id="Animation_c3irh"]
+resource_name = "loop"
+loop_mode = 1
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 6.283185307179586]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_x2cof"]
+_data = {
+&"RESET": SubResource("Animation_peenw"),
+&"loop": SubResource("Animation_c3irh")
+}
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_c3irh"]
+radius = 43.011627
+
+[sub_resource type="Curve" id="Curve_c3irh"]
+_data = [Vector2(0, 0.8), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_peenw"]
+curve = SubResource("Curve_c3irh")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_c3irh"]
+particle_flag_disable_z = true
+angle_min = 90.000015
+angle_max = 90.000015
+direction = Vector3(-1, 0, 0)
+spread = 0.0
+initial_velocity_min = 500.0
+initial_velocity_max = 500.0
+gravity = Vector3(0, 0, 0)
+alpha_curve = SubResource("CurveTexture_peenw")
+
+[node name="Yangyi" instance=ExtResource("1_i51w8")]
+script = ExtResource("2_sku1m")
+displayName = "超级铅笔"
+speed = 20.0
+lifeTime = 3000.0
+autoLoopAnimation = true
+
+[node name="texture" parent="." index="0"]
+sprite_frames = SubResource("SpriteFrames_peenw")
+
+[node name="animator" parent="texture" index="0"]
+libraries = {
+&"": SubResource("AnimationLibrary_x2cof")
+}
+
+[node name="hitbox" parent="." index="1"]
+shape = SubResource("CircleShape2D_c3irh")
+
+[node name="trail" type="GPUParticles2D" parent="." index="2"]
+z_index = -1
+texture = ExtResource("3_c3irh")
+local_coords = true
+process_material = SubResource("ParticleProcessMaterial_c3irh")
diff --git a/components/Bullets/YeeA.tscn b/components/Bullets/YeeA.tscn
new file mode 100644
index 0000000..672fa24
--- /dev/null
+++ b/components/Bullets/YeeA.tscn
@@ -0,0 +1,57 @@
+[gd_scene load_steps=12 format=3 uid="uid://b7bbfnw28lfv5"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_cpy11"]
+[ext_resource type="Texture2D" uid="uid://4x5llpjk6roc" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA0.png" id="2_nitan"]
+[ext_resource type="Texture2D" uid="uid://nuf41by5qav3" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA1.png" id="3_uqpvp"]
+[ext_resource type="Texture2D" uid="uid://cn3jub5bbs10s" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA2.png" id="4_5okru"]
+[ext_resource type="Texture2D" uid="uid://cuxujj0yo03cw" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA3.png" id="5_oqbka"]
+[ext_resource type="Texture2D" uid="uid://bnk7e6vdm73t" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA4.png" id="6_ufvya"]
+[ext_resource type="Texture2D" uid="uid://bd2asjjnvg2s1" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA5.png" id="7_tuckf"]
+[ext_resource type="Texture2D" uid="uid://qfx7cdpxl6gt" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA6.png" id="8_23j3h"]
+[ext_resource type="Texture2D" uid="uid://bqryprhlv6pmn" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA7.png" id="9_dkwch"]
+[ext_resource type="Texture2D" uid="uid://de56iexewtrdm" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA8.png" id="10_paddf"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_qmfl0"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_nitan")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_uqpvp")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_5okru")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_oqbka")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_ufvya")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_tuckf")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_23j3h")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_dkwch")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_paddf")
+}, {
+"duration": 1.0,
+"texture": null
+}],
+"loop": false,
+"name": &"default",
+"speed": 20.0
+}]
+
+[node name="YeeA" instance=ExtResource("1_cpy11")]
+
+[node name="texture" parent="." index="0"]
+sprite_frames = SubResource("SpriteFrames_qmfl0")
+frame = 9
+frame_progress = 1.0
diff --git a/components/Characters/CyberCat.tscn b/components/Characters/CyberCat.tscn
new file mode 100644
index 0000000..8baa0b4
--- /dev/null
+++ b/components/Characters/CyberCat.tscn
@@ -0,0 +1,36 @@
+[gd_scene format=3 uid="uid://47ek7kev66gj"]
+
+[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_afsds"]
+[ext_resource type="Script" uid="uid://cnqdjw7i7noxk" path="res://scripts/Contents/Characters/CyberCat.gd" id="2_afsds"]
+[ext_resource type="Texture2D" uid="uid://d1ajua4r4tn2k" path="res://resources/characters/cybercat/cybercat.png" id="3_afsds"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_vkls3"]
+animations = [{
+"frames": [],
+"loop": true,
+"name": &"idle",
+"speed": 5.0
+}, {
+"frames": [],
+"loop": true,
+"name": &"walk",
+"speed": 5.0
+}]
+
+[node name="CyberCat" unique_id=1689157073 instance=ExtResource("1_afsds")]
+script = ExtResource("2_afsds")
+displayName = "赛博猫猫"
+drops = Array[int]([0, 1])
+dropCounts = Array[Vector2]([Vector2(50, 60), Vector2(10, 15)])
+metadata/_edit_vertical_guides_ = [200.0]
+
+[node name="texture" parent="." index="3"]
+sprite_frames = SubResource("SpriteFrames_vkls3")
+
+[node name="staticBackground" parent="texture" index="0"]
+position = Vector2(0, -10)
+scale = Vector2(0.37199643, 0.37199643)
+texture = ExtResource("3_afsds")
+
+[node name="statebar" parent="." index="4"]
+position = Vector2(0, -135)
diff --git a/components/Characters/Deepsea.tscn b/components/Characters/Deepsea.tscn
new file mode 100644
index 0000000..8e2d7c7
--- /dev/null
+++ b/components/Characters/Deepsea.tscn
@@ -0,0 +1,46 @@
+[gd_scene format=3 uid="uid://nl5h1vcfnn60"]
+
+[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_g8my0"]
+[ext_resource type="Script" uid="uid://be0o0iwf26hvx" path="res://scripts/Contents/Characters/Deepsea.gd" id="2_1qdp4"]
+[ext_resource type="Texture2D" uid="uid://c6kpcsu1yohak" path="res://resources/characters/deepsea/0.png" id="2_5y3f7"]
+[ext_resource type="AudioStream" uid="uid://b5tswrcvrd3js" path="res://resources/sounds/effect/sddl.wav" id="3_hk3hc"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_5y3f7"]
+animations = [{
+"frames": [],
+"loop": true,
+"name": &"idle",
+"speed": 5.0
+}, {
+"frames": [],
+"loop": true,
+"name": &"walk",
+"speed": 5.0
+}]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_1qdp4"]
+size = Vector2(165, 349)
+
+[node name="Deepsea" unique_id=1544856335 instance=ExtResource("1_g8my0")]
+script = ExtResource("2_1qdp4")
+displayName = "深海"
+drops = Array[int]([0, 1])
+dropCounts = Array[Vector2]([Vector2(40, 80), Vector2(30, 60)])
+
+[node name="attack1" type="AudioStreamPlayer2D" parent="sounds" index="7" unique_id=1216852444]
+stream = ExtResource("3_hk3hc")
+volume_db = 5.0
+
+[node name="texture" parent="." index="3"]
+sprite_frames = SubResource("SpriteFrames_5y3f7")
+
+[node name="staticBackground" parent="texture" index="0"]
+position = Vector2(0, -131)
+texture = ExtResource("2_5y3f7")
+
+[node name="hitbox" parent="texture/hurtbox" index="0"]
+position = Vector2(-20.5, -123.5)
+shape = SubResource("RectangleShape2D_1qdp4")
+
+[node name="statebar" parent="." index="4"]
+position = Vector2(0, -386)
diff --git a/components/Characters/Kernyr.tscn b/components/Characters/Kernyr.tscn
new file mode 100644
index 0000000..7b4880a
--- /dev/null
+++ b/components/Characters/Kernyr.tscn
@@ -0,0 +1,43 @@
+[gd_scene format=3 uid="uid://dt3xviil00bw4"]
+
+[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_bha5j"]
+[ext_resource type="Script" uid="uid://m28dwfwmmhmh" path="res://scripts/Contents/Characters/Kernyr.gd" id="2_vkls3"]
+[ext_resource type="Texture2D" uid="uid://bsffob0n8pgy6" path="res://resources/characters/kernyr/koshino.png" id="3_vkls3"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_vkls3"]
+animations = [{
+"frames": [],
+"loop": true,
+"name": &"idle",
+"speed": 5.0
+}, {
+"frames": [],
+"loop": true,
+"name": &"walk",
+"speed": 5.0
+}]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_vkls3"]
+size = Vector2(190, 190)
+
+[node name="Kernyr" unique_id=2092386193 instance=ExtResource("1_bha5j")]
+script = ExtResource("2_vkls3")
+displayName = "KOSHINO"
+drops = Array[int]([0, 1])
+dropCounts = Array[Vector2]([Vector2(30, 50), Vector2(20, 40)])
+appleCount = Vector2i(2, 5)
+
+[node name="texture" parent="." index="3"]
+sprite_frames = SubResource("SpriteFrames_vkls3")
+
+[node name="staticBackground" parent="texture" index="0"]
+position = Vector2(0, -46)
+scale = Vector2(0.399, 0.399)
+texture = ExtResource("3_vkls3")
+
+[node name="hitbox" parent="texture/hurtbox" index="0"]
+position = Vector2(0, -46)
+shape = SubResource("RectangleShape2D_vkls3")
+
+[node name="statebar" parent="." index="4"]
+position = Vector2(0, -213)
diff --git a/components/Characters/MTY.tscn b/components/Characters/MTY.tscn
index f53a3a4..1f3d8e6 100644
--- a/components/Characters/MTY.tscn
+++ b/components/Characters/MTY.tscn
@@ -1,9 +1,15 @@
-[gd_scene load_steps=8 format=3 uid="uid://b5ysxff1ujv4l"]
+[gd_scene format=3 uid="uid://b5ysxff1ujv4l"]
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_8og84"]
[ext_resource type="Script" uid="uid://b80jr04qpitly" path="res://scripts/Contents/Characters/MTY.gd" id="2_hjlm2"]
-[ext_resource type="Texture2D" uid="uid://b710rxx6yq2x1" path="res://resources/characters/bird/tera-a.svg" id="3_gxm04"]
-[ext_resource type="Texture2D" uid="uid://cmmvtcahw5y5e" path="res://resources/characters/bird/tera-d.svg" id="4_ndje2"]
+[ext_resource type="Texture2D" uid="uid://54vaedgxog4i" path="res://resources/characters/bear/bear-walk-h.svg" id="3_8xxno"]
+[ext_resource type="Texture2D" uid="uid://cmapkmo8ck3g7" path="res://resources/characters/bear/bear-walk-a.svg" id="4_l1n2d"]
+[ext_resource type="Texture2D" uid="uid://b8j8ee5jrcdlq" path="res://resources/characters/bear/bear-walk-b.svg" id="5_l3wi2"]
+[ext_resource type="Texture2D" uid="uid://olok886lpghg" path="res://resources/characters/bear/bear-walk-c.svg" id="6_6o5k1"]
+[ext_resource type="Texture2D" uid="uid://xka0dvhh8hhq" path="res://resources/characters/bear/bear-walk-d.svg" id="7_15shm"]
+[ext_resource type="Texture2D" uid="uid://vm1drbho5j4t" path="res://resources/characters/bear/bear-walk-e.svg" id="8_vlc6w"]
+[ext_resource type="Texture2D" uid="uid://c46b6dsltjglj" path="res://resources/characters/bear/bear-walk-f.svg" id="9_fbcw4"]
+[ext_resource type="Texture2D" uid="uid://vaglbapaj4e0" path="res://resources/characters/bear/bear-walk-g.svg" id="10_0ftal"]
[sub_resource type="SpriteFrames" id="SpriteFrames_gxm04"]
animations = [{
@@ -22,7 +28,7 @@ animations = [{
animations = [{
"frames": [{
"duration": 1.0,
-"texture": ExtResource("3_gxm04")
+"texture": ExtResource("3_8xxno")
}],
"loop": true,
"name": &"idle",
@@ -30,22 +36,40 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
-"texture": ExtResource("3_gxm04")
+"texture": ExtResource("4_l1n2d")
}, {
"duration": 1.0,
-"texture": ExtResource("4_ndje2")
+"texture": ExtResource("5_l3wi2")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_6o5k1")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_15shm")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_vlc6w")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_fbcw4")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_0ftal")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_8xxno")
}],
"loop": true,
"name": &"walk",
-"speed": 0.5
+"speed": 10.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_fdkbo"]
-size = Vector2(138, 181)
+size = Vector2(232, 149)
-[node name="MTY" instance=ExtResource("1_8og84")]
+[node name="MTY" unique_id=1673957637 instance=ExtResource("1_8og84")]
script = ExtResource("2_hjlm2")
-displayName = "猫头鹰"
+displayName = "狗熊宝宝"
drops = Array[int]([0, 1, 3])
dropCounts = Array[Vector2]([Vector2(3, 6), Vector2(2, 4), Vector2(1, 3)])
useStatic = true
@@ -60,13 +84,14 @@ scale = Vector2(0.23718655, 0.23718655)
[node name="staticAnimation" parent="texture" index="1"]
position = Vector2(0, -27)
-scale = Vector2(1.42485, 1.42485)
+scale = Vector2(1.1823181, 1.1823181)
sprite_frames = SubResource("SpriteFrames_hjlm2")
-animation = &"idle"
+animation = &"walk"
+frame_progress = 0.5124606
[node name="hitbox" parent="texture/hurtbox" index="0"]
position = Vector2(0, -26.5)
shape = SubResource("RectangleShape2D_fdkbo")
[node name="statebar" parent="." index="4"]
-position = Vector2(0, -199)
+position = Vector2(0, -195)
diff --git a/components/Characters/Rooster.tscn b/components/Characters/Rooster.tscn
index f6ff70e..5227a71 100644
--- a/components/Characters/Rooster.tscn
+++ b/components/Characters/Rooster.tscn
@@ -1,9 +1,8 @@
-[gd_scene load_steps=21 format=3 uid="uid://dky8574uqc18r"]
+[gd_scene format=3 uid="uid://dky8574uqc18r"]
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_e5pl8"]
[ext_resource type="Script" uid="uid://cthtupc6dtbav" path="res://scripts/Contents/Characters/Rooster.gd" id="2_oqdqd"]
-[ext_resource type="PackedScene" uid="uid://dqywctcj4y2xi" path="res://components/Weapons/Cogwheel.tscn" id="3_da2ca"]
-[ext_resource type="PackedScene" uid="uid://c0n3igy4hucrg" path="res://components/Weapons/PurpleCrystal.tscn" id="4_0omr3"]
+[ext_resource type="PackedScene" uid="uid://c0n3igy4hucrg" path="res://components/Weapons/PurpleCrystal.tscn" id="3_da2ca"]
[ext_resource type="AudioStream" uid="uid://cdrevrq7n6yqa" path="res://resources/sounds/effect/Boing.mp3" id="4_66s6c"]
[ext_resource type="AudioStream" uid="uid://benyec5bqni0b" path="res://resources/sounds/effect/Chomp.wav" id="4_k0yme"]
[ext_resource type="AudioStream" uid="uid://dmxh3bpk8vyy5" path="res://resources/sounds/effect/Coin.mp3" id="5_xnbhq"]
@@ -86,24 +85,14 @@ animations = [{
[sub_resource type="CircleShape2D" id="CircleShape2D_h1v0q"]
radius = 61.204575
-[node name="Rooster" instance=ExtResource("1_e5pl8")]
+[node name="Rooster" unique_id=1711205167 instance=ExtResource("1_e5pl8")]
script = ExtResource("2_oqdqd")
-defaultCooldownUnit = null
-isBoss = null
displayName = "公鸡"
-sprintMultiplier = null
-drops = null
-dropCounts = null
-appleCount = null
-level = null
-currentInvinsible = null
useStatic = true
-hurtAudioRate = null
-health = null
metadata/_edit_horizontal_guides_ = [-188.0]
metadata/_edit_vertical_guides_ = [71.0]
-[node name="chargeParticle" type="GPUParticles2D" parent="." index="0"]
+[node name="chargeParticle" type="GPUParticles2D" parent="." index="0" unique_id=1592717470]
unique_name_in_owner = true
position = Vector2(0, -54)
amount = 100
@@ -112,9 +101,8 @@ process_material = SubResource("ParticleProcessMaterial_joj4g")
[node name="weaponStore" parent="." index="2"]
process_mode = 4
-[node name="Cogwheel" parent="weaponStore" index="0" instance=ExtResource("3_da2ca")]
-
-[node name="PurpleCrystal" parent="weaponStore" index="1" instance=ExtResource("4_0omr3")]
+[node name="PurpleCrystal" parent="weaponStore" index="0" unique_id=839753399 instance=ExtResource("3_da2ca")]
+debugRebuild = false
[node name="sprint" parent="sounds" index="0"]
stream = ExtResource("4_66s6c")
@@ -142,7 +130,7 @@ animation = &"idle"
position = Vector2(8, -28)
shape = SubResource("CircleShape2D_h1v0q")
-[node name="normal" type="Node2D" parent="texture/weapons" index="0"]
+[node name="normal" type="Node2D" parent="texture/weapons" index="0" unique_id=1939030218]
position = Vector2(56, -69)
[node name="statebar" parent="." index="5" node_paths=PackedStringArray("entity")]
diff --git a/components/Characters/Yee.tscn b/components/Characters/Yee.tscn
new file mode 100644
index 0000000..130fbc1
--- /dev/null
+++ b/components/Characters/Yee.tscn
@@ -0,0 +1,208 @@
+[gd_scene load_steps=46 format=3 uid="uid://deuuv6qc280ih"]
+
+[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_wh51a"]
+[ext_resource type="Texture2D" uid="uid://ckqcfw4i35py" path="res://resources/characters/yee/sprint/HoHoYee_Run00.png" id="2_gv83w"]
+[ext_resource type="Texture2D" uid="uid://b2yt10s6lu8mk" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC0.png" id="2_yfr3w"]
+[ext_resource type="Texture2D" uid="uid://6qsnb3ml3xbc" path="res://resources/characters/yee/sprint/HoHoYee_Run01.png" id="3_5yw3g"]
+[ext_resource type="Texture2D" uid="uid://celhe8x4pwgmu" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC1.png" id="3_aoevj"]
+[ext_resource type="Texture2D" uid="uid://d1r7p44oqum0t" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC2.png" id="4_m66g8"]
+[ext_resource type="Texture2D" uid="uid://ci4u1c6gpfqta" path="res://resources/characters/yee/sprint/HoHoYee_Run02.png" id="4_o3sg0"]
+[ext_resource type="Texture2D" uid="uid://bk1usifqftlr" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC3.png" id="5_8tu14"]
+[ext_resource type="Texture2D" uid="uid://jt50a681vqtu" path="res://resources/characters/yee/sprint/HoHoYee_Run03.png" id="5_n3g6e"]
+[ext_resource type="Texture2D" uid="uid://djccs5jfrwkdh" path="res://resources/characters/yee/sprint/HoHoYee_Run04.png" id="6_01m6o"]
+[ext_resource type="Texture2D" uid="uid://wtqhgh328pdc" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC4.png" id="6_4y8hg"]
+[ext_resource type="Texture2D" uid="uid://qpwruwuydamq" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC5.png" id="7_8yegl"]
+[ext_resource type="Texture2D" uid="uid://q5vdsai2k51a" path="res://resources/characters/yee/sprint/HoHoYee_Run05.png" id="7_rj8hr"]
+[ext_resource type="Texture2D" uid="uid://nqxp81gr4tfx" path="res://resources/characters/yee/sprint/HoHoYee_Run06.png" id="8_dswli"]
+[ext_resource type="Texture2D" uid="uid://dh7udy47gndep" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC6.png" id="8_ypsr3"]
+[ext_resource type="Texture2D" uid="uid://c5uafr2d6h8j3" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC7.png" id="9_wh73l"]
+[ext_resource type="Texture2D" uid="uid://cvj5n4t7d0grj" path="res://resources/characters/yee/sprint/HoHoYee_Run07.png" id="9_y8gqw"]
+[ext_resource type="Texture2D" uid="uid://bhhnwolk6n6qf" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC8.png" id="10_5e8ud"]
+[ext_resource type="Texture2D" uid="uid://cl5iy6k0dkgjm" path="res://resources/characters/yee/sprint/HoHoYee_Run08.png" id="10_urdmf"]
+[ext_resource type="Texture2D" uid="uid://bwikave85hns7" path="res://resources/characters/yee/sprint/HoHoYee_Run09.png" id="11_3sanw"]
+[ext_resource type="Texture2D" uid="uid://baghrfcgukn6v" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC9.png" id="11_62jbb"]
+[ext_resource type="Texture2D" uid="uid://caktlinhbcqk7" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC10.png" id="12_1t5io"]
+[ext_resource type="Texture2D" uid="uid://ihyywi5y6f30" path="res://resources/characters/yee/sprint/HoHoYee_Run10.png" id="12_ydlos"]
+[ext_resource type="Texture2D" uid="uid://dsighknq23uqy" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC11.png" id="13_bl4jg"]
+[ext_resource type="Texture2D" uid="uid://bpckafsbo2hle" path="res://resources/characters/yee/sprint/HoHoYee_Run11.png" id="13_qa4pg"]
+[ext_resource type="Texture2D" uid="uid://ds2aa4alwjsdx" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC12.png" id="14_g3wlu"]
+[ext_resource type="Texture2D" uid="uid://hcv0hhmlmqvn" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC13.png" id="15_icwwu"]
+[ext_resource type="Texture2D" uid="uid://b2ao0eqwfpngx" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC14.png" id="16_dgqcn"]
+[ext_resource type="Texture2D" uid="uid://tnbgx2kmiie6" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC15.png" id="17_ge8p2"]
+[ext_resource type="Texture2D" uid="uid://bfgev40dlxr13" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC16.png" id="18_0pmyp"]
+[ext_resource type="Texture2D" uid="uid://c0tv3lvrumobn" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC17.png" id="19_d3es8"]
+[ext_resource type="Texture2D" uid="uid://cud64dsju53b3" path="res://resources/characters/yee/attackABC/HoHoYee_AttackABC18.png" id="20_3m333"]
+[ext_resource type="Texture2D" uid="uid://m3fdcdnsat57" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD0.png" id="21_rn14k"]
+[ext_resource type="Texture2D" uid="uid://bfc0omreybx1c" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD1.png" id="22_eyks3"]
+[ext_resource type="Texture2D" uid="uid://br3870qtg81uf" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD2.png" id="23_yrwrh"]
+[ext_resource type="Texture2D" uid="uid://c82j6usyxd7q7" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD3.png" id="24_hh1q1"]
+[ext_resource type="Texture2D" uid="uid://dhpvx7u6yhmdj" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD4.png" id="25_m1e7l"]
+[ext_resource type="Texture2D" uid="uid://jnwqfmlsaki4" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD5.png" id="26_lfvft"]
+[ext_resource type="Texture2D" uid="uid://bipy0cvlx3n8w" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD6.png" id="27_5s8i6"]
+[ext_resource type="Texture2D" uid="uid://h54lnhfnoefw" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD7.png" id="28_gjts2"]
+[ext_resource type="Texture2D" uid="uid://h2po1x6sy00e" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD8.png" id="29_l1wvt"]
+[ext_resource type="Texture2D" uid="uid://c0u72ehelipor" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD9.png" id="30_trlfl"]
+[ext_resource type="Texture2D" uid="uid://bpulg4eym1w2x" path="res://resources/characters/yee/attackABC/HoHoYee_AttackD10.png" id="31_8lt40"]
+[ext_resource type="SpriteFrames" uid="uid://1aqeas2xsely" path="res://resources/bullets/yee-abc/ABC.tres" id="44_arrgg"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_g1wyq"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_yfr3w")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_aoevj")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_m66g8")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_8tu14")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_4y8hg")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_8yegl")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_ypsr3")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_wh73l")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_5e8ud")
+}, {
+"duration": 1.0,
+"texture": ExtResource("11_62jbb")
+}, {
+"duration": 1.0,
+"texture": ExtResource("12_1t5io")
+}, {
+"duration": 1.0,
+"texture": ExtResource("13_bl4jg")
+}, {
+"duration": 1.0,
+"texture": ExtResource("14_g3wlu")
+}, {
+"duration": 1.0,
+"texture": ExtResource("15_icwwu")
+}, {
+"duration": 1.0,
+"texture": ExtResource("16_dgqcn")
+}, {
+"duration": 1.0,
+"texture": ExtResource("17_ge8p2")
+}, {
+"duration": 1.0,
+"texture": ExtResource("18_0pmyp")
+}, {
+"duration": 1.0,
+"texture": ExtResource("19_d3es8")
+}, {
+"duration": 1.0,
+"texture": ExtResource("20_3m333")
+}, {
+"duration": 1.0,
+"texture": ExtResource("21_rn14k")
+}, {
+"duration": 1.0,
+"texture": ExtResource("22_eyks3")
+}, {
+"duration": 1.0,
+"texture": ExtResource("23_yrwrh")
+}, {
+"duration": 1.0,
+"texture": ExtResource("24_hh1q1")
+}, {
+"duration": 1.0,
+"texture": ExtResource("25_m1e7l")
+}, {
+"duration": 1.0,
+"texture": ExtResource("26_lfvft")
+}, {
+"duration": 1.0,
+"texture": ExtResource("27_5s8i6")
+}, {
+"duration": 1.0,
+"texture": ExtResource("28_gjts2")
+}, {
+"duration": 1.0,
+"texture": ExtResource("29_l1wvt")
+}, {
+"duration": 1.0,
+"texture": ExtResource("30_trlfl")
+}, {
+"duration": 1.0,
+"texture": ExtResource("31_8lt40")
+}],
+"loop": true,
+"name": &"attackABC",
+"speed": 5.0
+}, {
+"frames": [],
+"loop": true,
+"name": &"idle",
+"speed": 15.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_gv83w")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_5yw3g")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_o3sg0")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_n3g6e")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_01m6o")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_rj8hr")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_dswli")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_y8gqw")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_urdmf")
+}, {
+"duration": 1.0,
+"texture": ExtResource("11_3sanw")
+}, {
+"duration": 1.0,
+"texture": ExtResource("12_ydlos")
+}, {
+"duration": 1.0,
+"texture": ExtResource("13_qa4pg")
+}],
+"loop": true,
+"name": &"walk",
+"speed": 20.0
+}]
+
+[node name="Yee" instance=ExtResource("1_wh51a")]
+
+[node name="texture" parent="." index="3"]
+position = Vector2(0, -112)
+sprite_frames = SubResource("SpriteFrames_g1wyq")
+animation = &"attackABC"
+frame_progress = 0.2732867
+
+[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="texture" index="0"]
+position = Vector2(286, 2)
+scale = Vector2(0.69, 0.69)
+sprite_frames = ExtResource("44_arrgg")
+frame = 11
+frame_progress = 0.95352054
+
+[node name="statebar" parent="." index="4"]
+position = Vector2(0, -246)
diff --git a/components/Effects/Danger.tscn b/components/Effects/Danger.tscn
new file mode 100644
index 0000000..85e8977
--- /dev/null
+++ b/components/Effects/Danger.tscn
@@ -0,0 +1,130 @@
+[gd_scene format=3 uid="uid://ckf0a3lud88tq"]
+
+[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_oasek"]
+[ext_resource type="Texture2D" uid="uid://bwc20hfm5jv8o" path="res://resources/effects/danger/Effect_Boss_YiGung_Upper413.png" id="2_56n4r"]
+[ext_resource type="AudioStream" uid="uid://g2j01jf3kap8" path="res://resources/sounds/effect/Flash2.ogg" id="2_agkww"]
+[ext_resource type="Texture2D" uid="uid://bwtxy88f2hq7v" path="res://resources/effects/danger/Effect_Boss_YiGung_Upper414.png" id="3_agkww"]
+[ext_resource type="Texture2D" uid="uid://dexx7re4jsqex" path="res://resources/effects/danger/Effect_Boss_YiGung_Upper1200.png" id="4_rvrve"]
+[ext_resource type="Texture2D" uid="uid://dd67ngjhh10ku" path="res://resources/effects/danger/Effect_Boss_YiGung_Upper1201.png" id="5_p01e2"]
+[ext_resource type="Texture2D" uid="uid://chkv28f044rwb" path="res://resources/effects/danger/Effect_Boss_YiGung_Upper1202.png" id="6_jaajp"]
+[ext_resource type="Texture2D" uid="uid://e3v0u34fvig4" path="res://resources/effects/danger/Effect_Boss_YiGung_Upper1203.png" id="7_lvgcl"]
+[ext_resource type="Texture2D" uid="uid://c4k1m2mtwejwk" path="res://resources/effects/danger/Effect_Boss_YiGung_Upper1204.png" id="8_dww55"]
+[ext_resource type="Texture2D" uid="uid://c5gkd05tb32u8" path="res://resources/effects/danger/Effect_Boss_YiGung_Upper1205.png" id="9_gwi08"]
+[ext_resource type="Texture2D" uid="uid://mo0gjwh5amev" path="res://resources/effects/danger/Effect_Boss_YiGung_Upper1206.png" id="10_qnlj8"]
+
+[sub_resource type="Animation" id="Animation_agkww"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("%texture:scale")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("%texture:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_rvrve"]
+resource_name = "spawn"
+length = 0.7
+step = 0.05
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("%texture:scale")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0.45, 0.7),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0, 0)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("%texture:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0.45, 0.7),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_p01e2"]
+_data = {
+&"RESET": SubResource("Animation_agkww"),
+&"spawn": SubResource("Animation_rvrve")
+}
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_cau5v"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_56n4r")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_agkww")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_rvrve")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_p01e2")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_jaajp")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_lvgcl")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_dww55")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_gwi08")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_qnlj8")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_qnlj8")
+}],
+"loop": false,
+"name": &"spawn",
+"speed": 20.0
+}]
+
+[node name="Danger" unique_id=609847951 instance=ExtResource("1_oasek")]
+scale = Vector2(0.75, 0.75)
+spawnSound = "spawn"
+spawnAnimation = "spawn"
+spawnTexture = "spawn"
+
+[node name="spawn" parent="sounds" index="0"]
+stream = ExtResource("2_agkww")
+
+[node name="animator" parent="stage" index="0"]
+libraries/ = SubResource("AnimationLibrary_p01e2")
+
+[node name="texture" parent="stage" index="1"]
+sprite_frames = SubResource("SpriteFrames_cau5v")
+frame = 9
+frame_progress = 1.0
diff --git a/components/Effects/DangerAttackStar.tscn b/components/Effects/DangerAttackStar.tscn
new file mode 100644
index 0000000..cdafb3d
--- /dev/null
+++ b/components/Effects/DangerAttackStar.tscn
@@ -0,0 +1,114 @@
+[gd_scene format=3 uid="uid://bog4t1abiv5sb"]
+
+[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_7hx85"]
+[ext_resource type="AudioStream" uid="uid://b3jn85pkl143b" path="res://resources/sounds/effect/Flash1.ogg" id="2_kdi56"]
+[ext_resource type="Texture2D" uid="uid://dvgykwd8doqad" path="res://resources/effects/star4/Effect_Danger0.png" id="3_31urn"]
+[ext_resource type="Texture2D" uid="uid://ww2v4a6iucv3" path="res://resources/effects/star4/Effect_Danger1.png" id="4_88mlx"]
+[ext_resource type="Texture2D" uid="uid://bi818isgqxuek" path="res://resources/effects/star4/Effect_Danger2.png" id="5_b42y7"]
+[ext_resource type="Texture2D" uid="uid://ba7q3mq6rxjxy" path="res://resources/effects/star4/Effect_Danger3.png" id="6_hftyt"]
+[ext_resource type="Texture2D" uid="uid://c7i5eeffpeoxb" path="res://resources/effects/star4/Effect_Danger4.png" id="7_7i5jk"]
+[ext_resource type="Texture2D" uid="uid://susqpw4ttmd1" path="res://resources/effects/star4/Effect_Danger5.png" id="8_aukuc"]
+
+[sub_resource type="Animation" id="Animation_bvpak"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("texture:scale")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("texture:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_chtue"]
+resource_name = "spawn"
+length = 0.4
+step = 0.04
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("texture:scale")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0.24, 0.4),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(0.5, 0.5), Vector2(0, 0)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("texture:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0.24, 0.4),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_fuos2"]
+_data = {
+&"RESET": SubResource("Animation_bvpak"),
+&"spawn": SubResource("Animation_chtue")
+}
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_ldh0a"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_31urn")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_88mlx")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_b42y7")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_hftyt")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_7i5jk")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_aukuc")
+}],
+"loop": false,
+"name": &"spawn",
+"speed": 20.0
+}]
+
+[node name="DangerAttackStar" unique_id=1065258878 instance=ExtResource("1_7hx85")]
+spawnSound = "spawn"
+spawnAnimation = "spawn"
+spawnTexture = "spawn"
+
+[node name="spawn" parent="sounds" index="0"]
+stream = ExtResource("2_kdi56")
+
+[node name="animator" parent="stage" index="0"]
+libraries/ = SubResource("AnimationLibrary_fuos2")
+
+[node name="texture" parent="stage" index="1"]
+sprite_frames = SubResource("SpriteFrames_ldh0a")
+frame = 5
+frame_progress = 1.0
diff --git a/components/Effects/Dustdown.tscn b/components/Effects/Dustdown.tscn
new file mode 100644
index 0000000..5c34927
--- /dev/null
+++ b/components/Effects/Dustdown.tscn
@@ -0,0 +1,57 @@
+[gd_scene load_steps=12 format=3 uid="uid://bu0uy17pacv6n"]
+
+[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_1cfxs"]
+[ext_resource type="AudioStream" uid="uid://dfn8gusfga5m0" path="res://resources/sounds/effect/Low Squeak.wav" id="2_30wog"]
+
+[sub_resource type="Curve" id="Curve_1cfxs"]
+_data = [Vector2(0.8, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_30wog"]
+curve = SubResource("Curve_1cfxs")
+
+[sub_resource type="Gradient" id="Gradient_1cfxs"]
+colors = PackedColorArray(1, 0.47012484, 0, 1, 1, 0.9023062, 0.70387197, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_30wog"]
+gradient = SubResource("Gradient_1cfxs")
+
+[sub_resource type="Curve" id="Curve_30wog"]
+_limits = [0.0, 100.0, 0.0, 1.0]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 100), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_nreia"]
+curve = SubResource("Curve_30wog")
+
+[sub_resource type="Curve" id="Curve_nreia"]
+_data = [Vector2(0.8, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_j1fl3"]
+curve = SubResource("Curve_nreia")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_tcn64"]
+particle_flag_disable_z = true
+angle_min = 1.0728835e-05
+angle_max = 360.00003
+direction = Vector3(-1, 0, 0)
+spread = 15.0
+initial_velocity_max = 100.0
+gravity = Vector3(0, 0, 0)
+damping_curve = SubResource("CurveTexture_nreia")
+scale_max = 4.0
+scale_curve = SubResource("CurveTexture_j1fl3")
+color_initial_ramp = SubResource("GradientTexture1D_30wog")
+alpha_curve = SubResource("CurveTexture_30wog")
+
+[node name="Dustdown" instance=ExtResource("1_1cfxs")]
+spawnSound = "spawn"
+
+[node name="spawn" parent="sounds" index="0"]
+stream = ExtResource("2_30wog")
+
+[node name="particles" parent="." index="1"]
+lifetime = 2.0
+local_coords = true
+process_material = SubResource("ParticleProcessMaterial_tcn64")
diff --git a/components/Effects/FooExplosion.tscn b/components/Effects/FooExplosion.tscn
new file mode 100644
index 0000000..f92df2f
--- /dev/null
+++ b/components/Effects/FooExplosion.tscn
@@ -0,0 +1,28 @@
+[gd_scene load_steps=5 format=3 uid="uid://cgdnkey2fhla4"]
+
+[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_vi6cv"]
+[ext_resource type="AudioStream" uid="uid://dkm4rld5hsevd" path="res://resources/sounds/effect/baozha.mp3" id="2_8b1u1"]
+[ext_resource type="SpriteFrames" uid="uid://crbh6ejm2tnsh" path="res://resources/effects/fooExplosion/1/1.tres" id="3_udq1j"]
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_8b1u1"]
+
+[node name="Foo" instance=ExtResource("1_vi6cv")]
+spawnSound = "spawn"
+spawnTexture = "spawn"
+
+[node name="spawn" parent="sounds" index="0"]
+stream = ExtResource("2_8b1u1")
+
+[node name="particles" parent="." index="1"]
+lifetime = 0.01
+
+[node name="animator" parent="stage" index="0"]
+libraries = {
+&"": SubResource("AnimationLibrary_8b1u1")
+}
+
+[node name="texture" parent="stage" index="1"]
+scale = Vector2(0.4, 0.4)
+sprite_frames = ExtResource("3_udq1j")
+frame = 10
+frame_progress = 1.0
diff --git a/components/Effects/Parrier.tscn b/components/Effects/Parrier.tscn
new file mode 100644
index 0000000..0a5438e
--- /dev/null
+++ b/components/Effects/Parrier.tscn
@@ -0,0 +1,24 @@
+[gd_scene load_steps=4 format=3 uid="uid://12ubhs2p8a27"]
+
+[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_yftgy"]
+[ext_resource type="SpriteFrames" uid="uid://cegxrhkf6na6t" path="res://resources/effects/parrier/2/2.tres" id="2_7outc"]
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_6cpy3"]
+
+[node name="Parrier" instance=ExtResource("1_yftgy")]
+spawnTexture = "spawn"
+
+[node name="particles" parent="." index="1"]
+lifetime = 0.01
+
+[node name="animator" parent="stage" index="0"]
+libraries = {
+&"": SubResource("AnimationLibrary_6cpy3")
+}
+
+[node name="texture" parent="stage" index="1"]
+position = Vector2(200, 50)
+scale = Vector2(-0.4, 0.4)
+sprite_frames = ExtResource("2_7outc")
+frame = 8
+frame_progress = 1.0
diff --git a/components/Effects/Parry.tscn b/components/Effects/Parry.tscn
new file mode 100644
index 0000000..15760e5
--- /dev/null
+++ b/components/Effects/Parry.tscn
@@ -0,0 +1,126 @@
+[gd_scene load_steps=26 format=3 uid="uid://bwbhxnuhmkwww"]
+
+[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_vc7s4"]
+[ext_resource type="Script" uid="uid://mirrohsweqtb" path="res://scripts/Contents/Effects/Parry.gd" id="2_471em"]
+[ext_resource type="Texture2D" uid="uid://bdvyebq7sepqf" path="res://resources/effects/parry/ParrySparkAccurate0.png" id="2_kic6n"]
+[ext_resource type="AudioStream" uid="uid://caxopva6lrlm3" path="res://resources/sounds/effect/swordhit.ogg" id="2_l0pl0"]
+[ext_resource type="Texture2D" uid="uid://7jhhyoinptns" path="res://resources/items/soul.svg" id="3_buxs5"]
+[ext_resource type="Texture2D" uid="uid://bsq0s07h5u6fp" path="res://resources/effects/parry/ParrySparkAccurate1.png" id="3_l0pl0"]
+[ext_resource type="Texture2D" uid="uid://myolsnuud6jk" path="res://resources/effects/parry/ParrySparkAccurate2.png" id="4_buxs5"]
+[ext_resource type="Texture2D" uid="uid://cu72mlaga1ge4" path="res://resources/effects/parry/ParrySparkAccurate3.png" id="5_471em"]
+[ext_resource type="Texture2D" uid="uid://25kjjcrbbm70" path="res://resources/effects/parry/ParrySparkAccurate4.png" id="6_tu1jt"]
+[ext_resource type="Texture2D" uid="uid://2jjv833hjn0o" path="res://resources/effects/parry/ParrySparkAccurate5.png" id="7_f5km5"]
+[ext_resource type="Texture2D" uid="uid://cvommbyvqfp1p" path="res://resources/effects/parry/ParrySparkAccurate6.png" id="8_molrd"]
+[ext_resource type="Texture2D" uid="uid://rv10oe25rb6c" path="res://resources/effects/parry/ParrySparkAccurate.png" id="9_76bi2"]
+
+[sub_resource type="Curve" id="Curve_471em"]
+_data = [Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_tu1jt"]
+curve = SubResource("Curve_471em")
+
+[sub_resource type="Curve" id="Curve_f5km5"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_molrd"]
+curve = SubResource("Curve_f5km5")
+
+[sub_resource type="Gradient" id="Gradient_76bi2"]
+colors = PackedColorArray(0, 0.9955722, 0.5778714, 1, 1, 0.9554942, 0.47369397, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_qcypm"]
+gradient = SubResource("Gradient_76bi2")
+
+[sub_resource type="Gradient" id="Gradient_ce4q1"]
+colors = PackedColorArray(0.5254902, 1, 0.7294118, 1, 1, 1, 1, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_7q881"]
+gradient = SubResource("Gradient_ce4q1")
+
+[sub_resource type="Curve" id="Curve_pg3k8"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_tys76"]
+curve = SubResource("Curve_pg3k8")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_v0dfw"]
+particle_flag_disable_z = true
+emission_shape = 1
+emission_sphere_radius = 22.49
+angle_min = 1.0728835e-05
+angle_max = 360.00003
+angle_curve = SubResource("CurveTexture_molrd")
+direction = Vector3(-1, 0, 0)
+spread = 60.0
+initial_velocity_max = 2000.0
+gravity = Vector3(0, 0, 0)
+scale_min = 0.19999999
+scale_max = 0.59999996
+scale_curve = SubResource("CurveTexture_tys76")
+color_ramp = SubResource("GradientTexture1D_7q881")
+color_initial_ramp = SubResource("GradientTexture1D_qcypm")
+alpha_curve = SubResource("CurveTexture_tu1jt")
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_l0pl0"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_l0pl0"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_kic6n")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_l0pl0")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_buxs5")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_471em")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_tu1jt")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_f5km5")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_molrd")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_76bi2")
+}],
+"loop": false,
+"name": &"spawn",
+"speed": 20.0
+}]
+
+[node name="Parry" instance=ExtResource("1_vc7s4")]
+script = ExtResource("2_471em")
+spawnSound = "spawn"
+spawnTexture = "spawn"
+lockTexture = true
+
+[node name="spawn" parent="sounds" index="0"]
+stream = ExtResource("2_l0pl0")
+
+[node name="particles" parent="." index="1"]
+texture = ExtResource("3_buxs5")
+lifetime = 0.5
+randomness = 1.0
+process_material = SubResource("ParticleProcessMaterial_v0dfw")
+
+[node name="animator" parent="stage" index="0"]
+libraries = {
+&"": SubResource("AnimationLibrary_l0pl0")
+}
+
+[node name="texture" parent="stage" index="1"]
+modulate = Color(0.5254902, 1, 0.7294118, 1)
+scale = Vector2(0.5, 0.5)
+sprite_frames = SubResource("SpriteFrames_l0pl0")
+frame = 7
+frame_progress = 1.0
diff --git a/components/Effects/ParryEntity.tscn b/components/Effects/ParryEntity.tscn
new file mode 100644
index 0000000..2d4826c
--- /dev/null
+++ b/components/Effects/ParryEntity.tscn
@@ -0,0 +1,63 @@
+[gd_scene load_steps=13 format=3 uid="uid://61vnckgx6x28"]
+
+[ext_resource type="PackedScene" uid="uid://bwbhxnuhmkwww" path="res://components/Effects/Parry.tscn" id="1_2mq06"]
+[ext_resource type="Script" uid="uid://btj8sxcc0m28q" path="res://scripts/Contents/Effects/ParryEntity.gd" id="2_7dupr"]
+[ext_resource type="AudioStream" uid="uid://23ttwefh4ej2" path="res://resources/sounds/effect/arrowshot.mp3" id="2_vfg08"]
+
+[sub_resource type="Curve" id="Curve_471em"]
+_data = [Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_tu1jt"]
+curve = SubResource("Curve_471em")
+
+[sub_resource type="Curve" id="Curve_f5km5"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_molrd"]
+curve = SubResource("Curve_f5km5")
+
+[sub_resource type="Gradient" id="Gradient_vfg08"]
+colors = PackedColorArray(1, 0.23036289, 0.23036289, 1, 0.58383155, 0, 0, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_7dupr"]
+gradient = SubResource("Gradient_vfg08")
+
+[sub_resource type="Curve" id="Curve_pg3k8"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_tys76"]
+curve = SubResource("Curve_pg3k8")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_rs11f"]
+particle_flag_disable_z = true
+emission_shape = 1
+emission_sphere_radius = 22.49
+angle_min = 1.0728835e-05
+angle_max = 360.00003
+angle_curve = SubResource("CurveTexture_molrd")
+direction = Vector3(-1, 0, 0)
+initial_velocity_max = 2000.0
+gravity = Vector3(0, 0, 0)
+damping_min = 1000.00006
+damping_max = 1000.00006
+scale_min = 0.19999999
+scale_max = 0.59999996
+scale_curve = SubResource("CurveTexture_tys76")
+color_initial_ramp = SubResource("GradientTexture1D_7dupr")
+alpha_curve = SubResource("CurveTexture_tu1jt")
+
+[node name="ParryEntity" instance=ExtResource("1_2mq06")]
+script = ExtResource("2_7dupr")
+
+[node name="spawn" parent="sounds" index="0"]
+stream = ExtResource("2_vfg08")
+volume_db = 10.0
+
+[node name="particles" parent="." index="1"]
+process_material = SubResource("ParticleProcessMaterial_rs11f")
+
+[node name="texture" parent="stage" index="1"]
+modulate = Color(1, 1, 1, 1)
diff --git a/components/Effects/ShootBlood.tscn b/components/Effects/ShootBlood.tscn
index f20a363..4e9624f 100644
--- a/components/Effects/ShootBlood.tscn
+++ b/components/Effects/ShootBlood.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=10 format=3 uid="uid://mtenc2b01vau"]
+[gd_scene format=3 uid="uid://mtenc2b01vau"]
[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_yjqwo"]
[ext_resource type="AudioStream" uid="uid://23ttwefh4ej2" path="res://resources/sounds/effect/arrowshot.mp3" id="2_joko4"]
@@ -36,7 +36,7 @@ color = Color(1, 0, 0, 1)
color_initial_ramp = SubResource("GradientTexture1D_joko4")
alpha_curve = SubResource("CurveTexture_joko4")
-[node name="ShootBlood" instance=ExtResource("1_yjqwo")]
+[node name="ShootBlood" unique_id=1999496041 instance=ExtResource("1_yjqwo")]
spawnSound = "spawn"
[node name="spawn" parent="sounds" index="0"]
diff --git a/components/Feeds/A-Applr.tscn b/components/Feeds/A-Applr.tscn
new file mode 100644
index 0000000..f9dfaaf
--- /dev/null
+++ b/components/Feeds/A-Applr.tscn
@@ -0,0 +1,25 @@
+[gd_scene load_steps=5 format=3 uid="uid://uu0s26ehdr4h"]
+
+[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_cwqpr"]
+[ext_resource type="Texture2D" uid="uid://ckr8tw7fsa7qx" path="res://resources/weapons/AcidWind.png" id="2_cq26m"]
+[ext_resource type="Texture2D" uid="uid://c2q4cf4ivu7o7" path="res://resources/feeds/apple.png" id="2_l1ph2"]
+[ext_resource type="PackedScene" uid="uid://dgxvgsipl0gr1" path="res://components/Weapons/CursorKnife.tscn" id="3_powvs"]
+
+[node name="Applr" instance=ExtResource("1_cwqpr")]
+avatarTexture = ExtResource("2_l1ph2")
+displayName = "焦糖苹果"
+quality = 2
+topic = 8
+fields = Array[int]([14])
+fieldValues = Array[float]([0.01])
+weapons = Array[PackedScene]([ExtResource("3_powvs")])
+costs = Array[int]([0, 2])
+costCounts = Array[int]([500, 1])
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("2_cq26m")
+
+[node name="name" parent="container/info" index="1"]
+displayName = "酸蚀风暴"
+quality = 2
+topic = 8
diff --git a/components/Feeds/A-BigLaser.tscn b/components/Feeds/A-BigLaser.tscn
index 01c3fd5..25408df 100644
--- a/components/Feeds/A-BigLaser.tscn
+++ b/components/Feeds/A-BigLaser.tscn
@@ -1,12 +1,12 @@
-[gd_scene load_steps=4 format=3 uid="uid://dqnkn1nbdl67l"]
+[gd_scene format=3 uid="uid://dqnkn1nbdl67l"]
[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_3s2fe"]
[ext_resource type="Texture2D" uid="uid://dy4op6n6vxef3" path="res://resources/bullets/laser-circle/circle.svg" id="2_igv34"]
[ext_resource type="PackedScene" uid="uid://cxabqjo7skxev" path="res://components/Weapons/BigLaser.tscn" id="3_u2qxo"]
-[node name="BigLaser" instance=ExtResource("1_3s2fe")]
+[node name="BigLaser" unique_id=910672627 instance=ExtResource("1_3s2fe")]
avatarTexture = ExtResource("2_igv34")
-displayName = "湮灭激光"
+displayName = "金法阵"
quality = 2
topic = 8
weapons = Array[PackedScene]([ExtResource("3_u2qxo")])
diff --git a/components/Feeds/A-Hetun.tscn b/components/Feeds/A-Hetun.tscn
new file mode 100644
index 0000000..a7985d4
--- /dev/null
+++ b/components/Feeds/A-Hetun.tscn
@@ -0,0 +1,22 @@
+[gd_scene format=3 uid="uid://ovx8i8xd4hvf"]
+
+[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_3x1iw"]
+[ext_resource type="Texture2D" uid="uid://dyump10b0et3r" path="res://resources/feeds/Fishing_Rod_JE2_BE2.png" id="2_ke7m6"]
+[ext_resource type="PackedScene" uid="uid://c65tbxm3tclw0" path="res://components/Weapons/Hetun.tscn" id="3_3x1iw"]
+
+[node name="Hetun" unique_id=1666687782 instance=ExtResource("1_3x1iw")]
+avatarTexture = ExtResource("2_ke7m6")
+displayName = "钓鱼竿"
+quality = 2
+topic = 8
+weapons = Array[PackedScene]([ExtResource("3_3x1iw")])
+costs = Array[int]([0, 1])
+costCounts = Array[int]([114, 514])
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("2_ke7m6")
+
+[node name="name" parent="container/info" index="1"]
+displayName = "钓鱼竿"
+quality = 2
+topic = 8
diff --git a/components/Feeds/A-MagicMissle.tscn b/components/Feeds/A-MagicMissle.tscn
new file mode 100644
index 0000000..9898af0
--- /dev/null
+++ b/components/Feeds/A-MagicMissle.tscn
@@ -0,0 +1,24 @@
+[gd_scene format=3 uid="uid://dre1iblixv75g"]
+
+[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_yeull"]
+[ext_resource type="Texture2D" uid="uid://dce1da2qm24pb" path="res://resources/weapons/magic-missle.webp" id="2_vt843"]
+[ext_resource type="PackedScene" uid="uid://c6d23yqjhe0ju" path="res://components/Weapons/MagicMissle.tscn" id="3_yeull"]
+
+[node name="MagicMissle" unique_id=1618334943 instance=ExtResource("1_yeull")]
+avatarTexture = ExtResource("2_vt843")
+displayName = "导弹法杖"
+quality = 2
+topic = 8
+fields = Array[int]([4, 13])
+fieldValues = Array[float]([0.05, -0.05])
+weapons = Array[PackedScene]([ExtResource("3_yeull")])
+costs = Array[int]([0, 1])
+costCounts = Array[int]([200, 300])
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("2_vt843")
+
+[node name="name" parent="container/info" index="1"]
+displayName = "导弹法杖"
+quality = 2
+topic = 8
diff --git a/components/Feeds/A-Tree.tscn b/components/Feeds/A-Tree.tscn
new file mode 100644
index 0000000..893267c
--- /dev/null
+++ b/components/Feeds/A-Tree.tscn
@@ -0,0 +1,25 @@
+[gd_scene format=3 uid="uid://dcm4gglpbiywo"]
+
+[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_8ua8m"]
+[ext_resource type="Texture2D" uid="uid://6omf2so5me3x" path="res://resources/feeds/date-cake.png" id="2_7iihr"]
+[ext_resource type="PackedScene" uid="uid://cx7nogfnv7s8t" path="res://components/Weapons/Tree.tscn" id="3_7iihr"]
+[ext_resource type="PackedScene" uid="uid://bbrllsqjmx0ie" path="res://components/Weapons/DaoStatue.tscn" id="4_b8wyh"]
+
+[node name="Tree" unique_id=601629115 instance=ExtResource("1_8ua8m")]
+avatarTexture = ExtResource("2_7iihr")
+displayName = "红枣糕"
+quality = 2
+topic = 8
+fields = Array[int]([2])
+fieldValues = Array[float]([0.1])
+weapons = Array[PackedScene]([ExtResource("4_b8wyh"), ExtResource("3_7iihr")])
+costs = Array[int]([0, 1])
+costCounts = Array[int]([999, 999])
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("2_7iihr")
+
+[node name="name" parent="container/info" index="1"]
+displayName = "红枣糕"
+quality = 2
+topic = 8
diff --git a/components/Feeds/Burger.tscn b/components/Feeds/Burger.tscn
new file mode 100644
index 0000000..5dc067b
--- /dev/null
+++ b/components/Feeds/Burger.tscn
@@ -0,0 +1,22 @@
+[gd_scene format=3 uid="uid://cieit84hbkcmw"]
+
+[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_so7nn"]
+[ext_resource type="Texture2D" uid="uid://dl616p8cdejlj" path="res://resources/feeds/burger.png" id="2_w7qr4"]
+
+[node name="Burger" unique_id=665641734 instance=ExtResource("1_so7nn")]
+avatarTexture = ExtResource("2_w7qr4")
+displayName = "香辣鸡腿堡"
+quality = 3
+topic = 1
+fields = Array[int]([2, 25, 19])
+fieldValues = Array[float]([-0.08, 1.0, 0.1])
+costs = Array[int]([1, 2])
+costCounts = Array[int]([400, 1])
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("2_w7qr4")
+
+[node name="name" parent="container/info" index="1"]
+displayName = "香辣鸡腿堡"
+quality = 3
+topic = 1
diff --git a/components/Feeds/Danta.tscn b/components/Feeds/Danta.tscn
new file mode 100644
index 0000000..6a219e8
--- /dev/null
+++ b/components/Feeds/Danta.tscn
@@ -0,0 +1,20 @@
+[gd_scene format=3 uid="uid://i68nojagoct4"]
+
+[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_4ba8r"]
+[ext_resource type="Texture2D" uid="uid://v7k8yaxjesao" path="res://resources/feeds/danta.png" id="2_y7pyg"]
+
+[node name="Danta" unique_id=665641734 instance=ExtResource("1_4ba8r")]
+avatarTexture = ExtResource("2_y7pyg")
+displayName = "蛋挞"
+quality = 2
+topic = 4
+fields = Array[int]([1, 6, 18])
+fieldValues = Array[float]([0.12, 0.1, -4.0])
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("2_y7pyg")
+
+[node name="name" parent="container/info" index="1"]
+displayName = "蛋挞"
+quality = 2
+topic = 4
diff --git a/components/Feeds/Drink.tscn b/components/Feeds/Drink.tscn
new file mode 100644
index 0000000..c70430d
--- /dev/null
+++ b/components/Feeds/Drink.tscn
@@ -0,0 +1,22 @@
+[gd_scene format=3 uid="uid://b8pcvegc6xne6"]
+
+[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_3kowa"]
+[ext_resource type="Texture2D" uid="uid://bdktxcifueq2w" path="res://resources/feeds/drink.png" id="2_htdnf"]
+
+[node name="Drink" unique_id=450510980 instance=ExtResource("1_3kowa")]
+avatarTexture = ExtResource("2_htdnf")
+displayName = "草莓气泡水"
+quality = 0
+topic = 5
+fields = Array[int]([26])
+fieldValues = Array[float]([0.05])
+costs = Array[int]([0, 1])
+costCounts = Array[int]([400, 750])
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("2_htdnf")
+
+[node name="name" parent="container/info" index="1"]
+displayName = "草莓气泡水"
+quality = 4
+topic = 3
diff --git a/components/Feeds/Shrimp.tscn b/components/Feeds/Shrimp.tscn
new file mode 100644
index 0000000..097a3a7
--- /dev/null
+++ b/components/Feeds/Shrimp.tscn
@@ -0,0 +1,21 @@
+[gd_scene format=3 uid="uid://b3xwkw3sd3e2h"]
+
+[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_1gohp"]
+[ext_resource type="Texture2D" uid="uid://v33tg3kjo1pr" path="res://resources/feeds/shrimp.png" id="2_mnmea"]
+
+[node name="Shrimp" unique_id=629900561 instance=ExtResource("1_1gohp")]
+avatarTexture = ExtResource("2_mnmea")
+displayName = "烤基围虾"
+quality = 2
+fields = Array[int]([3, 0])
+fieldValues = Array[float]([-0.12, 20.0])
+costs = Array[int]([0, 1])
+costCounts = Array[int]([300, 1])
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("2_mnmea")
+
+[node name="name" parent="container/info" index="1"]
+displayName = "烤基围虾"
+quality = 0
+topic = 3
diff --git a/components/Feeds/Yinyang.tscn b/components/Feeds/Yinyang.tscn
new file mode 100644
index 0000000..f0cd140
--- /dev/null
+++ b/components/Feeds/Yinyang.tscn
@@ -0,0 +1,22 @@
+[gd_scene format=3 uid="uid://bs1sb3j6cr5bd"]
+
+[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_86tiu"]
+[ext_resource type="Texture2D" uid="uid://c2ee1nkl8da64" path="res://resources/feeds/yinyang.png" id="2_1ouu0"]
+
+[node name="Yinyang" unique_id=665641734 instance=ExtResource("1_86tiu")]
+avatarTexture = ExtResource("2_1ouu0")
+displayName = "阴阳球"
+quality = 4
+topic = 7
+fields = Array[int]([2, 0, 1])
+fieldValues = Array[float]([-0.4, -60.0, -0.7])
+costs = Array[int]([2, 4])
+costCounts = Array[int]([-3, -1])
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("2_1ouu0")
+
+[node name="name" parent="container/info" index="1"]
+displayName = "阴阳球"
+quality = 4
+topic = 7
diff --git a/components/Summons/LGBTFlag.tscn b/components/Summons/LGBTFlag.tscn
index 9d58171..a684651 100644
--- a/components/Summons/LGBTFlag.tscn
+++ b/components/Summons/LGBTFlag.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=6 format=3 uid="uid://b83iw0a062qp"]
+[gd_scene format=3 uid="uid://b83iw0a062qp"]
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_fktqv"]
[ext_resource type="Script" uid="uid://11fi3jjdm810" path="res://scripts/Contents/Summons/LGBTFlag.gd" id="2_6d456"]
@@ -20,9 +20,9 @@ animations = [{
[sub_resource type="RectangleShape2D" id="RectangleShape2D_r6sud"]
size = Vector2(112, 70)
-[node name="LGBTFlag" instance=ExtResource("1_fktqv")]
+[node name="LGBTFlag" unique_id=1526099188 instance=ExtResource("1_fktqv")]
script = ExtResource("2_6d456")
-attraction = 0.75
+attraction = 1.0
[node name="texture" parent="." index="3"]
sprite_frames = SubResource("SpriteFrames_r6sud")
@@ -36,4 +36,4 @@ texture = ExtResource("3_r6sud")
position = Vector2(0, 15)
shape = SubResource("RectangleShape2D_r6sud")
-[node name="normal" type="Node2D" parent="texture/weapons" index="0"]
+[node name="normal" type="Node2D" parent="texture/weapons" index="0" unique_id=482903999]
diff --git a/components/Weapons/AcidWind.tscn b/components/Weapons/AcidWind.tscn
index eaaba1a..434f7a5 100644
--- a/components/Weapons/AcidWind.tscn
+++ b/components/Weapons/AcidWind.tscn
@@ -12,49 +12,55 @@ quality = 4
typeTopic = 3
costBeachball = 200
store = {
-"atk": 0.5,
-"c-atk": 1.0,
+"atk": 1.0,
+"c-atk": 0.01,
"cl-atkspeed": 0.001,
"cl-speed": 0.001,
-"n-atk": 1.0,
+"f": 30.0,
+"n-atk": 5.0,
"p-offset": 0.1,
"s-count-max": 4.0,
-"weakatk": 0.25
+"weakatk": 0.5
}
storeType = {
"atk": 0,
-"c-atk": 1,
+"c-atk": 2,
"cl-atkspeed": 2,
"cl-speed": 2,
-"n-atk": 1,
+"f": 4,
+"n-atk": 2,
"p-offset": 3,
"s-count-max": 1,
"weakatk": 0
}
-descriptionTemplate = "高速随机喷射以下五种[b]酸[/b]之一,强酸可造成$atk点伤害,弱酸造成$weakatk点伤害。
+descriptionTemplate = "发射一个[b]酸蚀风暴[/b],以$f的频率吸引一下五种[b]酸[/b]到风暴中心,强酸可造成$atk点伤害,弱酸造成$weakatk点伤害。
[color=green][b]硫酸[/b][/color]:命中时溅射1~$s-count-max滴[b]硫酸[/b]。
-[color=lightblue][b]硝酸[/b][/color]:额外造成$n-atk点伤害。
+[color=lightblue][b]硝酸[/b][/color]:额外造成$n-atk伤害。
[color=lightyellow][b]盐酸[/b][/color]:使敌人 [i]移动速度[/i] 降低$cl-speed,[i]攻击速度[/i] 降低$cl-atkspeed。
-[color=pink][b]碳酸[/b][/color]:不会发生散射,可无限穿透,碰撞体积会越来越大,但飞行速度稍慢。
-[color=orange][b]磷酸[/b][/color]:使敌人 [i]散射角[/i] 增加$p-offset,可无限追踪。"
-cooldown = 0.0
+[color=pink][b]碳酸[/b][/color]:降低敌人$c-atk伤害。
+[color=orange][b]磷酸[/b][/color]:使敌人 [i]散射角[/i] 增加$p-offset。"
+needEnergy = 10.0
+cooldown = 2000.0
debugRebuild = true
[node name="avatar" parent="container/info" index="0"]
texture = ExtResource("2_pnd3r")
+[node name="energy" parent="container/info/infos/energyInfo" index="1"]
+text = "10.0"
+
[node name="beachball" parent="container/info/infos" index="1"]
count = 200
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" index="0"]
displayName = "酸蚀风暴"
quality = 4
typeTopic = 3
[node name="description" parent="container" index="2"]
-text = "[center]高速随机喷射以下五种[b]酸[/b]之一,强酸可造成[color=cyan]0.50[/color]点伤害,弱酸造成[color=cyan]0.25[/color]点伤害。
+text = "[center]发射一个[b]酸蚀风暴[/b],以[color=cyan]30.0Hz[/color]的频率吸引一下五种[b]酸[/b]到风暴中心,强酸可造成[color=cyan]1.00[/color]点伤害,弱酸造成[color=cyan]0.50[/color]点伤害。
[color=green][b]硫酸[/b][/color]:命中时溅射1~[color=cyan]4[/color]滴[b]硫酸[/b]。
-[color=lightblue][b]硝酸[/b][/color]:额外造成[color=cyan]1[/color]点伤害。
+[color=lightblue][b]硝酸[/b][/color]:额外造成[color=cyan]500.0%[/color]伤害。
[color=lightyellow][b]盐酸[/b][/color]:使敌人 [i]移动速度[/i] 降低[color=cyan]0.1%[/color],[i]攻击速度[/i] 降低[color=cyan]0.1%[/color]。
-[color=pink][b]碳酸[/b][/color]:不会发生散射,可无限穿透,碰撞体积会越来越大,但飞行速度稍慢。
-[color=orange][b]磷酸[/b][/color]:使敌人 [i]散射角[/i] 增加[color=cyan]0.1°[/color],可无限追踪。[/center]"
+[color=pink][b]碳酸[/b][/color]:降低敌人[color=cyan]1.0%[/color]伤害。
+[color=orange][b]磷酸[/b][/color]:使敌人 [i]散射角[/i] 增加[color=cyan]0.1°[/color]。[/center]"
diff --git a/components/Weapons/BigLaser.tscn b/components/Weapons/BigLaser.tscn
index 013fae2..e7db464 100644
--- a/components/Weapons/BigLaser.tscn
+++ b/components/Weapons/BigLaser.tscn
@@ -1,14 +1,14 @@
-[gd_scene load_steps=5 format=3 uid="uid://cxabqjo7skxev"]
+[gd_scene format=3 uid="uid://cxabqjo7skxev"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_wrvv5"]
-[ext_resource type="Script" path="res://scripts/Contents/Weapons/BigLaser.gd" id="2_gmch0"]
+[ext_resource type="Script" uid="uid://dx3ctln16ynbl" path="res://scripts/Contents/Weapons/BigLaser.gd" id="2_gmch0"]
[ext_resource type="Texture2D" uid="uid://dy4op6n6vxef3" path="res://resources/bullets/laser-circle/circle.svg" id="2_qe8gb"]
[ext_resource type="AudioStream" uid="uid://b10u6iir6uvqn" path="res://resources/sounds/effect/BigLaser.wav" id="4_cb5nh"]
-[node name="BigLaser" instance=ExtResource("1_wrvv5")]
+[node name="BigLaser" unique_id=906291376 instance=ExtResource("1_wrvv5")]
script = ExtResource("2_gmch0")
avatarTexture = ExtResource("2_qe8gb")
-displayName = "湮灭激光"
+displayName = "金法阵"
quality = 2
typeTopic = 1
costBeachball = 300
@@ -20,20 +20,37 @@ storeType = {
"atk": 1,
"time": 0.0
}
-descriptionTemplate = "每$time秒造成$atk点伤害。"
+descriptionTemplate = "召唤[b]湮灭射线[/b],
+每$time秒造成$atk点伤害。"
+sources = Array[String](["Magic Craft", "Harry Potter"])
+tease = "秒天秒地秒空气"
needEnergy = 200.0
cooldown = 6000.0
+debugRebuild = true
-[node name="attack" parent="sounds" index="0"]
+[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
stream = ExtResource("4_cb5nh")
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_qe8gb")
-[node name="name" parent="container/info" index="2"]
-displayName = "湮灭激光"
+[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
+text = "200.0"
+
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
+count = 300
+
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
+displayName = "金法阵"
quality = 2
typeTopic = 1
-[node name="description" parent="container" index="2"]
-text = "[center]每[color=cyan]0.10[/color]秒造成[color=cyan]40[/color]点伤害。[/center]"
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "Magic Craft × Harry Potter"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]召唤[b]湮灭射线[/b],
+每[color=cyan]0.10[/color]秒造成[color=cyan]40[/color]点伤害。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+text = "“秒天秒地秒空气”"
diff --git a/components/Weapons/BlueCrystal.tscn b/components/Weapons/BlueCrystal.tscn
index a98cdfc..71897d5 100644
--- a/components/Weapons/BlueCrystal.tscn
+++ b/components/Weapons/BlueCrystal.tscn
@@ -28,7 +28,7 @@ stream = ExtResource("4_fewtg")
[node name="avatar" parent="container/info" index="0"]
texture = ExtResource("3_fewtg")
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" index="0"]
displayName = "蓝水晶簇"
typeTopic = 3
diff --git a/components/Weapons/Bow.tscn b/components/Weapons/Bow.tscn
index 39bebb4..a61bdb6 100644
--- a/components/Weapons/Bow.tscn
+++ b/components/Weapons/Bow.tscn
@@ -1,10 +1,10 @@
-[gd_scene load_steps=4 format=3 uid="uid://dgka15811lrrj"]
+[gd_scene format=3 uid="uid://dgka15811lrrj"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_fhedw"]
[ext_resource type="Script" uid="uid://1u8t36atj041" path="res://scripts/Contents/Weapons/Bow.gd" id="2_bou5i"]
[ext_resource type="Texture2D" uid="uid://7us1po711e3o" path="res://resources/weapons/鸡毛弓.png" id="2_ex3jl"]
-[node name="Bow" instance=ExtResource("1_fhedw")]
+[node name="Bow" unique_id=256655558 instance=ExtResource("1_fhedw")]
script = ExtResource("2_bou5i")
avatarTexture = ExtResource("2_ex3jl")
displayName = "鸡毛弓"
@@ -21,18 +21,22 @@ storeType = {
"self": 1
}
descriptionTemplate = "消耗$self点生命值,发射$count支[b]鸡毛箭[/b],每支造成当前飞行速度的$atk伤害。"
+tease = "损人又害己"
cooldown = 2000.0
debugRebuild = true
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_ex3jl")
-[node name="beachball" parent="container/info/infos" index="1"]
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
count = 50
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "鸡毛弓"
quality = 2
-[node name="description" parent="container" index="2"]
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
text = "[center]消耗[color=cyan]2[/color]点生命值,发射[color=cyan]1[/color]支[b]鸡毛箭[/b],每支造成当前飞行速度的[color=cyan]500.0%[/color]伤害。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+text = "“损人又害己”"
diff --git a/components/Weapons/ChainGun.tscn b/components/Weapons/ChainGun.tscn
index 20edfbe..5730afe 100644
--- a/components/Weapons/ChainGun.tscn
+++ b/components/Weapons/ChainGun.tscn
@@ -1,11 +1,11 @@
-[gd_scene load_steps=5 format=3 uid="uid://dlaks67h2osms"]
+[gd_scene format=3 uid="uid://dlaks67h2osms"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_x1nyl"]
[ext_resource type="Texture2D" uid="uid://ccxdfsg5071t4" path="res://resources/bullets/chain-gun/Chain_Gun.webp" id="2_ghn43"]
[ext_resource type="Script" uid="uid://dev0urlc13rxc" path="res://scripts/Contents/Weapons/ChainGun.gd" id="2_ponmu"]
[ext_resource type="AudioStream" uid="uid://bdcyao3e6xs63" path="res://resources/sounds/effect/chainshoot.wav" id="4_g38si"]
-[node name="ChainGun" instance=ExtResource("1_x1nyl")]
+[node name="ChainGun" unique_id=1992324853 instance=ExtResource("1_x1nyl")]
script = ExtResource("2_ponmu")
avatarTexture = ExtResource("2_ghn43")
displayName = "链式机枪"
@@ -20,24 +20,32 @@ storeType = {
"count": 1,
"split": 3
}
-descriptionTemplate = "超高速发射$count个[b]微型水晶[/b],可造成$atk点伤害,散射+$split。"
+descriptionTemplate = "超高速发射$count个[b]微型水晶[/b],可造成$atk点伤害,散射+$split,穿透+[color=yellow]25%[/color]。"
+sources = Array[String](["Terraria"])
needEnergy = 0.75
cooldown = 66.0
+debugRebuild = true
-[node name="attack" parent="sounds" index="0"]
+[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
stream = ExtResource("4_g38si")
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_ghn43")
-[node name="energy" parent="container/info/infos/energyInfo" index="1"]
+[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
text = "0.8"
-[node name="beachball" parent="container/info/infos" index="1"]
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
count = 400
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "链式机枪"
-[node name="description" parent="container" index="2"]
-text = "[center]超高速发射[color=cyan]1[/color]个[b]微型水晶[/b],可造成[color=cyan]3[/color]点伤害,散射+[color=cyan]15.0°[/color]。[/center]"
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "Terraria"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]超高速发射[color=cyan]1[/color]个[b]微型水晶[/b],可造成[color=cyan]5[/color]点伤害,散射+[color=cyan]15.0°[/color],穿透+[color=yellow]25%[/color]。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+visible = false
diff --git a/components/Weapons/Cogwheel.tscn b/components/Weapons/Cogwheel.tscn
index a421064..fd07d3c 100644
--- a/components/Weapons/Cogwheel.tscn
+++ b/components/Weapons/Cogwheel.tscn
@@ -1,10 +1,10 @@
-[gd_scene load_steps=4 format=3 uid="uid://dqywctcj4y2xi"]
+[gd_scene format=3 uid="uid://dqywctcj4y2xi"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_ga2jk"]
[ext_resource type="Script" uid="uid://nm2xleunwf4r" path="res://scripts/Contents/Weapons/Cogwheel.gd" id="2_c1bcd"]
[ext_resource type="Texture2D" uid="uid://d0d1t8ch1lolp" path="res://resources/bullets/cogwheel/cogwheel.png" id="2_qs30c"]
-[node name="Cogwheel" instance=ExtResource("1_ga2jk")]
+[node name="Cogwheel" unique_id=89158644 instance=ExtResource("1_ga2jk")]
script = ExtResource("2_c1bcd")
avatarTexture = ExtResource("2_qs30c")
displayName = "齿轮回旋镖"
@@ -21,18 +21,22 @@ descriptionTemplate = "发射[b]齿轮[/b],在飞行一定距离后回旋。
齿轮的伤害频率与转速成正比。
锋利度:$atk,初始转速:$rotate,
齿轮的转速随时间逐渐降低。"
+tease = "马后炮最令人措手不及"
cooldown = 1000.0
debugRebuild = true
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_qs30c")
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "齿轮回旋镖"
quality = 3
-[node name="description" parent="container" index="2"]
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
text = "[center]发射[b]齿轮[/b],在飞行一定距离后回旋。
齿轮的伤害频率与转速成正比。
锋利度:[color=cyan]2[/color],初始转速:[color=cyan]15.0°[/color],
齿轮的转速随时间逐渐降低。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+text = "“马后炮最令人措手不及”"
diff --git a/components/Weapons/CursorKnife.tscn b/components/Weapons/CursorKnife.tscn
new file mode 100644
index 0000000..f562b96
--- /dev/null
+++ b/components/Weapons/CursorKnife.tscn
@@ -0,0 +1,42 @@
+[gd_scene format=3 uid="uid://dgxvgsipl0gr1"]
+
+[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_bri6r"]
+[ext_resource type="Script" uid="uid://jyalew2bgcnk" path="res://scripts/Contents/Weapons/CursorKnife.gd" id="2_sn7uu"]
+[ext_resource type="Texture2D" uid="uid://blnryfwabfo5v" path="res://resources/weapons/CursorKnife.png" id="3_mdipf"]
+[ext_resource type="AudioStream" uid="uid://b3y226i1875iq" path="res://resources/sounds/effect/cursor.wav" id="4_vttri"]
+
+[node name="CursorKnife" unique_id=873917839 instance=ExtResource("1_bri6r")]
+script = ExtResource("2_sn7uu")
+avatarTexture = ExtResource("3_mdipf")
+displayName = "光标刃轮"
+typeTopic = 1
+costBeachball = 350
+emitType = 1
+store = {
+"atk": 10,
+"speed": 0.004
+}
+storeType = {
+"atk": 1,
+"speed": 2
+}
+descriptionTemplate = "造成$atk点伤害,攻击速度+$speed。"
+
+[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
+stream = ExtResource("4_vttri")
+
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
+texture = ExtResource("3_mdipf")
+
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
+count = 350
+
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
+displayName = "光标刃轮"
+typeTopic = 1
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]造成[color=cyan]10[/color]点伤害,攻击速度+[color=cyan]0.4%[/color]。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+visible = false
diff --git a/components/Weapons/DaoStatue.tscn b/components/Weapons/DaoStatue.tscn
new file mode 100644
index 0000000..feef666
--- /dev/null
+++ b/components/Weapons/DaoStatue.tscn
@@ -0,0 +1,68 @@
+[gd_scene format=3 uid="uid://bbrllsqjmx0ie"]
+
+[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_mps21"]
+[ext_resource type="Script" uid="uid://cu42bwm2r05p6" path="res://scripts/Contents/Weapons/DaoStatue.gd" id="2_c82g6"]
+[ext_resource type="Texture2D" uid="uid://gwsychqkmv21" path="res://resources/weapons/Statue_Sword_Attack0.png" id="2_gx1sf"]
+[ext_resource type="AudioStream" uid="uid://cer3lxbxqw5pq" path="res://resources/sounds/effect/sword1.mp3" id="4_y3oaj"]
+
+[node name="DaoStatue" unique_id=265403254 instance=ExtResource("1_mps21")]
+script = ExtResource("2_c82g6")
+avatarTexture = ExtResource("2_gx1sf")
+displayName = "道教石像"
+typeTopic = 1
+costBeachball = 499
+store = {
+"atk": 50,
+"rate1": 0.05,
+"rate2": 0.025,
+"rate3": 0.01
+}
+storeType = {
+"atk": 1,
+"rate1": 2,
+"rate2": 2,
+"rate3": 2
+}
+descriptionTemplate = "挥出[b]天地之剑[/b],蓄力一段时间后,
+发射一道[b]无量斩[/b],造成$atk点伤害。
+
+攻击速度每降低[color=yellow]1%[/color],伤害+$rate2;
+每失去[color=yellow]1[/color]点生命值,伤害+$rate1;
+拥有的所有[b]气力[/b]层数之和,每化解[color=yellow]1[/color]点伤害,[b]无量斩[/b]的伤害+$rate3;
+每次攻击需要消耗至少[color=yellow]1[/color]层气力。"
+sources = Array[String](["Nine Sols"])
+tease = "天机不可泄露"
+needEnergy = 25.0
+cooldown = 4000.0
+debugRebuild = true
+
+[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
+stream = ExtResource("4_y3oaj")
+
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
+texture = ExtResource("2_gx1sf")
+
+[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
+text = "25.0"
+
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
+count = 499
+
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
+displayName = "道教石像"
+typeTopic = 1
+
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "Nine Sols"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]挥出[b]天地之剑[/b],蓄力一段时间后,
+发射一道[b]无量斩[/b],造成[color=cyan]50[/color]点伤害。
+
+攻击速度每降低[color=yellow]1%[/color],伤害+[color=cyan]2.5%[/color];
+每失去[color=yellow]1[/color]点生命值,伤害+[color=cyan]5.0%[/color];
+拥有的所有[b]气力[/b]层数之和,每化解[color=yellow]1[/color]点伤害,[b]无量斩[/b]的伤害+[color=cyan]1.0%[/color];
+每次攻击需要消耗至少[color=yellow]1[/color]层气力。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+text = "“天机不可泄露”"
diff --git a/components/Weapons/Gobo.tscn b/components/Weapons/Gobo.tscn
index 09017f7..72b6b7c 100644
--- a/components/Weapons/Gobo.tscn
+++ b/components/Weapons/Gobo.tscn
@@ -1,10 +1,10 @@
-[gd_scene load_steps=4 format=3 uid="uid://blwoev5sencdh"]
+[gd_scene format=3 uid="uid://blwoev5sencdh"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_0udcw"]
[ext_resource type="Script" uid="uid://cbg3xkg1giv35" path="res://scripts/Contents/Weapons/Gobo.gd" id="2_7yxbe"]
[ext_resource type="Texture2D" uid="uid://xen2edbhf052" path="res://resources/characters/gobo/gobo-a.svg" id="2_tw58e"]
-[node name="Gobo" instance=ExtResource("1_0udcw")]
+[node name="Gobo" unique_id=129053016 instance=ExtResource("1_0udcw")]
script = ExtResource("2_7yxbe")
avatarTexture = ExtResource("2_tw58e")
displayName = "Gobo"
@@ -23,16 +23,16 @@ storeType = {
"percent": 2
}
descriptionTemplate = "召唤[b]Gobo[/b],Gobo会自主行动,每受到$atk点伤害后会生产$count颗[b]苹果[/b]。Gobo初始拥有$health点生命值。"
+sources = Array[String](["Scratch"])
cooldown = 1000.0
-debugRebuild = true
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_tw58e")
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "Gobo"
quality = 4
typeTopic = 4
-[node name="description" parent="container" index="2"]
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
text = "[center]召唤[b]Gobo[/b],Gobo会自主行动,每受到[color=cyan]100[/color]点伤害后会生产[color=cyan]1[/color]颗[b]苹果[/b]。Gobo初始拥有[color=cyan]200[/color]点生命值。[/center]"
diff --git a/components/Weapons/GrassWall.tscn b/components/Weapons/GrassWall.tscn
index d6ba401..399616e 100644
--- a/components/Weapons/GrassWall.tscn
+++ b/components/Weapons/GrassWall.tscn
@@ -1,10 +1,10 @@
-[gd_scene load_steps=4 format=3 uid="uid://dldnbpubu2jgm"]
+[gd_scene format=3 uid="uid://dldnbpubu2jgm"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_wvaxu"]
[ext_resource type="Texture2D" uid="uid://bbv5j71jkdo42" path="res://resources/weapons/grass-wall.png" id="2_kh4xg"]
[ext_resource type="Script" uid="uid://7bmrk88b4ipd" path="res://scripts/Contents/Weapons/GrassWall.gd" id="2_us6b7"]
-[node name="GrassWall" instance=ExtResource("1_wvaxu")]
+[node name="GrassWall" unique_id=1743572542 instance=ExtResource("1_wvaxu")]
script = ExtResource("2_us6b7")
avatarTexture = ExtResource("2_kh4xg")
displayName = "草方块菌落"
@@ -14,21 +14,30 @@ store = {
"atk": 100
}
descriptionTemplate = "分泌一堵[b]肽聚墙[/b],可抵挡$atk点伤害,敌人更有可能瞄准你。"
+sources = Array[String](["UDA"])
+tease = "也许弹反会更合适?"
needEnergy = 35.0
cooldown = 1000.0
+debugRebuild = true
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_kh4xg")
-[node name="energy" parent="container/info/infos/energyInfo" index="1"]
+[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
text = "35.0"
-[node name="beachball" parent="container/info/infos" index="1"]
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
count = 10
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "草方块菌落"
typeTopic = 4
-[node name="description" parent="container" index="2"]
-text = "[center]分泌一堵[b]肽聚墙[/b],可抵挡[color=cyan]200[/color]点伤害,敌人更有可能瞄准你。[/center]"
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "UDA"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]分泌一堵[b]肽聚墙[/b],可抵挡[color=cyan]100[/color]点伤害,敌人更有可能瞄准你。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+text = "“也许弹反会更合适?”"
diff --git a/components/Weapons/GravitySource.tscn b/components/Weapons/GravitySource.tscn
new file mode 100644
index 0000000..e0320d9
--- /dev/null
+++ b/components/Weapons/GravitySource.tscn
@@ -0,0 +1,47 @@
+[gd_scene format=3 uid="uid://cb68wvctxd4kx"]
+
+[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_1lqmy"]
+[ext_resource type="Texture2D" uid="uid://dbbd5ljkfvof8" path="res://resources/weapons/gravity-source.svg" id="2_r5y0x"]
+
+[node name="GravitySource" unique_id=2085048785 instance=ExtResource("1_1lqmy")]
+avatarTexture = ExtResource("2_r5y0x")
+displayName = "引力源"
+store = {
+"atk": 114514.0,
+"m1": 10000.0,
+"m2": 1.0
+}
+storeType = {
+"atk": 0
+}
+descriptionTemplate = "使光标化身为[b]恒星[/b]产生强大引力,并吸引[color=yellow]1[/color]颗行星围绕其。移动恒星来使行星产生加速度,[color=yellow]行星速度越快撞击伤害越高[/color]。
+行星的速度太快会发生[color=red]逃逸[/color],
+撞上恒星后会[color=red]坠毁[/color]。
+
+恒星质量:$m1,行星质量:$m2,
+圆周运动初始半径:[color=yellow]100[/color],
+万有引力常数:$atk。"
+sources = Array[String](["万有引力", "宇宙航行"])
+tease = "告诉我,逃逸速度是多少?!"
+debugRebuild = true
+
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
+texture = ExtResource("2_r5y0x")
+
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
+displayName = "引力源"
+
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "万有引力 × 宇宙航行"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]使光标化身为[b]恒星[/b]产生强大引力,并吸引[color=yellow]1[/color]颗行星围绕其。移动恒星来使行星产生加速度,[color=yellow]行星速度越快撞击伤害越高[/color]。
+行星的速度太快会发生[color=red]逃逸[/color],
+撞上恒星后会[color=red]坠毁[/color]。
+
+恒星质量:[color=cyan]10000.00[/color],行星质量:[color=cyan]1.00[/color],
+圆周运动初始半径:[color=yellow]100[/color],
+万有引力常数:[color=cyan]114514.00[/color]。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+text = "“告诉我,逃逸速度是多少?!”"
diff --git a/components/Weapons/HJM.tscn b/components/Weapons/HJM.tscn
index 8711cd2..fa82c05 100644
--- a/components/Weapons/HJM.tscn
+++ b/components/Weapons/HJM.tscn
@@ -1,10 +1,10 @@
-[gd_scene load_steps=4 format=3 uid="uid://dbxu15g1pd3cx"]
+[gd_scene format=3 uid="uid://dbxu15g1pd3cx"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_73eho"]
[ext_resource type="Script" uid="uid://crx7hojhwqlyl" path="res://scripts/Contents/Weapons/HJM.gd" id="2_2in6n"]
[ext_resource type="Texture2D" uid="uid://bv7iu8qylxp70" path="res://resources/weapons/hjm.png" id="2_74sfb"]
-[node name="HJM" instance=ExtResource("1_73eho")]
+[node name="HJM" unique_id=796560287 instance=ExtResource("1_73eho")]
script = ExtResource("2_2in6n")
avatarTexture = ExtResource("2_74sfb")
displayName = "耄耋"
@@ -20,23 +20,23 @@ storeType = {
"time": 0
}
descriptionTemplate = "召唤[b]抓狂的哈基米[/b],跟踪敌人,每$time秒造成$atk点伤害。"
+sources = Array[String](["Internet"])
needEnergy = 75.0
cooldown = 1000.0
-debugRebuild = true
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_74sfb")
-[node name="energy" parent="container/info/infos/energyInfo" index="1"]
+[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
text = "75.0"
-[node name="beachball" parent="container/info/infos" index="1"]
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
count = 600
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "耄耋"
quality = 0
typeTopic = 4
-[node name="description" parent="container" index="2"]
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
text = "[center]召唤[b]抓狂的哈基米[/b],跟踪敌人,每[color=cyan]0.25[/color]秒造成[color=cyan]7[/color]点伤害。[/center]"
diff --git a/components/Weapons/HXD.tscn b/components/Weapons/HXD.tscn
index 7086914..c7a97dc 100644
--- a/components/Weapons/HXD.tscn
+++ b/components/Weapons/HXD.tscn
@@ -1,10 +1,10 @@
-[gd_scene load_steps=4 format=3 uid="uid://bm5sw6mr71acq"]
+[gd_scene format=3 uid="uid://bm5sw6mr71acq"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_h4ls7"]
[ext_resource type="Script" uid="uid://0xfj35jvi7ym" path="res://scripts/Contents/Weapons/HXD.gd" id="2_7tnwq"]
[ext_resource type="Texture2D" uid="uid://cvvtr2mmwo18r" path="res://resources/weapons/HXD.png" id="2_d5bd0"]
-[node name="HXD" instance=ExtResource("1_h4ls7")]
+[node name="HXD" unique_id=1383383596 instance=ExtResource("1_h4ls7")]
script = ExtResource("2_7tnwq")
avatarTexture = ExtResource("2_d5bd0")
displayName = "咸亨记账簿"
@@ -19,20 +19,28 @@ storeType = {
"atk": 1,
"count": 1
}
-descriptionTemplate = "发射$count颗[b]茴香豆[/b],在敌人间反弹,每颗茴香豆最多可以反弹$atk次,每次反弹对敌人造成$atk点伤害,有[color=yellow]1/4[/color]的概率反弹次数[color=yellow]+1[/color]。散射[color=red]+4°[/color],反弹时伤害[color=red]-4%[/color],命中同类敌人时额外造成一次[color=yellow]必定暴击[/color]的伤害,命中Boss时,[color=orange]伤害倍率+1%[/color]。"
+descriptionTemplate = "发射$count颗[b]茴香豆[/b],在敌人间反弹,每颗茴香豆最多可以反弹$atk次,每次反弹对敌人造成$atk点伤害,有[color=yellow]1/4[/color]的概率反弹次数[color=yellow]+1[/color]。散射[color=red]+4°[/color],反弹时伤害[color=red]-4%[/color],命中同类敌人时额外造成一次[color=yellow]必定暴击[/color]的伤害,命中Boss时,伤害倍率[b]永久[/b][color=orange]+1%[/color]。"
+sources = Array[String](["Zenless Zone Zero", "孔乙己"])
+tease = "不多了,我剩得不多了!"
cooldown = 1000.0
debugRebuild = true
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_d5bd0")
-[node name="beachball" parent="container/info/infos" index="1"]
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
count = 4000
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "咸亨记账簿"
quality = 3
typeTopic = 3
-[node name="description" parent="container" index="2"]
-text = "[center]发射[color=cyan]4[/color]颗[b]茴香豆[/b],在敌人间反弹,每颗茴香豆最多可以反弹[color=cyan]4[/color]次,每次反弹对敌人造成[color=cyan]4[/color]点伤害,有[color=yellow]1/4[/color]的概率反弹次数[color=yellow]+1[/color]。散射[color=red]+4°[/color],反弹时伤害[color=red]-4%[/color],命中同类敌人时额外造成一次[color=yellow]必定暴击[/color]的伤害,命中Boss时,[color=orange]伤害倍率+1%[/color]。[/center]"
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "Zenless Zone Zero × 孔乙己"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]发射[color=cyan]4[/color]颗[b]茴香豆[/b],在敌人间反弹,每颗茴香豆最多可以反弹[color=cyan]4[/color]次,每次反弹对敌人造成[color=cyan]4[/color]点伤害,有[color=yellow]1/4[/color]的概率反弹次数[color=yellow]+1[/color]。散射[color=red]+4°[/color],反弹时伤害[color=red]-4%[/color],命中同类敌人时额外造成一次[color=yellow]必定暴击[/color]的伤害,命中Boss时,伤害倍率[b]永久[/b][color=orange]+1%[/color]。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+text = "“不多了,我剩得不多了!”"
diff --git a/components/Weapons/Hetun.tscn b/components/Weapons/Hetun.tscn
new file mode 100644
index 0000000..841cf40
--- /dev/null
+++ b/components/Weapons/Hetun.tscn
@@ -0,0 +1,41 @@
+[gd_scene format=3 uid="uid://c65tbxm3tclw0"]
+
+[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_021hd"]
+[ext_resource type="Script" uid="uid://tfptal3sgfmy" path="res://scripts/Contents/Weapons/Hetun.gd" id="2_t2ywh"]
+[ext_resource type="Texture2D" uid="uid://c1xrf8255jafi" path="res://resources/weapons/hetun.png" id="2_y0xe1"]
+
+[node name="Hetun" unique_id=819619036 instance=ExtResource("1_021hd")]
+script = ExtResource("2_t2ywh")
+avatarTexture = ExtResource("2_y0xe1")
+displayName = "河豚"
+quality = 0
+store = {
+"atk": 30,
+"count": 10,
+"penerate": 0.25
+}
+storeType = {
+"atk": 1,
+"count": 1,
+"penerate": 2
+}
+descriptionTemplate = "散射5~$count针[b]河豚刺针[/b],每根针造成$atk点伤害,撞上敌人后有$penerate概率反弹。"
+sources = Array[String](["Minecraft", "Pathogenic"])
+tease = "看我扎不扎你就完了"
+cooldown = 2000.0
+
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
+texture = ExtResource("2_y0xe1")
+
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
+displayName = "河豚"
+quality = 0
+
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "Minecraft × Pathogenic"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]散射5~[color=cyan]10[/color]针[b]河豚刺针[/b],每根针造成[color=cyan]15[/color]点伤害,撞上敌人后有[color=cyan]20.0%[/color]概率反弹。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+text = "“看我扎不扎你就完了”"
diff --git a/components/Weapons/LGBT.tscn b/components/Weapons/LGBT.tscn
index f02c480..9694af2 100644
--- a/components/Weapons/LGBT.tscn
+++ b/components/Weapons/LGBT.tscn
@@ -43,7 +43,7 @@ text = "95.0"
[node name="beachball" parent="container/info/infos" index="1"]
count = 200
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" index="0"]
displayName = "彩虹旗"
typeTopic = 4
diff --git a/components/Weapons/MagicMissle.tscn b/components/Weapons/MagicMissle.tscn
new file mode 100644
index 0000000..6eb5649
--- /dev/null
+++ b/components/Weapons/MagicMissle.tscn
@@ -0,0 +1,65 @@
+[gd_scene format=3 uid="uid://c6d23yqjhe0ju"]
+
+[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_c3bm3"]
+[ext_resource type="Texture2D" uid="uid://dce1da2qm24pb" path="res://resources/weapons/magic-missle.webp" id="2_3sdrm"]
+[ext_resource type="Script" uid="uid://clec7nrtesipu" path="res://scripts/Contents/Weapons/MagicMissle.gd" id="2_r857c"]
+
+[node name="MagicMissle" unique_id=2085048785 instance=ExtResource("1_c3bm3")]
+script = ExtResource("2_r857c")
+avatarTexture = ExtResource("2_3sdrm")
+displayName = "导弹法杖"
+quality = 2
+typeTopic = 3
+emitType = 3
+store = {
+"G": 197392.0,
+"atk": 10,
+"count": 3.0,
+"cursor-m": 100.0,
+"missle-m": 10.0,
+"track": 200.0
+}
+storeType = {
+"G": 1,
+"atk": 1,
+"count": 1,
+"cursor-m": 0,
+"missle-m": 0,
+"track": 0
+}
+descriptionTemplate = "召唤[color=yellow]1[/color]枚[b]魔法导弹[/b],围绕鼠标指针做由鼠标指针提供向心力的圆周运动。
+鼠标指针质量:$cursor-mkg,
+魔法导弹质量:$missle-mkg,
+初始轨道半径:$trackm,
+万有引力常数:$G。
+魔法导弹碰撞时造成$atk点伤害,
+分裂出$count枚[b]次级导弹[/b],
+可继承分裂最多$count次。"
+sources = Array[String](["万有引力", "宇宙航行"])
+cooldown = 1000.0
+debugRebuild = true
+
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
+texture = ExtResource("2_3sdrm")
+
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
+displayName = "导弹法杖"
+quality = 2
+typeTopic = 3
+
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "万有引力 × 宇宙航行"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]召唤[color=yellow]1[/color]枚[b]魔法导弹[/b],围绕鼠标指针做由鼠标指针提供向心力的圆周运动。
+鼠标指针质量:[color=cyan]100.00[/color]kg,
+魔法导弹质量:[color=cyan]10.00[/color]kg,
+初始轨道半径:[color=cyan]200.00[/color]m,
+万有引力常数:[color=cyan]197392[/color]。
+魔法导弹碰撞时造成[color=cyan]10[/color]点伤害,
+分裂出[color=cyan]3[/color]枚[b]次级导弹[/b],
+可继承分裂最多[color=cyan]3[/color]次。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+visible = false
+text = "“ ”"
diff --git a/components/Weapons/Meowmere.tscn b/components/Weapons/Meowmere.tscn
index 099c42f..5240b0d 100644
--- a/components/Weapons/Meowmere.tscn
+++ b/components/Weapons/Meowmere.tscn
@@ -1,11 +1,11 @@
-[gd_scene load_steps=5 format=3 uid="uid://frwt0fgrpskb"]
+[gd_scene format=3 uid="uid://frwt0fgrpskb"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_xhgkg"]
[ext_resource type="Script" uid="uid://jr5idpte8epy" path="res://scripts/Contents/Weapons/Meowmere.gd" id="2_4rd12"]
[ext_resource type="Texture2D" uid="uid://cwr2pud7h8o3e" path="res://resources/bullets/meowmere/Meowmere.webp" id="2_kiocs"]
[ext_resource type="AudioStream" uid="uid://cx203jnrkto4u" path="res://resources/sounds/effect/swordshoot.wav" id="4_hvtvi"]
-[node name="Meowmere" instance=ExtResource("1_xhgkg")]
+[node name="Meowmere" unique_id=1965287972 instance=ExtResource("1_xhgkg")]
script = ExtResource("2_4rd12")
avatarTexture = ExtResource("2_kiocs")
displayName = "彩虹猫之刃"
@@ -25,23 +25,23 @@ storeType = {
"reduce": 2
}
descriptionTemplate = "发射$count只伤害以$reduce衰减的造成$childatk点伤害的[b]彩虹猫[/b]的同时挥舞造成$atk点伤害。"
+sources = Array[String](["Terraria"])
cooldown = 230.0
-debugRebuild = true
-[node name="attack" parent="sounds" index="0"]
+[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
stream = ExtResource("4_hvtvi")
volume_db = 10.0
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_kiocs")
-[node name="beachball" parent="container/info/infos" index="1"]
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
count = 600
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "彩虹猫之刃"
quality = 2
typeTopic = 3
-[node name="description" parent="container" index="2"]
-text = "[center]发射[color=cyan]1[/color]只伤害以[color=cyan]25%[/color]衰减的造成[color=cyan]6[/color]点伤害的[b]彩虹猫[/b]的同时挥舞造成[color=cyan]5[/color]点伤害。[/center]"
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]发射[color=cyan]1[/color]只伤害以[color=cyan]25.0%[/color]衰减的造成[color=cyan]6[/color]点伤害的[b]彩虹猫[/b]的同时挥舞造成[color=cyan]5[/color]点伤害。[/center]"
diff --git a/components/Weapons/MushroomPickaxe.tscn b/components/Weapons/MushroomPickaxe.tscn
index 211c2a3..b3321b8 100644
--- a/components/Weapons/MushroomPickaxe.tscn
+++ b/components/Weapons/MushroomPickaxe.tscn
@@ -1,10 +1,10 @@
-[gd_scene load_steps=4 format=3 uid="uid://dwsyn746hr25d"]
+[gd_scene format=3 uid="uid://dwsyn746hr25d"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_aoaad"]
[ext_resource type="Script" uid="uid://bmmf864uc3atu" path="res://scripts/Contents/Weapons/MushroomPickaxe.gd" id="2_5dp3e"]
[ext_resource type="Texture2D" uid="uid://cqg0aluvegqfe" path="res://resources/bullets/MushroomPickaxe/frames/Shroomite_Digging_Claw.webp" id="2_u2d30"]
-[node name="MushroomPickaxe" instance=ExtResource("1_aoaad")]
+[node name="MushroomPickaxe" unique_id=1903474011 instance=ExtResource("1_aoaad")]
script = ExtResource("2_5dp3e")
avatarTexture = ExtResource("2_u2d30")
displayName = "蘑菇矿挖爪"
@@ -20,18 +20,16 @@ storeType = {
"rate": 2
}
descriptionTemplate = "命中时造成$atk点伤害,有$rate概率挖出1~$count个随机物品。"
+sources = Array[String](["Terraria"])
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_u2d30")
-[node name="energy" parent="container/info/infos/energyInfo" index="1"]
-text = "2.0"
-
-[node name="beachball" parent="container/info/infos" index="1"]
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
count = 750
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "蘑菇矿挖爪"
-[node name="description" parent="container" index="2"]
-text = "[center]命中时造成[color=cyan]1[/color]点伤害,有[color=cyan]10%[/color]概率挖出1~[color=cyan]3[/color]个随机物品。[/center]"
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]命中时造成[color=cyan]1[/color]点伤害,有[color=cyan]10.0%[/color]概率挖出1~[color=cyan]3[/color]个随机物品。[/center]"
diff --git a/components/Weapons/NuclearBomb.tscn b/components/Weapons/NuclearBomb.tscn
index 165fa0f..7209146 100644
--- a/components/Weapons/NuclearBomb.tscn
+++ b/components/Weapons/NuclearBomb.tscn
@@ -29,7 +29,7 @@ texture = ExtResource("2_5nh8i")
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" index="0"]
displayName = "核弹控制器"
quality = 4
typeTopic = 2
diff --git a/components/Weapons/Oxygener.tscn b/components/Weapons/Oxygener.tscn
index ea9539e..d50fc13 100644
--- a/components/Weapons/Oxygener.tscn
+++ b/components/Weapons/Oxygener.tscn
@@ -1,38 +1,45 @@
-[gd_scene load_steps=4 format=3 uid="uid://b5ebx8duvgtt5"]
+[gd_scene format=3 uid="uid://b5ebx8duvgtt5"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_8jd12"]
[ext_resource type="Script" uid="uid://bjraoa0lwchon" path="res://scripts/Contents/Weapons/Oxygener.gd" id="2_thqd2"]
[ext_resource type="Texture2D" uid="uid://gpwxs56alc7m" path="res://resources/weapons/oxygener.png" id="2_xmkcx"]
-[node name="Oxygener" instance=ExtResource("1_8jd12")]
+[node name="Oxygener" unique_id=742545556 instance=ExtResource("1_8jd12")]
script = ExtResource("2_thqd2")
avatarTexture = ExtResource("2_xmkcx")
displayName = "氧化加农炮"
quality = 0
typeTopic = 2
store = {
-"atk": 3.0,
-"fireatk": 1.0,
+"atk": 10.0,
+"count": 1,
+"fireatk": 5.0,
"max-n": 7.0,
-"min-n": 3.0
+"min-n": 2.0
}
storeType = {
"atk": 0,
+"count": 1,
"fireatk": 0,
"max-n": 1,
"min-n": 1
}
-descriptionTemplate = "大概率高速喷出火焰,造成$fireatk点伤害。小概率喷出$min-n~$max-n滴[b]浓硝酸[/b],每滴造成$atk点伤害。[b]火焰[/b]具有高额击退效果,[b]浓硝酸[/b]液滴的射程较短。"
+descriptionTemplate = "高速喷出[b]火焰[/b],造成$fireatk点伤害。小概率喷出[b]硝化火[/b],召唤$min-n~$max-n滴[b]浓硝酸[/b]围绕在火焰旁,每滴造成$atk点伤害。[b]火焰[/b]具有高额击退效果,[b]浓硝酸[/b]液滴的射程较短,每发射$count次火焰会消耗[color=yellow]1[/color]个[b]篮球[/b],
+如果没有则消耗[color=yellow]5[/color]点[b]能量[/b]。"
cooldown = 50.0
debugRebuild = true
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_xmkcx")
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "氧化加农炮"
quality = 0
typeTopic = 2
-[node name="description" parent="container" index="2"]
-text = "[center]大概率高速喷出火焰,造成[color=cyan]1.00[/color]点伤害。小概率喷出[color=cyan]3[/color]~[color=cyan]7[/color]滴[b]浓硝酸[/b],每滴造成[color=cyan]3.00[/color]点伤害。[b]火焰[/b]具有高额击退效果,[b]浓硝酸[/b]液滴的射程较短。[/center]"
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]高速喷出[b]火焰[/b],造成[color=cyan]5.00[/color]点伤害。小概率喷出[b]硝化火[/b],召唤[color=cyan]2[/color]~[color=cyan]7[/color]滴[b]浓硝酸[/b]围绕在火焰旁,每滴造成[color=cyan]10.00[/color]点伤害。[b]火焰[/b]具有高额击退效果,[b]浓硝酸[/b]液滴的射程较短,每发射[color=cyan]1[/color]次火焰会消耗[color=yellow]1[/color]个[b]篮球[/b],
+如果没有则消耗[color=yellow]5[/color]点[b]能量[/b]。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+visible = false
diff --git a/components/Weapons/Pipe.tscn b/components/Weapons/Pipe.tscn
index 37848d7..e32a916 100644
--- a/components/Weapons/Pipe.tscn
+++ b/components/Weapons/Pipe.tscn
@@ -1,33 +1,40 @@
-[gd_scene load_steps=4 format=3 uid="uid://dyanyf044boxp"]
+[gd_scene format=3 uid="uid://dyanyf044boxp"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_sqbqm"]
[ext_resource type="Texture2D" uid="uid://7yeb0e4ahcee" path="res://resources/weapons/pipe.png" id="2_mmtf8"]
[ext_resource type="Script" uid="uid://l1v3boq8ei12" path="res://scripts/Contents/Weapons/Pipe.gd" id="2_p67v7"]
-[node name="Pipe" instance=ExtResource("1_sqbqm")]
+[node name="Pipe" unique_id=946948425 instance=ExtResource("1_sqbqm")]
script = ExtResource("2_p67v7")
avatarTexture = ExtResource("2_mmtf8")
displayName = "钢管"
costBeachball = 350
-chargable = true
+emitType = 2
store = {
"atk": 5
}
descriptionTemplate = "按住蓄力扔出钢管,蓄力越久伤害越高,至少造成$atk点伤害,发射钢管后继续按住鼠标可进行连续发射。"
+sources = Array[String](["MEME"])
needEnergy = 2.0
cooldown = 3000.0
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_mmtf8")
-[node name="energy" parent="container/info/infos/energyInfo" index="1"]
+[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
text = "2.0"
-[node name="beachball" parent="container/info/infos" index="1"]
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
count = 350
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "钢管"
-[node name="description" parent="container" index="2"]
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "MEME"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
text = "[center]按住蓄力扔出钢管,蓄力越久伤害越高,至少造成[color=cyan]5[/color]点伤害,发射钢管后继续按住鼠标可进行连续发射。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+visible = false
diff --git a/components/Weapons/PurpleCrystal.tscn b/components/Weapons/PurpleCrystal.tscn
index 51856c0..21a6bfa 100644
--- a/components/Weapons/PurpleCrystal.tscn
+++ b/components/Weapons/PurpleCrystal.tscn
@@ -24,7 +24,7 @@ texture = ExtResource("2_wgtcw")
[node name="beachball" parent="container/info/infos" index="1"]
count = 200
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" index="0"]
displayName = "紫水晶簇"
[node name="description" parent="container" index="2"]
diff --git a/components/Weapons/RedCrystal.tscn b/components/Weapons/RedCrystal.tscn
index 1e4599b..b5e9fb3 100644
--- a/components/Weapons/RedCrystal.tscn
+++ b/components/Weapons/RedCrystal.tscn
@@ -35,7 +35,7 @@ texture = ExtResource("2_3e8g7")
[node name="beachball" parent="container/info/infos" index="1"]
count = 400
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" index="0"]
displayName = "红水晶簇"
typeTopic = 1
diff --git a/components/Weapons/SevenSoul.tscn b/components/Weapons/SevenSoul.tscn
index dabf217..970c2f6 100644
--- a/components/Weapons/SevenSoul.tscn
+++ b/components/Weapons/SevenSoul.tscn
@@ -1,11 +1,11 @@
-[gd_scene load_steps=5 format=3 uid="uid://c5y4g70evwy46"]
+[gd_scene format=3 uid="uid://c5y4g70evwy46"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_0f84s"]
[ext_resource type="Script" uid="uid://bxcyflpnuajnn" path="res://scripts/Contents/Weapons/SevenSoul.gd" id="2_n7gtb"]
[ext_resource type="Texture2D" uid="uid://ckqfe3a61hw7" path="res://resources/weapons/bill.webp" id="3_nq3bo"]
[ext_resource type="AudioStream" uid="uid://dy4k5mni7d7wo" path="res://resources/sounds/weapon/Finale - Toby Fox.wav" id="4_tmgox"]
-[node name="SevenSoul" instance=ExtResource("1_0f84s")]
+[node name="SevenSoul" unique_id=33662415 instance=ExtResource("1_0f84s")]
script = ExtResource("2_n7gtb")
avatarTexture = ExtResource("3_nq3bo")
displayName = "bilioicik"
@@ -22,30 +22,24 @@ storeType = {
"heal": 1
}
descriptionTemplate = "召唤7条灵魂,每条造成$atk点伤害,命中敌人时将伤害的$dmg转换为能量并提供$heal点治疗。"
+sources = Array[String](["Undertale"])
needEnergy = 150.0
cooldown = 180000.0
-debugRebuild = true
-[node name="attack" parent="sounds" index="0"]
+[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
stream = ExtResource("4_tmgox")
volume_db = 20.0
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("3_nq3bo")
-[node name="energy" parent="container/info/infos/energyInfo" index="1"]
+[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
text = "150.0"
-[node name="beachball" parent="container/info/infos" index="1"]
-count = 500
-
-[node name="soul" parent="container/info/infos" index="2"]
-count = 1
-
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "bilioicik"
quality = 2
typeTopic = 3
-[node name="description" parent="container" index="2"]
-text = "[center]召唤7条灵魂,每条造成[color=cyan]2[/color]点伤害,命中敌人时将伤害的[color=cyan]10%[/color]转换为能量并提供[color=cyan]1[/color]点治疗。[/center]"
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]召唤7条灵魂,每条造成[color=cyan]2[/color]点伤害,命中敌人时将伤害的[color=cyan]10.0%[/color]转换为能量并提供[color=cyan]1[/color]点治疗。[/center]"
diff --git a/components/Weapons/Shield.tscn b/components/Weapons/Shield.tscn
index 762c4ad..3d036ba 100644
--- a/components/Weapons/Shield.tscn
+++ b/components/Weapons/Shield.tscn
@@ -27,7 +27,7 @@ text = "50.0"
[node name="beachball" parent="container/info/infos" index="1"]
count = 1000
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" index="0"]
displayName = "回响水晶"
quality = 3
typeTopic = 4
diff --git a/components/Weapons/Tree.tscn b/components/Weapons/Tree.tscn
new file mode 100644
index 0000000..6cdf73b
--- /dev/null
+++ b/components/Weapons/Tree.tscn
@@ -0,0 +1,83 @@
+[gd_scene format=3 uid="uid://cx7nogfnv7s8t"]
+
+[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_0lbwr"]
+[ext_resource type="Script" uid="uid://bqdyhwcd4jwmj" path="res://scripts/Contents/Weapons/Tree.gd" id="2_jsuc8"]
+[ext_resource type="Texture2D" uid="uid://74n7umby4d4w" path="res://resources/weapons/ParryCounter.png" id="3_nwamk"]
+
+[node name="Tree" unique_id=185228402 instance=ExtResource("1_0lbwr")]
+script = ExtResource("2_jsuc8")
+avatarTexture = ExtResource("3_nwamk")
+displayName = "扶桑元神"
+quality = 4
+typeTopic = 3
+costBeachball = 900
+emitType = 1
+store = {
+"atk": 10,
+"count": 1.0,
+"max": 3.0,
+"rate": 0.25
+}
+storeType = {
+"atk": 1,
+"count": 1,
+"max": 1,
+"rate": 2
+}
+descriptionTemplate = "进行[b]格挡[/b],化解飞来的子弹。
+每成功格挡一次,获得一点[b]气力[/b]。
+每拥有一点气力,增加[color=yellow]1[/color]点冲刺初速度,闪避穿过敌人时对其贴上一层[b]符咒[/b],符咒会自动引爆,召唤[b]乾坤剑[/b]穿透敌人。
+近战攻击造成乾坤剑的$rate点伤害。
+
+每次格挡有$rate的概率弹反,子弹弹反后造成乾坤剑的$rate伤害。
+每次格挡最多化解$count个子弹,
+体内最多储存$max点气力。
+每化解[color=yellow]1[/color]点伤害,
+乾坤剑造成的伤害+$atk点。
+格挡时机越精确,成功率越高。
+
+格挡成功后继续按住攻击可进行[b]蓄力[/b],
+其后松开格挡键进行[b]无量反击[/b],
+可弹反一切子弹,
+但需消耗[color=yellow]1[/color]层气力,
+可将弹反的伤害转换为能量。"
+sources = Array[String](["Nine Sols", "Terraria"])
+tease = "卸劲反伤"
+cooldown = 250.0
+debugRebuild = true
+
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
+texture = ExtResource("3_nwamk")
+
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
+count = 900
+
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
+displayName = "扶桑元神"
+quality = 4
+typeTopic = 3
+
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "Nine Sols × Terraria"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]进行[b]格挡[/b],化解飞来的子弹。
+每成功格挡一次,获得一点[b]气力[/b]。
+每拥有一点气力,增加[color=yellow]1[/color]点冲刺初速度,闪避穿过敌人时对其贴上一层[b]符咒[/b],符咒会自动引爆,召唤[b]乾坤剑[/b]穿透敌人。
+近战攻击造成乾坤剑的[color=cyan]25.0%[/color]点伤害。
+
+每次格挡有[color=cyan]25.0%[/color]的概率弹反,子弹弹反后造成乾坤剑的[color=cyan]25.0%[/color]伤害。
+每次格挡最多化解[color=cyan]1[/color]个子弹,
+体内最多储存[color=cyan]3[/color]点气力。
+每化解[color=yellow]1[/color]点伤害,
+乾坤剑造成的伤害+[color=cyan]10[/color]点。
+格挡时机越精确,成功率越高。
+
+格挡成功后继续按住攻击可进行[b]蓄力[/b],
+其后松开格挡键进行[b]无量反击[/b],
+可弹反一切子弹,
+但需消耗[color=yellow]1[/color]层气力,
+可将弹反的伤害转换为能量。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+text = "“卸劲反伤”"
diff --git a/components/Weapons/VectorStar.tscn b/components/Weapons/VectorStar.tscn
index 21d09a1..ee23a64 100644
--- a/components/Weapons/VectorStar.tscn
+++ b/components/Weapons/VectorStar.tscn
@@ -36,7 +36,7 @@ text = "5.0"
[node name="beachball" parent="container/info/infos" index="1"]
count = 400
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" index="0"]
displayName = "矢量核心"
quality = 2
diff --git a/components/Weapons/Volcano.tscn b/components/Weapons/Volcano.tscn
index ab17d03..62390da 100644
--- a/components/Weapons/Volcano.tscn
+++ b/components/Weapons/Volcano.tscn
@@ -1,10 +1,10 @@
-[gd_scene load_steps=4 format=3 uid="uid://u0djqwuuysp8"]
+[gd_scene format=3 uid="uid://u0djqwuuysp8"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_3uhfa"]
[ext_resource type="Texture2D" uid="uid://ctmxadaowx5ps" path="res://resources/weapons/Volcano.webp" id="2_hh01t"]
[ext_resource type="Script" uid="uid://cbihum34xs8ev" path="res://scripts/Contents/Weapons/Volcano.gd" id="2_ihngx"]
-[node name="Volcano" instance=ExtResource("1_3uhfa")]
+[node name="Volcano" unique_id=204992396 instance=ExtResource("1_3uhfa")]
clip_contents = true
script = ExtResource("2_ihngx")
avatarTexture = ExtResource("2_hh01t")
@@ -33,21 +33,19 @@ storeType = {
"rotate": 2
}
descriptionTemplate = "召唤1支[b]火山[/b],以$rotate的效率跟随鼠标指向,进行基础伤害为$atk的4段挥舞攻击。造成的伤害分别为$dmg1,$dmg2,$dmg3,$dmg4,第4段攻击的同时发射$count支[b]火山幻影[/b],造成$dmg5伤害。"
+sources = Array[String](["Terraria"])
cooldown = 1750.0
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_hh01t")
-[node name="beachball" parent="container/info/infos" index="1"]
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
count = 200
-[node name="soul" parent="container/info/infos" index="2"]
-count = 1
-
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "火山"
quality = 4
typeTopic = 2
-[node name="description" parent="container" index="2"]
-text = "[center]召唤1支[b]火山[/b],以[color=cyan]5%[/color]的效率跟随鼠标指向,进行基础伤害为[color=cyan]10[/color]的4段挥舞攻击。造成的伤害分别为[color=cyan]100%[/color],[color=cyan]50%[/color],[color=cyan]114%[/color],[color=cyan]123%[/color],第4段攻击的同时发射[color=cyan]1[/color]支[b]火山幻影[/b],造成[color=cyan]40%[/color]伤害。[/center]"
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]召唤1支[b]火山[/b],以[color=cyan]5.0%[/color]的效率跟随鼠标指向,进行基础伤害为[color=cyan]20[/color]的4段挥舞攻击。造成的伤害分别为[color=cyan]100.0%[/color],[color=cyan]50.0%[/color],[color=cyan]115.0%[/color],[color=cyan]123.0%[/color],第4段攻击的同时发射[color=cyan]1[/color]支[b]火山幻影[/b],造成[color=cyan]40.0%[/color]伤害。[/center]"
diff --git a/components/Weapons/WhiteSoul.tscn b/components/Weapons/WhiteSoul.tscn
index 6d4a7be..a170c12 100644
--- a/components/Weapons/WhiteSoul.tscn
+++ b/components/Weapons/WhiteSoul.tscn
@@ -1,17 +1,17 @@
-[gd_scene load_steps=4 format=3 uid="uid://bt4b7ks26fcgi"]
+[gd_scene format=3 uid="uid://bt4b7ks26fcgi"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_4hjdm"]
[ext_resource type="Texture2D" uid="uid://bgj2i5q2rst27" path="res://resources/weapons/Daedalus_Stormbow.png" id="2_kcegs"]
[ext_resource type="Script" uid="uid://cyvl1b2trt25e" path="res://scripts/Contents/Weapons/WhiteSoul.gd" id="2_ti114"]
-[node name="WhiteSoul" instance=ExtResource("1_4hjdm")]
+[node name="WhiteSoul" unique_id=274428909 instance=ExtResource("1_4hjdm")]
script = ExtResource("2_ti114")
avatarTexture = ExtResource("2_kcegs")
displayName = "代达罗斯风暴魂"
quality = 3
costBeachball = 300
store = {
-"atk": 10,
+"atk": 15,
"count": 1.0,
"radius": 100.0
}
@@ -20,20 +20,24 @@ storeType = {
"count": 1,
"radius": 0.0
}
-descriptionTemplate = "从天而降$count支目标位于鼠标位置半径$radius内的怪物灵魂,造成$atk点伤害。"
+descriptionTemplate = "从天而降$count支目标位于半径$radius内的[b]怪物灵魂[/b],造成$atk点伤害,穿透+[color=yellow]50%[/color]。"
+sources = Array[String](["Terraria", "Undertale"])
-[node name="avatar" parent="container/info" index="0"]
+[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
texture = ExtResource("2_kcegs")
-[node name="beachball" parent="container/info/infos" index="1"]
+[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
count = 300
-[node name="soul" parent="container/info/infos" index="2"]
-count = 1
-
-[node name="name" parent="container/info" index="2"]
+[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
displayName = "代达罗斯风暴魂"
quality = 3
-[node name="description" parent="container" index="2"]
-text = "[center]从天而降[color=cyan]1[/color]支目标位于鼠标位置半径[color=cyan]200.00[/color]内的怪物灵魂,造成[color=cyan]10[/color]点伤害。[/center]"
+[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
+text = "Terraria × Undertale"
+
+[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
+text = "[center]从天而降[color=cyan]1[/color]支目标位于半径[color=cyan]100.00[/color]内的[b]怪物灵魂[/b],造成[color=cyan]10[/color]点伤害,穿透+[color=yellow]50%[/color]。[/center]"
+
+[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
+visible = false
diff --git a/project.godot b/project.godot
index 0152548..d6cc26b 100644
--- a/project.godot
+++ b/project.godot
@@ -8,11 +8,15 @@
config_version=5
+[animation]
+
+compatibility/default_parent_skeleton_in_mesh_instance_3d=true
+
[application]
config/name="ChickenVSBear"
run/main_scene="uid://dmxi1ikn6avig"
-config/features=PackedStringArray("4.5", "GL Compatibility")
+config/features=PackedStringArray("4.6", "GL Compatibility")
config/icon="res://icon.svg"
[display]
diff --git a/resources/bullets/Thunder/thunder.png b/resources/bullets/Thunder/thunder.png
new file mode 100644
index 0000000..bc8d779
Binary files /dev/null and b/resources/bullets/Thunder/thunder.png differ
diff --git a/resources/bullets/Thunder/thunder.png.import b/resources/bullets/Thunder/thunder.png.import
new file mode 100644
index 0000000..40cf871
--- /dev/null
+++ b/resources/bullets/Thunder/thunder.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cub4ffyuqx24q"
+path="res://.godot/imported/thunder.png-91a5b8e381b0cdfb1da84c66cc9523a3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/Thunder/thunder.png"
+dest_files=["res://.godot/imported/thunder.png-91a5b8e381b0cdfb1da84c66cc9523a3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/Thunder/篮球.svg b/resources/bullets/Thunder/篮球.svg
new file mode 100644
index 0000000..3e72ca6
--- /dev/null
+++ b/resources/bullets/Thunder/篮球.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/resources/bullets/Thunder/篮球.svg.import b/resources/bullets/Thunder/篮球.svg.import
new file mode 100644
index 0000000..44e74b2
--- /dev/null
+++ b/resources/bullets/Thunder/篮球.svg.import
@@ -0,0 +1,43 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dn1rrlcltalbw"
+path="res://.godot/imported/篮球.svg-703ccac0ca8b985f7bb4cd4509f87b99.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/Thunder/篮球.svg"
+dest_files=["res://.godot/imported/篮球.svg-703ccac0ca8b985f7bb4cd4509f87b99.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/resources/bullets/bengbeng/0.png b/resources/bullets/bengbeng/0.png
new file mode 100644
index 0000000..3791684
Binary files /dev/null and b/resources/bullets/bengbeng/0.png differ
diff --git a/resources/bullets/bengbeng/0.png.import b/resources/bullets/bengbeng/0.png.import
new file mode 100644
index 0000000..cb22ad8
--- /dev/null
+++ b/resources/bullets/bengbeng/0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ccsq5rjmm2wbs"
+path="res://.godot/imported/0.png-b66f171439c135beb27992e7ab08a78d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/bengbeng/0.png"
+dest_files=["res://.godot/imported/0.png-b66f171439c135beb27992e7ab08a78d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/blockwall/blockwall.svg b/resources/bullets/blockwall/blockwall.svg
new file mode 100644
index 0000000..095244c
--- /dev/null
+++ b/resources/bullets/blockwall/blockwall.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/resources/bullets/blockwall/blockwall.svg.import b/resources/bullets/blockwall/blockwall.svg.import
new file mode 100644
index 0000000..b856972
--- /dev/null
+++ b/resources/bullets/blockwall/blockwall.svg.import
@@ -0,0 +1,43 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cqcakyrw4vbfn"
+path="res://.godot/imported/blockwall.svg-184482e9533ab61f4cc5d6105129e900.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/blockwall/blockwall.svg"
+dest_files=["res://.godot/imported/blockwall.svg-184482e9533ab61f4cc5d6105129e900.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/resources/bullets/cement/cement.png b/resources/bullets/cement/cement.png
new file mode 100644
index 0000000..0275558
Binary files /dev/null and b/resources/bullets/cement/cement.png differ
diff --git a/resources/bullets/cement/cement.png.import b/resources/bullets/cement/cement.png.import
new file mode 100644
index 0000000..d11f837
--- /dev/null
+++ b/resources/bullets/cement/cement.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://u2x7yggx8ga2"
+path="res://.godot/imported/cement.png-3a5a0f3d1fa790a2b7067a70edbbba87.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/cement/cement.png"
+dest_files=["res://.godot/imported/cement.png-3a5a0f3d1fa790a2b7067a70edbbba87.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/cursor/knife1.png b/resources/bullets/cursor/knife1.png
new file mode 100644
index 0000000..49a13a8
Binary files /dev/null and b/resources/bullets/cursor/knife1.png differ
diff --git a/resources/bullets/cursor/knife1.png.import b/resources/bullets/cursor/knife1.png.import
new file mode 100644
index 0000000..8c78568
--- /dev/null
+++ b/resources/bullets/cursor/knife1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://geax1diwtp48"
+path="res://.godot/imported/knife1.png-0b91adeafa88b2b0aff470d5658c7509.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/cursor/knife1.png"
+dest_files=["res://.godot/imported/knife1.png-0b91adeafa88b2b0aff470d5658c7509.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/cursor/knife2.png b/resources/bullets/cursor/knife2.png
new file mode 100644
index 0000000..9736fea
Binary files /dev/null and b/resources/bullets/cursor/knife2.png differ
diff --git a/resources/bullets/cursor/knife2.png.import b/resources/bullets/cursor/knife2.png.import
new file mode 100644
index 0000000..12058f9
--- /dev/null
+++ b/resources/bullets/cursor/knife2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bso5w74dhk5kf"
+path="res://.godot/imported/knife2.png-513a160123899eaf58316dbc03d64226.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/cursor/knife2.png"
+dest_files=["res://.godot/imported/knife2.png-513a160123899eaf58316dbc03d64226.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/cursor/knife3.png b/resources/bullets/cursor/knife3.png
new file mode 100644
index 0000000..845a4c5
Binary files /dev/null and b/resources/bullets/cursor/knife3.png differ
diff --git a/resources/bullets/cursor/knife3.png.import b/resources/bullets/cursor/knife3.png.import
new file mode 100644
index 0000000..78459e7
--- /dev/null
+++ b/resources/bullets/cursor/knife3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://emue85ioh3xf"
+path="res://.godot/imported/knife3.png-af6e7d878d4ea96fff7c3673bfc5c90f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/cursor/knife3.png"
+dest_files=["res://.godot/imported/knife3.png-af6e7d878d4ea96fff7c3673bfc5c90f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/cursor/knife4.png b/resources/bullets/cursor/knife4.png
new file mode 100644
index 0000000..2d45f17
Binary files /dev/null and b/resources/bullets/cursor/knife4.png differ
diff --git a/resources/bullets/cursor/knife4.png.import b/resources/bullets/cursor/knife4.png.import
new file mode 100644
index 0000000..37b14ba
--- /dev/null
+++ b/resources/bullets/cursor/knife4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c5k0u4kjly3dq"
+path="res://.godot/imported/knife4.png-fa9287dd57e900a79f97e8623f27afa4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/cursor/knife4.png"
+dest_files=["res://.godot/imported/knife4.png-fa9287dd57e900a79f97e8623f27afa4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash10.png b/resources/bullets/infinity-sword/Effect_DangerJumpSlash10.png
new file mode 100644
index 0000000..f17b245
Binary files /dev/null and b/resources/bullets/infinity-sword/Effect_DangerJumpSlash10.png differ
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash10.png.import b/resources/bullets/infinity-sword/Effect_DangerJumpSlash10.png.import
new file mode 100644
index 0000000..ec93337
--- /dev/null
+++ b/resources/bullets/infinity-sword/Effect_DangerJumpSlash10.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://fewvfwxtw5bu"
+path="res://.godot/imported/Effect_DangerJumpSlash10.png-911548dab77be07041690322539dc227.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/infinity-sword/Effect_DangerJumpSlash10.png"
+dest_files=["res://.godot/imported/Effect_DangerJumpSlash10.png-911548dab77be07041690322539dc227.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash5.png b/resources/bullets/infinity-sword/Effect_DangerJumpSlash5.png
new file mode 100644
index 0000000..ebe0d44
Binary files /dev/null and b/resources/bullets/infinity-sword/Effect_DangerJumpSlash5.png differ
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash5.png.import b/resources/bullets/infinity-sword/Effect_DangerJumpSlash5.png.import
new file mode 100644
index 0000000..10a043e
--- /dev/null
+++ b/resources/bullets/infinity-sword/Effect_DangerJumpSlash5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dbltogf6kgtic"
+path="res://.godot/imported/Effect_DangerJumpSlash5.png-a382b14b3401c9bbef01f15905595614.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/infinity-sword/Effect_DangerJumpSlash5.png"
+dest_files=["res://.godot/imported/Effect_DangerJumpSlash5.png-a382b14b3401c9bbef01f15905595614.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash6.png b/resources/bullets/infinity-sword/Effect_DangerJumpSlash6.png
new file mode 100644
index 0000000..1ac61dc
Binary files /dev/null and b/resources/bullets/infinity-sword/Effect_DangerJumpSlash6.png differ
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash6.png.import b/resources/bullets/infinity-sword/Effect_DangerJumpSlash6.png.import
new file mode 100644
index 0000000..c47aaef
--- /dev/null
+++ b/resources/bullets/infinity-sword/Effect_DangerJumpSlash6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bp687pj8b7wv0"
+path="res://.godot/imported/Effect_DangerJumpSlash6.png-7b571ef16ce3d1e54c667af0868d2b8f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/infinity-sword/Effect_DangerJumpSlash6.png"
+dest_files=["res://.godot/imported/Effect_DangerJumpSlash6.png-7b571ef16ce3d1e54c667af0868d2b8f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash7.png b/resources/bullets/infinity-sword/Effect_DangerJumpSlash7.png
new file mode 100644
index 0000000..85afe6b
Binary files /dev/null and b/resources/bullets/infinity-sword/Effect_DangerJumpSlash7.png differ
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash7.png.import b/resources/bullets/infinity-sword/Effect_DangerJumpSlash7.png.import
new file mode 100644
index 0000000..cff5efb
--- /dev/null
+++ b/resources/bullets/infinity-sword/Effect_DangerJumpSlash7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://btam58pjvht66"
+path="res://.godot/imported/Effect_DangerJumpSlash7.png-5fa0599af9535cd53a3fc227b6dc414a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/infinity-sword/Effect_DangerJumpSlash7.png"
+dest_files=["res://.godot/imported/Effect_DangerJumpSlash7.png-5fa0599af9535cd53a3fc227b6dc414a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash8.png b/resources/bullets/infinity-sword/Effect_DangerJumpSlash8.png
new file mode 100644
index 0000000..f847239
Binary files /dev/null and b/resources/bullets/infinity-sword/Effect_DangerJumpSlash8.png differ
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash8.png.import b/resources/bullets/infinity-sword/Effect_DangerJumpSlash8.png.import
new file mode 100644
index 0000000..509faae
--- /dev/null
+++ b/resources/bullets/infinity-sword/Effect_DangerJumpSlash8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cpaqjor8cb8gb"
+path="res://.godot/imported/Effect_DangerJumpSlash8.png-50638c0e1d24939a8bc03f0af77fc5aa.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/infinity-sword/Effect_DangerJumpSlash8.png"
+dest_files=["res://.godot/imported/Effect_DangerJumpSlash8.png-50638c0e1d24939a8bc03f0af77fc5aa.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash9.png b/resources/bullets/infinity-sword/Effect_DangerJumpSlash9.png
new file mode 100644
index 0000000..e4570c3
Binary files /dev/null and b/resources/bullets/infinity-sword/Effect_DangerJumpSlash9.png differ
diff --git a/resources/bullets/infinity-sword/Effect_DangerJumpSlash9.png.import b/resources/bullets/infinity-sword/Effect_DangerJumpSlash9.png.import
new file mode 100644
index 0000000..fb0bc88
--- /dev/null
+++ b/resources/bullets/infinity-sword/Effect_DangerJumpSlash9.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ckmkpkkxpui3b"
+path="res://.godot/imported/Effect_DangerJumpSlash9.png-dfa5d80c31f4444bbfff8b8fb3b8c7d4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/infinity-sword/Effect_DangerJumpSlash9.png"
+dest_files=["res://.godot/imported/Effect_DangerJumpSlash9.png-dfa5d80c31f4444bbfff8b8fb3b8c7d4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/kuaizi/kuaizi.png b/resources/bullets/kuaizi/kuaizi.png
new file mode 100644
index 0000000..c67b032
Binary files /dev/null and b/resources/bullets/kuaizi/kuaizi.png differ
diff --git a/resources/bullets/kuaizi/kuaizi.png.import b/resources/bullets/kuaizi/kuaizi.png.import
new file mode 100644
index 0000000..4ec57e7
--- /dev/null
+++ b/resources/bullets/kuaizi/kuaizi.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c51735ydp13rw"
+path="res://.godot/imported/kuaizi.png-d9472677548d7db35c9134aaf74b5057.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/kuaizi/kuaizi.png"
+dest_files=["res://.godot/imported/kuaizi.png-d9472677548d7db35c9134aaf74b5057.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/magic-missle/ninesols.png b/resources/bullets/magic-missle/ninesols.png
new file mode 100644
index 0000000..79feed0
Binary files /dev/null and b/resources/bullets/magic-missle/ninesols.png differ
diff --git a/resources/bullets/magic-missle/ninesols.png.import b/resources/bullets/magic-missle/ninesols.png.import
new file mode 100644
index 0000000..dbb8f5b
--- /dev/null
+++ b/resources/bullets/magic-missle/ninesols.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://drikpnrvqisb0"
+path="res://.godot/imported/ninesols.png-34d04e067050ed1e34a485eb9b48dc0c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/magic-missle/ninesols.png"
+dest_files=["res://.godot/imported/ninesols.png-34d04e067050ed1e34a485eb9b48dc0c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/magic-missle/tr.webp b/resources/bullets/magic-missle/tr.webp
new file mode 100644
index 0000000..3f7c6cb
Binary files /dev/null and b/resources/bullets/magic-missle/tr.webp differ
diff --git a/resources/bullets/magic-missle/tr.webp.import b/resources/bullets/magic-missle/tr.webp.import
new file mode 100644
index 0000000..9592cf3
--- /dev/null
+++ b/resources/bullets/magic-missle/tr.webp.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bl1i26ovfpxwc"
+path="res://.godot/imported/tr.webp-a3d51d1bca29b9e8c2b8647d9ac87754.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/magic-missle/tr.webp"
+dest_files=["res://.godot/imported/tr.webp-a3d51d1bca29b9e8c2b8647d9ac87754.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/needle/1.svg b/resources/bullets/needle/1.svg
new file mode 100644
index 0000000..adf7a2f
--- /dev/null
+++ b/resources/bullets/needle/1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/resources/bullets/needle/1.svg.import b/resources/bullets/needle/1.svg.import
new file mode 100644
index 0000000..0adc55a
--- /dev/null
+++ b/resources/bullets/needle/1.svg.import
@@ -0,0 +1,43 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d4h0i65n0dveo"
+path="res://.godot/imported/1.svg-7d7231bb3b71752d763553e1d0f756c7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/needle/1.svg"
+dest_files=["res://.godot/imported/1.svg-7d7231bb3b71752d763553e1d0f756c7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/resources/bullets/parrier/Effect_ParryCounterPrepare8.png b/resources/bullets/parrier/Effect_ParryCounterPrepare8.png
new file mode 100644
index 0000000..c354082
Binary files /dev/null and b/resources/bullets/parrier/Effect_ParryCounterPrepare8.png differ
diff --git a/resources/bullets/parrier/Effect_ParryCounterPrepare8.png.import b/resources/bullets/parrier/Effect_ParryCounterPrepare8.png.import
new file mode 100644
index 0000000..c51c7fe
--- /dev/null
+++ b/resources/bullets/parrier/Effect_ParryCounterPrepare8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dk6basvgsbdqn"
+path="res://.godot/imported/Effect_ParryCounterPrepare8.png-0bba423dc0300aecabcaa63e327d83fc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/parrier/Effect_ParryCounterPrepare8.png"
+dest_files=["res://.godot/imported/Effect_ParryCounterPrepare8.png-0bba423dc0300aecabcaa63e327d83fc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/parrier/造型2.png b/resources/bullets/parrier/造型2.png
new file mode 100644
index 0000000..f316b4e
Binary files /dev/null and b/resources/bullets/parrier/造型2.png differ
diff --git a/resources/bullets/parrier/造型2.png.import b/resources/bullets/parrier/造型2.png.import
new file mode 100644
index 0000000..db8014e
--- /dev/null
+++ b/resources/bullets/parrier/造型2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cajy8iya7achn"
+path="res://.godot/imported/造型2.png-d735ea95eb1068efcbec5b0b13b9000a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/parrier/造型2.png"
+dest_files=["res://.godot/imported/造型2.png-d735ea95eb1068efcbec5b0b13b9000a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/scblock/0.png b/resources/bullets/scblock/0.png
new file mode 100644
index 0000000..821e716
Binary files /dev/null and b/resources/bullets/scblock/0.png differ
diff --git a/resources/bullets/scblock/0.png.import b/resources/bullets/scblock/0.png.import
new file mode 100644
index 0000000..e47a996
--- /dev/null
+++ b/resources/bullets/scblock/0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b84vn2kmvsrhm"
+path="res://.godot/imported/0.png-0e2758547fbd988927b26f7776858305.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/scblock/0.png"
+dest_files=["res://.godot/imported/0.png-0e2758547fbd988927b26f7776858305.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/scblock/0.svg b/resources/bullets/scblock/0.svg
new file mode 100644
index 0000000..8e161d2
--- /dev/null
+++ b/resources/bullets/scblock/0.svg
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/resources/bullets/scblock/0.svg.import b/resources/bullets/scblock/0.svg.import
new file mode 100644
index 0000000..8e68055
--- /dev/null
+++ b/resources/bullets/scblock/0.svg.import
@@ -0,0 +1,43 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bke86n0vdy1xo"
+path="res://.godot/imported/0.svg-55289bb050c347fd38fb1578523744a0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/scblock/0.svg"
+dest_files=["res://.godot/imported/0.svg-55289bb050c347fd38fb1578523744a0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/resources/bullets/scblock/1.png b/resources/bullets/scblock/1.png
new file mode 100644
index 0000000..bca1418
Binary files /dev/null and b/resources/bullets/scblock/1.png differ
diff --git a/resources/bullets/scblock/1.png.import b/resources/bullets/scblock/1.png.import
new file mode 100644
index 0000000..b3c976d
--- /dev/null
+++ b/resources/bullets/scblock/1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dg1qtjclaxixv"
+path="res://.godot/imported/1.png-47420a35d7f589006acb83b6b12a0e4f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/scblock/1.png"
+dest_files=["res://.godot/imported/1.png-47420a35d7f589006acb83b6b12a0e4f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/scblock/2.png b/resources/bullets/scblock/2.png
new file mode 100644
index 0000000..647aa1c
Binary files /dev/null and b/resources/bullets/scblock/2.png differ
diff --git a/resources/bullets/scblock/2.png.import b/resources/bullets/scblock/2.png.import
new file mode 100644
index 0000000..943fc58
--- /dev/null
+++ b/resources/bullets/scblock/2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cg6qkt0w8vwop"
+path="res://.godot/imported/2.png-82ff01c2bec6b462f4f16d65a9a77662.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/scblock/2.png"
+dest_files=["res://.godot/imported/2.png-82ff01c2bec6b462f4f16d65a9a77662.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/scblock/3.png b/resources/bullets/scblock/3.png
new file mode 100644
index 0000000..f19e34d
Binary files /dev/null and b/resources/bullets/scblock/3.png differ
diff --git a/resources/bullets/scblock/3.png.import b/resources/bullets/scblock/3.png.import
new file mode 100644
index 0000000..cd53d78
--- /dev/null
+++ b/resources/bullets/scblock/3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dks58wl2i058c"
+path="res://.godot/imported/3.png-bd8e39d8cafd73605318bf80f37a0533.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/scblock/3.png"
+dest_files=["res://.godot/imported/3.png-bd8e39d8cafd73605318bf80f37a0533.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/scblock/4.png b/resources/bullets/scblock/4.png
new file mode 100644
index 0000000..42da3ee
Binary files /dev/null and b/resources/bullets/scblock/4.png differ
diff --git a/resources/bullets/scblock/4.png.import b/resources/bullets/scblock/4.png.import
new file mode 100644
index 0000000..b525b47
--- /dev/null
+++ b/resources/bullets/scblock/4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://yay1p1bewwog"
+path="res://.godot/imported/4.png-28d9f4982a69c94c6b2e179e6b57cdc2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/scblock/4.png"
+dest_files=["res://.godot/imported/4.png-28d9f4982a69c94c6b2e179e6b57cdc2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/scblock/5.png b/resources/bullets/scblock/5.png
new file mode 100644
index 0000000..802b4a9
Binary files /dev/null and b/resources/bullets/scblock/5.png differ
diff --git a/resources/bullets/scblock/5.png.import b/resources/bullets/scblock/5.png.import
new file mode 100644
index 0000000..2f50150
--- /dev/null
+++ b/resources/bullets/scblock/5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cncwp63meglgu"
+path="res://.godot/imported/5.png-f5e1e7dfbeb8fb6166a84e52f58674a0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/scblock/5.png"
+dest_files=["res://.godot/imported/5.png-f5e1e7dfbeb8fb6166a84e52f58674a0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/scblock/6.png b/resources/bullets/scblock/6.png
new file mode 100644
index 0000000..8fcc278
Binary files /dev/null and b/resources/bullets/scblock/6.png differ
diff --git a/resources/bullets/scblock/6.png.import b/resources/bullets/scblock/6.png.import
new file mode 100644
index 0000000..6423455
--- /dev/null
+++ b/resources/bullets/scblock/6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c507wa651bcni"
+path="res://.godot/imported/6.png-5a0a095098be9dbce266d28260f21896.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/scblock/6.png"
+dest_files=["res://.godot/imported/6.png-5a0a095098be9dbce266d28260f21896.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/scblock/7.png b/resources/bullets/scblock/7.png
new file mode 100644
index 0000000..b6de4c8
Binary files /dev/null and b/resources/bullets/scblock/7.png differ
diff --git a/resources/bullets/scblock/7.png.import b/resources/bullets/scblock/7.png.import
new file mode 100644
index 0000000..d776aea
--- /dev/null
+++ b/resources/bullets/scblock/7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://5cami0faunqk"
+path="res://.godot/imported/7.png-46a60abdfefbf93abc197a181b10dc9a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/scblock/7.png"
+dest_files=["res://.godot/imported/7.png-46a60abdfefbf93abc197a181b10dc9a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/scblock/8.png b/resources/bullets/scblock/8.png
new file mode 100644
index 0000000..289b1db
Binary files /dev/null and b/resources/bullets/scblock/8.png differ
diff --git a/resources/bullets/scblock/8.png.import b/resources/bullets/scblock/8.png.import
new file mode 100644
index 0000000..4b1d54b
--- /dev/null
+++ b/resources/bullets/scblock/8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b3dpapfpu5rx6"
+path="res://.godot/imported/8.png-45f778c5300b5c1937d834efce8558d8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/scblock/8.png"
+dest_files=["res://.godot/imported/8.png-45f778c5300b5c1937d834efce8558d8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/wood/daoli.png b/resources/bullets/wood/daoli.png
new file mode 100644
index 0000000..c5b2e8e
Binary files /dev/null and b/resources/bullets/wood/daoli.png differ
diff --git a/resources/bullets/wood/daoli.png.import b/resources/bullets/wood/daoli.png.import
new file mode 100644
index 0000000..c2c4c77
--- /dev/null
+++ b/resources/bullets/wood/daoli.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dp6memu16bc7b"
+path="res://.godot/imported/daoli.png-f771eac8a350ac407156a2c50b8e0c26.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/wood/daoli.png"
+dest_files=["res://.godot/imported/daoli.png-f771eac8a350ac407156a2c50b8e0c26.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/wood/mother.png b/resources/bullets/wood/mother.png
new file mode 100644
index 0000000..62114a9
Binary files /dev/null and b/resources/bullets/wood/mother.png differ
diff --git a/resources/bullets/wood/mother.png.import b/resources/bullets/wood/mother.png.import
new file mode 100644
index 0000000..16a62de
--- /dev/null
+++ b/resources/bullets/wood/mother.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://chn486hoa86bs"
+path="res://.godot/imported/mother.png-0c772c2962e357099e72b539c446a5e7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/wood/mother.png"
+dest_files=["res://.godot/imported/mother.png-0c772c2962e357099e72b539c446a5e7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/wood/wood.png b/resources/bullets/wood/wood.png
new file mode 100644
index 0000000..c2655b3
Binary files /dev/null and b/resources/bullets/wood/wood.png differ
diff --git a/resources/bullets/wood/wood.png.import b/resources/bullets/wood/wood.png.import
new file mode 100644
index 0000000..f05daff
--- /dev/null
+++ b/resources/bullets/wood/wood.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bols4gt28y3a"
+path="res://.godot/imported/wood.png-1a1cc6e969e42c76808ea00501677f1c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/wood/wood.png"
+dest_files=["res://.godot/imported/wood.png-1a1cc6e969e42c76808ea00501677f1c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/wuwei/Wuwei.png b/resources/bullets/wuwei/Wuwei.png
new file mode 100644
index 0000000..de0d1c6
Binary files /dev/null and b/resources/bullets/wuwei/Wuwei.png differ
diff --git a/resources/bullets/wuwei/Wuwei.png.import b/resources/bullets/wuwei/Wuwei.png.import
new file mode 100644
index 0000000..9e85e47
--- /dev/null
+++ b/resources/bullets/wuwei/Wuwei.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d1ismqrlhbv7f"
+path="res://.godot/imported/Wuwei.png-965a127cd19f69ae95d16a7b43452b00.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/wuwei/Wuwei.png"
+dest_files=["res://.godot/imported/Wuwei.png-965a127cd19f69ae95d16a7b43452b00.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yangyi/0.jpg b/resources/bullets/yangyi/0.jpg
new file mode 100644
index 0000000..94fb081
Binary files /dev/null and b/resources/bullets/yangyi/0.jpg differ
diff --git a/resources/bullets/yangyi/0.jpg.import b/resources/bullets/yangyi/0.jpg.import
new file mode 100644
index 0000000..4662af3
--- /dev/null
+++ b/resources/bullets/yangyi/0.jpg.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://7hofo0ihj7sh"
+path="res://.godot/imported/0.jpg-2e4177d745afe56f775937a532d5bff3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yangyi/0.jpg"
+dest_files=["res://.godot/imported/0.jpg-2e4177d745afe56f775937a532d5bff3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yangyi/cat.jpg b/resources/bullets/yangyi/cat.jpg
new file mode 100644
index 0000000..cb10926
Binary files /dev/null and b/resources/bullets/yangyi/cat.jpg differ
diff --git a/resources/bullets/yangyi/cat.jpg.import b/resources/bullets/yangyi/cat.jpg.import
new file mode 100644
index 0000000..39a7dd6
--- /dev/null
+++ b/resources/bullets/yangyi/cat.jpg.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://5o6446vmerf5"
+path="res://.godot/imported/cat.jpg-3f490a751daf4c8cbc1b1268d56af751.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yangyi/cat.jpg"
+dest_files=["res://.godot/imported/cat.jpg-3f490a751daf4c8cbc1b1268d56af751.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yangyi/js.jpg b/resources/bullets/yangyi/js.jpg
new file mode 100644
index 0000000..24106ae
Binary files /dev/null and b/resources/bullets/yangyi/js.jpg differ
diff --git a/resources/bullets/yangyi/js.jpg.import b/resources/bullets/yangyi/js.jpg.import
new file mode 100644
index 0000000..9653bea
--- /dev/null
+++ b/resources/bullets/yangyi/js.jpg.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://0fou4dytgw01"
+path="res://.godot/imported/js.jpg-d45bb0c55e41aeaf4193138583dfda4e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yangyi/js.jpg"
+dest_files=["res://.godot/imported/js.jpg-d45bb0c55e41aeaf4193138583dfda4e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yangyi/ppn.jpg b/resources/bullets/yangyi/ppn.jpg
new file mode 100644
index 0000000..0038ca5
Binary files /dev/null and b/resources/bullets/yangyi/ppn.jpg differ
diff --git a/resources/bullets/yangyi/ppn.jpg.import b/resources/bullets/yangyi/ppn.jpg.import
new file mode 100644
index 0000000..26da027
--- /dev/null
+++ b/resources/bullets/yangyi/ppn.jpg.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cts825oc08b7k"
+path="res://.godot/imported/ppn.jpg-66ae0430ba9f1f851e293775a2ed4964.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yangyi/ppn.jpg"
+dest_files=["res://.godot/imported/ppn.jpg-66ae0430ba9f1f851e293775a2ed4964.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yangyi/world.jpg b/resources/bullets/yangyi/world.jpg
new file mode 100644
index 0000000..f2e832a
Binary files /dev/null and b/resources/bullets/yangyi/world.jpg differ
diff --git a/resources/bullets/yangyi/world.jpg.import b/resources/bullets/yangyi/world.jpg.import
new file mode 100644
index 0000000..a71ec7f
--- /dev/null
+++ b/resources/bullets/yangyi/world.jpg.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cb57urlgnw2n4"
+path="res://.godot/imported/world.jpg-870e37c1a831a60de74cadbfb157b1a0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yangyi/world.jpg"
+dest_files=["res://.godot/imported/world.jpg-870e37c1a831a60de74cadbfb157b1a0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/ABC.tres b/resources/bullets/yee-abc/ABC.tres
new file mode 100644
index 0000000..788916a
--- /dev/null
+++ b/resources/bullets/yee-abc/ABC.tres
@@ -0,0 +1,126 @@
+[gd_resource type="SpriteFrames" load_steps=27 format=3 uid="uid://1aqeas2xsely"]
+
+[ext_resource type="Texture2D" uid="uid://4x5llpjk6roc" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA0.png" id="1_5v8m3"]
+[ext_resource type="Texture2D" uid="uid://nuf41by5qav3" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA1.png" id="2_aahly"]
+[ext_resource type="Texture2D" uid="uid://cn3jub5bbs10s" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA2.png" id="3_pxy2e"]
+[ext_resource type="Texture2D" uid="uid://cuxujj0yo03cw" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA3.png" id="4_kpcm3"]
+[ext_resource type="Texture2D" uid="uid://bnk7e6vdm73t" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA4.png" id="5_pwwk1"]
+[ext_resource type="Texture2D" uid="uid://bd2asjjnvg2s1" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA5.png" id="6_ujvou"]
+[ext_resource type="Texture2D" uid="uid://qfx7cdpxl6gt" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA6.png" id="7_vs3b2"]
+[ext_resource type="Texture2D" uid="uid://bqryprhlv6pmn" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA7.png" id="8_tijhg"]
+[ext_resource type="Texture2D" uid="uid://de56iexewtrdm" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA8.png" id="9_xs32h"]
+[ext_resource type="Texture2D" uid="uid://o60wwp4drppp" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB0.png" id="10_7y5pw"]
+[ext_resource type="Texture2D" uid="uid://qbb4ud2rsln3" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB1.png" id="11_4qkme"]
+[ext_resource type="Texture2D" uid="uid://crih43iycbtou" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB2.png" id="12_i2wfq"]
+[ext_resource type="Texture2D" uid="uid://ct7sannnul3gl" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB3.png" id="13_jgmum"]
+[ext_resource type="Texture2D" uid="uid://born7lu5kb8pe" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB4.png" id="14_sckih"]
+[ext_resource type="Texture2D" uid="uid://5mdt1suspbt0" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB5.png" id="15_c1wj5"]
+[ext_resource type="Texture2D" uid="uid://ccxlkuqs7npxd" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB6.png" id="16_tfmmn"]
+[ext_resource type="Texture2D" uid="uid://c4h3hcuwn8r1s" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD0.png" id="17_ev017"]
+[ext_resource type="Texture2D" uid="uid://be0usho12qukg" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD1.png" id="18_euca5"]
+[ext_resource type="Texture2D" uid="uid://djyt1kdt20sp2" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD2.png" id="19_wr6gf"]
+[ext_resource type="Texture2D" uid="uid://c01txsc771eap" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD3.png" id="20_flp34"]
+[ext_resource type="Texture2D" uid="uid://cwrab3lofcupp" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD4.png" id="21_rteqo"]
+[ext_resource type="Texture2D" uid="uid://dkesgofajhss5" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD5.png" id="22_b8ubb"]
+[ext_resource type="Texture2D" uid="uid://db64v0axt2mr" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD6.png" id="23_i88ws"]
+[ext_resource type="Texture2D" uid="uid://dwyb2uhh7brtu" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD7.png" id="24_rpiqh"]
+[ext_resource type="Texture2D" uid="uid://gy8qvmt34y2j" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD8.png" id="25_xqak3"]
+[ext_resource type="Texture2D" uid="uid://c1b8y0s1avdvo" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD9.png" id="26_l73ch"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_5v8m3")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_aahly")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_pxy2e")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_kpcm3")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_pwwk1")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_ujvou")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_vs3b2")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_tijhg")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_xs32h")
+}, {
+"duration": 1.0,
+"texture": null
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_7y5pw")
+}, {
+"duration": 1.0,
+"texture": ExtResource("11_4qkme")
+}, {
+"duration": 1.0,
+"texture": ExtResource("12_i2wfq")
+}, {
+"duration": 1.0,
+"texture": ExtResource("13_jgmum")
+}, {
+"duration": 1.0,
+"texture": ExtResource("14_sckih")
+}, {
+"duration": 1.0,
+"texture": ExtResource("15_c1wj5")
+}, {
+"duration": 1.0,
+"texture": ExtResource("16_tfmmn")
+}, {
+"duration": 1.0,
+"texture": ExtResource("17_ev017")
+}, {
+"duration": 1.0,
+"texture": ExtResource("18_euca5")
+}, {
+"duration": 1.0,
+"texture": ExtResource("19_wr6gf")
+}, {
+"duration": 1.0,
+"texture": ExtResource("20_flp34")
+}, {
+"duration": 1.0,
+"texture": ExtResource("21_rteqo")
+}, {
+"duration": 1.0,
+"texture": ExtResource("22_b8ubb")
+}, {
+"duration": 1.0,
+"texture": ExtResource("23_i88ws")
+}, {
+"duration": 1.0,
+"texture": ExtResource("24_rpiqh")
+}, {
+"duration": 1.0,
+"texture": ExtResource("25_xqak3")
+}, {
+"duration": 1.0,
+"texture": ExtResource("26_l73ch")
+}, {
+"duration": 1.0,
+"texture": null
+}, {
+"duration": 1.0,
+"texture": null
+}, {
+"duration": 1.0,
+"texture": null
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA0.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA0.png
new file mode 100644
index 0000000..b5ad525
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA0.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA0.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA0.png.import
new file mode 100644
index 0000000..a6bfbf2
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://4x5llpjk6roc"
+path="res://.godot/imported/Effect_HoHoYee_AttackA0.png-d90c0bea4cee02bb8a4df9ec326da7d3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA0.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA0.png-d90c0bea4cee02bb8a4df9ec326da7d3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA1.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA1.png
new file mode 100644
index 0000000..7a33d81
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA1.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA1.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA1.png.import
new file mode 100644
index 0000000..069bcbb
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://nuf41by5qav3"
+path="res://.godot/imported/Effect_HoHoYee_AttackA1.png-ecf5efcdb3013e66bf504ab2603ceecf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA1.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA1.png-ecf5efcdb3013e66bf504ab2603ceecf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA10.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA10.png
new file mode 100644
index 0000000..ea18d62
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA10.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA10.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA10.png.import
new file mode 100644
index 0000000..a51cb8a
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA10.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b1g0efyid71pf"
+path="res://.godot/imported/Effect_HoHoYee_AttackA10.png-9f522877abd1aafd44897991140eae61.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA10.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA10.png-9f522877abd1aafd44897991140eae61.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA11.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA11.png
new file mode 100644
index 0000000..81fc2d5
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA11.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA11.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA11.png.import
new file mode 100644
index 0000000..33e7b2e
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA11.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cmuvkarcnahrw"
+path="res://.godot/imported/Effect_HoHoYee_AttackA11.png-046425ae961d3b16586e0575e742c86e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA11.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA11.png-046425ae961d3b16586e0575e742c86e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA12.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA12.png
new file mode 100644
index 0000000..228440e
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA12.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA12.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA12.png.import
new file mode 100644
index 0000000..20c45b0
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA12.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bai233387hjn"
+path="res://.godot/imported/Effect_HoHoYee_AttackA12.png-90671ef62195d193c0ef32a0009d7e8f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA12.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA12.png-90671ef62195d193c0ef32a0009d7e8f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA13.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA13.png
new file mode 100644
index 0000000..3dbfdb8
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA13.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA13.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA13.png.import
new file mode 100644
index 0000000..84c2768
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA13.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bp22o8nlkttsh"
+path="res://.godot/imported/Effect_HoHoYee_AttackA13.png-49c8c4f2f9b91148a8119614358ca277.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA13.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA13.png-49c8c4f2f9b91148a8119614358ca277.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA2.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA2.png
new file mode 100644
index 0000000..72cdb29
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA2.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA2.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA2.png.import
new file mode 100644
index 0000000..a0f419e
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cn3jub5bbs10s"
+path="res://.godot/imported/Effect_HoHoYee_AttackA2.png-6d66e6f7e879775f920f68def24b81c3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA2.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA2.png-6d66e6f7e879775f920f68def24b81c3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA3.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA3.png
new file mode 100644
index 0000000..4997bb6
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA3.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA3.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA3.png.import
new file mode 100644
index 0000000..7512014
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cuxujj0yo03cw"
+path="res://.godot/imported/Effect_HoHoYee_AttackA3.png-a1cb7b99194ed4ac9bbdb32c306271af.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA3.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA3.png-a1cb7b99194ed4ac9bbdb32c306271af.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA4.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA4.png
new file mode 100644
index 0000000..46473ca
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA4.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA4.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA4.png.import
new file mode 100644
index 0000000..008f89c
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bnk7e6vdm73t"
+path="res://.godot/imported/Effect_HoHoYee_AttackA4.png-6ada0300bb17484fc0564b99a4013d41.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA4.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA4.png-6ada0300bb17484fc0564b99a4013d41.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA5.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA5.png
new file mode 100644
index 0000000..b637836
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA5.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA5.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA5.png.import
new file mode 100644
index 0000000..4c76d74
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bd2asjjnvg2s1"
+path="res://.godot/imported/Effect_HoHoYee_AttackA5.png-ec7ef7ebb976cf923054d7a5b785ea6f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA5.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA5.png-ec7ef7ebb976cf923054d7a5b785ea6f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA6.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA6.png
new file mode 100644
index 0000000..293b599
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA6.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA6.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA6.png.import
new file mode 100644
index 0000000..1467c90
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://qfx7cdpxl6gt"
+path="res://.godot/imported/Effect_HoHoYee_AttackA6.png-340c89b0cf836a000f3fbf97ad1016d0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA6.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA6.png-340c89b0cf836a000f3fbf97ad1016d0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA7.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA7.png
new file mode 100644
index 0000000..1e2377c
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA7.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA7.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA7.png.import
new file mode 100644
index 0000000..d670732
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bqryprhlv6pmn"
+path="res://.godot/imported/Effect_HoHoYee_AttackA7.png-40623915b6a2a67f0a15c23466b85484.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA7.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA7.png-40623915b6a2a67f0a15c23466b85484.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA8.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA8.png
new file mode 100644
index 0000000..451197f
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA8.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackA8.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA8.png.import
new file mode 100644
index 0000000..e2aeef1
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackA8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://de56iexewtrdm"
+path="res://.godot/imported/Effect_HoHoYee_AttackA8.png-714652d17620e05e6c921238e9956cff.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA8.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA8.png-714652d17620e05e6c921238e9956cff.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB0.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB0.png
new file mode 100644
index 0000000..a57bfda
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB0.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB0.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB0.png.import
new file mode 100644
index 0000000..04b5303
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://o60wwp4drppp"
+path="res://.godot/imported/Effect_HoHoYee_AttackB0.png-370365b33901c861954bc9df6532de60.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB0.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackB0.png-370365b33901c861954bc9df6532de60.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB1.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB1.png
new file mode 100644
index 0000000..8e53052
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB1.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB1.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB1.png.import
new file mode 100644
index 0000000..3c671e6
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://qbb4ud2rsln3"
+path="res://.godot/imported/Effect_HoHoYee_AttackB1.png-691dccd497b1048399ac9b4a6c2deed7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB1.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackB1.png-691dccd497b1048399ac9b4a6c2deed7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB2.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB2.png
new file mode 100644
index 0000000..5045c8a
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB2.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB2.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB2.png.import
new file mode 100644
index 0000000..9d1e5a6
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://crih43iycbtou"
+path="res://.godot/imported/Effect_HoHoYee_AttackB2.png-aef7a1529c3668744fac5e13bf8bc094.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB2.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackB2.png-aef7a1529c3668744fac5e13bf8bc094.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB3.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB3.png
new file mode 100644
index 0000000..ebc5fa6
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB3.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB3.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB3.png.import
new file mode 100644
index 0000000..c48ae99
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ct7sannnul3gl"
+path="res://.godot/imported/Effect_HoHoYee_AttackB3.png-d2a39186dfbbff936493342ac20070e5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB3.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackB3.png-d2a39186dfbbff936493342ac20070e5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB4.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB4.png
new file mode 100644
index 0000000..db593dc
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB4.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB4.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB4.png.import
new file mode 100644
index 0000000..79e9e29
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://born7lu5kb8pe"
+path="res://.godot/imported/Effect_HoHoYee_AttackB4.png-84ab99e44b9ea6b1ecc13e39077d7a1d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB4.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackB4.png-84ab99e44b9ea6b1ecc13e39077d7a1d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB5.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB5.png
new file mode 100644
index 0000000..d18dad7
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB5.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB5.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB5.png.import
new file mode 100644
index 0000000..a88c428
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://5mdt1suspbt0"
+path="res://.godot/imported/Effect_HoHoYee_AttackB5.png-d16a0180aa875e2f14237acd6f57ea74.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB5.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackB5.png-d16a0180aa875e2f14237acd6f57ea74.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB6.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB6.png
new file mode 100644
index 0000000..e967038
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB6.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB6.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB6.png.import
new file mode 100644
index 0000000..1cc145b
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ccxlkuqs7npxd"
+path="res://.godot/imported/Effect_HoHoYee_AttackB6.png-e980c7138609a022add12627a2578a59.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB6.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackB6.png-e980c7138609a022add12627a2578a59.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB7.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB7.png
new file mode 100644
index 0000000..4037dd7
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB7.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackB7.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB7.png.import
new file mode 100644
index 0000000..d522e4f
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackB7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cypcmjrnyucl1"
+path="res://.godot/imported/Effect_HoHoYee_AttackB7.png-dfdcb83d06da0ae9fa6f5abfa18e5ac0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackB7.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackB7.png-dfdcb83d06da0ae9fa6f5abfa18e5ac0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD0.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD0.png
new file mode 100644
index 0000000..b8e9df0
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD0.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD0.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD0.png.import
new file mode 100644
index 0000000..18da474
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c4h3hcuwn8r1s"
+path="res://.godot/imported/Effect_HoHoYee_AttackD0.png-c2c3270d17872a014e0b532dd7bf1d4e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD0.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackD0.png-c2c3270d17872a014e0b532dd7bf1d4e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD1.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD1.png
new file mode 100644
index 0000000..e92baaa
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD1.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD1.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD1.png.import
new file mode 100644
index 0000000..5fa9ce1
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://be0usho12qukg"
+path="res://.godot/imported/Effect_HoHoYee_AttackD1.png-b92c629104fa40b33ff4c0a67af2475b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD1.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackD1.png-b92c629104fa40b33ff4c0a67af2475b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD2.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD2.png
new file mode 100644
index 0000000..e69b9d5
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD2.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD2.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD2.png.import
new file mode 100644
index 0000000..9b174a4
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://djyt1kdt20sp2"
+path="res://.godot/imported/Effect_HoHoYee_AttackD2.png-bddb2f8e111216088865f0e9340d75f2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD2.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackD2.png-bddb2f8e111216088865f0e9340d75f2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD3.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD3.png
new file mode 100644
index 0000000..457bd72
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD3.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD3.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD3.png.import
new file mode 100644
index 0000000..222c147
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c01txsc771eap"
+path="res://.godot/imported/Effect_HoHoYee_AttackD3.png-bcbb9fc11f12f01364828a83099f16b4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD3.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackD3.png-bcbb9fc11f12f01364828a83099f16b4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD4.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD4.png
new file mode 100644
index 0000000..4c45966
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD4.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD4.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD4.png.import
new file mode 100644
index 0000000..be339a7
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cwrab3lofcupp"
+path="res://.godot/imported/Effect_HoHoYee_AttackD4.png-60245cc6cf353b88a75b2bad769d8f3d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD4.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackD4.png-60245cc6cf353b88a75b2bad769d8f3d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD5.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD5.png
new file mode 100644
index 0000000..980e3cf
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD5.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD5.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD5.png.import
new file mode 100644
index 0000000..1a3b62f
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dkesgofajhss5"
+path="res://.godot/imported/Effect_HoHoYee_AttackD5.png-6ed7de6be624c28aee27644672c8027d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD5.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackD5.png-6ed7de6be624c28aee27644672c8027d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD6.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD6.png
new file mode 100644
index 0000000..bbd6251
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD6.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD6.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD6.png.import
new file mode 100644
index 0000000..803cc71
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://db64v0axt2mr"
+path="res://.godot/imported/Effect_HoHoYee_AttackD6.png-ec604330244051ec01237f525b325b26.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD6.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackD6.png-ec604330244051ec01237f525b325b26.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD7.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD7.png
new file mode 100644
index 0000000..126a441
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD7.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD7.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD7.png.import
new file mode 100644
index 0000000..dcca86b
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dwyb2uhh7brtu"
+path="res://.godot/imported/Effect_HoHoYee_AttackD7.png-d9280766f893ea6438d116895c7ec8ea.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD7.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackD7.png-d9280766f893ea6438d116895c7ec8ea.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD8.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD8.png
new file mode 100644
index 0000000..5484cbd
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD8.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD8.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD8.png.import
new file mode 100644
index 0000000..3baffae
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://gy8qvmt34y2j"
+path="res://.godot/imported/Effect_HoHoYee_AttackD8.png-cc91e29ab7104f923c2f9a4725718afe.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD8.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackD8.png-cc91e29ab7104f923c2f9a4725718afe.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD9.png b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD9.png
new file mode 100644
index 0000000..b587f30
Binary files /dev/null and b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD9.png differ
diff --git a/resources/bullets/yee-abc/Effect_HoHoYee_AttackD9.png.import b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD9.png.import
new file mode 100644
index 0000000..5de2d1a
--- /dev/null
+++ b/resources/bullets/yee-abc/Effect_HoHoYee_AttackD9.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c1b8y0s1avdvo"
+path="res://.godot/imported/Effect_HoHoYee_AttackD9.png-5a1f17024b554553efc7b7bb8963978f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackD9.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackD9.png-5a1f17024b554553efc7b7bb8963978f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/cement/cement.png b/resources/cement/cement.png
new file mode 100644
index 0000000..5d1f6f9
Binary files /dev/null and b/resources/cement/cement.png differ
diff --git a/resources/cement/cement.png.import b/resources/cement/cement.png.import
new file mode 100644
index 0000000..f8254df
--- /dev/null
+++ b/resources/cement/cement.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://o8u3rsqwjbd3"
+path="res://.godot/imported/cement.png-88ad34b43f7447d8b7b8e28d0837ee96.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/cement/cement.png"
+dest_files=["res://.godot/imported/cement.png-88ad34b43f7447d8b7b8e28d0837ee96.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/cybercat/cybercat.png b/resources/characters/cybercat/cybercat.png
new file mode 100644
index 0000000..69f1b0a
Binary files /dev/null and b/resources/characters/cybercat/cybercat.png differ
diff --git a/resources/characters/cybercat/cybercat.png.import b/resources/characters/cybercat/cybercat.png.import
new file mode 100644
index 0000000..d9d531e
--- /dev/null
+++ b/resources/characters/cybercat/cybercat.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d1ajua4r4tn2k"
+path="res://.godot/imported/cybercat.png-a8c58b6cb7cc9bafed292f38f09a7573.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/cybercat/cybercat.png"
+dest_files=["res://.godot/imported/cybercat.png-a8c58b6cb7cc9bafed292f38f09a7573.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/deepsea/0.jpg b/resources/characters/deepsea/0.jpg
new file mode 100644
index 0000000..37ad910
Binary files /dev/null and b/resources/characters/deepsea/0.jpg differ
diff --git a/resources/characters/deepsea/0.jpg.import b/resources/characters/deepsea/0.jpg.import
new file mode 100644
index 0000000..2492ee6
--- /dev/null
+++ b/resources/characters/deepsea/0.jpg.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dygicujocejc2"
+path="res://.godot/imported/0.jpg-7c7dc74878e64763e28309b13a935bf6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/deepsea/0.jpg"
+dest_files=["res://.godot/imported/0.jpg-7c7dc74878e64763e28309b13a935bf6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/deepsea/0.png b/resources/characters/deepsea/0.png
new file mode 100644
index 0000000..52e3306
Binary files /dev/null and b/resources/characters/deepsea/0.png differ
diff --git a/resources/characters/deepsea/0.png.import b/resources/characters/deepsea/0.png.import
new file mode 100644
index 0000000..6d0361c
--- /dev/null
+++ b/resources/characters/deepsea/0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c6kpcsu1yohak"
+path="res://.godot/imported/0.png-43b7da3cd039b9a7a781863c7db75e30.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/deepsea/0.png"
+dest_files=["res://.godot/imported/0.png-43b7da3cd039b9a7a781863c7db75e30.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/kernyr/kernyr.jpg b/resources/characters/kernyr/kernyr.jpg
new file mode 100644
index 0000000..4ed1a8a
Binary files /dev/null and b/resources/characters/kernyr/kernyr.jpg differ
diff --git a/resources/characters/kernyr/kernyr.jpg.import b/resources/characters/kernyr/kernyr.jpg.import
new file mode 100644
index 0000000..6005d4f
--- /dev/null
+++ b/resources/characters/kernyr/kernyr.jpg.import
@@ -0,0 +1,41 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b1aq0k7tf1p1"
+path.s3tc="res://.godot/imported/kernyr.jpg-d82cf548a25a07dbd282dd92971a45c3.s3tc.ctex"
+metadata={
+"imported_formats": ["s3tc_bptc"],
+"vram_texture": true
+}
+
+[deps]
+
+source_file="res://resources/characters/kernyr/kernyr.jpg"
+dest_files=["res://.godot/imported/kernyr.jpg-d82cf548a25a07dbd282dd92971a45c3.s3tc.ctex"]
+
+[params]
+
+compress/mode=2
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=true
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=0
diff --git a/resources/characters/kernyr/koshino.jpg b/resources/characters/kernyr/koshino.jpg
new file mode 100644
index 0000000..b7107c6
Binary files /dev/null and b/resources/characters/kernyr/koshino.jpg differ
diff --git a/resources/characters/kernyr/koshino.jpg.import b/resources/characters/kernyr/koshino.jpg.import
new file mode 100644
index 0000000..baa63b2
--- /dev/null
+++ b/resources/characters/kernyr/koshino.jpg.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d34vkibm8a5e7"
+path="res://.godot/imported/koshino.jpg-1b7923f21558cad00dbaccc4d6ecc7c4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/kernyr/koshino.jpg"
+dest_files=["res://.godot/imported/koshino.jpg-1b7923f21558cad00dbaccc4d6ecc7c4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/kernyr/koshino.png b/resources/characters/kernyr/koshino.png
new file mode 100644
index 0000000..0697126
Binary files /dev/null and b/resources/characters/kernyr/koshino.png differ
diff --git a/resources/characters/kernyr/koshino.png.import b/resources/characters/kernyr/koshino.png.import
new file mode 100644
index 0000000..5bc9b82
--- /dev/null
+++ b/resources/characters/kernyr/koshino.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bsffob0n8pgy6"
+path="res://.godot/imported/koshino.png-57f692a7619a10c1de8d2cb269b2d491.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/kernyr/koshino.png"
+dest_files=["res://.godot/imported/koshino.png-57f692a7619a10c1de8d2cb269b2d491.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC0.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC0.png
new file mode 100644
index 0000000..a6ea50c
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC0.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC0.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC0.png.import
new file mode 100644
index 0000000..4300296
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b2yt10s6lu8mk"
+path="res://.godot/imported/HoHoYee_AttackABC0.png-bdfe56f8d55ad6940f5cd01943cea54c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC0.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC0.png-bdfe56f8d55ad6940f5cd01943cea54c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC1.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC1.png
new file mode 100644
index 0000000..012f480
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC1.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC1.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC1.png.import
new file mode 100644
index 0000000..23ec5b4
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://celhe8x4pwgmu"
+path="res://.godot/imported/HoHoYee_AttackABC1.png-5d3b474052d191dc4fba3718d807ffcb.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC1.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC1.png-5d3b474052d191dc4fba3718d807ffcb.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC10.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC10.png
new file mode 100644
index 0000000..4db8339
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC10.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC10.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC10.png.import
new file mode 100644
index 0000000..54be1cf
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC10.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://caktlinhbcqk7"
+path="res://.godot/imported/HoHoYee_AttackABC10.png-5993b373248d34f256f1293126eb0fd8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC10.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC10.png-5993b373248d34f256f1293126eb0fd8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC11.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC11.png
new file mode 100644
index 0000000..94c1c9f
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC11.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC11.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC11.png.import
new file mode 100644
index 0000000..442b90a
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC11.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dsighknq23uqy"
+path="res://.godot/imported/HoHoYee_AttackABC11.png-191cdbdf56384e12de38a59135fae105.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC11.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC11.png-191cdbdf56384e12de38a59135fae105.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC12.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC12.png
new file mode 100644
index 0000000..db0524f
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC12.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC12.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC12.png.import
new file mode 100644
index 0000000..fc0d5d2
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC12.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ds2aa4alwjsdx"
+path="res://.godot/imported/HoHoYee_AttackABC12.png-3790b7ed2eab4fb3dbcb2b6f9c3ad46f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC12.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC12.png-3790b7ed2eab4fb3dbcb2b6f9c3ad46f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC13.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC13.png
new file mode 100644
index 0000000..bd6efb5
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC13.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC13.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC13.png.import
new file mode 100644
index 0000000..73f2f79
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC13.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://hcv0hhmlmqvn"
+path="res://.godot/imported/HoHoYee_AttackABC13.png-82260b6e0bd94e535311cfd218345fd9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC13.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC13.png-82260b6e0bd94e535311cfd218345fd9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC14.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC14.png
new file mode 100644
index 0000000..f6141bd
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC14.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC14.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC14.png.import
new file mode 100644
index 0000000..00422c6
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC14.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b2ao0eqwfpngx"
+path="res://.godot/imported/HoHoYee_AttackABC14.png-a1b281c67e99b205d0d3c735e70653b3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC14.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC14.png-a1b281c67e99b205d0d3c735e70653b3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC15.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC15.png
new file mode 100644
index 0000000..511308b
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC15.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC15.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC15.png.import
new file mode 100644
index 0000000..417d06a
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC15.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://tnbgx2kmiie6"
+path="res://.godot/imported/HoHoYee_AttackABC15.png-866906a880ab095a4ed99df3f7bec6a8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC15.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC15.png-866906a880ab095a4ed99df3f7bec6a8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC16.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC16.png
new file mode 100644
index 0000000..7d6d44d
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC16.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC16.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC16.png.import
new file mode 100644
index 0000000..bf8a408
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC16.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bfgev40dlxr13"
+path="res://.godot/imported/HoHoYee_AttackABC16.png-92ebd9037bee6afe832be26b3b551971.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC16.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC16.png-92ebd9037bee6afe832be26b3b551971.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC17.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC17.png
new file mode 100644
index 0000000..962a387
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC17.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC17.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC17.png.import
new file mode 100644
index 0000000..45e3e01
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC17.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c0tv3lvrumobn"
+path="res://.godot/imported/HoHoYee_AttackABC17.png-b3a456ddcd7dbd3f24274fb86b32ceb5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC17.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC17.png-b3a456ddcd7dbd3f24274fb86b32ceb5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC18.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC18.png
new file mode 100644
index 0000000..a89e39b
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC18.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC18.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC18.png.import
new file mode 100644
index 0000000..1b2efab
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC18.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cud64dsju53b3"
+path="res://.godot/imported/HoHoYee_AttackABC18.png-4436622d636885e1e02337176310ef85.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC18.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC18.png-4436622d636885e1e02337176310ef85.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC2.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC2.png
new file mode 100644
index 0000000..a422b0c
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC2.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC2.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC2.png.import
new file mode 100644
index 0000000..bdecf77
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d1r7p44oqum0t"
+path="res://.godot/imported/HoHoYee_AttackABC2.png-9a3ccc0d19ac62738ad1110230601163.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC2.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC2.png-9a3ccc0d19ac62738ad1110230601163.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC3.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC3.png
new file mode 100644
index 0000000..efbf0e2
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC3.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC3.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC3.png.import
new file mode 100644
index 0000000..3299ed4
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bk1usifqftlr"
+path="res://.godot/imported/HoHoYee_AttackABC3.png-2b915ba2aea7e0aa116787155388a977.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC3.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC3.png-2b915ba2aea7e0aa116787155388a977.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC4.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC4.png
new file mode 100644
index 0000000..47a9213
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC4.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC4.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC4.png.import
new file mode 100644
index 0000000..3f9406d
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://wtqhgh328pdc"
+path="res://.godot/imported/HoHoYee_AttackABC4.png-3e04010cb05657b1268e129347291d0c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC4.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC4.png-3e04010cb05657b1268e129347291d0c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC5.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC5.png
new file mode 100644
index 0000000..a1dbeb1
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC5.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC5.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC5.png.import
new file mode 100644
index 0000000..0df37ee
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://qpwruwuydamq"
+path="res://.godot/imported/HoHoYee_AttackABC5.png-ae62ccfa11f9e194f9558edff8dc5769.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC5.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC5.png-ae62ccfa11f9e194f9558edff8dc5769.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC6.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC6.png
new file mode 100644
index 0000000..93a9929
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC6.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC6.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC6.png.import
new file mode 100644
index 0000000..7f4afb6
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dh7udy47gndep"
+path="res://.godot/imported/HoHoYee_AttackABC6.png-b28b4254fde5d53796f13188c6dcd918.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC6.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC6.png-b28b4254fde5d53796f13188c6dcd918.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC7.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC7.png
new file mode 100644
index 0000000..03bfab0
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC7.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC7.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC7.png.import
new file mode 100644
index 0000000..e659831
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c5uafr2d6h8j3"
+path="res://.godot/imported/HoHoYee_AttackABC7.png-51ed0a52bc979fc5bc6129e0024fea48.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC7.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC7.png-51ed0a52bc979fc5bc6129e0024fea48.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC8.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC8.png
new file mode 100644
index 0000000..3a87a84
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC8.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC8.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC8.png.import
new file mode 100644
index 0000000..5593fed
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bhhnwolk6n6qf"
+path="res://.godot/imported/HoHoYee_AttackABC8.png-2ed11f7e98ddfbb0e4f5a0b9c9b60fee.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC8.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC8.png-2ed11f7e98ddfbb0e4f5a0b9c9b60fee.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC9.png b/resources/characters/yee/attackABC/HoHoYee_AttackABC9.png
new file mode 100644
index 0000000..478eedd
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackABC9.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackABC9.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackABC9.png.import
new file mode 100644
index 0000000..aaecdaa
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackABC9.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://baghrfcgukn6v"
+path="res://.godot/imported/HoHoYee_AttackABC9.png-f632417d9b661f890c45168036b02d10.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackABC9.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackABC9.png-f632417d9b661f890c45168036b02d10.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD0.png b/resources/characters/yee/attackABC/HoHoYee_AttackD0.png
new file mode 100644
index 0000000..b441604
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD0.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD0.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD0.png.import
new file mode 100644
index 0000000..c4756a2
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://m3fdcdnsat57"
+path="res://.godot/imported/HoHoYee_AttackD0.png-94ed554a912cd15be7b1d044eca9f798.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD0.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD0.png-94ed554a912cd15be7b1d044eca9f798.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD1.png b/resources/characters/yee/attackABC/HoHoYee_AttackD1.png
new file mode 100644
index 0000000..9cd047f
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD1.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD1.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD1.png.import
new file mode 100644
index 0000000..5516831
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bfc0omreybx1c"
+path="res://.godot/imported/HoHoYee_AttackD1.png-9a4dfec6da011d64438f1ae398e4d4a4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD1.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD1.png-9a4dfec6da011d64438f1ae398e4d4a4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD10.png b/resources/characters/yee/attackABC/HoHoYee_AttackD10.png
new file mode 100644
index 0000000..dd94425
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD10.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD10.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD10.png.import
new file mode 100644
index 0000000..4097520
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD10.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bpulg4eym1w2x"
+path="res://.godot/imported/HoHoYee_AttackD10.png-4ac76da59dd63c467e1b34779406f9b6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD10.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD10.png-4ac76da59dd63c467e1b34779406f9b6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD2.png b/resources/characters/yee/attackABC/HoHoYee_AttackD2.png
new file mode 100644
index 0000000..e8d362b
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD2.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD2.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD2.png.import
new file mode 100644
index 0000000..342b154
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://br3870qtg81uf"
+path="res://.godot/imported/HoHoYee_AttackD2.png-d53652161e8b9b665a59729337dd69b5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD2.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD2.png-d53652161e8b9b665a59729337dd69b5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD3.png b/resources/characters/yee/attackABC/HoHoYee_AttackD3.png
new file mode 100644
index 0000000..57d97e0
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD3.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD3.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD3.png.import
new file mode 100644
index 0000000..cc9705f
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c82j6usyxd7q7"
+path="res://.godot/imported/HoHoYee_AttackD3.png-d98cbdd4cc861f20e4908f30aaa5e024.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD3.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD3.png-d98cbdd4cc861f20e4908f30aaa5e024.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD4.png b/resources/characters/yee/attackABC/HoHoYee_AttackD4.png
new file mode 100644
index 0000000..b17ccaf
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD4.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD4.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD4.png.import
new file mode 100644
index 0000000..4fa7a6a
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dhpvx7u6yhmdj"
+path="res://.godot/imported/HoHoYee_AttackD4.png-0bd4b690ccadd617bc24fb840d9fff17.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD4.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD4.png-0bd4b690ccadd617bc24fb840d9fff17.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD5.png b/resources/characters/yee/attackABC/HoHoYee_AttackD5.png
new file mode 100644
index 0000000..fd27e05
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD5.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD5.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD5.png.import
new file mode 100644
index 0000000..73a66c2
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://jnwqfmlsaki4"
+path="res://.godot/imported/HoHoYee_AttackD5.png-9c3e561b68978773711082682e1b7a64.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD5.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD5.png-9c3e561b68978773711082682e1b7a64.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD6.png b/resources/characters/yee/attackABC/HoHoYee_AttackD6.png
new file mode 100644
index 0000000..94f4d7e
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD6.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD6.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD6.png.import
new file mode 100644
index 0000000..9afe900
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bipy0cvlx3n8w"
+path="res://.godot/imported/HoHoYee_AttackD6.png-29c0bf9bf39b141cd071df66318ef558.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD6.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD6.png-29c0bf9bf39b141cd071df66318ef558.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD7.png b/resources/characters/yee/attackABC/HoHoYee_AttackD7.png
new file mode 100644
index 0000000..0f5ed45
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD7.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD7.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD7.png.import
new file mode 100644
index 0000000..df8ef27
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://h54lnhfnoefw"
+path="res://.godot/imported/HoHoYee_AttackD7.png-3aa1fad48e17319a8ac84e7fb1ed8f41.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD7.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD7.png-3aa1fad48e17319a8ac84e7fb1ed8f41.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD8.png b/resources/characters/yee/attackABC/HoHoYee_AttackD8.png
new file mode 100644
index 0000000..069ec9d
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD8.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD8.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD8.png.import
new file mode 100644
index 0000000..52c1251
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://h2po1x6sy00e"
+path="res://.godot/imported/HoHoYee_AttackD8.png-44e8cdb4ea5216c7b57b01cc25dea4f1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD8.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD8.png-44e8cdb4ea5216c7b57b01cc25dea4f1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD9.png b/resources/characters/yee/attackABC/HoHoYee_AttackD9.png
new file mode 100644
index 0000000..f623fc2
Binary files /dev/null and b/resources/characters/yee/attackABC/HoHoYee_AttackD9.png differ
diff --git a/resources/characters/yee/attackABC/HoHoYee_AttackD9.png.import b/resources/characters/yee/attackABC/HoHoYee_AttackD9.png.import
new file mode 100644
index 0000000..8b91765
--- /dev/null
+++ b/resources/characters/yee/attackABC/HoHoYee_AttackD9.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c0u72ehelipor"
+path="res://.godot/imported/HoHoYee_AttackD9.png-e5823090fb9a07fd06491f0179571214.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/attackABC/HoHoYee_AttackD9.png"
+dest_files=["res://.godot/imported/HoHoYee_AttackD9.png-e5823090fb9a07fd06491f0179571214.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/run/HoHoYee_run0.png b/resources/characters/yee/run/HoHoYee_run0.png
new file mode 100644
index 0000000..3c22537
Binary files /dev/null and b/resources/characters/yee/run/HoHoYee_run0.png differ
diff --git a/resources/characters/yee/run/HoHoYee_run0.png.import b/resources/characters/yee/run/HoHoYee_run0.png.import
new file mode 100644
index 0000000..d094a58
--- /dev/null
+++ b/resources/characters/yee/run/HoHoYee_run0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cmes3p1kayty"
+path="res://.godot/imported/HoHoYee_run0.png-80df2b2f511210baee049de5c6ec3896.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/run/HoHoYee_run0.png"
+dest_files=["res://.godot/imported/HoHoYee_run0.png-80df2b2f511210baee049de5c6ec3896.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/run/HoHoYee_run1.png b/resources/characters/yee/run/HoHoYee_run1.png
new file mode 100644
index 0000000..0318f21
Binary files /dev/null and b/resources/characters/yee/run/HoHoYee_run1.png differ
diff --git a/resources/characters/yee/run/HoHoYee_run1.png.import b/resources/characters/yee/run/HoHoYee_run1.png.import
new file mode 100644
index 0000000..de7e4a2
--- /dev/null
+++ b/resources/characters/yee/run/HoHoYee_run1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://be7twv23i8eei"
+path="res://.godot/imported/HoHoYee_run1.png-c1294d5eea7af14f26b41bb16315f234.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/run/HoHoYee_run1.png"
+dest_files=["res://.godot/imported/HoHoYee_run1.png-c1294d5eea7af14f26b41bb16315f234.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/run/HoHoYee_run2.png b/resources/characters/yee/run/HoHoYee_run2.png
new file mode 100644
index 0000000..2964904
Binary files /dev/null and b/resources/characters/yee/run/HoHoYee_run2.png differ
diff --git a/resources/characters/yee/run/HoHoYee_run2.png.import b/resources/characters/yee/run/HoHoYee_run2.png.import
new file mode 100644
index 0000000..3dd7b0a
--- /dev/null
+++ b/resources/characters/yee/run/HoHoYee_run2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cjthk56687ab"
+path="res://.godot/imported/HoHoYee_run2.png-7da6d7af10fa4cc129be0831a61a29df.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/run/HoHoYee_run2.png"
+dest_files=["res://.godot/imported/HoHoYee_run2.png-7da6d7af10fa4cc129be0831a61a29df.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/run/HoHoYee_run3.png b/resources/characters/yee/run/HoHoYee_run3.png
new file mode 100644
index 0000000..62aea64
Binary files /dev/null and b/resources/characters/yee/run/HoHoYee_run3.png differ
diff --git a/resources/characters/yee/run/HoHoYee_run3.png.import b/resources/characters/yee/run/HoHoYee_run3.png.import
new file mode 100644
index 0000000..24194e8
--- /dev/null
+++ b/resources/characters/yee/run/HoHoYee_run3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cv7unhc5kiupa"
+path="res://.godot/imported/HoHoYee_run3.png-2a86f137daae01123af795b68d2fff46.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/run/HoHoYee_run3.png"
+dest_files=["res://.godot/imported/HoHoYee_run3.png-2a86f137daae01123af795b68d2fff46.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/run/HoHoYee_run4.png b/resources/characters/yee/run/HoHoYee_run4.png
new file mode 100644
index 0000000..eb96ca1
Binary files /dev/null and b/resources/characters/yee/run/HoHoYee_run4.png differ
diff --git a/resources/characters/yee/run/HoHoYee_run4.png.import b/resources/characters/yee/run/HoHoYee_run4.png.import
new file mode 100644
index 0000000..e1c2b33
--- /dev/null
+++ b/resources/characters/yee/run/HoHoYee_run4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://m54haw7vs051"
+path="res://.godot/imported/HoHoYee_run4.png-06302e3eacf7365e312727a64c6a10e8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/run/HoHoYee_run4.png"
+dest_files=["res://.godot/imported/HoHoYee_run4.png-06302e3eacf7365e312727a64c6a10e8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/run/HoHoYee_run5.png b/resources/characters/yee/run/HoHoYee_run5.png
new file mode 100644
index 0000000..d17c912
Binary files /dev/null and b/resources/characters/yee/run/HoHoYee_run5.png differ
diff --git a/resources/characters/yee/run/HoHoYee_run5.png.import b/resources/characters/yee/run/HoHoYee_run5.png.import
new file mode 100644
index 0000000..fc80b72
--- /dev/null
+++ b/resources/characters/yee/run/HoHoYee_run5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://kvknnsbhcp1q"
+path="res://.godot/imported/HoHoYee_run5.png-43a2697c6f1caf4e4f91a4f678b06ba5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/run/HoHoYee_run5.png"
+dest_files=["res://.godot/imported/HoHoYee_run5.png-43a2697c6f1caf4e4f91a4f678b06ba5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run00.png b/resources/characters/yee/sprint/HoHoYee_Run00.png
new file mode 100644
index 0000000..b3875da
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run00.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run00.png.import b/resources/characters/yee/sprint/HoHoYee_Run00.png.import
new file mode 100644
index 0000000..7b92cd2
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run00.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ckqcfw4i35py"
+path="res://.godot/imported/HoHoYee_Run00.png-bdd2d83132c5518a9c9ce23862b0c40d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run00.png"
+dest_files=["res://.godot/imported/HoHoYee_Run00.png-bdd2d83132c5518a9c9ce23862b0c40d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run01.png b/resources/characters/yee/sprint/HoHoYee_Run01.png
new file mode 100644
index 0000000..b745cbd
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run01.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run01.png.import b/resources/characters/yee/sprint/HoHoYee_Run01.png.import
new file mode 100644
index 0000000..6ce6f13
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run01.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://6qsnb3ml3xbc"
+path="res://.godot/imported/HoHoYee_Run01.png-8c1cf0a8b7489a6c46227d00c9cd50a2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run01.png"
+dest_files=["res://.godot/imported/HoHoYee_Run01.png-8c1cf0a8b7489a6c46227d00c9cd50a2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run02.png b/resources/characters/yee/sprint/HoHoYee_Run02.png
new file mode 100644
index 0000000..f39185f
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run02.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run02.png.import b/resources/characters/yee/sprint/HoHoYee_Run02.png.import
new file mode 100644
index 0000000..7d4735b
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run02.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ci4u1c6gpfqta"
+path="res://.godot/imported/HoHoYee_Run02.png-1e12f0c1fced18ce2bc811b81ca80083.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run02.png"
+dest_files=["res://.godot/imported/HoHoYee_Run02.png-1e12f0c1fced18ce2bc811b81ca80083.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run03.png b/resources/characters/yee/sprint/HoHoYee_Run03.png
new file mode 100644
index 0000000..3613058
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run03.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run03.png.import b/resources/characters/yee/sprint/HoHoYee_Run03.png.import
new file mode 100644
index 0000000..f89dd14
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run03.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://jt50a681vqtu"
+path="res://.godot/imported/HoHoYee_Run03.png-ff77fd7367ddd046220e418896cbaab8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run03.png"
+dest_files=["res://.godot/imported/HoHoYee_Run03.png-ff77fd7367ddd046220e418896cbaab8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run04.png b/resources/characters/yee/sprint/HoHoYee_Run04.png
new file mode 100644
index 0000000..f55db74
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run04.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run04.png.import b/resources/characters/yee/sprint/HoHoYee_Run04.png.import
new file mode 100644
index 0000000..034057d
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run04.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://djccs5jfrwkdh"
+path="res://.godot/imported/HoHoYee_Run04.png-6e9fd323d827700c4a9fd0df77f3bd69.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run04.png"
+dest_files=["res://.godot/imported/HoHoYee_Run04.png-6e9fd323d827700c4a9fd0df77f3bd69.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run05.png b/resources/characters/yee/sprint/HoHoYee_Run05.png
new file mode 100644
index 0000000..4dfab95
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run05.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run05.png.import b/resources/characters/yee/sprint/HoHoYee_Run05.png.import
new file mode 100644
index 0000000..71c5dca
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run05.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://q5vdsai2k51a"
+path="res://.godot/imported/HoHoYee_Run05.png-c7b915b64c582622027a676108738d7f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run05.png"
+dest_files=["res://.godot/imported/HoHoYee_Run05.png-c7b915b64c582622027a676108738d7f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run06.png b/resources/characters/yee/sprint/HoHoYee_Run06.png
new file mode 100644
index 0000000..f3b66c9
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run06.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run06.png.import b/resources/characters/yee/sprint/HoHoYee_Run06.png.import
new file mode 100644
index 0000000..092a789
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run06.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://nqxp81gr4tfx"
+path="res://.godot/imported/HoHoYee_Run06.png-0e8b7ea3283ee4d83567972791c30e61.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run06.png"
+dest_files=["res://.godot/imported/HoHoYee_Run06.png-0e8b7ea3283ee4d83567972791c30e61.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run07.png b/resources/characters/yee/sprint/HoHoYee_Run07.png
new file mode 100644
index 0000000..87d65dd
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run07.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run07.png.import b/resources/characters/yee/sprint/HoHoYee_Run07.png.import
new file mode 100644
index 0000000..699c6da
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run07.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cvj5n4t7d0grj"
+path="res://.godot/imported/HoHoYee_Run07.png-b4e4c3b1b52a7b57f89e42256504cb04.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run07.png"
+dest_files=["res://.godot/imported/HoHoYee_Run07.png-b4e4c3b1b52a7b57f89e42256504cb04.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run08.png b/resources/characters/yee/sprint/HoHoYee_Run08.png
new file mode 100644
index 0000000..6efbad4
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run08.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run08.png.import b/resources/characters/yee/sprint/HoHoYee_Run08.png.import
new file mode 100644
index 0000000..87399f0
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run08.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cl5iy6k0dkgjm"
+path="res://.godot/imported/HoHoYee_Run08.png-c9cc56b74244969173024cdef075219b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run08.png"
+dest_files=["res://.godot/imported/HoHoYee_Run08.png-c9cc56b74244969173024cdef075219b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run09.png b/resources/characters/yee/sprint/HoHoYee_Run09.png
new file mode 100644
index 0000000..b48e01f
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run09.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run09.png.import b/resources/characters/yee/sprint/HoHoYee_Run09.png.import
new file mode 100644
index 0000000..f13e0a1
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run09.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bwikave85hns7"
+path="res://.godot/imported/HoHoYee_Run09.png-869ad1318858988660dddff7ab3af4c9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run09.png"
+dest_files=["res://.godot/imported/HoHoYee_Run09.png-869ad1318858988660dddff7ab3af4c9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run10.png b/resources/characters/yee/sprint/HoHoYee_Run10.png
new file mode 100644
index 0000000..864b9c3
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run10.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run10.png.import b/resources/characters/yee/sprint/HoHoYee_Run10.png.import
new file mode 100644
index 0000000..aa836f3
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run10.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ihyywi5y6f30"
+path="res://.godot/imported/HoHoYee_Run10.png-c3cb413330f28b569d7530a7e6418177.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run10.png"
+dest_files=["res://.godot/imported/HoHoYee_Run10.png-c3cb413330f28b569d7530a7e6418177.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/characters/yee/sprint/HoHoYee_Run11.png b/resources/characters/yee/sprint/HoHoYee_Run11.png
new file mode 100644
index 0000000..f6d9352
Binary files /dev/null and b/resources/characters/yee/sprint/HoHoYee_Run11.png differ
diff --git a/resources/characters/yee/sprint/HoHoYee_Run11.png.import b/resources/characters/yee/sprint/HoHoYee_Run11.png.import
new file mode 100644
index 0000000..cb8a79f
--- /dev/null
+++ b/resources/characters/yee/sprint/HoHoYee_Run11.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bpckafsbo2hle"
+path="res://.godot/imported/HoHoYee_Run11.png-cd8d6006f42990ef6bee3693db6c1db3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/characters/yee/sprint/HoHoYee_Run11.png"
+dest_files=["res://.godot/imported/HoHoYee_Run11.png-cd8d6006f42990ef6bee3693db6c1db3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1200.png b/resources/effects/danger/Effect_Boss_YiGung_Upper1200.png
new file mode 100644
index 0000000..38657a4
Binary files /dev/null and b/resources/effects/danger/Effect_Boss_YiGung_Upper1200.png differ
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1200.png.import b/resources/effects/danger/Effect_Boss_YiGung_Upper1200.png.import
new file mode 100644
index 0000000..2f5e5df
--- /dev/null
+++ b/resources/effects/danger/Effect_Boss_YiGung_Upper1200.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dexx7re4jsqex"
+path="res://.godot/imported/Effect_Boss_YiGung_Upper1200.png-6d275bc764d57bf3c5e24d2ce48b899f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/danger/Effect_Boss_YiGung_Upper1200.png"
+dest_files=["res://.godot/imported/Effect_Boss_YiGung_Upper1200.png-6d275bc764d57bf3c5e24d2ce48b899f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1201.png b/resources/effects/danger/Effect_Boss_YiGung_Upper1201.png
new file mode 100644
index 0000000..3192351
Binary files /dev/null and b/resources/effects/danger/Effect_Boss_YiGung_Upper1201.png differ
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1201.png.import b/resources/effects/danger/Effect_Boss_YiGung_Upper1201.png.import
new file mode 100644
index 0000000..8d03ece
--- /dev/null
+++ b/resources/effects/danger/Effect_Boss_YiGung_Upper1201.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dd67ngjhh10ku"
+path="res://.godot/imported/Effect_Boss_YiGung_Upper1201.png-1be3e204662f7aa140cbd6af6c6ec5bf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/danger/Effect_Boss_YiGung_Upper1201.png"
+dest_files=["res://.godot/imported/Effect_Boss_YiGung_Upper1201.png-1be3e204662f7aa140cbd6af6c6ec5bf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1202.png b/resources/effects/danger/Effect_Boss_YiGung_Upper1202.png
new file mode 100644
index 0000000..dae25d2
Binary files /dev/null and b/resources/effects/danger/Effect_Boss_YiGung_Upper1202.png differ
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1202.png.import b/resources/effects/danger/Effect_Boss_YiGung_Upper1202.png.import
new file mode 100644
index 0000000..4a8c1f2
--- /dev/null
+++ b/resources/effects/danger/Effect_Boss_YiGung_Upper1202.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://chkv28f044rwb"
+path="res://.godot/imported/Effect_Boss_YiGung_Upper1202.png-206114566d2d02193cc25cc814eb2b19.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/danger/Effect_Boss_YiGung_Upper1202.png"
+dest_files=["res://.godot/imported/Effect_Boss_YiGung_Upper1202.png-206114566d2d02193cc25cc814eb2b19.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1203.png b/resources/effects/danger/Effect_Boss_YiGung_Upper1203.png
new file mode 100644
index 0000000..9922aa1
Binary files /dev/null and b/resources/effects/danger/Effect_Boss_YiGung_Upper1203.png differ
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1203.png.import b/resources/effects/danger/Effect_Boss_YiGung_Upper1203.png.import
new file mode 100644
index 0000000..5538fa7
--- /dev/null
+++ b/resources/effects/danger/Effect_Boss_YiGung_Upper1203.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://e3v0u34fvig4"
+path="res://.godot/imported/Effect_Boss_YiGung_Upper1203.png-deddbfcad8017013da76441662014f7a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/danger/Effect_Boss_YiGung_Upper1203.png"
+dest_files=["res://.godot/imported/Effect_Boss_YiGung_Upper1203.png-deddbfcad8017013da76441662014f7a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1204.png b/resources/effects/danger/Effect_Boss_YiGung_Upper1204.png
new file mode 100644
index 0000000..85d76cb
Binary files /dev/null and b/resources/effects/danger/Effect_Boss_YiGung_Upper1204.png differ
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1204.png.import b/resources/effects/danger/Effect_Boss_YiGung_Upper1204.png.import
new file mode 100644
index 0000000..0251ec7
--- /dev/null
+++ b/resources/effects/danger/Effect_Boss_YiGung_Upper1204.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c4k1m2mtwejwk"
+path="res://.godot/imported/Effect_Boss_YiGung_Upper1204.png-d83cd741cf07e43edab4e7bd12920065.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/danger/Effect_Boss_YiGung_Upper1204.png"
+dest_files=["res://.godot/imported/Effect_Boss_YiGung_Upper1204.png-d83cd741cf07e43edab4e7bd12920065.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1205.png b/resources/effects/danger/Effect_Boss_YiGung_Upper1205.png
new file mode 100644
index 0000000..73ca052
Binary files /dev/null and b/resources/effects/danger/Effect_Boss_YiGung_Upper1205.png differ
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1205.png.import b/resources/effects/danger/Effect_Boss_YiGung_Upper1205.png.import
new file mode 100644
index 0000000..3de68a1
--- /dev/null
+++ b/resources/effects/danger/Effect_Boss_YiGung_Upper1205.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c5gkd05tb32u8"
+path="res://.godot/imported/Effect_Boss_YiGung_Upper1205.png-5b75f37cb61198c1f3fd22e632582d58.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/danger/Effect_Boss_YiGung_Upper1205.png"
+dest_files=["res://.godot/imported/Effect_Boss_YiGung_Upper1205.png-5b75f37cb61198c1f3fd22e632582d58.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1206.png b/resources/effects/danger/Effect_Boss_YiGung_Upper1206.png
new file mode 100644
index 0000000..82fcd1f
Binary files /dev/null and b/resources/effects/danger/Effect_Boss_YiGung_Upper1206.png differ
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper1206.png.import b/resources/effects/danger/Effect_Boss_YiGung_Upper1206.png.import
new file mode 100644
index 0000000..23c2e69
--- /dev/null
+++ b/resources/effects/danger/Effect_Boss_YiGung_Upper1206.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://mo0gjwh5amev"
+path="res://.godot/imported/Effect_Boss_YiGung_Upper1206.png-e7ed0f4b14119872f615be1c67b7d200.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/danger/Effect_Boss_YiGung_Upper1206.png"
+dest_files=["res://.godot/imported/Effect_Boss_YiGung_Upper1206.png-e7ed0f4b14119872f615be1c67b7d200.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper413.png b/resources/effects/danger/Effect_Boss_YiGung_Upper413.png
new file mode 100644
index 0000000..7320d01
Binary files /dev/null and b/resources/effects/danger/Effect_Boss_YiGung_Upper413.png differ
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper413.png.import b/resources/effects/danger/Effect_Boss_YiGung_Upper413.png.import
new file mode 100644
index 0000000..66f1c2d
--- /dev/null
+++ b/resources/effects/danger/Effect_Boss_YiGung_Upper413.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bwc20hfm5jv8o"
+path="res://.godot/imported/Effect_Boss_YiGung_Upper413.png-f6e26e361e2883d771d87e92d52ec6e7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/danger/Effect_Boss_YiGung_Upper413.png"
+dest_files=["res://.godot/imported/Effect_Boss_YiGung_Upper413.png-f6e26e361e2883d771d87e92d52ec6e7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper414.png b/resources/effects/danger/Effect_Boss_YiGung_Upper414.png
new file mode 100644
index 0000000..c88a723
Binary files /dev/null and b/resources/effects/danger/Effect_Boss_YiGung_Upper414.png differ
diff --git a/resources/effects/danger/Effect_Boss_YiGung_Upper414.png.import b/resources/effects/danger/Effect_Boss_YiGung_Upper414.png.import
new file mode 100644
index 0000000..d2223d5
--- /dev/null
+++ b/resources/effects/danger/Effect_Boss_YiGung_Upper414.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bwtxy88f2hq7v"
+path="res://.godot/imported/Effect_Boss_YiGung_Upper414.png-09915daa075100c93d8379fdad895d70.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/danger/Effect_Boss_YiGung_Upper414.png"
+dest_files=["res://.godot/imported/Effect_Boss_YiGung_Upper414.png-09915daa075100c93d8379fdad895d70.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/0.tres b/resources/effects/fooExplosion/0/0.tres
new file mode 100644
index 0000000..b2ca4b5
--- /dev/null
+++ b/resources/effects/fooExplosion/0/0.tres
@@ -0,0 +1,58 @@
+[gd_resource type="SpriteFrames" load_steps=13 format=3 uid="uid://b5vab7qg5wime"]
+
+[ext_resource type="Texture2D" uid="uid://cq80y83edetx3" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion00.png" id="1_x6x00"]
+[ext_resource type="Texture2D" uid="uid://cehkdqa85b0ad" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion01.png" id="2_puisg"]
+[ext_resource type="Texture2D" uid="uid://d2pg5hqpe2cp2" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion02.png" id="3_udch8"]
+[ext_resource type="Texture2D" uid="uid://bykjgvhsf2dsu" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion03.png" id="4_dufj6"]
+[ext_resource type="Texture2D" uid="uid://d0uq64amohrs7" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion04.png" id="5_caok5"]
+[ext_resource type="Texture2D" uid="uid://b2ywi78d7lg21" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion05.png" id="6_p83gk"]
+[ext_resource type="Texture2D" uid="uid://bihj346dfshj3" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion06.png" id="7_y53fw"]
+[ext_resource type="Texture2D" uid="uid://c1b3gnamtn2rn" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion07.png" id="8_l4kge"]
+[ext_resource type="Texture2D" uid="uid://bo7cih0s2hx3g" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion08.png" id="9_dc6q8"]
+[ext_resource type="Texture2D" uid="uid://cgisg4urhvrah" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion09.png" id="10_eedb6"]
+[ext_resource type="Texture2D" uid="uid://dm4ih65h45qi8" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion10.png" id="11_fmpkm"]
+[ext_resource type="Texture2D" uid="uid://bpr2j2jed4yxm" path="res://resources/effects/fooExplosion/0/Lv1_FooExplosion11.png" id="12_0aaxm"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_x6x00")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_puisg")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_udch8")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_dufj6")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_caok5")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_p83gk")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_y53fw")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_l4kge")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_dc6q8")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_eedb6")
+}, {
+"duration": 1.0,
+"texture": ExtResource("11_fmpkm")
+}, {
+"duration": 1.0,
+"texture": ExtResource("12_0aaxm")
+}],
+"loop": false,
+"name": &"spawn",
+"speed": 20.0
+}]
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion00.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion00.png
new file mode 100644
index 0000000..07e321d
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion00.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion00.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion00.png.import
new file mode 100644
index 0000000..11c657b
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion00.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cq80y83edetx3"
+path="res://.godot/imported/Lv1_FooExplosion00.png-a7d594684a2f004c9e51006e2c0e8622.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion00.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion00.png-a7d594684a2f004c9e51006e2c0e8622.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion01.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion01.png
new file mode 100644
index 0000000..201b7ed
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion01.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion01.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion01.png.import
new file mode 100644
index 0000000..3a65692
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion01.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cehkdqa85b0ad"
+path="res://.godot/imported/Lv1_FooExplosion01.png-3f00370a09fdc305ba84e4c53ae836d6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion01.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion01.png-3f00370a09fdc305ba84e4c53ae836d6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion02.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion02.png
new file mode 100644
index 0000000..8d21649
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion02.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion02.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion02.png.import
new file mode 100644
index 0000000..7042c6d
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion02.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d2pg5hqpe2cp2"
+path="res://.godot/imported/Lv1_FooExplosion02.png-cb0bab509081a399e9fc9d625fd85d0b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion02.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion02.png-cb0bab509081a399e9fc9d625fd85d0b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion03.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion03.png
new file mode 100644
index 0000000..0e086b5
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion03.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion03.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion03.png.import
new file mode 100644
index 0000000..d39df8a
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion03.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bykjgvhsf2dsu"
+path="res://.godot/imported/Lv1_FooExplosion03.png-02762682310298228b26d4b1db377a8a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion03.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion03.png-02762682310298228b26d4b1db377a8a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion04.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion04.png
new file mode 100644
index 0000000..fab5e68
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion04.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion04.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion04.png.import
new file mode 100644
index 0000000..21ae564
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion04.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d0uq64amohrs7"
+path="res://.godot/imported/Lv1_FooExplosion04.png-55b85ff49cf3501cff6a81a05585721a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion04.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion04.png-55b85ff49cf3501cff6a81a05585721a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion05.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion05.png
new file mode 100644
index 0000000..b6cdfa6
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion05.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion05.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion05.png.import
new file mode 100644
index 0000000..f129800
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion05.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b2ywi78d7lg21"
+path="res://.godot/imported/Lv1_FooExplosion05.png-3d5a25f4890c2cf34733c50a54b57d84.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion05.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion05.png-3d5a25f4890c2cf34733c50a54b57d84.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion06.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion06.png
new file mode 100644
index 0000000..f31395c
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion06.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion06.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion06.png.import
new file mode 100644
index 0000000..7a46a96
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion06.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bihj346dfshj3"
+path="res://.godot/imported/Lv1_FooExplosion06.png-d704fb2420fc594ced9c2c28839e5ab0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion06.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion06.png-d704fb2420fc594ced9c2c28839e5ab0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion07.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion07.png
new file mode 100644
index 0000000..81e432b
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion07.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion07.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion07.png.import
new file mode 100644
index 0000000..ba34d53
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion07.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c1b3gnamtn2rn"
+path="res://.godot/imported/Lv1_FooExplosion07.png-694e01b56dd983339f1da5a9aaf6b4e7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion07.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion07.png-694e01b56dd983339f1da5a9aaf6b4e7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion08.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion08.png
new file mode 100644
index 0000000..c6fda38
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion08.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion08.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion08.png.import
new file mode 100644
index 0000000..9082987
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion08.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bo7cih0s2hx3g"
+path="res://.godot/imported/Lv1_FooExplosion08.png-58884f3512a1550214aa4c2a9496846e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion08.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion08.png-58884f3512a1550214aa4c2a9496846e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion09.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion09.png
new file mode 100644
index 0000000..5e7a105
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion09.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion09.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion09.png.import
new file mode 100644
index 0000000..c118361
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion09.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cgisg4urhvrah"
+path="res://.godot/imported/Lv1_FooExplosion09.png-cf42c140cd400d6eeb9360d4217a79da.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion09.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion09.png-cf42c140cd400d6eeb9360d4217a79da.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion10.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion10.png
new file mode 100644
index 0000000..663b480
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion10.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion10.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion10.png.import
new file mode 100644
index 0000000..4683836
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion10.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dm4ih65h45qi8"
+path="res://.godot/imported/Lv1_FooExplosion10.png-ee4470fb4e93f1ef303081d770393fd0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion10.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion10.png-ee4470fb4e93f1ef303081d770393fd0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion11.png b/resources/effects/fooExplosion/0/Lv1_FooExplosion11.png
new file mode 100644
index 0000000..eb849ba
Binary files /dev/null and b/resources/effects/fooExplosion/0/Lv1_FooExplosion11.png differ
diff --git a/resources/effects/fooExplosion/0/Lv1_FooExplosion11.png.import b/resources/effects/fooExplosion/0/Lv1_FooExplosion11.png.import
new file mode 100644
index 0000000..f103e65
--- /dev/null
+++ b/resources/effects/fooExplosion/0/Lv1_FooExplosion11.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bpr2j2jed4yxm"
+path="res://.godot/imported/Lv1_FooExplosion11.png-3836d1682c0ceeda74fc919d6febb27c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/0/Lv1_FooExplosion11.png"
+dest_files=["res://.godot/imported/Lv1_FooExplosion11.png-3836d1682c0ceeda74fc919d6febb27c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/1.tres b/resources/effects/fooExplosion/1/1.tres
new file mode 100644
index 0000000..875b1c1
--- /dev/null
+++ b/resources/effects/fooExplosion/1/1.tres
@@ -0,0 +1,54 @@
+[gd_resource type="SpriteFrames" load_steps=12 format=3 uid="uid://crbh6ejm2tnsh"]
+
+[ext_resource type="Texture2D" uid="uid://b6ioee5yru0qm" path="res://resources/effects/fooExplosion/1/FooExplosion_A0.png" id="1_gwa23"]
+[ext_resource type="Texture2D" uid="uid://c8w1tu7qhgrvh" path="res://resources/effects/fooExplosion/1/FooExplosion_A1.png" id="2_taypo"]
+[ext_resource type="Texture2D" uid="uid://cjydcckfvf1g1" path="res://resources/effects/fooExplosion/1/FooExplosion_A2.png" id="3_te6m4"]
+[ext_resource type="Texture2D" uid="uid://cq4exxmcqlm5j" path="res://resources/effects/fooExplosion/1/FooExplosion_A3.png" id="4_elpsy"]
+[ext_resource type="Texture2D" uid="uid://djfmgy4bjflsc" path="res://resources/effects/fooExplosion/1/FooExplosion_A4.png" id="5_xg7r0"]
+[ext_resource type="Texture2D" uid="uid://bh4te472a110w" path="res://resources/effects/fooExplosion/1/FooExplosion_A5.png" id="6_4e4iu"]
+[ext_resource type="Texture2D" uid="uid://cps4pmbsmel5d" path="res://resources/effects/fooExplosion/1/FooExplosion_A6.png" id="7_xl8cd"]
+[ext_resource type="Texture2D" uid="uid://cehuo4ugovebx" path="res://resources/effects/fooExplosion/1/FooExplosion_A7.png" id="8_lipba"]
+[ext_resource type="Texture2D" uid="uid://tpidjj8u70ab" path="res://resources/effects/fooExplosion/1/FooExplosion_A8.png" id="9_x3dgv"]
+[ext_resource type="Texture2D" uid="uid://dk5ksogg2pdd4" path="res://resources/effects/fooExplosion/1/FooExplosion_A9.png" id="10_hbpir"]
+[ext_resource type="Texture2D" uid="uid://v16isqomsld1" path="res://resources/effects/fooExplosion/1/FooExplosion_A10.png" id="11_sm4pi"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_gwa23")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_taypo")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_te6m4")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_elpsy")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_xg7r0")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_4e4iu")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_xl8cd")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_lipba")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_x3dgv")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_hbpir")
+}, {
+"duration": 1.0,
+"texture": ExtResource("11_sm4pi")
+}],
+"loop": false,
+"name": &"spawn",
+"speed": 20.0
+}]
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A0.png b/resources/effects/fooExplosion/1/FooExplosion_A0.png
new file mode 100644
index 0000000..d46907c
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A0.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A0.png.import b/resources/effects/fooExplosion/1/FooExplosion_A0.png.import
new file mode 100644
index 0000000..68926fe
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b6ioee5yru0qm"
+path="res://.godot/imported/FooExplosion_A0.png-81fc8755a4cc99fcb7debba19ceee8f6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A0.png"
+dest_files=["res://.godot/imported/FooExplosion_A0.png-81fc8755a4cc99fcb7debba19ceee8f6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A1.png b/resources/effects/fooExplosion/1/FooExplosion_A1.png
new file mode 100644
index 0000000..56ecf33
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A1.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A1.png.import b/resources/effects/fooExplosion/1/FooExplosion_A1.png.import
new file mode 100644
index 0000000..a88240b
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c8w1tu7qhgrvh"
+path="res://.godot/imported/FooExplosion_A1.png-7325712fcb040285ad512cbe7088a3bd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A1.png"
+dest_files=["res://.godot/imported/FooExplosion_A1.png-7325712fcb040285ad512cbe7088a3bd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A10.png b/resources/effects/fooExplosion/1/FooExplosion_A10.png
new file mode 100644
index 0000000..e18b7a5
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A10.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A10.png.import b/resources/effects/fooExplosion/1/FooExplosion_A10.png.import
new file mode 100644
index 0000000..49ba5fd
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A10.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://v16isqomsld1"
+path="res://.godot/imported/FooExplosion_A10.png-2e54f22b3027241692aefce9b7f956fd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A10.png"
+dest_files=["res://.godot/imported/FooExplosion_A10.png-2e54f22b3027241692aefce9b7f956fd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A2.png b/resources/effects/fooExplosion/1/FooExplosion_A2.png
new file mode 100644
index 0000000..fc95148
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A2.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A2.png.import b/resources/effects/fooExplosion/1/FooExplosion_A2.png.import
new file mode 100644
index 0000000..718e8bd
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cjydcckfvf1g1"
+path="res://.godot/imported/FooExplosion_A2.png-6ef8bddcff5fb05be41b0a026bfcda91.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A2.png"
+dest_files=["res://.godot/imported/FooExplosion_A2.png-6ef8bddcff5fb05be41b0a026bfcda91.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A3.png b/resources/effects/fooExplosion/1/FooExplosion_A3.png
new file mode 100644
index 0000000..88bffc2
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A3.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A3.png.import b/resources/effects/fooExplosion/1/FooExplosion_A3.png.import
new file mode 100644
index 0000000..9e57336
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cq4exxmcqlm5j"
+path="res://.godot/imported/FooExplosion_A3.png-15dbda722f5b13287bbaca9a3065ff28.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A3.png"
+dest_files=["res://.godot/imported/FooExplosion_A3.png-15dbda722f5b13287bbaca9a3065ff28.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A4.png b/resources/effects/fooExplosion/1/FooExplosion_A4.png
new file mode 100644
index 0000000..79500dd
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A4.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A4.png.import b/resources/effects/fooExplosion/1/FooExplosion_A4.png.import
new file mode 100644
index 0000000..f386845
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://djfmgy4bjflsc"
+path="res://.godot/imported/FooExplosion_A4.png-31f8574f885d0f3e14f8725472ad7c2f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A4.png"
+dest_files=["res://.godot/imported/FooExplosion_A4.png-31f8574f885d0f3e14f8725472ad7c2f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A5.png b/resources/effects/fooExplosion/1/FooExplosion_A5.png
new file mode 100644
index 0000000..68e5b75
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A5.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A5.png.import b/resources/effects/fooExplosion/1/FooExplosion_A5.png.import
new file mode 100644
index 0000000..31687d5
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bh4te472a110w"
+path="res://.godot/imported/FooExplosion_A5.png-e1d37c847bffc3d4199a0a555f6fde35.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A5.png"
+dest_files=["res://.godot/imported/FooExplosion_A5.png-e1d37c847bffc3d4199a0a555f6fde35.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A6.png b/resources/effects/fooExplosion/1/FooExplosion_A6.png
new file mode 100644
index 0000000..259f94a
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A6.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A6.png.import b/resources/effects/fooExplosion/1/FooExplosion_A6.png.import
new file mode 100644
index 0000000..d1ced40
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cps4pmbsmel5d"
+path="res://.godot/imported/FooExplosion_A6.png-3838aed7b523bbdf68b4b5113c7fdc3b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A6.png"
+dest_files=["res://.godot/imported/FooExplosion_A6.png-3838aed7b523bbdf68b4b5113c7fdc3b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A7.png b/resources/effects/fooExplosion/1/FooExplosion_A7.png
new file mode 100644
index 0000000..81cff0f
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A7.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A7.png.import b/resources/effects/fooExplosion/1/FooExplosion_A7.png.import
new file mode 100644
index 0000000..3d9d922
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cehuo4ugovebx"
+path="res://.godot/imported/FooExplosion_A7.png-eba5f4a8e793fc0475de93bf7c9146cf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A7.png"
+dest_files=["res://.godot/imported/FooExplosion_A7.png-eba5f4a8e793fc0475de93bf7c9146cf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A8.png b/resources/effects/fooExplosion/1/FooExplosion_A8.png
new file mode 100644
index 0000000..31b6148
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A8.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A8.png.import b/resources/effects/fooExplosion/1/FooExplosion_A8.png.import
new file mode 100644
index 0000000..ea2a3ba
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://tpidjj8u70ab"
+path="res://.godot/imported/FooExplosion_A8.png-0c52daf138e5c063d0c1be9ea7b42fa6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A8.png"
+dest_files=["res://.godot/imported/FooExplosion_A8.png-0c52daf138e5c063d0c1be9ea7b42fa6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A9.png b/resources/effects/fooExplosion/1/FooExplosion_A9.png
new file mode 100644
index 0000000..5a2e398
Binary files /dev/null and b/resources/effects/fooExplosion/1/FooExplosion_A9.png differ
diff --git a/resources/effects/fooExplosion/1/FooExplosion_A9.png.import b/resources/effects/fooExplosion/1/FooExplosion_A9.png.import
new file mode 100644
index 0000000..deefb20
--- /dev/null
+++ b/resources/effects/fooExplosion/1/FooExplosion_A9.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dk5ksogg2pdd4"
+path="res://.godot/imported/FooExplosion_A9.png-f54c79d38d984f96a1f6d40f9c6de706.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/1/FooExplosion_A9.png"
+dest_files=["res://.godot/imported/FooExplosion_A9.png-f54c79d38d984f96a1f6d40f9c6de706.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/2/2.tres b/resources/effects/fooExplosion/2/2.tres
new file mode 100644
index 0000000..ac7daf4
--- /dev/null
+++ b/resources/effects/fooExplosion/2/2.tres
@@ -0,0 +1,34 @@
+[gd_resource type="SpriteFrames" load_steps=7 format=3 uid="uid://bifhv25pvrih"]
+
+[ext_resource type="Texture2D" uid="uid://cyv2uxefa1kdq" path="res://resources/effects/fooExplosion/2/FooExplosion_B0.png" id="1_atq51"]
+[ext_resource type="Texture2D" uid="uid://b3igulk4u7bhd" path="res://resources/effects/fooExplosion/2/FooExplosion_B1.png" id="2_y4t0p"]
+[ext_resource type="Texture2D" uid="uid://csujexf56rgt8" path="res://resources/effects/fooExplosion/2/FooExplosion_B2.png" id="3_5jkyp"]
+[ext_resource type="Texture2D" uid="uid://ckje0c2eargx" path="res://resources/effects/fooExplosion/2/FooExplosion_B3.png" id="4_v71q5"]
+[ext_resource type="Texture2D" uid="uid://d34bt0qwn5s78" path="res://resources/effects/fooExplosion/2/FooExplosion_B4.png" id="5_0ix3a"]
+[ext_resource type="Texture2D" uid="uid://cxbhuw0th3ntt" path="res://resources/effects/fooExplosion/2/FooExplosion_B5.png" id="6_kj2cu"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_atq51")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_y4t0p")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_5jkyp")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_v71q5")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_0ix3a")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_kj2cu")
+}],
+"loop": false,
+"name": &"spawn",
+"speed": 20.0
+}]
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B0.png b/resources/effects/fooExplosion/2/FooExplosion_B0.png
new file mode 100644
index 0000000..0b0d5c3
Binary files /dev/null and b/resources/effects/fooExplosion/2/FooExplosion_B0.png differ
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B0.png.import b/resources/effects/fooExplosion/2/FooExplosion_B0.png.import
new file mode 100644
index 0000000..d697db7
--- /dev/null
+++ b/resources/effects/fooExplosion/2/FooExplosion_B0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cyv2uxefa1kdq"
+path="res://.godot/imported/FooExplosion_B0.png-fa25d9148ea1bc373d20390012214748.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/2/FooExplosion_B0.png"
+dest_files=["res://.godot/imported/FooExplosion_B0.png-fa25d9148ea1bc373d20390012214748.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B1.png b/resources/effects/fooExplosion/2/FooExplosion_B1.png
new file mode 100644
index 0000000..b47ea2e
Binary files /dev/null and b/resources/effects/fooExplosion/2/FooExplosion_B1.png differ
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B1.png.import b/resources/effects/fooExplosion/2/FooExplosion_B1.png.import
new file mode 100644
index 0000000..3398ea5
--- /dev/null
+++ b/resources/effects/fooExplosion/2/FooExplosion_B1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b3igulk4u7bhd"
+path="res://.godot/imported/FooExplosion_B1.png-c2e0826783e262830c45091424085fa7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/2/FooExplosion_B1.png"
+dest_files=["res://.godot/imported/FooExplosion_B1.png-c2e0826783e262830c45091424085fa7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B2.png b/resources/effects/fooExplosion/2/FooExplosion_B2.png
new file mode 100644
index 0000000..5685cd8
Binary files /dev/null and b/resources/effects/fooExplosion/2/FooExplosion_B2.png differ
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B2.png.import b/resources/effects/fooExplosion/2/FooExplosion_B2.png.import
new file mode 100644
index 0000000..2c7179d
--- /dev/null
+++ b/resources/effects/fooExplosion/2/FooExplosion_B2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://csujexf56rgt8"
+path="res://.godot/imported/FooExplosion_B2.png-13e64a22ed9338f2f1274aab3d649d12.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/2/FooExplosion_B2.png"
+dest_files=["res://.godot/imported/FooExplosion_B2.png-13e64a22ed9338f2f1274aab3d649d12.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B3.png b/resources/effects/fooExplosion/2/FooExplosion_B3.png
new file mode 100644
index 0000000..c726b02
Binary files /dev/null and b/resources/effects/fooExplosion/2/FooExplosion_B3.png differ
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B3.png.import b/resources/effects/fooExplosion/2/FooExplosion_B3.png.import
new file mode 100644
index 0000000..6d282de
--- /dev/null
+++ b/resources/effects/fooExplosion/2/FooExplosion_B3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ckje0c2eargx"
+path="res://.godot/imported/FooExplosion_B3.png-61535e43dcb562bdfe72d8da96aed139.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/2/FooExplosion_B3.png"
+dest_files=["res://.godot/imported/FooExplosion_B3.png-61535e43dcb562bdfe72d8da96aed139.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B4.png b/resources/effects/fooExplosion/2/FooExplosion_B4.png
new file mode 100644
index 0000000..345618f
Binary files /dev/null and b/resources/effects/fooExplosion/2/FooExplosion_B4.png differ
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B4.png.import b/resources/effects/fooExplosion/2/FooExplosion_B4.png.import
new file mode 100644
index 0000000..0a77f8f
--- /dev/null
+++ b/resources/effects/fooExplosion/2/FooExplosion_B4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d34bt0qwn5s78"
+path="res://.godot/imported/FooExplosion_B4.png-8968053c0567e266d10d29e363565209.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/2/FooExplosion_B4.png"
+dest_files=["res://.godot/imported/FooExplosion_B4.png-8968053c0567e266d10d29e363565209.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B5.png b/resources/effects/fooExplosion/2/FooExplosion_B5.png
new file mode 100644
index 0000000..e002548
Binary files /dev/null and b/resources/effects/fooExplosion/2/FooExplosion_B5.png differ
diff --git a/resources/effects/fooExplosion/2/FooExplosion_B5.png.import b/resources/effects/fooExplosion/2/FooExplosion_B5.png.import
new file mode 100644
index 0000000..298ac91
--- /dev/null
+++ b/resources/effects/fooExplosion/2/FooExplosion_B5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cxbhuw0th3ntt"
+path="res://.godot/imported/FooExplosion_B5.png-997f87ac30ba25c79409910883a360dd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/fooExplosion/2/FooExplosion_B5.png"
+dest_files=["res://.godot/imported/FooExplosion_B5.png-997f87ac30ba25c79409910883a360dd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/0/0.tres b/resources/effects/parrier/0/0.tres
new file mode 100644
index 0000000..467c394
--- /dev/null
+++ b/resources/effects/parrier/0/0.tres
@@ -0,0 +1,26 @@
+[gd_resource type="SpriteFrames" load_steps=5 format=3 uid="uid://cr71etd0eeule"]
+
+[ext_resource type="Texture2D" uid="uid://dqni3jvd1v40d" path="res://resources/effects/parrier/0/AttackEffect_ThrustDelay0.png" id="1_aedkl"]
+[ext_resource type="Texture2D" uid="uid://cic3h2mcbfbkv" path="res://resources/effects/parrier/0/AttackEffect_ThrustDelay1.png" id="2_qk6hk"]
+[ext_resource type="Texture2D" uid="uid://bt3d4r3jcexwx" path="res://resources/effects/parrier/0/AttackEffect_ThrustDelay2.png" id="3_nqrx7"]
+[ext_resource type="Texture2D" uid="uid://d3cpxixdnhprt" path="res://resources/effects/parrier/0/AttackEffect_ThrustDelay3.png" id="4_x8cs1"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_aedkl")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_qk6hk")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_nqrx7")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_x8cs1")
+}],
+"loop": false,
+"name": &"spawn",
+"speed": 15.0
+}]
diff --git a/resources/effects/parrier/0/AttackEffect_ThrustDelay0.png b/resources/effects/parrier/0/AttackEffect_ThrustDelay0.png
new file mode 100644
index 0000000..d2115b7
Binary files /dev/null and b/resources/effects/parrier/0/AttackEffect_ThrustDelay0.png differ
diff --git a/resources/effects/parrier/0/AttackEffect_ThrustDelay0.png.import b/resources/effects/parrier/0/AttackEffect_ThrustDelay0.png.import
new file mode 100644
index 0000000..0e51561
--- /dev/null
+++ b/resources/effects/parrier/0/AttackEffect_ThrustDelay0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dqni3jvd1v40d"
+path="res://.godot/imported/AttackEffect_ThrustDelay0.png-3977ab40be80bad352e99dd1767fb44e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/0/AttackEffect_ThrustDelay0.png"
+dest_files=["res://.godot/imported/AttackEffect_ThrustDelay0.png-3977ab40be80bad352e99dd1767fb44e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/0/AttackEffect_ThrustDelay1.png b/resources/effects/parrier/0/AttackEffect_ThrustDelay1.png
new file mode 100644
index 0000000..c89ae1a
Binary files /dev/null and b/resources/effects/parrier/0/AttackEffect_ThrustDelay1.png differ
diff --git a/resources/effects/parrier/0/AttackEffect_ThrustDelay1.png.import b/resources/effects/parrier/0/AttackEffect_ThrustDelay1.png.import
new file mode 100644
index 0000000..a1baa21
--- /dev/null
+++ b/resources/effects/parrier/0/AttackEffect_ThrustDelay1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cic3h2mcbfbkv"
+path="res://.godot/imported/AttackEffect_ThrustDelay1.png-ce8e91caf324067e13b469cdf33fa52e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/0/AttackEffect_ThrustDelay1.png"
+dest_files=["res://.godot/imported/AttackEffect_ThrustDelay1.png-ce8e91caf324067e13b469cdf33fa52e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/0/AttackEffect_ThrustDelay2.png b/resources/effects/parrier/0/AttackEffect_ThrustDelay2.png
new file mode 100644
index 0000000..9416670
Binary files /dev/null and b/resources/effects/parrier/0/AttackEffect_ThrustDelay2.png differ
diff --git a/resources/effects/parrier/0/AttackEffect_ThrustDelay2.png.import b/resources/effects/parrier/0/AttackEffect_ThrustDelay2.png.import
new file mode 100644
index 0000000..0fa7567
--- /dev/null
+++ b/resources/effects/parrier/0/AttackEffect_ThrustDelay2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bt3d4r3jcexwx"
+path="res://.godot/imported/AttackEffect_ThrustDelay2.png-cd72b7475ca9aa506dbdec89ec652cb3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/0/AttackEffect_ThrustDelay2.png"
+dest_files=["res://.godot/imported/AttackEffect_ThrustDelay2.png-cd72b7475ca9aa506dbdec89ec652cb3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/0/AttackEffect_ThrustDelay3.png b/resources/effects/parrier/0/AttackEffect_ThrustDelay3.png
new file mode 100644
index 0000000..d3f7fe3
Binary files /dev/null and b/resources/effects/parrier/0/AttackEffect_ThrustDelay3.png differ
diff --git a/resources/effects/parrier/0/AttackEffect_ThrustDelay3.png.import b/resources/effects/parrier/0/AttackEffect_ThrustDelay3.png.import
new file mode 100644
index 0000000..0f80b78
--- /dev/null
+++ b/resources/effects/parrier/0/AttackEffect_ThrustDelay3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d3cpxixdnhprt"
+path="res://.godot/imported/AttackEffect_ThrustDelay3.png-d78234aec4ba5cae83b351f5c8befc1f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/0/AttackEffect_ThrustDelay3.png"
+dest_files=["res://.godot/imported/AttackEffect_ThrustDelay3.png-d78234aec4ba5cae83b351f5c8befc1f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/1/1.tres b/resources/effects/parrier/1/1.tres
new file mode 100644
index 0000000..b7d6c43
--- /dev/null
+++ b/resources/effects/parrier/1/1.tres
@@ -0,0 +1,30 @@
+[gd_resource type="SpriteFrames" load_steps=6 format=3 uid="uid://33prhoaffs8x"]
+
+[ext_resource type="Texture2D" uid="uid://drcp0del8rgsh" path="res://resources/effects/parrier/1/Effect_AttackB0.png" id="1_0m4hx"]
+[ext_resource type="Texture2D" uid="uid://c14m2xoe7wlbh" path="res://resources/effects/parrier/1/Effect_AttackB1.png" id="2_veosc"]
+[ext_resource type="Texture2D" uid="uid://dprrvyaxj0o31" path="res://resources/effects/parrier/1/Effect_AttackB2.png" id="3_pjoe6"]
+[ext_resource type="Texture2D" uid="uid://7m7q6ja1n7jj" path="res://resources/effects/parrier/1/Effect_AttackB3.png" id="4_6wwba"]
+[ext_resource type="Texture2D" uid="uid://ddexadx6o6exi" path="res://resources/effects/parrier/1/Effect_AttackB4.png" id="5_851jf"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_0m4hx")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_veosc")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_pjoe6")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_6wwba")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_851jf")
+}],
+"loop": false,
+"name": &"spawn",
+"speed": 15.0
+}]
diff --git a/resources/effects/parrier/1/Effect_AttackB0.png b/resources/effects/parrier/1/Effect_AttackB0.png
new file mode 100644
index 0000000..2e9bdda
Binary files /dev/null and b/resources/effects/parrier/1/Effect_AttackB0.png differ
diff --git a/resources/effects/parrier/1/Effect_AttackB0.png.import b/resources/effects/parrier/1/Effect_AttackB0.png.import
new file mode 100644
index 0000000..7fae8af
--- /dev/null
+++ b/resources/effects/parrier/1/Effect_AttackB0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://drcp0del8rgsh"
+path="res://.godot/imported/Effect_AttackB0.png-ab5e5848a6a9f33d7cb22699bd063c6b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/1/Effect_AttackB0.png"
+dest_files=["res://.godot/imported/Effect_AttackB0.png-ab5e5848a6a9f33d7cb22699bd063c6b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/1/Effect_AttackB1.png b/resources/effects/parrier/1/Effect_AttackB1.png
new file mode 100644
index 0000000..486bf7e
Binary files /dev/null and b/resources/effects/parrier/1/Effect_AttackB1.png differ
diff --git a/resources/effects/parrier/1/Effect_AttackB1.png.import b/resources/effects/parrier/1/Effect_AttackB1.png.import
new file mode 100644
index 0000000..5f0e3dc
--- /dev/null
+++ b/resources/effects/parrier/1/Effect_AttackB1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c14m2xoe7wlbh"
+path="res://.godot/imported/Effect_AttackB1.png-3d4fa19d75c511a5ba855ed2c28ecac5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/1/Effect_AttackB1.png"
+dest_files=["res://.godot/imported/Effect_AttackB1.png-3d4fa19d75c511a5ba855ed2c28ecac5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/1/Effect_AttackB2.png b/resources/effects/parrier/1/Effect_AttackB2.png
new file mode 100644
index 0000000..093ff77
Binary files /dev/null and b/resources/effects/parrier/1/Effect_AttackB2.png differ
diff --git a/resources/effects/parrier/1/Effect_AttackB2.png.import b/resources/effects/parrier/1/Effect_AttackB2.png.import
new file mode 100644
index 0000000..d69d67f
--- /dev/null
+++ b/resources/effects/parrier/1/Effect_AttackB2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dprrvyaxj0o31"
+path="res://.godot/imported/Effect_AttackB2.png-9980fcc6e64c3b823d8e52229c0538c6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/1/Effect_AttackB2.png"
+dest_files=["res://.godot/imported/Effect_AttackB2.png-9980fcc6e64c3b823d8e52229c0538c6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/1/Effect_AttackB3.png b/resources/effects/parrier/1/Effect_AttackB3.png
new file mode 100644
index 0000000..9b221f6
Binary files /dev/null and b/resources/effects/parrier/1/Effect_AttackB3.png differ
diff --git a/resources/effects/parrier/1/Effect_AttackB3.png.import b/resources/effects/parrier/1/Effect_AttackB3.png.import
new file mode 100644
index 0000000..5b0c472
--- /dev/null
+++ b/resources/effects/parrier/1/Effect_AttackB3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://7m7q6ja1n7jj"
+path="res://.godot/imported/Effect_AttackB3.png-cbbb24b79b0578b3fdd6720c0adb7f56.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/1/Effect_AttackB3.png"
+dest_files=["res://.godot/imported/Effect_AttackB3.png-cbbb24b79b0578b3fdd6720c0adb7f56.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/1/Effect_AttackB4.png b/resources/effects/parrier/1/Effect_AttackB4.png
new file mode 100644
index 0000000..e771c97
Binary files /dev/null and b/resources/effects/parrier/1/Effect_AttackB4.png differ
diff --git a/resources/effects/parrier/1/Effect_AttackB4.png.import b/resources/effects/parrier/1/Effect_AttackB4.png.import
new file mode 100644
index 0000000..9b3e61c
--- /dev/null
+++ b/resources/effects/parrier/1/Effect_AttackB4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ddexadx6o6exi"
+path="res://.godot/imported/Effect_AttackB4.png-2dee83f146863fa13a22bfe0319440ee.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/1/Effect_AttackB4.png"
+dest_files=["res://.godot/imported/Effect_AttackB4.png-2dee83f146863fa13a22bfe0319440ee.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/2/2.tres b/resources/effects/parrier/2/2.tres
new file mode 100644
index 0000000..0603b4a
--- /dev/null
+++ b/resources/effects/parrier/2/2.tres
@@ -0,0 +1,46 @@
+[gd_resource type="SpriteFrames" load_steps=10 format=3 uid="uid://cegxrhkf6na6t"]
+
+[ext_resource type="Texture2D" uid="uid://4x5llpjk6roc" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA0.png" id="1_log7y"]
+[ext_resource type="Texture2D" uid="uid://nuf41by5qav3" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA1.png" id="2_1d1ae"]
+[ext_resource type="Texture2D" uid="uid://cn3jub5bbs10s" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA2.png" id="3_k7vdj"]
+[ext_resource type="Texture2D" uid="uid://cuxujj0yo03cw" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA3.png" id="4_d81w8"]
+[ext_resource type="Texture2D" uid="uid://bnk7e6vdm73t" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA4.png" id="5_6h3wu"]
+[ext_resource type="Texture2D" uid="uid://bd2asjjnvg2s1" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA5.png" id="6_w73yo"]
+[ext_resource type="Texture2D" uid="uid://qfx7cdpxl6gt" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA6.png" id="7_pvgal"]
+[ext_resource type="Texture2D" uid="uid://bqryprhlv6pmn" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA7.png" id="8_8wq1v"]
+[ext_resource type="Texture2D" uid="uid://de56iexewtrdm" path="res://resources/bullets/yee-abc/Effect_HoHoYee_AttackA8.png" id="9_ijejs"]
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_log7y")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_1d1ae")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_k7vdj")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_d81w8")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_6h3wu")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_w73yo")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_pvgal")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_8wq1v")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_ijejs")
+}],
+"loop": false,
+"name": &"spawn",
+"speed": 20.0
+}]
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA2.png b/resources/effects/parrier/2/Effect_HoHoYee_AttackA2.png
new file mode 100644
index 0000000..72cdb29
Binary files /dev/null and b/resources/effects/parrier/2/Effect_HoHoYee_AttackA2.png differ
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA2.png.import b/resources/effects/parrier/2/Effect_HoHoYee_AttackA2.png.import
new file mode 100644
index 0000000..dc19144
--- /dev/null
+++ b/resources/effects/parrier/2/Effect_HoHoYee_AttackA2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bjhe3vik4tryq"
+path="res://.godot/imported/Effect_HoHoYee_AttackA2.png-6d7063517f55dbce31d45176424068e8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/2/Effect_HoHoYee_AttackA2.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA2.png-6d7063517f55dbce31d45176424068e8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA3.png b/resources/effects/parrier/2/Effect_HoHoYee_AttackA3.png
new file mode 100644
index 0000000..4997bb6
Binary files /dev/null and b/resources/effects/parrier/2/Effect_HoHoYee_AttackA3.png differ
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA3.png.import b/resources/effects/parrier/2/Effect_HoHoYee_AttackA3.png.import
new file mode 100644
index 0000000..900373d
--- /dev/null
+++ b/resources/effects/parrier/2/Effect_HoHoYee_AttackA3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bwkgdff32o7g1"
+path="res://.godot/imported/Effect_HoHoYee_AttackA3.png-bcbaec1c23ee8f26457f2b22f820ce71.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/2/Effect_HoHoYee_AttackA3.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA3.png-bcbaec1c23ee8f26457f2b22f820ce71.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA4.png b/resources/effects/parrier/2/Effect_HoHoYee_AttackA4.png
new file mode 100644
index 0000000..46473ca
Binary files /dev/null and b/resources/effects/parrier/2/Effect_HoHoYee_AttackA4.png differ
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA4.png.import b/resources/effects/parrier/2/Effect_HoHoYee_AttackA4.png.import
new file mode 100644
index 0000000..8083fe3
--- /dev/null
+++ b/resources/effects/parrier/2/Effect_HoHoYee_AttackA4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://mufrpnnomkpk"
+path="res://.godot/imported/Effect_HoHoYee_AttackA4.png-025963e9518fdf06a85f82bac08da4b2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/2/Effect_HoHoYee_AttackA4.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA4.png-025963e9518fdf06a85f82bac08da4b2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA5.png b/resources/effects/parrier/2/Effect_HoHoYee_AttackA5.png
new file mode 100644
index 0000000..b637836
Binary files /dev/null and b/resources/effects/parrier/2/Effect_HoHoYee_AttackA5.png differ
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA5.png.import b/resources/effects/parrier/2/Effect_HoHoYee_AttackA5.png.import
new file mode 100644
index 0000000..cd9b092
--- /dev/null
+++ b/resources/effects/parrier/2/Effect_HoHoYee_AttackA5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://csclv5al0on2k"
+path="res://.godot/imported/Effect_HoHoYee_AttackA5.png-3bd888c81c636d8450d826ffa1114ff2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/2/Effect_HoHoYee_AttackA5.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA5.png-3bd888c81c636d8450d826ffa1114ff2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA6.png b/resources/effects/parrier/2/Effect_HoHoYee_AttackA6.png
new file mode 100644
index 0000000..293b599
Binary files /dev/null and b/resources/effects/parrier/2/Effect_HoHoYee_AttackA6.png differ
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA6.png.import b/resources/effects/parrier/2/Effect_HoHoYee_AttackA6.png.import
new file mode 100644
index 0000000..9c4926e
--- /dev/null
+++ b/resources/effects/parrier/2/Effect_HoHoYee_AttackA6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cxt56ccdugqg3"
+path="res://.godot/imported/Effect_HoHoYee_AttackA6.png-50c5eac1607796136ddc65fa4167c96a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/2/Effect_HoHoYee_AttackA6.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA6.png-50c5eac1607796136ddc65fa4167c96a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA7.png b/resources/effects/parrier/2/Effect_HoHoYee_AttackA7.png
new file mode 100644
index 0000000..1e2377c
Binary files /dev/null and b/resources/effects/parrier/2/Effect_HoHoYee_AttackA7.png differ
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA7.png.import b/resources/effects/parrier/2/Effect_HoHoYee_AttackA7.png.import
new file mode 100644
index 0000000..7522421
--- /dev/null
+++ b/resources/effects/parrier/2/Effect_HoHoYee_AttackA7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dmcm4rljstsb8"
+path="res://.godot/imported/Effect_HoHoYee_AttackA7.png-5d0088e221f5633843c9c932e8ceaf8c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/2/Effect_HoHoYee_AttackA7.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA7.png-5d0088e221f5633843c9c932e8ceaf8c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA8.png b/resources/effects/parrier/2/Effect_HoHoYee_AttackA8.png
new file mode 100644
index 0000000..451197f
Binary files /dev/null and b/resources/effects/parrier/2/Effect_HoHoYee_AttackA8.png differ
diff --git a/resources/effects/parrier/2/Effect_HoHoYee_AttackA8.png.import b/resources/effects/parrier/2/Effect_HoHoYee_AttackA8.png.import
new file mode 100644
index 0000000..3767d32
--- /dev/null
+++ b/resources/effects/parrier/2/Effect_HoHoYee_AttackA8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://biod5vk0jqn7q"
+path="res://.godot/imported/Effect_HoHoYee_AttackA8.png-7114520e085a13df888dc4b71d7e54bd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parrier/2/Effect_HoHoYee_AttackA8.png"
+dest_files=["res://.godot/imported/Effect_HoHoYee_AttackA8.png-7114520e085a13df888dc4b71d7e54bd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parry/ParrySparkAccurate.png b/resources/effects/parry/ParrySparkAccurate.png
new file mode 100644
index 0000000..abcef51
Binary files /dev/null and b/resources/effects/parry/ParrySparkAccurate.png differ
diff --git a/resources/effects/parry/ParrySparkAccurate.png.import b/resources/effects/parry/ParrySparkAccurate.png.import
new file mode 100644
index 0000000..67724a0
--- /dev/null
+++ b/resources/effects/parry/ParrySparkAccurate.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://rv10oe25rb6c"
+path="res://.godot/imported/ParrySparkAccurate.png-9ea7f4fe2c3c378038c78f338ca450cd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parry/ParrySparkAccurate.png"
+dest_files=["res://.godot/imported/ParrySparkAccurate.png-9ea7f4fe2c3c378038c78f338ca450cd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parry/ParrySparkAccurate0.png b/resources/effects/parry/ParrySparkAccurate0.png
new file mode 100644
index 0000000..a69c73f
Binary files /dev/null and b/resources/effects/parry/ParrySparkAccurate0.png differ
diff --git a/resources/effects/parry/ParrySparkAccurate0.png.import b/resources/effects/parry/ParrySparkAccurate0.png.import
new file mode 100644
index 0000000..a3c4f03
--- /dev/null
+++ b/resources/effects/parry/ParrySparkAccurate0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bdvyebq7sepqf"
+path="res://.godot/imported/ParrySparkAccurate0.png-9579b31239d8b97d58a96ccdf28f3bb3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parry/ParrySparkAccurate0.png"
+dest_files=["res://.godot/imported/ParrySparkAccurate0.png-9579b31239d8b97d58a96ccdf28f3bb3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parry/ParrySparkAccurate1.png b/resources/effects/parry/ParrySparkAccurate1.png
new file mode 100644
index 0000000..dd47737
Binary files /dev/null and b/resources/effects/parry/ParrySparkAccurate1.png differ
diff --git a/resources/effects/parry/ParrySparkAccurate1.png.import b/resources/effects/parry/ParrySparkAccurate1.png.import
new file mode 100644
index 0000000..ff6d89e
--- /dev/null
+++ b/resources/effects/parry/ParrySparkAccurate1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bsq0s07h5u6fp"
+path="res://.godot/imported/ParrySparkAccurate1.png-f635780c312b4cea5465ed5f988ff6c1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parry/ParrySparkAccurate1.png"
+dest_files=["res://.godot/imported/ParrySparkAccurate1.png-f635780c312b4cea5465ed5f988ff6c1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parry/ParrySparkAccurate2.png b/resources/effects/parry/ParrySparkAccurate2.png
new file mode 100644
index 0000000..8c8f956
Binary files /dev/null and b/resources/effects/parry/ParrySparkAccurate2.png differ
diff --git a/resources/effects/parry/ParrySparkAccurate2.png.import b/resources/effects/parry/ParrySparkAccurate2.png.import
new file mode 100644
index 0000000..5eff364
--- /dev/null
+++ b/resources/effects/parry/ParrySparkAccurate2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://myolsnuud6jk"
+path="res://.godot/imported/ParrySparkAccurate2.png-640d9315b2864f9d3e54c09884e24c15.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parry/ParrySparkAccurate2.png"
+dest_files=["res://.godot/imported/ParrySparkAccurate2.png-640d9315b2864f9d3e54c09884e24c15.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parry/ParrySparkAccurate3.png b/resources/effects/parry/ParrySparkAccurate3.png
new file mode 100644
index 0000000..0e03e54
Binary files /dev/null and b/resources/effects/parry/ParrySparkAccurate3.png differ
diff --git a/resources/effects/parry/ParrySparkAccurate3.png.import b/resources/effects/parry/ParrySparkAccurate3.png.import
new file mode 100644
index 0000000..eebd9e1
--- /dev/null
+++ b/resources/effects/parry/ParrySparkAccurate3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cu72mlaga1ge4"
+path="res://.godot/imported/ParrySparkAccurate3.png-74ee09ea690439898732383397c583c9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parry/ParrySparkAccurate3.png"
+dest_files=["res://.godot/imported/ParrySparkAccurate3.png-74ee09ea690439898732383397c583c9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parry/ParrySparkAccurate4.png b/resources/effects/parry/ParrySparkAccurate4.png
new file mode 100644
index 0000000..c8c9503
Binary files /dev/null and b/resources/effects/parry/ParrySparkAccurate4.png differ
diff --git a/resources/effects/parry/ParrySparkAccurate4.png.import b/resources/effects/parry/ParrySparkAccurate4.png.import
new file mode 100644
index 0000000..359e6cb
--- /dev/null
+++ b/resources/effects/parry/ParrySparkAccurate4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://25kjjcrbbm70"
+path="res://.godot/imported/ParrySparkAccurate4.png-565cf3bd289c1f96c18588b07462bb98.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parry/ParrySparkAccurate4.png"
+dest_files=["res://.godot/imported/ParrySparkAccurate4.png-565cf3bd289c1f96c18588b07462bb98.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parry/ParrySparkAccurate5.png b/resources/effects/parry/ParrySparkAccurate5.png
new file mode 100644
index 0000000..41c62aa
Binary files /dev/null and b/resources/effects/parry/ParrySparkAccurate5.png differ
diff --git a/resources/effects/parry/ParrySparkAccurate5.png.import b/resources/effects/parry/ParrySparkAccurate5.png.import
new file mode 100644
index 0000000..359382a
--- /dev/null
+++ b/resources/effects/parry/ParrySparkAccurate5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://2jjv833hjn0o"
+path="res://.godot/imported/ParrySparkAccurate5.png-db33aa4626e521c2e26f6d4cf3759cf1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parry/ParrySparkAccurate5.png"
+dest_files=["res://.godot/imported/ParrySparkAccurate5.png-db33aa4626e521c2e26f6d4cf3759cf1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/parry/ParrySparkAccurate6.png b/resources/effects/parry/ParrySparkAccurate6.png
new file mode 100644
index 0000000..1a916b3
Binary files /dev/null and b/resources/effects/parry/ParrySparkAccurate6.png differ
diff --git a/resources/effects/parry/ParrySparkAccurate6.png.import b/resources/effects/parry/ParrySparkAccurate6.png.import
new file mode 100644
index 0000000..92db16c
--- /dev/null
+++ b/resources/effects/parry/ParrySparkAccurate6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cvommbyvqfp1p"
+path="res://.godot/imported/ParrySparkAccurate6.png-b609105dc304f47559927061a96abf3c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/parry/ParrySparkAccurate6.png"
+dest_files=["res://.godot/imported/ParrySparkAccurate6.png-b609105dc304f47559927061a96abf3c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/star4/Effect_Danger0.png b/resources/effects/star4/Effect_Danger0.png
new file mode 100644
index 0000000..5fd367d
Binary files /dev/null and b/resources/effects/star4/Effect_Danger0.png differ
diff --git a/resources/effects/star4/Effect_Danger0.png.import b/resources/effects/star4/Effect_Danger0.png.import
new file mode 100644
index 0000000..1233e65
--- /dev/null
+++ b/resources/effects/star4/Effect_Danger0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dvgykwd8doqad"
+path="res://.godot/imported/Effect_Danger0.png-47abbd13743f9bf4d0e274f6ef662480.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/star4/Effect_Danger0.png"
+dest_files=["res://.godot/imported/Effect_Danger0.png-47abbd13743f9bf4d0e274f6ef662480.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/star4/Effect_Danger1.png b/resources/effects/star4/Effect_Danger1.png
new file mode 100644
index 0000000..6bb27c4
Binary files /dev/null and b/resources/effects/star4/Effect_Danger1.png differ
diff --git a/resources/effects/star4/Effect_Danger1.png.import b/resources/effects/star4/Effect_Danger1.png.import
new file mode 100644
index 0000000..0dffbda
--- /dev/null
+++ b/resources/effects/star4/Effect_Danger1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ww2v4a6iucv3"
+path="res://.godot/imported/Effect_Danger1.png-d0194162d1815ef12fec9663e833180e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/star4/Effect_Danger1.png"
+dest_files=["res://.godot/imported/Effect_Danger1.png-d0194162d1815ef12fec9663e833180e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/star4/Effect_Danger2.png b/resources/effects/star4/Effect_Danger2.png
new file mode 100644
index 0000000..8c46ea5
Binary files /dev/null and b/resources/effects/star4/Effect_Danger2.png differ
diff --git a/resources/effects/star4/Effect_Danger2.png.import b/resources/effects/star4/Effect_Danger2.png.import
new file mode 100644
index 0000000..05184e0
--- /dev/null
+++ b/resources/effects/star4/Effect_Danger2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bi818isgqxuek"
+path="res://.godot/imported/Effect_Danger2.png-2a7963a2fe20c31fda2062a6e1272ea1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/star4/Effect_Danger2.png"
+dest_files=["res://.godot/imported/Effect_Danger2.png-2a7963a2fe20c31fda2062a6e1272ea1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/star4/Effect_Danger3.png b/resources/effects/star4/Effect_Danger3.png
new file mode 100644
index 0000000..465207b
Binary files /dev/null and b/resources/effects/star4/Effect_Danger3.png differ
diff --git a/resources/effects/star4/Effect_Danger3.png.import b/resources/effects/star4/Effect_Danger3.png.import
new file mode 100644
index 0000000..6d26004
--- /dev/null
+++ b/resources/effects/star4/Effect_Danger3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ba7q3mq6rxjxy"
+path="res://.godot/imported/Effect_Danger3.png-c2a85eb56a570ee7e1c9b226cc52c10c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/star4/Effect_Danger3.png"
+dest_files=["res://.godot/imported/Effect_Danger3.png-c2a85eb56a570ee7e1c9b226cc52c10c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/star4/Effect_Danger4.png b/resources/effects/star4/Effect_Danger4.png
new file mode 100644
index 0000000..d85d819
Binary files /dev/null and b/resources/effects/star4/Effect_Danger4.png differ
diff --git a/resources/effects/star4/Effect_Danger4.png.import b/resources/effects/star4/Effect_Danger4.png.import
new file mode 100644
index 0000000..5db8f7a
--- /dev/null
+++ b/resources/effects/star4/Effect_Danger4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c7i5eeffpeoxb"
+path="res://.godot/imported/Effect_Danger4.png-1ceb678a4c044e40d261df39036ae076.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/star4/Effect_Danger4.png"
+dest_files=["res://.godot/imported/Effect_Danger4.png-1ceb678a4c044e40d261df39036ae076.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/effects/star4/Effect_Danger5.png b/resources/effects/star4/Effect_Danger5.png
new file mode 100644
index 0000000..53a582e
Binary files /dev/null and b/resources/effects/star4/Effect_Danger5.png differ
diff --git a/resources/effects/star4/Effect_Danger5.png.import b/resources/effects/star4/Effect_Danger5.png.import
new file mode 100644
index 0000000..1c6f1ab
--- /dev/null
+++ b/resources/effects/star4/Effect_Danger5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://susqpw4ttmd1"
+path="res://.godot/imported/Effect_Danger5.png-547c9754cce788bd1b934775f2ec30aa.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/effects/star4/Effect_Danger5.png"
+dest_files=["res://.godot/imported/Effect_Danger5.png-547c9754cce788bd1b934775f2ec30aa.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/feeds/Fishing_Rod_JE2_BE2.png b/resources/feeds/Fishing_Rod_JE2_BE2.png
new file mode 100644
index 0000000..920b74e
Binary files /dev/null and b/resources/feeds/Fishing_Rod_JE2_BE2.png differ
diff --git a/resources/feeds/Fishing_Rod_JE2_BE2.png.import b/resources/feeds/Fishing_Rod_JE2_BE2.png.import
new file mode 100644
index 0000000..2307fcd
--- /dev/null
+++ b/resources/feeds/Fishing_Rod_JE2_BE2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dyump10b0et3r"
+path="res://.godot/imported/Fishing_Rod_JE2_BE2.png-7c35ff338bc05c54da115fc7f24fc7bd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/feeds/Fishing_Rod_JE2_BE2.png"
+dest_files=["res://.godot/imported/Fishing_Rod_JE2_BE2.png-7c35ff338bc05c54da115fc7f24fc7bd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/feeds/apple.png b/resources/feeds/apple.png
new file mode 100644
index 0000000..94cb3bc
Binary files /dev/null and b/resources/feeds/apple.png differ
diff --git a/resources/feeds/apple.png.import b/resources/feeds/apple.png.import
new file mode 100644
index 0000000..c73cb1d
--- /dev/null
+++ b/resources/feeds/apple.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c2q4cf4ivu7o7"
+path="res://.godot/imported/apple.png-2855ac6ec79b5c6e6266ca7d4bcbbc5e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/feeds/apple.png"
+dest_files=["res://.godot/imported/apple.png-2855ac6ec79b5c6e6266ca7d4bcbbc5e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/feeds/burger.png b/resources/feeds/burger.png
new file mode 100644
index 0000000..c2fd983
Binary files /dev/null and b/resources/feeds/burger.png differ
diff --git a/resources/feeds/burger.png.import b/resources/feeds/burger.png.import
new file mode 100644
index 0000000..5b6260a
--- /dev/null
+++ b/resources/feeds/burger.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dl616p8cdejlj"
+path="res://.godot/imported/burger.png-42b50cedfee8e245dff409fdfc7daa8b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/feeds/burger.png"
+dest_files=["res://.godot/imported/burger.png-42b50cedfee8e245dff409fdfc7daa8b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/feeds/danta.png b/resources/feeds/danta.png
new file mode 100644
index 0000000..2f32dd8
Binary files /dev/null and b/resources/feeds/danta.png differ
diff --git a/resources/feeds/danta.png.import b/resources/feeds/danta.png.import
new file mode 100644
index 0000000..17aba04
--- /dev/null
+++ b/resources/feeds/danta.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://v7k8yaxjesao"
+path="res://.godot/imported/danta.png-09fab7a3155918ef8d25e2e8e92f8563.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/feeds/danta.png"
+dest_files=["res://.godot/imported/danta.png-09fab7a3155918ef8d25e2e8e92f8563.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/feeds/date-cake.png b/resources/feeds/date-cake.png
new file mode 100644
index 0000000..8321ddd
Binary files /dev/null and b/resources/feeds/date-cake.png differ
diff --git a/resources/feeds/date-cake.png.import b/resources/feeds/date-cake.png.import
new file mode 100644
index 0000000..f39e241
--- /dev/null
+++ b/resources/feeds/date-cake.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://6omf2so5me3x"
+path="res://.godot/imported/date-cake.png-e0c9ff61b62b56014b3f6b5d0e64b706.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/feeds/date-cake.png"
+dest_files=["res://.godot/imported/date-cake.png-e0c9ff61b62b56014b3f6b5d0e64b706.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/feeds/drink.png b/resources/feeds/drink.png
new file mode 100644
index 0000000..83f7a34
Binary files /dev/null and b/resources/feeds/drink.png differ
diff --git a/resources/feeds/drink.png.import b/resources/feeds/drink.png.import
new file mode 100644
index 0000000..ebb71d8
--- /dev/null
+++ b/resources/feeds/drink.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bdktxcifueq2w"
+path="res://.godot/imported/drink.png-a864b5534bea1c011c5a5b481aeb0e08.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/feeds/drink.png"
+dest_files=["res://.godot/imported/drink.png-a864b5534bea1c011c5a5b481aeb0e08.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/feeds/shrimp.png b/resources/feeds/shrimp.png
new file mode 100644
index 0000000..16c5d40
Binary files /dev/null and b/resources/feeds/shrimp.png differ
diff --git a/resources/feeds/shrimp.png.import b/resources/feeds/shrimp.png.import
new file mode 100644
index 0000000..1b061f8
--- /dev/null
+++ b/resources/feeds/shrimp.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://v33tg3kjo1pr"
+path="res://.godot/imported/shrimp.png-7a2416f4254c0cab79714a1408042270.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/feeds/shrimp.png"
+dest_files=["res://.godot/imported/shrimp.png-7a2416f4254c0cab79714a1408042270.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/feeds/yinyang.png b/resources/feeds/yinyang.png
new file mode 100644
index 0000000..bbcf7a2
Binary files /dev/null and b/resources/feeds/yinyang.png differ
diff --git a/resources/feeds/yinyang.png.import b/resources/feeds/yinyang.png.import
new file mode 100644
index 0000000..ad5e1b9
--- /dev/null
+++ b/resources/feeds/yinyang.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c2ee1nkl8da64"
+path="res://.godot/imported/yinyang.png-4d7cdae92076fda0f805c935ea9aa271.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/feeds/yinyang.png"
+dest_files=["res://.godot/imported/yinyang.png-4d7cdae92076fda0f805c935ea9aa271.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/sounds/effect/Flash1.ogg b/resources/sounds/effect/Flash1.ogg
new file mode 100644
index 0000000..35145b0
Binary files /dev/null and b/resources/sounds/effect/Flash1.ogg differ
diff --git a/resources/sounds/effect/Flash1.ogg.import b/resources/sounds/effect/Flash1.ogg.import
new file mode 100644
index 0000000..25f1a81
--- /dev/null
+++ b/resources/sounds/effect/Flash1.ogg.import
@@ -0,0 +1,19 @@
+[remap]
+
+importer="oggvorbisstr"
+type="AudioStreamOggVorbis"
+uid="uid://b3jn85pkl143b"
+path="res://.godot/imported/Flash1.ogg-e46ded84fe03488a5cc1f158a52d4bdf.oggvorbisstr"
+
+[deps]
+
+source_file="res://resources/sounds/effect/Flash1.ogg"
+dest_files=["res://.godot/imported/Flash1.ogg-e46ded84fe03488a5cc1f158a52d4bdf.oggvorbisstr"]
+
+[params]
+
+loop=false
+loop_offset=0
+bpm=0
+beat_count=0
+bar_beats=4
diff --git a/resources/sounds/effect/Flash2.ogg b/resources/sounds/effect/Flash2.ogg
new file mode 100644
index 0000000..cfd323e
Binary files /dev/null and b/resources/sounds/effect/Flash2.ogg differ
diff --git a/resources/sounds/effect/Flash2.ogg.import b/resources/sounds/effect/Flash2.ogg.import
new file mode 100644
index 0000000..233d601
--- /dev/null
+++ b/resources/sounds/effect/Flash2.ogg.import
@@ -0,0 +1,19 @@
+[remap]
+
+importer="oggvorbisstr"
+type="AudioStreamOggVorbis"
+uid="uid://g2j01jf3kap8"
+path="res://.godot/imported/Flash2.ogg-706568fe0fdd4d16ca7418b806a2c254.oggvorbisstr"
+
+[deps]
+
+source_file="res://resources/sounds/effect/Flash2.ogg"
+dest_files=["res://.godot/imported/Flash2.ogg-706568fe0fdd4d16ca7418b806a2c254.oggvorbisstr"]
+
+[params]
+
+loop=false
+loop_offset=0
+bpm=0
+beat_count=0
+bar_beats=4
diff --git a/resources/sounds/effect/Low Squeak.wav b/resources/sounds/effect/Low Squeak.wav
new file mode 100644
index 0000000..362a8fd
Binary files /dev/null and b/resources/sounds/effect/Low Squeak.wav differ
diff --git a/resources/sounds/effect/Low Squeak.wav.import b/resources/sounds/effect/Low Squeak.wav.import
new file mode 100644
index 0000000..72982a6
--- /dev/null
+++ b/resources/sounds/effect/Low Squeak.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dfn8gusfga5m0"
+path="res://.godot/imported/Low Squeak.wav-332cc0edb9200255d263350379684613.sample"
+
+[deps]
+
+source_file="res://resources/sounds/effect/Low Squeak.wav"
+dest_files=["res://.godot/imported/Low Squeak.wav-332cc0edb9200255d263350379684613.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/resources/sounds/effect/baozha.mp3 b/resources/sounds/effect/baozha.mp3
new file mode 100644
index 0000000..18e03c0
Binary files /dev/null and b/resources/sounds/effect/baozha.mp3 differ
diff --git a/resources/sounds/effect/baozha.mp3.import b/resources/sounds/effect/baozha.mp3.import
new file mode 100644
index 0000000..9ed19ae
--- /dev/null
+++ b/resources/sounds/effect/baozha.mp3.import
@@ -0,0 +1,19 @@
+[remap]
+
+importer="mp3"
+type="AudioStreamMP3"
+uid="uid://dkm4rld5hsevd"
+path="res://.godot/imported/baozha.mp3-eb2f30dce98ee91c482d7e0c754d12a4.mp3str"
+
+[deps]
+
+source_file="res://resources/sounds/effect/baozha.mp3"
+dest_files=["res://.godot/imported/baozha.mp3-eb2f30dce98ee91c482d7e0c754d12a4.mp3str"]
+
+[params]
+
+loop=false
+loop_offset=0
+bpm=0
+beat_count=0
+bar_beats=4
diff --git a/resources/sounds/effect/cursor.wav b/resources/sounds/effect/cursor.wav
new file mode 100644
index 0000000..183147b
Binary files /dev/null and b/resources/sounds/effect/cursor.wav differ
diff --git a/resources/sounds/effect/cursor.wav.import b/resources/sounds/effect/cursor.wav.import
new file mode 100644
index 0000000..b451cc8
--- /dev/null
+++ b/resources/sounds/effect/cursor.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://b3y226i1875iq"
+path="res://.godot/imported/cursor.wav-621252c6cad81c118a19e5bc00f6ef62.sample"
+
+[deps]
+
+source_file="res://resources/sounds/effect/cursor.wav"
+dest_files=["res://.godot/imported/cursor.wav-621252c6cad81c118a19e5bc00f6ef62.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/resources/sounds/effect/fireshot.mp3 b/resources/sounds/effect/fireshot.mp3
new file mode 100644
index 0000000..4b3f962
Binary files /dev/null and b/resources/sounds/effect/fireshot.mp3 differ
diff --git a/resources/sounds/effect/fireshot.mp3.import b/resources/sounds/effect/fireshot.mp3.import
new file mode 100644
index 0000000..ff193c0
--- /dev/null
+++ b/resources/sounds/effect/fireshot.mp3.import
@@ -0,0 +1,19 @@
+[remap]
+
+importer="mp3"
+type="AudioStreamMP3"
+uid="uid://b0emg4tbjpl1l"
+path="res://.godot/imported/fireshot.mp3-524623288bedd020cdc089501c081040.mp3str"
+
+[deps]
+
+source_file="res://resources/sounds/effect/fireshot.mp3"
+dest_files=["res://.godot/imported/fireshot.mp3-524623288bedd020cdc089501c081040.mp3str"]
+
+[params]
+
+loop=false
+loop_offset=0
+bpm=0
+beat_count=0
+bar_beats=4
diff --git a/resources/sounds/effect/kuaizi.mp3 b/resources/sounds/effect/kuaizi.mp3
new file mode 100644
index 0000000..69cf18b
Binary files /dev/null and b/resources/sounds/effect/kuaizi.mp3 differ
diff --git a/resources/sounds/effect/kuaizi.mp3.import b/resources/sounds/effect/kuaizi.mp3.import
new file mode 100644
index 0000000..46a4a75
--- /dev/null
+++ b/resources/sounds/effect/kuaizi.mp3.import
@@ -0,0 +1,19 @@
+[remap]
+
+importer="mp3"
+type="AudioStreamMP3"
+uid="uid://cmyq248jgd6kj"
+path="res://.godot/imported/kuaizi.mp3-4067c01afde7dcc44c9d3255ec893ecc.mp3str"
+
+[deps]
+
+source_file="res://resources/sounds/effect/kuaizi.mp3"
+dest_files=["res://.godot/imported/kuaizi.mp3-4067c01afde7dcc44c9d3255ec893ecc.mp3str"]
+
+[params]
+
+loop=false
+loop_offset=0
+bpm=0
+beat_count=0
+bar_beats=4
diff --git a/resources/sounds/effect/sddl.wav b/resources/sounds/effect/sddl.wav
new file mode 100644
index 0000000..c023053
Binary files /dev/null and b/resources/sounds/effect/sddl.wav differ
diff --git a/resources/sounds/effect/sddl.wav.import b/resources/sounds/effect/sddl.wav.import
new file mode 100644
index 0000000..5e5ca57
--- /dev/null
+++ b/resources/sounds/effect/sddl.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://b5tswrcvrd3js"
+path="res://.godot/imported/sddl.wav-8fa1e14d07753ba380d691c1f3ea590c.sample"
+
+[deps]
+
+source_file="res://resources/sounds/effect/sddl.wav"
+dest_files=["res://.godot/imported/sddl.wav-8fa1e14d07753ba380d691c1f3ea590c.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/resources/sounds/effect/swordhit.ogg b/resources/sounds/effect/swordhit.ogg
new file mode 100644
index 0000000..d919b98
Binary files /dev/null and b/resources/sounds/effect/swordhit.ogg differ
diff --git a/resources/sounds/effect/swordhit.ogg.import b/resources/sounds/effect/swordhit.ogg.import
new file mode 100644
index 0000000..6ff6041
--- /dev/null
+++ b/resources/sounds/effect/swordhit.ogg.import
@@ -0,0 +1,19 @@
+[remap]
+
+importer="oggvorbisstr"
+type="AudioStreamOggVorbis"
+uid="uid://caxopva6lrlm3"
+path="res://.godot/imported/swordhit.ogg-452eb737e873d4959f53db98c7884f44.oggvorbisstr"
+
+[deps]
+
+source_file="res://resources/sounds/effect/swordhit.ogg"
+dest_files=["res://.godot/imported/swordhit.ogg-452eb737e873d4959f53db98c7884f44.oggvorbisstr"]
+
+[params]
+
+loop=false
+loop_offset=0
+bpm=0
+beat_count=0
+bar_beats=4
diff --git a/resources/sounds/effect/xiangkan.wav b/resources/sounds/effect/xiangkan.wav
new file mode 100644
index 0000000..aff5873
Binary files /dev/null and b/resources/sounds/effect/xiangkan.wav differ
diff --git a/resources/sounds/effect/xiangkan.wav.import b/resources/sounds/effect/xiangkan.wav.import
new file mode 100644
index 0000000..bb9c958
--- /dev/null
+++ b/resources/sounds/effect/xiangkan.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://lwsltsv0tk0t"
+path="res://.godot/imported/xiangkan.wav-5f54c2287f9a2499d18a3312aa54b2b8.sample"
+
+[deps]
+
+source_file="res://resources/sounds/effect/xiangkan.wav"
+dest_files=["res://.godot/imported/xiangkan.wav-5f54c2287f9a2499d18a3312aa54b2b8.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/resources/weapons/CursorKnife.png b/resources/weapons/CursorKnife.png
new file mode 100644
index 0000000..f2a88c8
Binary files /dev/null and b/resources/weapons/CursorKnife.png differ
diff --git a/resources/weapons/CursorKnife.png.import b/resources/weapons/CursorKnife.png.import
new file mode 100644
index 0000000..962d9e4
--- /dev/null
+++ b/resources/weapons/CursorKnife.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://blnryfwabfo5v"
+path="res://.godot/imported/CursorKnife.png-2dfd5e8e0a16b5dd3b92a8b02149823a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/weapons/CursorKnife.png"
+dest_files=["res://.godot/imported/CursorKnife.png-2dfd5e8e0a16b5dd3b92a8b02149823a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/weapons/ParryCounter.png b/resources/weapons/ParryCounter.png
new file mode 100644
index 0000000..706f7ed
Binary files /dev/null and b/resources/weapons/ParryCounter.png differ
diff --git a/resources/weapons/ParryCounter.png.import b/resources/weapons/ParryCounter.png.import
new file mode 100644
index 0000000..d5bcfb2
--- /dev/null
+++ b/resources/weapons/ParryCounter.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://74n7umby4d4w"
+path="res://.godot/imported/ParryCounter.png-05b65344ef1eb04d0ffd824fc52e8ec1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/weapons/ParryCounter.png"
+dest_files=["res://.godot/imported/ParryCounter.png-05b65344ef1eb04d0ffd824fc52e8ec1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/weapons/Statue_Sword_Attack0.png b/resources/weapons/Statue_Sword_Attack0.png
new file mode 100644
index 0000000..865d5dc
Binary files /dev/null and b/resources/weapons/Statue_Sword_Attack0.png differ
diff --git a/resources/weapons/Statue_Sword_Attack0.png.import b/resources/weapons/Statue_Sword_Attack0.png.import
new file mode 100644
index 0000000..2d63fc6
--- /dev/null
+++ b/resources/weapons/Statue_Sword_Attack0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://gwsychqkmv21"
+path="res://.godot/imported/Statue_Sword_Attack0.png-44d8dd8893c34f910f6f91f6329ed0d0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/weapons/Statue_Sword_Attack0.png"
+dest_files=["res://.godot/imported/Statue_Sword_Attack0.png-44d8dd8893c34f910f6f91f6329ed0d0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/weapons/gravity-source.svg b/resources/weapons/gravity-source.svg
new file mode 100644
index 0000000..dac2f62
--- /dev/null
+++ b/resources/weapons/gravity-source.svg
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/resources/weapons/gravity-source.svg.import b/resources/weapons/gravity-source.svg.import
new file mode 100644
index 0000000..21a58d6
--- /dev/null
+++ b/resources/weapons/gravity-source.svg.import
@@ -0,0 +1,43 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dbbd5ljkfvof8"
+path="res://.godot/imported/gravity-source.svg-4080192372fa7c00781334c13cd9a26a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/weapons/gravity-source.svg"
+dest_files=["res://.godot/imported/gravity-source.svg-4080192372fa7c00781334c13cd9a26a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/resources/weapons/hetun.png b/resources/weapons/hetun.png
new file mode 100644
index 0000000..7491b02
Binary files /dev/null and b/resources/weapons/hetun.png differ
diff --git a/resources/weapons/hetun.png.import b/resources/weapons/hetun.png.import
new file mode 100644
index 0000000..ecd17d2
--- /dev/null
+++ b/resources/weapons/hetun.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c1xrf8255jafi"
+path="res://.godot/imported/hetun.png-d33a239147dba03814e779bbbde3d40e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/weapons/hetun.png"
+dest_files=["res://.godot/imported/hetun.png-d33a239147dba03814e779bbbde3d40e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/weapons/magic-missle.webp b/resources/weapons/magic-missle.webp
new file mode 100644
index 0000000..289d9d3
Binary files /dev/null and b/resources/weapons/magic-missle.webp differ
diff --git a/resources/weapons/magic-missle.webp.import b/resources/weapons/magic-missle.webp.import
new file mode 100644
index 0000000..9ca3efe
--- /dev/null
+++ b/resources/weapons/magic-missle.webp.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dce1da2qm24pb"
+path="res://.godot/imported/magic-missle.webp-4fe3be22492a8f3966ae93e74a2a5e34.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/weapons/magic-missle.webp"
+dest_files=["res://.godot/imported/magic-missle.webp-4fe3be22492a8f3966ae93e74a2a5e34.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/scripts/Contents/AIPresets/Bullet.gd b/scripts/Contents/AIPresets/Bullet.gd
index 5c3466f..8bf9569 100644
--- a/scripts/Contents/AIPresets/Bullet.gd
+++ b/scripts/Contents/AIPresets/Bullet.gd
@@ -15,7 +15,8 @@ static func trace(bullet: BulletBase, target: Vector2, speed: float):
)
static func faceToMouse(bullet: BulletBase):
bullet.rotation = bullet.position.angle_to_point(bullet.get_global_mouse_position())
-static func selfRotate(bullet: BulletBase, speed: float):
- bullet.rotation += deg_to_rad(speed)
+static func selfRotate(bullet: BulletBase, speed: float, justTexture: bool = false):
+ var target: Node2D = bullet.texture as Node2D if justTexture else bullet as Node2D
+ target.rotation += deg_to_rad(speed)
static func lerpPosition(bullet: BulletBase, target: Vector2, speed: float):
bullet.position = bullet.position.lerp(target, speed)
diff --git a/scripts/Contents/Bullets/AcidBulletBase.gd b/scripts/Contents/Bullets/AcidBulletBase.gd
index b9dd8f2..950b323 100644
--- a/scripts/Contents/Bullets/AcidBulletBase.gd
+++ b/scripts/Contents/Bullets/AcidBulletBase.gd
@@ -2,8 +2,8 @@ extends BulletBase
class_name AcidBulletBase
enum AcidType {
- STRONG,
- WEAK,
+ STRONG,
+ WEAK,
}
@export var acidType: AcidType = AcidType.STRONG
@@ -11,7 +11,15 @@ var arg1 = 0
var arg2 = 0
var arg3 = 0
+var randomPercent: float = 0
+var storm: Node2D = null
+
func register():
- scale.y *= MathTool.randomChoiceFrom([-1, 1])
+ scale.y *= MathTool.randomChoiceFrom([-1, 1])
+ randomPercent = randf_range(0, 1)
func ai():
- PresetBulletAI.forward(self, rotation)
+ if is_instance_valid(storm):
+ position = storm.position + Vector2.from_angle(deg_to_rad((lifeTimePercent() + randomPercent) * 360)) * 150 * (1 - lifeTimePercent())
+ rotation = storm.position.angle_to_point(position) + deg_to_rad(90)
+ else:
+ PresetBulletAI.forward(self , rotation)
diff --git a/scripts/Contents/Bullets/AcidC.gd b/scripts/Contents/Bullets/AcidC.gd
index 14de7d6..06edfce 100644
--- a/scripts/Contents/Bullets/AcidC.gd
+++ b/scripts/Contents/Bullets/AcidC.gd
@@ -1,10 +1,8 @@
extends AcidBulletBase
class_name AcidC
-func ai():
- super.ai()
- scale *= 1.01
- modulate.a = 1 - timeLived() / lifeTime
+func succeedToHit(_dmg: float, entity: EntityBase):
+ entity.fields[FieldStore.Entity.DAMAGE_MULTIPILER] = clamp(entity.fields[FieldStore.Entity.DAMAGE_MULTIPILER] - arg1, 0.2, INF)
func split(newBullet: BulletBase, _index: int, _total: int, _lastBullet: float):
- newBullet.scale = scale.sign()
- return newBullet
+ newBullet.scale = scale.sign()
+ return newBullet
diff --git a/scripts/Contents/Bullets/AcidN.gd b/scripts/Contents/Bullets/AcidN.gd
index 80ccb25..9f7ff27 100644
--- a/scripts/Contents/Bullets/AcidN.gd
+++ b/scripts/Contents/Bullets/AcidN.gd
@@ -2,4 +2,4 @@ extends AcidBulletBase
class_name AcidN
func succeedToHit(_dmg: float, entity: EntityBase):
- entity.takeDamage(arg1)
+ entity.takeDamage(baseDamage * arg1)
diff --git a/scripts/Contents/Bullets/AcidP.gd b/scripts/Contents/Bullets/AcidP.gd
index 398c0bc..49e73c2 100644
--- a/scripts/Contents/Bullets/AcidP.gd
+++ b/scripts/Contents/Bullets/AcidP.gd
@@ -3,7 +3,3 @@ class_name AcidP
func succeedToHit(_dmg: float, entity: EntityBase):
entity.fields[FieldStore.Entity.OFFSET_SHOOT] = clamp(entity.fields[FieldStore.Entity.OFFSET_SHOOT] + arg1, 0, INF)
-func ai():
- super.ai()
- if is_instance_valid(arg2):
- PresetBulletAI.trace(self, arg2.position, 0.01)
diff --git a/scripts/Contents/Bullets/AcidStorm.gd b/scripts/Contents/Bullets/AcidStorm.gd
new file mode 100644
index 0000000..b4efce1
--- /dev/null
+++ b/scripts/Contents/Bullets/AcidStorm.gd
@@ -0,0 +1,45 @@
+extends BulletBase
+class_name AcidStormBullet
+
+var acids: Array[String] = ["AcidS", "AcidN", "AcidCl", "AcidP", "AcidC"]
+
+var strongAtk: float = 0
+var weakAtk: float = 0
+var sCountMax: int = 0
+var nAtk: float = 0
+var clSpeed: float = 0
+var clAtkSpeed: float = 0
+var cAtk: float = 0
+var pOffset: float = 0
+var f: float = 0
+
+func ai():
+ PresetBulletAI.forward(self , rotation)
+func applyDot():
+ var acid = MathTool.randomChoiceFrom(acids)
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet(acid),
+ launcher,
+ position,
+ 0,
+ ):
+ if bullet is AcidBulletBase:
+ bullet.storm = self
+ if bullet.acidType == AcidBulletBase.AcidType.STRONG:
+ bullet.baseDamage = strongAtk
+ else:
+ bullet.baseDamage = weakAtk
+ if bullet is AcidS:
+ bullet.arg1 = sCountMax
+ if bullet is AcidN:
+ bullet.arg1 = nAtk
+ if bullet is AcidCl:
+ bullet.arg1 = clSpeed
+ bullet.arg2 = clAtkSpeed
+ if bullet is AcidP:
+ bullet.arg1 = pOffset
+ bullet.arg2 = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !launcher.isPlayer(), launcher.isPlayer())
+ if bullet is AcidC:
+ bullet.arg1 = cAtk
+ await TickTool.millseconds(1000.0 / f)
+ return true
diff --git a/scripts/Contents/Bullets/AcidStorm.gd.uid b/scripts/Contents/Bullets/AcidStorm.gd.uid
new file mode 100644
index 0000000..c131493
--- /dev/null
+++ b/scripts/Contents/Bullets/AcidStorm.gd.uid
@@ -0,0 +1 @@
+uid://dl7d0v7f2uute
diff --git a/scripts/Contents/Bullets/Bengbeng.gd b/scripts/Contents/Bullets/Bengbeng.gd
new file mode 100644
index 0000000..67d9bf4
--- /dev/null
+++ b/scripts/Contents/Bullets/Bengbeng.gd
@@ -0,0 +1,12 @@
+extends BulletBase
+class_name BengbengBullet
+
+func spawn():
+ hitbox.disabled = true
+func ai():
+ texture.global_rotation = 0
+ PresetBulletAI.forward(self , position.angle_to_point(launcher.currentFocusedBoss.position))
+ if is_instance_valid(launcher.currentFocusedBoss):
+ if launcher.currentFocusedBoss.position.distance_to(position) < 125 && hitbox.disabled:
+ EffectController.create(ComponentManager.getEffect("NuclearExplosion"), position).shot()
+ hitbox.disabled = false
diff --git a/scripts/Contents/Bullets/Bengbeng.gd.uid b/scripts/Contents/Bullets/Bengbeng.gd.uid
new file mode 100644
index 0000000..b684134
--- /dev/null
+++ b/scripts/Contents/Bullets/Bengbeng.gd.uid
@@ -0,0 +1 @@
+uid://ddgydi8qj3t40
diff --git a/scripts/Contents/Bullets/BlockWall.gd b/scripts/Contents/Bullets/BlockWall.gd
new file mode 100644
index 0000000..446e74f
--- /dev/null
+++ b/scripts/Contents/Bullets/BlockWall.gd
@@ -0,0 +1,5 @@
+extends BulletBase
+class_name BlockWallBullet
+
+func succeedToHit(_dmg: float, entity: EntityBase):
+ entity.impluse(Vector2.from_angle(rotation) * 1000)
diff --git a/scripts/Contents/Bullets/BlockWall.gd.uid b/scripts/Contents/Bullets/BlockWall.gd.uid
new file mode 100644
index 0000000..de90e85
--- /dev/null
+++ b/scripts/Contents/Bullets/BlockWall.gd.uid
@@ -0,0 +1 @@
+uid://b6bkhv8nc1ao3
diff --git a/scripts/Contents/Bullets/Cement.gd b/scripts/Contents/Bullets/Cement.gd
new file mode 100644
index 0000000..f060256
--- /dev/null
+++ b/scripts/Contents/Bullets/Cement.gd
@@ -0,0 +1,11 @@
+extends BulletBase
+class_name CementBullet
+
+func succeedToHit(_dmg: float, _entity: EntityBase):
+ for i in 3:
+ BulletBase.generate(ComponentManager.getBullet("Kuaizi"), launcher, position + MathTool.sampleInCircle(50), deg_to_rad(90) + deg_to_rad(randf_range(-1, 1) * 10))
+ await TickTool.millseconds(200)
+ await TickTool.millseconds(1000)
+ tryDestroy()
+func ai():
+ PresetBulletAI.forward(self , rotation)
diff --git a/scripts/Contents/Bullets/Cement.gd.uid b/scripts/Contents/Bullets/Cement.gd.uid
new file mode 100644
index 0000000..bb6ee18
--- /dev/null
+++ b/scripts/Contents/Bullets/Cement.gd.uid
@@ -0,0 +1 @@
+uid://c1yuakupcia1u
diff --git a/scripts/Contents/Bullets/CursorKnife.gd b/scripts/Contents/Bullets/CursorKnife.gd
new file mode 100644
index 0000000..0f11fb8
--- /dev/null
+++ b/scripts/Contents/Bullets/CursorKnife.gd
@@ -0,0 +1,7 @@
+extends BulletBase
+class_name CursorKnifeBullet
+
+func ai():
+ PresetBulletAI.forward(self , rotation)
+func succeedToHit(_dmg: float, entity: EntityBase):
+ entity.impluse(Vector2.from_angle(rotation) * 250)
diff --git a/scripts/Contents/Bullets/CursorKnife.gd.uid b/scripts/Contents/Bullets/CursorKnife.gd.uid
new file mode 100644
index 0000000..b5104cc
--- /dev/null
+++ b/scripts/Contents/Bullets/CursorKnife.gd.uid
@@ -0,0 +1 @@
+uid://c337id4kvvj58
diff --git a/scripts/Contents/Bullets/Diamond.gd b/scripts/Contents/Bullets/Diamond.gd
index 4e0e2ad..ea35ac5 100644
--- a/scripts/Contents/Bullets/Diamond.gd
+++ b/scripts/Contents/Bullets/Diamond.gd
@@ -4,6 +4,6 @@ class_name Diamond
const traceTime = 1500
func ai():
- PresetBulletAI.forward(self, rotation)
- if timeLived() < traceTime:
- PresetBulletAI.trace(self, launcher.currentFocusedBoss.getTrackingAnchor(), 0.05)
+ PresetBulletAI.forward(self , rotation)
+ if timeLived() < traceTime && is_instance_valid(launcher.currentFocusedBoss):
+ PresetBulletAI.trace(self , launcher.currentFocusedBoss.getTrackingAnchor(), 0.05)
diff --git a/scripts/Contents/Bullets/Egg.gd b/scripts/Contents/Bullets/Egg.gd
new file mode 100644
index 0000000..2defa6e
--- /dev/null
+++ b/scripts/Contents/Bullets/Egg.gd
@@ -0,0 +1,6 @@
+extends BulletBase
+class_name EggBullet
+
+func ai():
+ speed += 0.25
+ PresetBulletAI.forward(self , rotation)
diff --git a/scripts/Contents/Bullets/Egg.gd.uid b/scripts/Contents/Bullets/Egg.gd.uid
new file mode 100644
index 0000000..6c59ee8
--- /dev/null
+++ b/scripts/Contents/Bullets/Egg.gd.uid
@@ -0,0 +1 @@
+uid://cyaq3u5iu08uo
diff --git a/scripts/Contents/Bullets/InfinitySword.gd b/scripts/Contents/Bullets/InfinitySword.gd
new file mode 100644
index 0000000..61345b2
--- /dev/null
+++ b/scripts/Contents/Bullets/InfinitySword.gd
@@ -0,0 +1,17 @@
+extends BulletBase
+class_name InfinitySwordBullet
+
+var implused: Array[EntityBase] = []
+
+func spawn():
+ CameraManager.shake(2000, 100)
+func ai():
+ PresetBulletAI.forward(self , rotation)
+func succeedToHit(_dmg: float, entity: EntityBase):
+ if implused.has(entity): return
+ else:
+ implused.append(entity)
+ entity.impluse(Vector2.from_angle(rotation) * 1500)
+ var eff = EffectController.create(ComponentManager.getEffect("ShootBlood"), entity.position)
+ eff.particles.hide()
+ eff.shot()
diff --git a/scripts/Contents/Bullets/InfinitySword.gd.uid b/scripts/Contents/Bullets/InfinitySword.gd.uid
new file mode 100644
index 0000000..fa5435d
--- /dev/null
+++ b/scripts/Contents/Bullets/InfinitySword.gd.uid
@@ -0,0 +1 @@
+uid://b7vswg8ju8a0u
diff --git a/scripts/Contents/Bullets/MagicMissle.gd b/scripts/Contents/Bullets/MagicMissle.gd
new file mode 100644
index 0000000..af2e658
--- /dev/null
+++ b/scripts/Contents/Bullets/MagicMissle.gd
@@ -0,0 +1,40 @@
+extends BulletBase
+class_name MagicMissleBullet
+
+var powerScale: int = 3
+var speedV2: Vector2 = Vector2.ZERO
+var accelerating: bool = true
+var roundBullets: Array[MagicMissleBullet]
+
+func ai():
+ if accelerating:
+ if roundBullets.count(self ) < 1:
+ accelerating = false
+ rotation = lerp_angle(rotation, position.angle_to_point(get_global_mouse_position()), 0.1)
+ speedV2 += (get_global_mouse_position() - position).normalized() * 1
+ elif speed < 1 || baseDamage < 1:
+ tryDestroy()
+ speedV2 *= 0.995
+ speed = speedV2.length()
+ PresetBulletAI.forward(self , speedV2.angle())
+
+func succeedToHit(_dmg: float, entity: EntityBase):
+ if !accelerating:
+ entity.takeDamage(baseDamage, true)
+ if powerScale > 0 && accelerating && roundBullets.count(self ) > 0:
+ for i in randi_range(1, powerScale):
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("MagicMissle"),
+ launcher,
+ position,
+ entity.position.angle_to_point(position) + PI + randf_range(-1, 1) * deg_to_rad(60)
+ ):
+ if bullet is MagicMissleBullet:
+ bullet.position += Vector2.from_angle(bullet.rotation) * 100
+ bullet.speedV2 += Vector2.from_angle(bullet.rotation) * 20
+ bullet.roundBullets = roundBullets
+ bullet.powerScale = powerScale - 1
+ bullet.baseDamage = baseDamage
+ roundBullets.append(bullet)
+ powerScale = 0
+ animator.play("hit")
diff --git a/scripts/Contents/Bullets/MagicMissle.gd.uid b/scripts/Contents/Bullets/MagicMissle.gd.uid
new file mode 100644
index 0000000..db49d28
--- /dev/null
+++ b/scripts/Contents/Bullets/MagicMissle.gd.uid
@@ -0,0 +1 @@
+uid://b1y8r5xrhhso
diff --git a/scripts/Contents/Bullets/Needle.gd b/scripts/Contents/Bullets/Needle.gd
new file mode 100644
index 0000000..79606ed
--- /dev/null
+++ b/scripts/Contents/Bullets/Needle.gd
@@ -0,0 +1,21 @@
+extends BulletBase
+class_name NeedleBullet
+
+var forwarding: bool = false
+
+func spawn():
+ hitbox.disabled = true
+func ai():
+ PresetBulletAI.forward(self , rotation)
+ if forwarding:
+ speed += 0.5
+ else:
+ speed -= 0.25
+ if speed <= 0:
+ forwarding = true
+ hitbox.disabled = false
+func succeedToHit(_dmg: float, entity: EntityBase):
+ var effect = EffectController.create(ComponentManager.getEffect("Dustdown"), entity.position)
+ effect.rotation = rotation
+ effect.shot()
+ rotation = Vector2.from_angle(rotation).bounce((entity.position - position).normalized()).angle()
diff --git a/scripts/Contents/Bullets/Needle.gd.uid b/scripts/Contents/Bullets/Needle.gd.uid
new file mode 100644
index 0000000..8618e74
--- /dev/null
+++ b/scripts/Contents/Bullets/Needle.gd.uid
@@ -0,0 +1 @@
+uid://whqgw065ifss
diff --git a/scripts/Contents/Bullets/NuclearBomb.gd b/scripts/Contents/Bullets/NuclearBomb.gd
index 5a02879..917ab81 100644
--- a/scripts/Contents/Bullets/NuclearBomb.gd
+++ b/scripts/Contents/Bullets/NuclearBomb.gd
@@ -13,10 +13,10 @@ func spawn():
hitbox.disabled = true
hitbox.shape.radius = radius
warnbg.size = Vector2.ONE * 2 * radius
- anchor.global_rotation = 0
func ai():
+ anchor.global_rotation = 0
speed *= 0.99
- PresetBulletAI.forward(self, rotation)
+ PresetBulletAI.forward(self , rotation)
if timeLived() > countdown:
tryDestroy()
else:
diff --git a/scripts/Contents/Bullets/OxygenFire.gd b/scripts/Contents/Bullets/OxygenFire.gd
index 1f4dffb..b760008 100644
--- a/scripts/Contents/Bullets/OxygenFire.gd
+++ b/scripts/Contents/Bullets/OxygenFire.gd
@@ -2,4 +2,4 @@ extends BulletBase
class_name OxygenFire
func ai():
- PresetBulletAI.forward(self, rotation)
+ PresetBulletAI.forward(self, rotation)
diff --git a/scripts/Contents/Bullets/Parrier.gd b/scripts/Contents/Bullets/Parrier.gd
new file mode 100644
index 0000000..444ec78
--- /dev/null
+++ b/scripts/Contents/Bullets/Parrier.gd
@@ -0,0 +1,65 @@
+extends BulletBase
+class_name ParrierBullet
+
+@export var parryRate: float = 1
+
+var parryiedTimes: int = 0
+var maxParryTimes: int = 1
+var maxBallCount: int = 3
+var atk: float = 1
+var reflectRate: float = 0.3
+
+func spawn():
+ var varians = randi_range(0, 1)
+ var inverts = [2]
+ var frames = load("res://resources/effects/parrier/%d/%d.tres" % [varians, varians])
+ var eff = EffectController.create(ComponentManager.getEffect("Parrier"), position)
+ eff.rotation = rotation
+ eff.texture.scale.y *= MathTool.randomChoiceFrom([-1, 1])
+ if varians in inverts:
+ eff.texture.scale.x *= -1
+ eff.texture.sprite_frames = frames
+ eff.shot()
+func succeedToHit(_dmg: float, entity: EntityBase):
+ if parryiedTimes < maxParryTimes && MathTool.rate(parryRate):
+ parryiedTimes += 1
+ var effSpawn = entity.texture.global_position
+ var eff = EffectController.create(ComponentManager.getEffect("ParryEntity"), effSpawn)
+ eff.rotation = position.angle_to_point(effSpawn)
+ eff.shot()
+ entity.impluse((effSpawn - position).normalized() * 450)
+func hitBullet(bullet: BulletBase): # 当前子弹与其他子弹相撞
+ if !is_instance_valid(bullet.launcher): return
+ if BulletTool.canDamage(bullet, launcher): # 其他子弹可以使当前子弹的发射者受伤吗?
+ if parryiedTimes < maxParryTimes && MathTool.rate(parryRate): # 一个刀光最多格挡多少个敌方子弹?
+ parryiedTimes += 1
+ # 生成格挡特效
+ var eff = EffectController.create(ComponentManager.getEffect("Parry"), position + (bullet.position - position).normalized() * 200) # 从子弹位置,面向其他子弹的方向前进150
+ eff.modulate = bullet.modulate.blend(bullet.texture.modulate)
+ eff.rotation = position.angle_to_point(bullet.position)
+ eff.shot()
+ launcher.impluse((position - bullet.position).normalized() * (bullet.speed * bullet.getDamage()) ** (1.0 / 3) * 250)
+ var targetBaseDamage = bullet.baseDamage
+ # 弹反 还是 格挡?
+ if MathTool.rate(reflectRate):
+ bullet.look_at(bullet.launcher.position)
+ bullet.launcher = launcher
+ bullet.baseDamage *= atk
+ bullet.baseDamage *= reflectRate
+ bullet.lifeTime *= 2
+ else:
+ bullet.tryDestroy()
+ var cycler = launcher.getOrCreateCycleTimer("parry", 2000, 100)
+ if len(cycler.bullets) < maxBallCount: # 玩家最多只能拥有多少气
+ for b in BulletBase.generate(
+ ComponentManager.getBullet("ParryBall"), # 生成气的子弹
+ launcher,
+ position,
+ 0
+ ):
+ if b is ParryBallBullet:
+ b.atk = atk * targetBaseDamage
+func refract(_newBullet: BulletBase, _entity: EntityBase, _index: int, _total: int, _lastBullet: float):
+ return null
+func split(_newBullet: BulletBase, _index: int, _total: int, _lastBullet: float):
+ return null
diff --git a/scripts/Contents/Bullets/Parrier.gd.uid b/scripts/Contents/Bullets/Parrier.gd.uid
new file mode 100644
index 0000000..757277e
--- /dev/null
+++ b/scripts/Contents/Bullets/Parrier.gd.uid
@@ -0,0 +1 @@
+uid://bi7nde2rs0w4m
diff --git a/scripts/Contents/Bullets/ParryBall.gd b/scripts/Contents/Bullets/ParryBall.gd
new file mode 100644
index 0000000..c1f0d87
--- /dev/null
+++ b/scripts/Contents/Bullets/ParryBall.gd
@@ -0,0 +1,29 @@
+extends BulletBase
+class_name ParryBallBullet
+
+var cycler: CycleTimer
+var atk: float = 1
+
+func spawn():
+ cycler = launcher.getOrCreateCycleTimer("parry")
+ cycler.host(self )
+ launcher.sprintMultiplier += 1
+func destroy(_beacuseMap: bool):
+ if is_instance_valid(launcher):
+ launcher.sprintMultiplier -= 1
+func ai():
+ PresetBulletAI.selfRotate(self , 5)
+ hitbox.disabled = !launcher.sprinting # 玩家在冲刺时气的碰撞箱才生效
+ hitbox.global_position = launcher.position
+func succeedToHit(_dmg: float, entity: EntityBase): # 当撞到敌人时
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("QKSword"),
+ launcher,
+ entity.position,
+ 0
+ ):
+ if bullet is QKSwordBullet:
+ bullet.baseDamage = atk
+ bullet.position = entity.texture.global_position + MathTool.sampleInRing(200, 500)
+ bullet.tracer = entity
+ bullet.look_at(entity.getTrackingAnchor()) # 生成的乾坤剑面向敌人
diff --git a/scripts/Contents/Bullets/ParryBall.gd.uid b/scripts/Contents/Bullets/ParryBall.gd.uid
new file mode 100644
index 0000000..489358c
--- /dev/null
+++ b/scripts/Contents/Bullets/ParryBall.gd.uid
@@ -0,0 +1 @@
+uid://6to3ptrfe6dr
diff --git a/scripts/Contents/Bullets/QKSword.gd b/scripts/Contents/Bullets/QKSword.gd
new file mode 100644
index 0000000..53afcf8
--- /dev/null
+++ b/scripts/Contents/Bullets/QKSword.gd
@@ -0,0 +1,29 @@
+extends BulletBase
+class_name QKSwordBullet
+
+var tracer: EntityBase
+var spawnSpeed: float = 1
+
+func register():
+ spawnSpeed = randf_range(0.75, 2)
+ animator.speed_scale = spawnSpeed
+ lifeTime /= spawnSpeed
+func ai():
+ if is_instance_valid(tracer):
+ look_at(tracer.getTrackingAnchor())
+ if timeLived() > 1000 / spawnSpeed:
+ PresetBulletAI.forward(self , rotation) # 前进
+ hitbox.disabled = false
+ else:
+ hitbox.disabled = true
+func succeedToHit(_dmg: float, entity: EntityBase):
+ if entity == tracer:
+ tryDestroy() # 只需要命中一次目标就不需要继续前进了
+ var eff = EffectController.create(
+ ComponentManager.getEffect("FooExplosion"),
+ entity.texture.global_position
+ )
+ var varians = randi_range(0, 2)
+ eff.texture.sprite_frames = load("res://resources/effects/FooExplosion/%d/%d.tres" % [varians, varians])
+ eff.shot()
+ CameraManager.shake(300, 500)
diff --git a/scripts/Contents/Bullets/QKSword.gd.uid b/scripts/Contents/Bullets/QKSword.gd.uid
new file mode 100644
index 0000000..179dc25
--- /dev/null
+++ b/scripts/Contents/Bullets/QKSword.gd.uid
@@ -0,0 +1 @@
+uid://chyrnrbgcudmk
diff --git a/scripts/Contents/Bullets/QKSwordHandler.gd b/scripts/Contents/Bullets/QKSwordHandler.gd
new file mode 100644
index 0000000..fcfad83
--- /dev/null
+++ b/scripts/Contents/Bullets/QKSwordHandler.gd
@@ -0,0 +1,14 @@
+extends BulletBase
+class_name QKSwordHandler
+
+func succeedToHit(_dmg: float, entity: EntityBase):
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("QKSword"),
+ launcher,
+ entity.position,
+ 0
+ ):
+ if bullet is QKSwordBullet:
+ bullet.position = entity.texture.global_position + MathTool.sampleInRing(50, 200)
+ bullet.tracer = entity
+ bullet.look_at(entity.position)
diff --git a/scripts/Contents/Bullets/QKSwordHandler.gd.uid b/scripts/Contents/Bullets/QKSwordHandler.gd.uid
new file mode 100644
index 0000000..b21dd02
--- /dev/null
+++ b/scripts/Contents/Bullets/QKSwordHandler.gd.uid
@@ -0,0 +1 @@
+uid://cmph2bim5oro5
diff --git a/scripts/Contents/Bullets/SCBlock.gd b/scripts/Contents/Bullets/SCBlock.gd
new file mode 100644
index 0000000..9bf484e
--- /dev/null
+++ b/scripts/Contents/Bullets/SCBlock.gd
@@ -0,0 +1,28 @@
+extends BulletBase
+class_name SCBlockBullet
+
+var speedV2 = Vector2.ZERO
+
+func register():
+ speedV2 = Vector2(
+ (launcher.currentFocusedBoss.position - launcher.position)
+ .sign().x
+ * randf_range(-0.25, 1)
+ * 100,
+ -50
+ )
+func spawn():
+ var staticTexture = texture.get_node_or_null("static")
+ if staticTexture is Sprite2D:
+ var text = load("res://resources/bullets/scblock/%d.png" % randi_range(0, 8))
+ staticTexture.texture = text
+ var trail = staticTexture.get_node_or_null("trail")
+ if trail is GPUParticles2D:
+ trail.texture = text
+func ai():
+ rotation = speedV2.angle()
+ speed = speedV2.length()
+ PresetBulletAI.trace(self , position + Vector2.from_angle(deg_to_rad(90)), lifeTimePercent() / 15)
+ PresetBulletAI.forward(self , rotation)
+ speedV2 *= 0.95
+ speedV2 += Vector2(0, 1)
diff --git a/scripts/Contents/Bullets/SCBlock.gd.uid b/scripts/Contents/Bullets/SCBlock.gd.uid
new file mode 100644
index 0000000..d7c5098
--- /dev/null
+++ b/scripts/Contents/Bullets/SCBlock.gd.uid
@@ -0,0 +1 @@
+uid://cek16mji13xpe
diff --git a/scripts/Contents/Bullets/VolcanoShadow.gd b/scripts/Contents/Bullets/VolcanoShadow.gd
index 0840bed..7808b95 100644
--- a/scripts/Contents/Bullets/VolcanoShadow.gd
+++ b/scripts/Contents/Bullets/VolcanoShadow.gd
@@ -2,5 +2,4 @@ extends BulletBase
class_name VolcanoShadow
func ai():
- speed = initialSpeed * (1 - animator.current_animation_position / animator.current_animation_length)
- PresetBulletAI.forward(self, rotation)
+ PresetBulletAI.forward(self , rotation)
diff --git a/scripts/Contents/Bullets/WhiteSoul.gd b/scripts/Contents/Bullets/WhiteSoul.gd
index 6be588f..36d3b4c 100644
--- a/scripts/Contents/Bullets/WhiteSoul.gd
+++ b/scripts/Contents/Bullets/WhiteSoul.gd
@@ -1,6 +1,16 @@
extends BulletBase
+class_name WhiteSoulBullet
+var floorPos: Vector2
+
+func spawn():
+ hitbox.disabled = true
+ scale *= randf_range(0.7, 1.3)
+ speed *= randf_range(0.85, 1.15)
func ai():
- PresetBulletAI.forward(self, rotation)
- if position.y > CameraManager.instance.position.y + QuickUI.getWindowSize().y / 2:
+ scale += Vector2.ONE * 0.005
+ PresetBulletAI.forward(self , rotation)
+ if position.distance_to(floorPos) < 50:
tryDestroy()
+ elif position.distance_to(floorPos) < 100:
+ hitbox.disabled = false
diff --git a/scripts/Contents/Bullets/Wood.gd b/scripts/Contents/Bullets/Wood.gd
new file mode 100644
index 0000000..9c18ce6
--- /dev/null
+++ b/scripts/Contents/Bullets/Wood.gd
@@ -0,0 +1,33 @@
+extends BulletBase
+class_name WoodBullet
+
+var speedV2: Vector2 = Vector2.ZERO
+var shooted: bool = false
+
+@onready var mother: Node2D = $%mother
+@onready var daoli: Node2D = $%daoli
+
+func spawn():
+ speedV2 = Vector2.from_angle(rotation) * 10
+func ai():
+ mother.global_rotation = 0
+ daoli.global_rotation = 0
+ if is_instance_valid(launcher.currentFocusedBoss):
+ speedV2 += (launcher.currentFocusedBoss.position - launcher.position).normalized() * 1.0
+ speed = speedV2.length() / 2.0
+ rotation = speedV2.angle()
+ PresetBulletAI.forward(self , rotation)
+ if !shooted && launcher.currentFocusedBoss.position.distance_to(daoli.global_position) < 200:
+ animator.play("xiangkan")
+ for i in randf_range(2, 6):
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("Diamond"),
+ launcher,
+ daoli.global_position + MathTool.sampleInCircle(20),
+ 0
+ ):
+ if bullet is Diamond:
+ bullet.look_at(launcher.currentFocusedBoss.position)
+ bullet.rotation += deg_to_rad(180)
+ bullet.rotation += deg_to_rad(randf_range(-1, 1) * 45)
+ shooted = true
diff --git a/scripts/Contents/Bullets/Wood.gd.uid b/scripts/Contents/Bullets/Wood.gd.uid
new file mode 100644
index 0000000..f59502c
--- /dev/null
+++ b/scripts/Contents/Bullets/Wood.gd.uid
@@ -0,0 +1 @@
+uid://bkopn3gee3qp1
diff --git a/scripts/Contents/Bullets/Wuwei.gd b/scripts/Contents/Bullets/Wuwei.gd
new file mode 100644
index 0000000..765010d
--- /dev/null
+++ b/scripts/Contents/Bullets/Wuwei.gd
@@ -0,0 +1,22 @@
+extends BulletBase
+class_name WuweiBullet
+
+@export var canMove: bool = true
+
+func ai():
+ if canMove:
+ PresetBulletAI.lockLauncher(self , launcher, true)
+ PresetBulletAI.trace(self , get_global_mouse_position(), 0.1)
+
+func shoot():
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("InfinitySword"),
+ launcher,
+ position + Vector2.from_angle(rotation) * 400,
+ rotation
+ ):
+ if bullet is InfinitySwordBullet:
+ bullet.baseDamage = baseDamage
+func beReady():
+ canMove = false
+ EffectController.create(ComponentManager.getEffect("Danger"), findAnchor("Spawn")).shot()
diff --git a/scripts/Contents/Bullets/Wuwei.gd.uid b/scripts/Contents/Bullets/Wuwei.gd.uid
new file mode 100644
index 0000000..461a793
--- /dev/null
+++ b/scripts/Contents/Bullets/Wuwei.gd.uid
@@ -0,0 +1 @@
+uid://dxgplcmmg0dgi
diff --git a/scripts/Contents/Bullets/Yangyi.gd b/scripts/Contents/Bullets/Yangyi.gd
new file mode 100644
index 0000000..4adeb02
--- /dev/null
+++ b/scripts/Contents/Bullets/Yangyi.gd
@@ -0,0 +1,5 @@
+extends BulletBase
+class_name YangyiBullet
+
+func ai():
+ PresetBulletAI.forward(self , rotation)
diff --git a/scripts/Contents/Bullets/Yangyi.gd.uid b/scripts/Contents/Bullets/Yangyi.gd.uid
new file mode 100644
index 0000000..bfe5941
--- /dev/null
+++ b/scripts/Contents/Bullets/Yangyi.gd.uid
@@ -0,0 +1 @@
+uid://c3ax35jdfjqox
diff --git a/scripts/Contents/Characters/Bear.gd b/scripts/Contents/Characters/Bear.gd
index 624e365..3f924ca 100644
--- a/scripts/Contents/Characters/Bear.gd
+++ b/scripts/Contents/Characters/Bear.gd
@@ -27,7 +27,7 @@ func spawn():
if MathTool.rate(0.01):
setStage(2)
func ai():
- PresetEntityAI.follow(self, currentFocusedBoss, 250)
+ PresetEntityAI.follow(self , currentFocusedBoss, 250)
for i in len(attackCooldownMap.keys()):
tryAttack(i)
func enterStage(stage):
@@ -50,7 +50,7 @@ func attack(type):
playSound("attack0")
for i in randi_range(20, 30):
if !is_instance_valid(currentFocusedBoss): return false
- for bullet in BulletBase.generate(ComponentManager.getBullet("ArrowSeven"), self, findWeaponAnchor("normal"), deg_to_rad(randf_range(0, 360))):
+ for bullet in BulletBase.generate(ComponentManager.getBullet("ArrowSeven"), self , findWeaponAnchor("normal"), deg_to_rad(randf_range(0, 360))):
bullet.tracer = currentFocusedBoss
bullet.position += MathTool.sampleInCircle(50)
await TickTool.millseconds(50)
@@ -59,10 +59,10 @@ func attack(type):
await sprintTo(currentFocusedBoss.position - Vector2(MathTool.randomChoiceFrom([-300, 300]), 300), 0.25)
var count = randi_range(6, 8)
for i in range(count):
- BulletBase.generate(ComponentManager.getBullet("SunDance"), self, weaponPos, deg_to_rad(360.0 / count * i))
+ BulletBase.generate(ComponentManager.getBullet("SunDance"), self , weaponPos, deg_to_rad(360.0 / count * i))
elif type == 2:
for i in range(13):
- for bullet in BulletBase.generate(ComponentManager.getBullet("ForeverRainbow"), self, weaponPos, 0):
+ for bullet in BulletBase.generate(ComponentManager.getBullet("ForeverRainbow"), self , weaponPos, 0):
bullet.rotation = 360 / 13.0 * i
elif type == 3:
if !is_instance_valid(currentFocusedBoss): return false
@@ -72,7 +72,7 @@ func attack(type):
currentInvinsible = true
playSound("attack3")
await TickTool.millseconds(500)
- BulletBase.generate(ComponentManager.getBullet("BearSprint"), self, weaponPos, 0)
+ BulletBase.generate(ComponentManager.getBullet("BearSprint"), self , weaponPos, 0)
await trySprint()
sprintParticle.emitting = false
canRunAi = true
@@ -84,7 +84,7 @@ func attack(type):
var count = randi_range(8, 12)
for i in range(count):
if !is_instance_valid(currentFocusedBoss): return false
- for bullet in BulletBase.generate(ComponentManager.getBullet("ArrowSeven"), self, findWeaponAnchor("normal"), deg_to_rad(360.0 / count * i)):
+ for bullet in BulletBase.generate(ComponentManager.getBullet("ArrowSeven"), self , findWeaponAnchor("normal"), deg_to_rad(360.0 / count * i)):
bullet.tracer = currentFocusedBoss
await TickTool.millseconds(830.0 / count)
return false
@@ -93,7 +93,7 @@ func attack(type):
var count = randi_range(20, 30)
for i in range(count):
if !is_instance_valid(currentFocusedBoss): return false
- for bullet in BulletBase.generate(ComponentManager.getBullet("LightGun"), self, currentFocusedBoss.position, 0):
+ for bullet in BulletBase.generate(ComponentManager.getBullet("LightGun"), self , currentFocusedBoss.position, 0):
bullet.rotation = deg_to_rad(360.0 / count * i)
await TickTool.millseconds(1670.0 / count)
return false
@@ -101,7 +101,7 @@ func attack(type):
playSound("attack6")
for i in 16:
if !is_instance_valid(currentFocusedBoss): return false
- for bullet in BulletBase.generate(ComponentManager.getBullet("LightGun"), self, currentFocusedBoss.position, 0):
+ for bullet in BulletBase.generate(ComponentManager.getBullet("LightGun"), self , currentFocusedBoss.position, 0):
bullet.position += MathTool.sampleInCircle(600)
bullet.look_at(currentFocusedBoss.position + MathTool.sampleInCircle(50))
await TickTool.millseconds(100)
@@ -113,7 +113,7 @@ func attack(type):
if !is_instance_valid(currentFocusedBoss): return false
playSound("attack7")
for i in 16:
- for bullet in BulletBase.generate(ComponentManager.getBullet("LightGun"), self, currentFocusedBoss.position, 0):
+ for bullet in BulletBase.generate(ComponentManager.getBullet("LightGun"), self , currentFocusedBoss.position, 0):
bullet.rotation_degrees += initAngle
bullet.rotation -= angle / 2
bullet.rotation += angle / 16 * i
diff --git a/scripts/Contents/Characters/CyberCat.gd b/scripts/Contents/Characters/CyberCat.gd
new file mode 100644
index 0000000..ffa7400
--- /dev/null
+++ b/scripts/Contents/Characters/CyberCat.gd
@@ -0,0 +1,28 @@
+extends EntityBase
+class_name CyberCatEntity
+
+func register():
+ fields[FieldStore.Entity.MAX_HEALTH] = 1500
+ fields[FieldStore.Entity.OFFSET_SHOOT] = 0
+ fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.2
+ attackCooldownMap[0] = 6000
+ attackCooldownMap[1] = 10000
+ attackCooldownMap[2] = 100
+ attackCooldownMap[3] = 200
+func ai():
+ PresetEntityAI.follow(self , currentFocusedBoss)
+ for i in 3:
+ tryAttack(i)
+ PresetEntityAI.distanceAttack(self , currentFocusedBoss, 1000, INF, 3)
+func attack(type: int):
+ if type == 0:
+ BulletBase.generate(ComponentManager.getBullet("Bengbeng"), self , position, 0)
+ elif type == 1:
+ heal(percentHealth(0.05))
+ elif type == 2:
+ BulletBase.generate(ComponentManager.getBullet("SCBlock"), self , position, 0)
+ elif type == 3:
+ for bullet in BulletBase.generate(ComponentManager.getBullet("BlockWall"), self , currentFocusedBoss.hurtbox.global_position, 0):
+ if bullet is BlockWallBullet:
+ bullet.look_at(position)
+ bullet.position -= Vector2.from_angle(bullet.rotation) * 100
diff --git a/scripts/Contents/Characters/CyberCat.gd.uid b/scripts/Contents/Characters/CyberCat.gd.uid
new file mode 100644
index 0000000..795b167
--- /dev/null
+++ b/scripts/Contents/Characters/CyberCat.gd.uid
@@ -0,0 +1 @@
+uid://cnqdjw7i7noxk
diff --git a/scripts/Contents/Characters/Deepsea.gd b/scripts/Contents/Characters/Deepsea.gd
new file mode 100644
index 0000000..23fae1b
--- /dev/null
+++ b/scripts/Contents/Characters/Deepsea.gd
@@ -0,0 +1,20 @@
+extends EntityBase
+class_name DeepseaEntity
+
+func register():
+ fields[FieldStore.Entity.MAX_HEALTH] = 2000
+ fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.9
+ fields[FieldStore.Entity.OFFSET_SHOOT] = 2
+ attackCooldownMap[0] = 2000
+ attackCooldownMap[1] = 5000
+func ai():
+ PresetEntityAI.follow(self , currentFocusedBoss)
+ for i in 2:
+ tryAttack(i)
+func attack(type: int):
+ if type == 0:
+ BulletBase.generate(ComponentManager.getBullet("Cement"), self , position, deg_to_rad(randf_range(0, 360)))
+ elif type == 1:
+ for i in 3:
+ BulletBase.generate(ComponentManager.getBullet("Wood"), self , position, position.angle_to_point(currentFocusedBoss.position) + i * deg_to_rad(20))
+ return true
diff --git a/scripts/Contents/Characters/Deepsea.gd.uid b/scripts/Contents/Characters/Deepsea.gd.uid
new file mode 100644
index 0000000..430b967
--- /dev/null
+++ b/scripts/Contents/Characters/Deepsea.gd.uid
@@ -0,0 +1 @@
+uid://be0o0iwf26hvx
diff --git a/scripts/Contents/Characters/Kernyr.gd b/scripts/Contents/Characters/Kernyr.gd
new file mode 100644
index 0000000..a99bf58
--- /dev/null
+++ b/scripts/Contents/Characters/Kernyr.gd
@@ -0,0 +1,68 @@
+extends EntityBase
+class_name Kernyr
+
+var attack1Angle = 0
+var attack0State = 0
+var attack2Start = 0
+
+func register():
+ fields[FieldStore.Entity.MAX_HEALTH] = 2000
+ fields[FieldStore.Entity.OFFSET_SHOOT] = 20
+ attackCooldownMap[0] = 2000
+ attackCooldownMap[1] = 100
+ attackCooldownMap[2] = 10000
+ attackCooldownMap[3] = 4500
+ attackMutexes = [2]
+func ai():
+ for i in 3:
+ tryAttack(i, [2])
+ # tryAttack(3)
+func attack(type: int):
+ if type == 0:
+ for i in randi_range(7, 16):
+ BulletBase.generate(ComponentManager.getBullet("Diamond"), self , position + MathTool.sampleInCircle(20), rotation + deg_to_rad(randf_range(-90, 90)))
+ var states = [
+ Vector2(-1, 1),
+ Vector2(1, 1),
+ Vector2(1, -1),
+ Vector2(-1, -1)
+ ]
+ await sprintTo(currentFocusedBoss.position + 400 * states[attack0State % len(states)], 0.1)
+ attack0State += 1
+ BulletBase.generate(ComponentManager.getBullet("HeavyCrystal"), self , findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position))
+ elif type == 1:
+ BulletBase.generate(
+ ComponentManager.getBullet("Yangyi"),
+ self ,
+ position,
+ attack1Angle
+ )
+ attack1Angle += deg_to_rad(360.0 / 20)
+ elif type == 2:
+ var anchor = currentFocusedBoss.position
+ var radius = 600
+ var count = 10.0
+ var i = 0
+ var currentAngle = 0
+ var time = 500.0
+ await sprintTo(anchor + Vector2(0, -radius), 0.1)
+ attack2Start = timeLived()
+ while timeLived() - attack2Start <= time:
+ var targetAngle = deg_to_rad(i / count * 360.0 - 90)
+ currentAngle = deg_to_rad((timeLived() - attack2Start) / time * 360.0 - 90)
+ position = anchor + Vector2.from_angle(currentAngle) * radius
+ if currentAngle >= targetAngle:
+ i += 1
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("Egg"),
+ self ,
+ position,
+ 0
+ ):
+ if bullet is EggBullet:
+ bullet.look_at(anchor)
+ await TickTool.frame()
+ await TickTool.millseconds(2000)
+ await chargeUp()
+ elif type == 3:
+ BulletBase.generate(ComponentManager.getBullet("Bengbeng"), self , position, 0)
diff --git a/scripts/Contents/Characters/Kernyr.gd.uid b/scripts/Contents/Characters/Kernyr.gd.uid
new file mode 100644
index 0000000..367310e
--- /dev/null
+++ b/scripts/Contents/Characters/Kernyr.gd.uid
@@ -0,0 +1 @@
+uid://m28dwfwmmhmh
diff --git a/scripts/Contents/Characters/MTY.gd b/scripts/Contents/Characters/MTY.gd
index a2df06c..e84e921 100644
--- a/scripts/Contents/Characters/MTY.gd
+++ b/scripts/Contents/Characters/MTY.gd
@@ -5,23 +5,32 @@ func register():
fields[FieldStore.Entity.MAX_HEALTH] = 400
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.9
attackCooldownMap[0] = 2000
- attackCooldownMap[1] = 250
+ attackCooldownMap[1] = 750
+ attackCooldownMap[2] = 450
sprintMultiplier = 5
func spawn():
texture.play("walk")
func ai():
- PresetEntityAI.follow(self, currentFocusedBoss)
- tryAttack(0)
- tryAttack(1)
+ PresetEntityAI.follow(self , currentFocusedBoss)
+ for i in 3:
+ tryAttack(i)
func attack(type: int):
if type == 0:
trySprint()
elif type == 1:
- BulletBase.generate(ComponentManager.getBullet("MTYSprint"), self, position, 0)
+ var track = getTrackingAnchor()
+ var bullet = BulletTool.findClosetBulletCanDamage(track, get_tree(), self , 400)
+ if is_instance_valid(bullet):
+ BulletBase.generate(ComponentManager.getBullet("Parrier"), self , track, track.angle_to_point(bullet.position))
+ elif type == 2:
+ if is_instance_valid(currentFocusedBoss):
+ var track = getTrackingAnchor()
+ if currentFocusedBoss.position.distance_to(track) <= 400:
+ BulletBase.generate(ComponentManager.getBullet("Parrier"), self , track, track.angle_to_point(currentFocusedBoss.position))
return true
func sprint():
- var target = BulletTool.findClosetBulletCanDamage(position, get_tree(), self)
+ var track = getTrackingAnchor()
+ var target = BulletTool.findClosetBulletCanDamage(track, get_tree(), self , 300)
if is_instance_valid(target):
- if position.distance_to(target.position) <= 200:
- var dir = (target.position - position).rotated(MathTool.randomChoiceFrom([-1, 1]) * deg_to_rad(90))
- move(dir.normalized() * sprintMultiplier, true)
+ var dir = (target.position - track).rotated(MathTool.randomChoiceFrom([-1, 1]) * deg_to_rad(90))
+ move(dir.normalized() * sprintMultiplier, true)
diff --git a/scripts/Contents/Characters/Rooster.gd b/scripts/Contents/Characters/Rooster.gd
index 5fac0e3..5c2e0e9 100644
--- a/scripts/Contents/Characters/Rooster.gd
+++ b/scripts/Contents/Characters/Rooster.gd
@@ -49,24 +49,31 @@ func tryLaunch(action: String, weaponIndex: int):
if Input.is_action_just_pressed(action):
if len(weapons) > weaponIndex:
var weapon = weapons[weaponIndex]
- if weapon.chargable and weapon.canAttackBy(self):
- chargeStartTime[weaponIndex] = Time.get_ticks_msec()
- chargeParticle.emitting = true
- chargeParticle.speed_scale = 1
+ if weapon.emitType == Weapon.EmitType.CHARGE:
+ if weapon.canAttackBy(self ):
+ chargeStartTime[weaponIndex] = Time.get_ticks_msec()
+ chargeParticle.emitting = true
+ chargeParticle.speed_scale = 1
+ elif weapon.emitType == Weapon.EmitType.CLICK_SHOOT || weapon.emitType == Weapon.EmitType.HOLD_LOOP:
+ tryAttack(weaponIndex)
if Input.is_action_pressed(action):
- if chargeStartTime.has(weaponIndex):
- chargeParticle.speed_scale += 0.01 * self.fields.get(FieldStore.Entity.CHARGE_SPEED)
- else:
- tryAttack(weaponIndex)
+ if len(weapons) > weaponIndex:
+ var weapon = weapons[weaponIndex]
+ if chargeStartTime.has(weaponIndex):
+ chargeParticle.speed_scale += 0.01 * self.fields.get(FieldStore.Entity.CHARGE_SPEED)
+ elif weapon.emitType == Weapon.EmitType.HOLD_SHOOT || weapon.emitType == Weapon.EmitType.HOLD_LOOP:
+ tryAttack(weaponIndex)
if Input.is_action_just_released(action):
- if chargeStartTime.has(weaponIndex):
- var startTime = chargeStartTime[weaponIndex]
- var endTime = Time.get_ticks_msec()
- var chargedTime = endTime - startTime
- chargeStartTime.erase(weaponIndex)
- if len(weapons) > weaponIndex:
- var weapon = weapons[weaponIndex]
- if weapon.chargable:
+ if len(weapons) > weaponIndex:
+ var weapon = weapons[weaponIndex]
+ if weapon.emitType == Weapon.EmitType.CHARGE:
+ if chargeStartTime.has(weaponIndex):
+ var startTime = chargeStartTime[weaponIndex]
+ var endTime = Time.get_ticks_msec()
+ var chargedTime = endTime - startTime
+ chargeStartTime.erase(weaponIndex)
weapon.chargedTime = chargedTime * self.fields.get(FieldStore.Entity.CHARGE_SPEED)
tryAttack(weaponIndex)
chargeParticle.emitting = false
+ elif weapon.emitType == Weapon.EmitType.HOLD_LOOP:
+ weapon.exitLoop(self )
diff --git a/scripts/Contents/Characters/Yee.gd b/scripts/Contents/Characters/Yee.gd
new file mode 100644
index 0000000..890f809
--- /dev/null
+++ b/scripts/Contents/Characters/Yee.gd
@@ -0,0 +1,2 @@
+extends EntityBase
+class_name Yee
diff --git a/scripts/Contents/Characters/Yee.gd.uid b/scripts/Contents/Characters/Yee.gd.uid
new file mode 100644
index 0000000..2ac5542
--- /dev/null
+++ b/scripts/Contents/Characters/Yee.gd.uid
@@ -0,0 +1 @@
+uid://33s66nngyjbj
diff --git a/scripts/Contents/Effects/.gitkeep b/scripts/Contents/Effects/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/scripts/Contents/Effects/Parry.gd b/scripts/Contents/Effects/Parry.gd
new file mode 100644
index 0000000..98fabe4
--- /dev/null
+++ b/scripts/Contents/Effects/Parry.gd
@@ -0,0 +1,5 @@
+extends EffectController
+class_name ParryEffect
+
+func beforeShot():
+ CameraManager.shake(200, 300)
diff --git a/scripts/Contents/Effects/Parry.gd.uid b/scripts/Contents/Effects/Parry.gd.uid
new file mode 100644
index 0000000..c124fd0
--- /dev/null
+++ b/scripts/Contents/Effects/Parry.gd.uid
@@ -0,0 +1 @@
+uid://mirrohsweqtb
diff --git a/scripts/Contents/Effects/ParryEntity.gd b/scripts/Contents/Effects/ParryEntity.gd
new file mode 100644
index 0000000..7989404
--- /dev/null
+++ b/scripts/Contents/Effects/ParryEntity.gd
@@ -0,0 +1,5 @@
+extends ParryEffect
+class_name ParryEntityEffect
+
+func beforeShot():
+ CameraManager.shake(50, 200)
diff --git a/scripts/Contents/Effects/ParryEntity.gd.uid b/scripts/Contents/Effects/ParryEntity.gd.uid
new file mode 100644
index 0000000..736c939
--- /dev/null
+++ b/scripts/Contents/Effects/ParryEntity.gd.uid
@@ -0,0 +1 @@
+uid://btj8sxcc0m28q
diff --git a/scripts/Contents/Panels/SelectIntialFeed.gd b/scripts/Contents/Panels/SelectIntialFeed.gd
index 68b4076..739f4ce 100644
--- a/scripts/Contents/Panels/SelectIntialFeed.gd
+++ b/scripts/Contents/Panels/SelectIntialFeed.gd
@@ -21,15 +21,21 @@ func beforeOpen(_args: Array = []):
initialWeaponSelection.add_child(card)
card.selected.connect(
func(_x):
- clearWeapons()
- title2.hide()
+ if WorldManager.isRelease():
+ clearWeapons()
+ title2.hide()
+ if !title1.visible:
+ startBtn.pressed.emit()
)
else:
initialFeedSelection.add_child(card)
card.selected.connect(
func(_x):
- clearFeeds()
- title1.hide()
+ if WorldManager.isRelease():
+ clearFeeds()
+ title1.hide()
+ if !title2.visible:
+ startBtn.pressed.emit()
)
func clearFeeds():
diff --git a/scripts/Contents/Summons/LGBTFlag.gd b/scripts/Contents/Summons/LGBTFlag.gd
index 65f0490..6489980 100644
--- a/scripts/Contents/Summons/LGBTFlag.gd
+++ b/scripts/Contents/Summons/LGBTFlag.gd
@@ -6,6 +6,7 @@ var count: int = 0
var angle: float = 0
func register():
+ fields[FieldStore.Entity.MAX_HEALTH] = 500
attackCooldownMap[0] = 1000
func ai():
tryAttack(0)
diff --git a/scripts/Contents/Wave.gd b/scripts/Contents/Wave.gd
index 8e4a8ac..a47d84c 100644
--- a/scripts/Contents/Wave.gd
+++ b/scripts/Contents/Wave.gd
@@ -22,32 +22,52 @@ func duplicate() -> Wave:
wave.per = per
return wave
-static var current: int = startWith(1) if WorldManager.isRelease() else startWith(1)
static var WAVE_NORMAL = [
- Wave.create("Hen", 1, 3, false, 0, INF, 1),
+ Wave.create("Hen", 1, 3, false, 2, INF, 1),
Wave.create("Cat", 1, 5, false, 0, INF, 1),
- Wave.create("Dog", 1, 2, false, 0, INF, 1),
- Wave.create("MTY", 0, 1, false, 4, INF, 4),
+ Wave.create("Dog", 1, 2, false, 4, INF, 1),
+ Wave.create("MTY", 0, 1, false, 6, INF, 7),
Wave.create("Chick", 0, 0, true, 9, INF, 20),
Wave.create("KukeMC", 0, 0, true, 19, INF, 20),
- Wave.create("Bear", 0, 0, true, 29, INF, 20),
+ Wave.create("Bear", 0, 0, true, 29, INF, 23),
]
static var WAVE_TESTBOSS_ALL = [
- Wave.create("Chick", 0, 0, true, 0, INF, 3),
- Wave.create("KukeMC", 0, 0, true, 1, INF, 3),
- Wave.create("Bear", 0, 0, true, 2, INF, 3),
+ Wave.create("Deepsea", 0, 0, true, 0, INF, 6),
+ Wave.create("Kernyr", 0, 0, true, 1, INF, 6),
+ Wave.create("CyberCat", 0, 0, true, 2, INF, 6),
+ Wave.create("Chick", 0, 0, true, 3, INF, 6),
+ Wave.create("KukeMC", 0, 0, true, 4, INF, 6),
+ Wave.create("Bear", 0, 0, true, 5, INF, 6),
]
static var WAVE_TESTBOSS_KUKE = [
- Wave.create("KukeMC", 0, 0, true, 0, INF, 10),
+ Wave.create("KukeMC", 0, 0, true, 0, INF, 1),
]
static var WAVE_TESTBOSS_BEAR = [
- Wave.create("Bear", 0, 0, true, 0, INF, 10),
+ Wave.create("Bear", 0, 0, true, 0, INF, 1),
]
static var WAVE_TESTBOSS_CHICK = [
- Wave.create("Chick", 0, 0, true, 0, INF, 10),
+ Wave.create("Chick", 0, 0, true, 0, INF, 1),
+]
+static var WAVE_JUSTJOKE = [
+ # Wave.create("Kernyr", 0, 0, true, 0, INF, 1),
+ # Wave.create("CyberCat", 0, 0, true, 0, INF, 1),
+ Wave.create("Deepsea", 0, 0, true, 0, INF, 1)
+]
+static var WAVE_MOWING = [
+ Wave.create("Hen", 15, 30, false, 0, INF, 1),
+ Wave.create("Cat", 15, 30, false, 0, INF, 1),
+ Wave.create("Dog", 15, 30, false, 0, INF, 1),
+ Wave.create("MTY", 1, 5, false, 0, INF, 1),
+]
+static var WAVE_TESTMOB = [
+ Wave.create("MTY", 1, 1, false, 0, INF, 1)
]
static var WAVE_EMPTY = []
-static var data = WAVE_NORMAL if WorldManager.isRelease() else WAVE_NORMAL
+static var waveReleaseConfig = [WAVE_TESTBOSS_ALL, 1]
+static var waveDebugConfig = [WAVE_TESTMOB, 1]
+
+static var current: int = startWith(waveReleaseConfig[1]) if WorldManager.isRelease() else startWith(waveDebugConfig[1])
+static var data = waveReleaseConfig[0] if WorldManager.isRelease() else waveDebugConfig[0]
static func create(
entity_: String,
@@ -100,7 +120,7 @@ static func spawn(center: Vector2) -> Array:
var wave: Wave = data[i]
for j in range(entityCountOf(wave)):
var currentWave = wave.duplicate()
- currentWave.entityPosition = MathTool.sampleInRing(200, 1000) + center
+ currentWave.entityPosition = MathTool.sampleInRing(400, 800) + center
result.append(currentWave)
return result
static func next(waves: Array):
diff --git a/scripts/Contents/Weapons/AcidWind.gd b/scripts/Contents/Weapons/AcidWind.gd
index 509529d..79c0a19 100644
--- a/scripts/Contents/Weapons/AcidWind.gd
+++ b/scripts/Contents/Weapons/AcidWind.gd
@@ -4,39 +4,31 @@ extends Weapon
var acids: Array[String] = ["AcidS", "AcidN", "AcidCl", "AcidP", "AcidC"]
func update(to: int, origin: Dictionary, _entity: EntityBase):
- origin["atk"] += 0.075 * to * soulLevel
- origin["c-atk"] *= soulLevel
- origin["cl-atkspeed"] *= soulLevel
- origin["cl-speed"] *= soulLevel
- origin["n-atk"] *= soulLevel
- origin["p-offset"] *= soulLevel
- origin["s-count-max"] *= soulLevel
- origin["weakatk"] = 0.05 * soulLevel
- return origin
+ origin["atk"] += 0.15 * to * soulLevel
+ origin["c-atk"] *= soulLevel
+ origin["cl-atkspeed"] *= soulLevel
+ origin["cl-speed"] *= soulLevel
+ origin["n-atk"] *= soulLevel
+ origin["p-offset"] *= soulLevel
+ origin["s-count-max"] *= soulLevel
+ origin["weakatk"] += 0.075 * to * soulLevel
+ origin["f"] += 15 * (soulLevel - 1)
+ return origin
func attack(entity: EntityBase):
- var acid = MathTool.randomChoiceFrom(acids)
- for bullet in BulletBase.generate(
- ComponentManager.getBullet(acid),
- entity,
- entity.findWeaponAnchor("normal"),
- (get_global_mouse_position() - entity.findWeaponAnchor("normal")).angle(),
- true,
- acid == "AcidC"
- ):
- if bullet is AcidBulletBase:
- if bullet.acidType == AcidBulletBase.AcidType.STRONG:
- bullet.baseDamage = readStore("atk")
- else:
- bullet.baseDamage = readStore("weakatk")
- if bullet is AcidS:
- bullet.arg1 = readStore("s-count-max")
- if bullet is AcidN:
- bullet.arg1 = readStore("n-atk")
- if bullet is AcidCl:
- bullet.arg1 = readStore("cl-speed")
- bullet.arg2 = readStore("cl-atkspeed")
- if bullet is AcidP:
- bullet.arg1 = readStore("p-offset")
- bullet.arg2 = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !entity.isPlayer(), entity.isPlayer())
- if bullet is AcidC:
- pass
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("AcidStorm"),
+ entity,
+ entity.findWeaponAnchor("normal"),
+ (get_global_mouse_position() - entity.findWeaponAnchor("normal")).angle(),
+ ):
+ if bullet is AcidStormBullet:
+ bullet.strongAtk = readStore("atk")
+ bullet.weakAtk = readStore("weakatk")
+ bullet.sCountMax = readStore("s-count-max")
+ bullet.nAtk = readStore("n-atk")
+ bullet.clSpeed = readStore("cl-speed")
+ bullet.clAtkSpeed = readStore("cl-atkspeed")
+ bullet.cAtk = readStore("c-atk")
+ bullet.pOffset = readStore("p-offset")
+ bullet.f = readStore("f")
+ return true
diff --git a/scripts/Contents/Weapons/Bow.gd b/scripts/Contents/Weapons/Bow.gd
index 766c479..bc73b61 100644
--- a/scripts/Contents/Weapons/Bow.gd
+++ b/scripts/Contents/Weapons/Bow.gd
@@ -2,9 +2,9 @@
extends Weapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
- origin["atk"] += 0.075 * to * soulLevel
+ origin["atk"] += 0.1 * to * soulLevel
origin["count"] = 1 * soulLevel
- origin["self"] += 0.025 * to
+ origin["self"] *= soulLevel
return origin
func attack(entity: EntityBase):
entity.takeDamage(readStore("self"))
@@ -18,3 +18,4 @@ func attack(entity: EntityBase):
var bullet: Bow = i
bullet.count = readStore("count")
bullet.atk = readStore("atk")
+ return true
diff --git a/scripts/Contents/Weapons/Cogwheel.gd b/scripts/Contents/Weapons/Cogwheel.gd
index a702d1b..358ef6e 100644
--- a/scripts/Contents/Weapons/Cogwheel.gd
+++ b/scripts/Contents/Weapons/Cogwheel.gd
@@ -2,19 +2,19 @@
extends Weapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
- origin["atk"] += 1 * to * soulLevel
- origin["rotate"] += 0.5 * to * soulLevel
- return origin
+ origin["atk"] += 1 * to * soulLevel
+ origin["rotate"] += 0.5 * to * soulLevel
+ return origin
func attack(entity: EntityBase):
- var weaponPos = entity.findWeaponAnchor("normal")
- for bullet in BulletBase.generate(
- ComponentManager.getBullet("Cogwheel"),
- entity,
- weaponPos,
- weaponPos.angle_to_point(get_global_mouse_position()),
- ):
- if bullet is CogwheelBullet:
- bullet.initialRotate = readStore("rotate")
- bullet.rotateSpeed = readStore("rotate")
- bullet.baseDamage = readStore("atk")
- return true
+ var weaponPos = entity.findWeaponAnchor("normal")
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("Cogwheel"),
+ entity,
+ weaponPos,
+ weaponPos.angle_to_point(get_global_mouse_position()),
+ ):
+ if bullet is CogwheelBullet:
+ bullet.initialRotate = readStore("rotate")
+ bullet.rotateSpeed = readStore("rotate")
+ bullet.baseDamage = readStore("atk")
+ return true
diff --git a/scripts/Contents/Weapons/CursorKnife.gd b/scripts/Contents/Weapons/CursorKnife.gd
new file mode 100644
index 0000000..27db1ee
--- /dev/null
+++ b/scripts/Contents/Weapons/CursorKnife.gd
@@ -0,0 +1,18 @@
+@tool
+extends Weapon
+
+func update(to: int, origin: Dictionary, _entity: EntityBase):
+ origin["atk"] += 2 * to * soulLevel
+ origin["speed"] += 0.004 * to * soulLevel
+ return origin
+func attack(entity: EntityBase):
+ attackSpeed = 1 + readStore("speed")
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("CursorKnife"),
+ entity,
+ get_global_mouse_position(),
+ entity.position.angle_to_point(get_global_mouse_position())
+ ):
+ if bullet is CursorKnifeBullet:
+ bullet.baseDamage = readStore("atk")
+ return true
diff --git a/scripts/Contents/Weapons/CursorKnife.gd.uid b/scripts/Contents/Weapons/CursorKnife.gd.uid
new file mode 100644
index 0000000..cafc604
--- /dev/null
+++ b/scripts/Contents/Weapons/CursorKnife.gd.uid
@@ -0,0 +1 @@
+uid://jyalew2bgcnk
diff --git a/scripts/Contents/Weapons/DaoStatue.gd b/scripts/Contents/Weapons/DaoStatue.gd
new file mode 100644
index 0000000..499618f
--- /dev/null
+++ b/scripts/Contents/Weapons/DaoStatue.gd
@@ -0,0 +1,33 @@
+@tool
+extends Weapon
+
+func update(to: int, origin: Dictionary, _entity: EntityBase):
+ origin["atk"] += 4 * to * soulLevel
+ origin["rate1"] *= soulLevel
+ origin["rate2"] *= soulLevel
+ origin["rate3"] *= soulLevel
+ return origin
+func checkAttack(entity: EntityBase) -> bool:
+ return len(entity.getOrCreateCycleTimer("parry", 2000, 100).bullets) > 0
+func attack(entity: EntityBase):
+ var parryCounter = entity.getOrCreateCycleTimer("parry", 2000, 100)
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("Wuwei"),
+ entity,
+ entity.position,
+ entity.position.angle_to_point(get_global_mouse_position())
+ ):
+ if bullet is WuweiBullet:
+ bullet.baseDamage = readStore("atk")
+ bullet.baseDamage *= max(-0.99, readStore("rate2") * ((1.0 - entity.fields[FieldStore.Entity.ATTACK_SPEED]) * 100)) + 1
+ bullet.baseDamage *= max(-0.99, readStore("rate1") * (entity.fields[FieldStore.Entity.MAX_HEALTH] - entity.health)) + 1
+ var atkAll = 0
+ for bulle in parryCounter.bullets:
+ if bulle is ParryBallBullet:
+ atkAll += bulle.atk
+ bullet.baseDamage *= max(-0.99, readStore("rate3") * atkAll) + 1
+ for bulle in parryCounter.bullets:
+ if bulle is ParryBallBullet:
+ bulle.tryDestroy()
+ parryCounter.forceFilter()
+ return true
diff --git a/scripts/Contents/Weapons/DaoStatue.gd.uid b/scripts/Contents/Weapons/DaoStatue.gd.uid
new file mode 100644
index 0000000..51e36a2
--- /dev/null
+++ b/scripts/Contents/Weapons/DaoStatue.gd.uid
@@ -0,0 +1 @@
+uid://cu42bwm2r05p6
diff --git a/scripts/Contents/Weapons/Gobo.gd b/scripts/Contents/Weapons/Gobo.gd
index b1c84a3..bb17592 100644
--- a/scripts/Contents/Weapons/Gobo.gd
+++ b/scripts/Contents/Weapons/Gobo.gd
@@ -2,15 +2,15 @@
extends Weapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
- origin["health"] += 5 * to * soulLevel
- origin["percent"] += 0.02 * to * soulLevel
- origin["count"] *= to * soulLevel
- return origin
+ origin["health"] += 5 * to * soulLevel
+ origin["percent"] += 0.02 * to * soulLevel
+ origin["count"] *= to * soulLevel
+ return origin
func attack(entity: EntityBase):
- var gobo = entity.summon(ComponentManager.getSummon("Gobo"))
- if gobo is GoboSummon:
- gobo.targetDamage = readStore("atk")
- gobo.percent = readStore("percent")
- gobo.count = readStore("count")
- gobo.initHealth(readStore("health"))
- return true
+ var gobo = entity.summon(ComponentManager.getSummon("Gobo"))
+ if gobo is GoboSummon:
+ gobo.targetDamage = readStore("atk")
+ gobo.percent = readStore("percent")
+ gobo.count = readStore("count")
+ gobo.initHealth(readStore("health"))
+ return true
diff --git a/scripts/Contents/Weapons/GrassWall.gd b/scripts/Contents/Weapons/GrassWall.gd
index 542ef3e..b62d676 100644
--- a/scripts/Contents/Weapons/GrassWall.gd
+++ b/scripts/Contents/Weapons/GrassWall.gd
@@ -2,13 +2,14 @@
extends Weapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
- origin["atk"] += 1 * to * soulLevel
- return origin
+ origin["atk"] += 1 * to * soulLevel
+ return origin
func attack(entity: EntityBase):
- var wall = ObstacleBase.generate(
- ComponentManager.getObstacle("GrassWall"),
- get_global_mouse_position(),
- entity.findWeaponAnchor("normal").angle_to_point(get_global_mouse_position()),
- entity
- )
- wall.initHealth(readStore("atk"))
+ var wall = ObstacleBase.generate(
+ ComponentManager.getObstacle("GrassWall"),
+ get_global_mouse_position(),
+ entity.findWeaponAnchor("normal").angle_to_point(get_global_mouse_position()),
+ entity
+ )
+ wall.initHealth(readStore("atk"))
+ return true
diff --git a/scripts/Contents/Weapons/HXD.gd b/scripts/Contents/Weapons/HXD.gd
index cf9b495..49011f7 100644
--- a/scripts/Contents/Weapons/HXD.gd
+++ b/scripts/Contents/Weapons/HXD.gd
@@ -2,17 +2,18 @@
extends Weapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
- origin["atk"] += 2 * to * soulLevel
- origin["count"] += 2 * (soulLevel - 1)
- return origin
+ origin["atk"] += 2 * to * soulLevel
+ origin["count"] += 2 * (soulLevel - 1)
+ return origin
func attack(entity: EntityBase):
- for i in readStore("count"):
- for bullet in BulletBase.generate(
- ComponentManager.getBullet("HXD"),
- entity,
- entity.findWeaponAnchor("normal"),
- entity.findWeaponAnchor("normal").angle_to_point(get_global_mouse_position()) + deg_to_rad(randf_range(-1, 1) * 4)
- ):
- if bullet is HXDBullet:
- bullet.maxBouncedTime = readStore("atk")
- bullet.baseDamage = readStore("atk")
+ for i in readStore("count"):
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("HXD"),
+ entity,
+ entity.findWeaponAnchor("normal"),
+ entity.findWeaponAnchor("normal").angle_to_point(get_global_mouse_position()) + deg_to_rad(randf_range(-1, 1) * 4)
+ ):
+ if bullet is HXDBullet:
+ bullet.maxBouncedTime = readStore("atk")
+ bullet.baseDamage = readStore("atk")
+ return true
diff --git a/scripts/Contents/Weapons/Hetun.gd b/scripts/Contents/Weapons/Hetun.gd
new file mode 100644
index 0000000..4e2962f
--- /dev/null
+++ b/scripts/Contents/Weapons/Hetun.gd
@@ -0,0 +1,20 @@
+@tool
+extends Weapon
+
+func update(to: int, origin: Dictionary, _entity: EntityBase):
+ origin["atk"] += 3 * to * soulLevel
+ origin["count"] += 5 * (soulLevel - 1)
+ origin["penerate"] += 0.1 * (soulLevel - 1)
+ return origin
+func attack(entity: EntityBase):
+ for i in readStore("count"):
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("Needle"),
+ entity,
+ entity.findWeaponAnchor("normal"),
+ entity.findWeaponAnchor("normal").angle_to_point(get_global_mouse_position()) + deg_to_rad(randf_range(-1, 1) * 30)
+ ):
+ if bullet is NeedleBullet:
+ bullet.baseDamage = readStore("atk")
+ bullet.penerate = readStore("penerate")
+ return true
diff --git a/scripts/Contents/Weapons/Hetun.gd.uid b/scripts/Contents/Weapons/Hetun.gd.uid
new file mode 100644
index 0000000..cab1550
--- /dev/null
+++ b/scripts/Contents/Weapons/Hetun.gd.uid
@@ -0,0 +1 @@
+uid://tfptal3sgfmy
diff --git a/scripts/Contents/Weapons/MagicMissle.gd b/scripts/Contents/Weapons/MagicMissle.gd
new file mode 100644
index 0000000..6066f31
--- /dev/null
+++ b/scripts/Contents/Weapons/MagicMissle.gd
@@ -0,0 +1,35 @@
+@tool
+extends Weapon
+
+var roundBullets: Array[MagicMissleBullet] = []
+
+func update(to: int, origin: Dictionary, _entity: EntityBase):
+ origin["atk"] += 1 * to * soulLevel
+ origin["cursor-m"] += 0.2 * to * soulLevel
+ origin["missle-m"] += 0.02 * to * soulLevel
+ origin["track"] += 1 * to * soulLevel
+ origin["G"] *= 1.25 ** (soulLevel - 1)
+ origin["count"] += 1 * (soulLevel - 1)
+ return origin
+
+func loopStart(entity: EntityBase):
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("MagicMissle"),
+ entity,
+ get_global_mouse_position() + Vector2.from_angle(randf_range(0, 2 * PI)) * readStore("track"),
+ 0
+ ):
+ if bullet is MagicMissleBullet:
+ bullet.look_at(get_global_mouse_position())
+ bullet.rotation += PI / 2
+ bullet.speedV2 += Vector2.from_angle(bullet.rotation) * sqrt((readStore("G") * readStore("cursor-m") / readStore("track") ** 2) * readStore("track")) / 120
+ bullet.roundBullets = roundBullets
+ bullet.baseDamage = readStore("atk")
+ bullet.powerScale = readStore("count")
+ roundBullets.append(bullet)
+ return true
+func loopExit(_entity: EntityBase):
+ for bullet in roundBullets:
+ if is_instance_valid(bullet):
+ bullet.accelerating = false
+ roundBullets.clear()
diff --git a/scripts/Contents/Weapons/MagicMissle.gd.uid b/scripts/Contents/Weapons/MagicMissle.gd.uid
new file mode 100644
index 0000000..397acef
--- /dev/null
+++ b/scripts/Contents/Weapons/MagicMissle.gd.uid
@@ -0,0 +1 @@
+uid://clec7nrtesipu
diff --git a/scripts/Contents/Weapons/Oxygener.gd b/scripts/Contents/Weapons/Oxygener.gd
index a624b97..31759ba 100644
--- a/scripts/Contents/Weapons/Oxygener.gd
+++ b/scripts/Contents/Weapons/Oxygener.gd
@@ -2,21 +2,33 @@
extends Weapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
- origin["atk"] += 1 * to * soulLevel
- origin["fireatk"] += 0.5 * to * soulLevel
- origin["max-n"] += 2 * soulLevel
- return origin
+ origin["atk"] += 1 * to * soulLevel
+ origin["fireatk"] += 0.5 * to * soulLevel
+ origin["max-n"] += 2 * (soulLevel - 1)
+ origin["count"] *= soulLevel
+ return origin
+func checkAttack(entity: EntityBase) -> bool:
+ return entity.hasItem({ItemStore.ItemType.BASKETBALL: 1.0 / readStore("count")}) || entity.isEnergyEnough(5)
func attack(entity: EntityBase):
- var bulletName = MathTool.randomChoiceFromWeights(["OxygenFire", "AcidN"], [10, 1])
- for i in randi_range(readStore("min-n"), readStore("max-n")) if bulletName == "AcidN" else 1:
- for bullet in BulletBase.generate(
- ComponentManager.getBullet(bulletName),
- entity,
- entity.findWeaponAnchor("normal"),
- entity.position.angle_to_point(get_global_mouse_position()),
- ):
- if bullet is OxygenFire:
- bullet.baseDamage = readStore("fireatk")
- elif bullet is AcidN:
- bullet.baseDamage = readStore("atk")
- bullet.lifeTime *= 0.5
+ if !entity.useItem({ItemStore.ItemType.BASKETBALL: 1.0 / readStore("count")}):
+ entity.useEnergy(5)
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("OxygenFire"),
+ entity,
+ entity.findWeaponAnchor("normal"),
+ entity.position.angle_to_point(get_global_mouse_position()),
+ ):
+ if bullet is OxygenFire:
+ bullet.baseDamage = readStore("fireatk")
+ if MathTool.rate(0.1):
+ for i in randi_range(readStore("min-n"), readStore("max-n")):
+ for n in BulletBase.generate(
+ ComponentManager.getBullet("AcidN"),
+ entity,
+ bullet.position,
+ 0,
+ ):
+ if n is AcidN:
+ n.baseDamage = readStore("atk")
+ n.storm = bullet
+ return true
diff --git a/scripts/Contents/Weapons/SevenSoul.gd b/scripts/Contents/Weapons/SevenSoul.gd
index dbb54fe..ea93a66 100644
--- a/scripts/Contents/Weapons/SevenSoul.gd
+++ b/scripts/Contents/Weapons/SevenSoul.gd
@@ -1,6 +1,11 @@
@tool
extends Weapon
+func update(to, origin, _entity):
+ origin["atk"] += 1 * to * soulLevel
+ origin["dmg"] += 0.02 * to * soulLevel
+ origin["heal"] += 0.1 * to * soulLevel
+ return origin
func attack(entity: EntityBase):
playSound("attack")
for i in 6:
@@ -11,8 +16,4 @@ func attack(entity: EntityBase):
bullet.energyCollect = readStore("dmg")
bullet.healAmount = readStore("heal")
await TickTool.millseconds(15000 / 6.0)
-func update(to, origin, _entity):
- origin["atk"] += 1 * to * soulLevel
- origin["dmg"] += 0.02 * to * soulLevel
- origin["heal"] += 0.1 * to * soulLevel
- return origin
+ return true
diff --git a/scripts/Contents/Weapons/Tree.gd b/scripts/Contents/Weapons/Tree.gd
new file mode 100644
index 0000000..f32bafa
--- /dev/null
+++ b/scripts/Contents/Weapons/Tree.gd
@@ -0,0 +1,23 @@
+@tool
+extends Weapon
+
+func update(to: int, origin: Dictionary, _entity: EntityBase):
+ origin["atk"] += 2 * to * soulLevel
+ origin["count"] += 1 * (soulLevel - 1)
+ origin["max"] += 2 * (soulLevel - 1)
+ origin["rate"] += 0.15 * (soulLevel - 1)
+ return origin
+func attack(entity: EntityBase):
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("Parrier"),
+ entity,
+ entity.texture.global_position,
+ entity.texture.global_position.angle_to_point(get_global_mouse_position()),
+ ):
+ if bullet is ParrierBullet:
+ bullet.atk = readStore("atk")
+ bullet.maxParryTimes = readStore("count")
+ bullet.maxBallCount = readStore("max")
+ bullet.reflectRate = readStore("rate")
+ bullet.baseDamage = readStore("atk") * readStore("rate")
+ return true
diff --git a/scripts/Contents/Weapons/Tree.gd.uid b/scripts/Contents/Weapons/Tree.gd.uid
new file mode 100644
index 0000000..3b488a2
--- /dev/null
+++ b/scripts/Contents/Weapons/Tree.gd.uid
@@ -0,0 +1 @@
+uid://bqdyhwcd4jwmj
diff --git a/scripts/Contents/Weapons/Volcano.gd b/scripts/Contents/Weapons/Volcano.gd
index 388ee1c..21de39b 100644
--- a/scripts/Contents/Weapons/Volcano.gd
+++ b/scripts/Contents/Weapons/Volcano.gd
@@ -3,11 +3,11 @@ extends Weapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
origin["rotate"] += 0.005 * to * soulLevel
- origin["dmg1"] += 0.03 * to * soulLevel
- origin["dmg2"] += 0.03 * to * soulLevel
- origin["dmg3"] += 0.03 * to * soulLevel
- origin["dmg4"] += 0.03 * to * soulLevel
- origin["dmg5"] += 0.025 * to * soulLevel
+ origin["dmg1"] += 0.3 * (soulLevel - 1)
+ origin["dmg2"] += 0.3 * (soulLevel - 1)
+ origin["dmg3"] += 0.3 * (soulLevel - 1)
+ origin["dmg4"] += 0.3 * (soulLevel - 1)
+ origin["dmg5"] += 0.15 * (soulLevel - 1)
origin["count"] = 1 * soulLevel
origin["atk"] += 3 * to * soulLevel
return origin
@@ -24,3 +24,4 @@ func attack(entity: EntityBase):
bullet.damageMultipliers = [readStore("dmg1"), readStore("dmg2"), readStore("dmg3"), readStore("dmg4")]
bullet.count = readStore("count")
bullet.dmg5 = readStore("dmg5")
+ return true
diff --git a/scripts/Contents/Weapons/WhiteSoul.gd b/scripts/Contents/Weapons/WhiteSoul.gd
index 655c320..5938907 100644
--- a/scripts/Contents/Weapons/WhiteSoul.gd
+++ b/scripts/Contents/Weapons/WhiteSoul.gd
@@ -8,11 +8,13 @@ func update(to, origin, _entity):
return origin
func attack(entity: EntityBase):
for i in readStore("count"):
- var myPos = get_global_mouse_position() + QuickUI.getWindowSize() * Vector2(randf_range(-1, 1) * 0.25, -1)
- for j in BulletBase.generate(ComponentManager.getBullet("WhiteSoul"), entity,
- myPos,
- myPos.angle_to_point(get_global_mouse_position() + MathTool.sampleInCircle(readStore("radius")))
+ var myFloor = get_global_mouse_position() + MathTool.sampleInCircle(readStore("radius"))
+ for bullet in BulletBase.generate(ComponentManager.getBullet("WhiteSoul"), entity,
+ get_global_mouse_position() + QuickUI.getWindowSize() * Vector2(randf_range(-1, 1) * 0.25, -1),
+ 0
):
- if j is BulletBase:
- j.baseDamage = readStore("atk")
+ if bullet is WhiteSoulBullet:
+ bullet.look_at(myFloor)
+ bullet.floorPos = myFloor
+ bullet.baseDamage = readStore("atk")
return true
diff --git a/scripts/Statemachine/BulletBase.gd b/scripts/Statemachine/BulletBase.gd
index faa21b9..3c94303 100644
--- a/scripts/Statemachine/BulletBase.gd
+++ b/scripts/Statemachine/BulletBase.gd
@@ -16,6 +16,7 @@ class_name BulletBase
@export var autoLoopAnimation: bool = false
@export var autoDestroyAnimation: bool = false
@export var autoDestroyOnHitMap: bool = true
+@export var autoPlayTexture: bool = false
@export var freeAfterSpawn: bool = false
@export var knockback: float = 0 # 击退力,物理引擎单位
@export var recoil: float = 0 # 后坐力,物理引擎单位
@@ -36,6 +37,8 @@ var initialSpeed: float = 0
var initialDamage: float = 0
var speedScale: float = 1
var isFirstFrame: bool = true
+var cycleStateAngle: float = 0
+var lastDelta: float = 0
func _ready():
initialSpeed = speed
@@ -50,20 +53,29 @@ func _ready():
spawnInWhere = position
spawn()
dotLoop()
- if autoSpawnAnimation:
- animator.play("spawn")
- await animator.animation_finished
- if freeAfterSpawn:
- tryDestroy()
if autoLoopAnimation:
animator.play("loop")
+ if autoPlayTexture:
+ texture.play("default")
body_entered.connect(
func(body):
if body.is_in_group("map"):
if autoDestroyOnHitMap:
tryDestroy(true)
)
+ area_entered.connect(
+ func(body):
+ var bullet = BulletTool.fromArea(body)
+ if is_instance_valid(bullet):
+ hitBullet(bullet)
+ )
ai()
+ if autoSpawnAnimation:
+ animator.play("spawn")
+ await animator.animation_finished
+ afterSpawn()
+ if freeAfterSpawn:
+ tryDestroy()
func _process(_delta: float) -> void:
if destroying: return
if lifeTime > 0:
@@ -72,7 +84,8 @@ func _process(_delta: float) -> void:
if lifeDistance > 0:
if position.distance_to(spawnInWhere) >= lifeDistance:
tryDestroy()
-func _physics_process(_delta: float) -> void:
+func _physics_process(delta: float) -> void:
+ lastDelta = delta
if destroying: return
if is_instance_valid(launcher) and (launcher.isPlayer() or is_instance_valid(launcher.currentFocusedBoss)):
launcher.position -= Vector2.from_angle(rotation) * recoil
@@ -82,7 +95,7 @@ func _physics_process(_delta: float) -> void:
[launcher])
if is_instance_valid(targetEntity):
PresetBulletAI.trace(
- self,
+ self ,
targetEntity.getTrackingAnchor(),
launcher.fields.get(FieldStore.Entity.BULLET_TRACE) / 10
)
@@ -93,6 +106,12 @@ func _physics_process(_delta: float) -> void:
else:
tryDestroy()
+func findAnchor(anch: String):
+ var node = get_node_or_null("%anchor" + anch)
+ if node is Node2D:
+ return node.global_position
+ else:
+ return Vector2.ZERO
func setupCuttable(cutSpeed: float):
area_entered.connect(
func(body):
@@ -116,8 +135,8 @@ func determineCrit():
return MathTool.rate(launcher.fields.get(FieldStore.Entity.CRIT_RATE) + GameRule.critRateInfluenceByLuckValue * launcher.fields[FieldStore.Entity.LUCK_VALUE])
func hitEntity(target: Node):
var entity: EntityBase = EntityTool.fromHurtbox(target)
- if !BulletTool.canDamage(self, entity): return
- var resultDamage = entity.bulletHit(self, determineCrit())
+ if !BulletTool.canDamage(self , entity): return
+ var resultDamage = entity.bulletHit(self , determineCrit())
succeedToHit(resultDamage, entity)
if MathTool.rate(fullPenerate() - entity.fields[FieldStore.Entity.PENARATION_RESISTANCE]):
baseDamage *= 1.0 - penerateDamageReduction
@@ -127,7 +146,7 @@ func hitObstacle(target: Node):
if target is ObstacleBase:
var obstacle = target as ObstacleBase
if is_instance_valid(obstacle.launcher):
- if not BulletTool.canDamage(self, obstacle.launcher): return
+ if not BulletTool.canDamage(self , obstacle.launcher): return
obstacle.takeDamage(calculateDamage(determineCrit()))
if MathTool.rate(fullPenerate() - obstacle.penerateResistance):
baseDamage *= 1.0 - penerateDamageReduction
@@ -172,7 +191,9 @@ func trySplit():
cloned.launcher = launcher
if is_instance_valid(parent):
cloned.parent = parent
- get_parent().add_child.call_deferred(split(cloned, i, total, last))
+ var splited = split(cloned, i, total, last)
+ if !is_instance_valid(splited): continue
+ get_parent().add_child.call_deferred(splited)
func tryRefract():
if is_instance_valid(launcher) and canDuplicateSelf:
var value = launcher.fields.get(FieldStore.Entity.BULLET_REFRACTION)
@@ -194,7 +215,9 @@ func tryRefract():
cloned.launcher = launcher
if is_instance_valid(parent):
cloned.parent = parent
- get_parent().add_child.call_deferred(refract(cloned, entity, i, total, last))
+ var refracted = refract(cloned, entity, i, total, last)
+ if !is_instance_valid(refracted): continue
+ get_parent().add_child.call_deferred(refracted)
# 抽象方法
func firstFrame():
@@ -205,6 +228,8 @@ func destroy(_beacuseMap: bool):
pass
func spawn():
pass
+func afterSpawn():
+ pass
func applyDot():
pass
func succeedToHit(_dmg: float, _entity: EntityBase):
@@ -215,6 +240,8 @@ func split(newBullet: BulletBase, _index: int, _total: int, _lastBullet: float):
return newBullet
func refract(newBullet: BulletBase, _entity: EntityBase, _index: int, _total: int, _lastBullet: float):
return newBullet
+func hitBullet(_bullet: BulletBase):
+ pass
static func generate(
bullet: PackedScene,
diff --git a/scripts/Statemachine/CycleTimer.gd b/scripts/Statemachine/CycleTimer.gd
new file mode 100644
index 0000000..f7f50b0
--- /dev/null
+++ b/scripts/Statemachine/CycleTimer.gd
@@ -0,0 +1,30 @@
+class_name CycleTimer
+
+@export var period: float = 1
+
+var startTime: float = 0
+var running: bool = false
+var distance: float = 200
+var bullets: Array[BulletBase] = []
+
+func start():
+ startTime = Time.get_ticks_msec()
+ running = true
+func lifetime():
+ return Time.get_ticks_msec() - startTime
+func getStateAngle(index: int):
+ return lifetime() / period * deg_to_rad(360) - deg_to_rad(360.0 * index / len(bullets))
+func forceFilter():
+ bullets = bullets.filter(is_instance_valid)
+func apply():
+ forceFilter()
+ for index in len(bullets):
+ var bullet = bullets[index]
+ var newStateAngle = lerp_angle(bullet.cycleStateAngle, getStateAngle(index), 0.1)
+ var offset = Vector2.from_angle(newStateAngle)
+ bullet.cycleStateAngle = newStateAngle
+ offset.y *= 0.25
+ bullet.position = bullet.launcher.position + offset * distance
+ bullet.scale = Vector2.ONE * (1 + offset.y)
+func host(bullet: BulletBase):
+ bullets.append(bullet)
diff --git a/scripts/Statemachine/CycleTimer.gd.uid b/scripts/Statemachine/CycleTimer.gd.uid
new file mode 100644
index 0000000..7f4055e
--- /dev/null
+++ b/scripts/Statemachine/CycleTimer.gd.uid
@@ -0,0 +1 @@
+uid://b3k5h2vs6uwi2
diff --git a/scripts/Statemachine/EffectController.gd b/scripts/Statemachine/EffectController.gd
index dcfc1ae..14efb3f 100644
--- a/scripts/Statemachine/EffectController.gd
+++ b/scripts/Statemachine/EffectController.gd
@@ -4,35 +4,53 @@ class_name EffectController
@export var oneShot: bool = true
@export var spawnSound: String = ""
@export var spawnAnimation: String = ""
+@export var spawnTexture: String = ""
+@export var lockTexture: bool = false
@onready var particles: GPUParticles2D = $"%particles"
@onready var sounds: Node2D = $"%sounds"
@onready var animator: AnimationPlayer = $"%animator"
+@onready var texture: AnimatedSprite2D = $"%texture"
func _ready():
register()
particles.emitting = false
particles.one_shot = oneShot
+func _physics_process(_delta):
+ if lockTexture:
+ texture.global_rotation = 0
+func shot():
+ beforeShot()
+ var childParticle = particles.duplicate() as GPUParticles2D
+ childParticle.emitting = true
+ add_child(childParticle)
var sound = sounds.get_node_or_null(spawnSound)
if sound and sound.stream:
sound.play()
if spawnAnimation:
animator.play(spawnAnimation)
-func shot():
- var cloned = particles.duplicate() as GPUParticles2D
- cloned.emitting = true
- add_child(cloned)
+ if spawnTexture:
+ texture.play(spawnTexture)
if oneShot:
- await cloned.finished
- cloned.queue_free()
+ if spawnTexture:
+ if texture.is_playing():
+ await texture.animation_finished
+ texture.hide()
+ if childParticle.emitting:
+ await childParticle.finished
+ childParticle.queue_free()
if spawnSound:
- var sound: AudioStreamPlayer2D = sounds.get_node(spawnSound)
if sound.playing:
await sound.finished
+ if spawnAnimation:
+ if animator.is_playing():
+ await animator.animation_finished
queue_free()
func register():
pass
+func beforeShot():
+ pass
static func create(scene: PackedScene, spawnPosition: Vector2, parent: Node = null) -> EffectController:
var cloned = scene.instantiate() as EffectController
diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd
index 22347cd..f274fab 100644
--- a/scripts/Statemachine/EntityBase.gd
+++ b/scripts/Statemachine/EntityBase.gd
@@ -59,6 +59,8 @@ var attackCooldownMap = {
var attackCooldowner = {
0: CooldownTimer.new()
}
+var attackMutexes: Array[int] = []
+var attackingStates: Array[int] = []
var inventory = {
ItemStore.ItemType.BASEBALL: 200,
ItemStore.ItemType.BASKETBALL: 200,
@@ -112,6 +114,8 @@ var weaponBag: Array[String] = []
var canRunAi: bool = true
var currentStage: int = 0
var spawnTime: float = 0
+var cycleTimers: Dictionary = {}
+var inertia: Vector2 = Vector2.ZERO
func _ready():
if useStatic:
@@ -196,11 +200,31 @@ func _physics_process(_delta: float) -> void:
ai()
elif isSummon():
ai()
+ velocity += inertia
+ inertia *= 0.9
move_and_slide()
+ var collision = get_last_slide_collision()
+ if is_instance_valid(collision):
+ inertia = inertia.bounce(collision.get_normal())
+ targetableSprinting = false
+ sprinting = false
storeEnergy(randf_range(0.01, 0.05 + fields.get(FieldStore.Entity.ENERGY_REGENERATION) - 1), true)
trailParticle.emitting = trailing
+ for cycler in cycleTimers.values():
+ if cycler is CycleTimer:
+ cycler.apply()
# 通用方法
+func impluse(force: Vector2):
+ inertia += force
+func getOrCreateCycleTimer(timerName: String, period: float = 1000, distance: float = 200, start: bool = true) -> CycleTimer:
+ if !cycleTimers.has(timerName):
+ var newTimer = CycleTimer.new()
+ newTimer.period = period
+ newTimer.distance = distance
+ if start: newTimer.start()
+ cycleTimers[timerName] = newTimer
+ return cycleTimers[timerName]
func initHealth(maxHealth: float):
fields[FieldStore.Entity.MAX_HEALTH] = maxHealth
health = maxHealth
@@ -276,7 +300,7 @@ func bulletHit(bullet: BulletBase, crit: bool):
healthChanged.emit(health)
DamageLabel.create(damage, crit || perfectMiss, damageAnchor.global_position + MathTool.sampleInCircle(GameRule.damageLabelSpawnOffset))
if isBoss and bullet.launcher.isPlayer():
- bullet.launcher.setBoss(self)
+ bullet.launcher.setBoss(self )
if health <= 0:
if isBoss:
bullet.launcher.storeEnergy(energy * 0.35)
@@ -301,7 +325,7 @@ func useEnergy(value: float):
energy -= finalEnergy(value)
energyChanged.emit(energy, false)
return state
-func tryAttack(type: int, needChargeUp: bool = false):
+func tryAttack(type: int, chargeConfig: Variant = false):
var weapon: Weapon
if isPlayer() and !isSummon():
if len(weapons) > type:
@@ -319,17 +343,33 @@ func tryAttack(type: int, needChargeUp: bool = false):
cooldownTimer.cooldown = attackCooldownMap.get(type, defaultCooldownUnit)
state = cooldownTimer.start()
if state:
- if needChargeUp:
- charginup = true
- await EffectController.create(ComponentManager.getEffect("AttackStar"), damageAnchor.global_position).shot()
- charginup = false
- if isPlayer() and !isSummon():
- if await weapon.tryAttack(self):
- weapon.playSound("attack")
+ var needChargeUp: bool
+ if chargeConfig is bool:
+ needChargeUp = chargeConfig
+ elif chargeConfig is Array:
+ needChargeUp = type in chargeConfig
else:
+ needChargeUp = false
+ if needChargeUp:
+ await chargeUp()
+ for attackingState in attackingStates:
+ if attackingState in attackMutexes:
+ return false
+ if isPlayer() and !isSummon():
+ attackingStates.append(type)
+ if await weapon.tryAttack(self ):
+ weapon.playSound("attack")
+ attackingStates.erase(type)
+ else:
+ attackingStates.append(type)
if await attack(type):
playSound("attack" + str(type))
+ attackingStates.erase(type)
return state
+func chargeUp():
+ charginup = true
+ await EffectController.create(ComponentManager.getEffect("AttackStar"), damageAnchor.global_position).shot()
+ charginup = false
func trySprint():
trailing = true
playSound("sprint")
@@ -344,7 +384,7 @@ func sprintTo(target: Vector2, speed: float):
await TickTool.until(
func():
position += (target - position) * speed
- return position.distance_to(target) < 10
+ return position.distance_to(target) < 10 || !targetableSprinting
)
position = target
trailing = false
diff --git a/scripts/Statemachine/ItemShow.gd b/scripts/Statemachine/ItemShow.gd
index 05a462f..a5c9957 100644
--- a/scripts/Statemachine/ItemShow.gd
+++ b/scripts/Statemachine/ItemShow.gd
@@ -24,7 +24,11 @@ func _physics_process(_delta):
avatarTexture.texture = ItemStore.getTexture(type)
countLabel.text = str(count)
if enough:
- countLabel.label_settings.font_color = Color.WHITE
+ if count < 0:
+ countLabel.label_settings.font_color = Color.GREEN
+ countLabel.text = "+%d" % abs(count)
+ else:
+ countLabel.label_settings.font_color = Color.WHITE
else:
countLabel.label_settings.font_color = Color.RED
diff --git a/scripts/Statemachine/SkillIcon.gd b/scripts/Statemachine/SkillIcon.gd
index c6d0754..4267a02 100644
--- a/scripts/Statemachine/SkillIcon.gd
+++ b/scripts/Statemachine/SkillIcon.gd
@@ -15,7 +15,7 @@ func _physics_process(_delta):
textureRect.texture = weapon.avatarTexture
var progress = min(weapon.cooldownTimer.percent(), UIState.player.fillingProgress(weapon.needEnergy))
material.set_shader_parameter("progress", progress)
- particle.emitting = progress >= 1
+ particle.emitting = weapon.canAttackBy(UIState.player)
if progress >= 1:
if !showed:
showed = true
diff --git a/scripts/Structs/Feed.gd b/scripts/Structs/Feed.gd
index 86d968d..f5d7f12 100644
--- a/scripts/Structs/Feed.gd
+++ b/scripts/Structs/Feed.gd
@@ -44,7 +44,8 @@ func apply(entity: EntityBase):
for i in range(min(costs.size(), costCounts.size())):
var item = costs[i]
var count = countOf(i)
- entity.inventory[item] -= count
+ if !freeToBuy || count < 0:
+ entity.inventory[item] -= count
for i in range(min(fields.size(), fieldValues.size())):
var field = fields[i]
var value = fieldValues[i]
@@ -106,12 +107,12 @@ func rebuildInfo():
weaponsBox.add_child(weaponShow)
for i in costsBox.get_children():
i.queue_free()
- if !freeToBuy:
- for i in range(min(costs.size(), costCounts.size())):
- var cost = costs[i]
- var count = countOf(i)
- var costShow: ItemShow = ComponentManager.getUIComponent("ItemShow").instantiate()
- costShow.enough = is_instance_valid(UIState.player) and UIState.player.inventory[cost] >= count
- costShow.type = cost
- costShow.count = count
- costsBox.add_child(costShow)
+ for i in range(min(costs.size(), costCounts.size())):
+ var cost = costs[i]
+ var count = countOf(i)
+ var costShow: ItemShow = ComponentManager.getUIComponent("ItemShow").instantiate()
+ costShow.enough = is_instance_valid(UIState.player) and UIState.player.inventory[cost] >= count
+ costShow.type = cost
+ costShow.count = count
+ costShow.visible = !freeToBuy || count < 0
+ costsBox.add_child(costShow)
diff --git a/scripts/Structs/Weapon.gd b/scripts/Structs/Weapon.gd
index 9c1ed5e..e35f3dd 100644
--- a/scripts/Structs/Weapon.gd
+++ b/scripts/Structs/Weapon.gd
@@ -2,13 +2,20 @@
extends PanelContainer
class_name Weapon
+enum EmitType {
+ HOLD_SHOOT,
+ CLICK_SHOOT,
+ CHARGE,
+ HOLD_LOOP
+}
+
@export var avatarTexture: Texture2D = null
@export var displayName: String = "未命名武器"
@export var quality: WeaponName.Quality = WeaponName.Quality.COMMON
@export var typeTopic: WeaponName.TypeTopic = WeaponName.TypeTopic.IMPACT
@export var soulLevel: int = 1
@export var costBeachball: int = 500
-@export var chargable: bool = false
+@export var emitType: EmitType = EmitType.HOLD_SHOOT
@export var store: Dictionary = {
"atk": 10
}
@@ -16,6 +23,8 @@ class_name Weapon
"atk": FieldStore.DataType.INTEGER
}
@export_multiline var descriptionTemplate: String = "造成$atk点伤害。"
+@export var sources: Array[String] = []
+@export var tease: String = ""
@export var needEnergy: float = 0
@export var cooldown: float = 100
@export var debugRebuild: bool = false
@@ -23,6 +32,8 @@ class_name Weapon
@onready var avatarRect: TextureRect = $"%avatar"
@onready var nameLabel: WeaponName = $"%name"
+@onready var sourceLabel: Label = $"%source"
+@onready var teaseLabel: Label = $"%tease"
@onready var energyLabel: Label = $"%energy"
@onready var beachball: ItemShow = $"%beachball"
@onready var soul: ItemShow = $"%soul"
@@ -37,6 +48,8 @@ class_name Weapon
var cooldownTimer: CooldownTimer = null
var originalStore: Dictionary = {}
var chargedTime: float = 0
+var attackSpeed: float = 1
+var looping: bool = false
func _ready():
cooldownTimer = CooldownTimer.new()
@@ -71,7 +84,7 @@ func _ready():
if get_parent():
var myIndex = get_index()
var leftIndex = max(myIndex - 1, 0)
- get_parent().move_child(self, leftIndex)
+ get_parent().move_child(self , leftIndex)
ArrayTool.swap(UIState.player.weapons, myIndex, leftIndex)
UIState.player.rebuildWeaponIcons()
)
@@ -80,7 +93,7 @@ func _ready():
if get_parent():
var myIndex = get_index()
var rightIndex = min(myIndex + 1, get_parent().get_child_count() - 1)
- get_parent().move_child(self, rightIndex)
+ get_parent().move_child(self , rightIndex)
ArrayTool.swap(UIState.player.weapons, myIndex, rightIndex)
UIState.player.rebuildWeaponIcons()
)
@@ -119,6 +132,12 @@ func rebuildInfo(showNext: bool = false):
nameLabel.typeTopic = typeTopic
nameLabel.soulLevel = soulLevel
nameLabel.level = level
+ sourceLabel.text = " × ".join(sources)
+ if len(tease) > 0:
+ teaseLabel.text = "“%s”" % tease
+ teaseLabel.show()
+ else:
+ teaseLabel.hide()
energyLabel.text = "%.1f" % needEnergy
beachball.count = costBeachball
soul.count = soulLevel
@@ -167,20 +186,44 @@ func playSound(sound: String):
await cloned.finished
cloned.queue_free()
func canAttackBy(entity: EntityBase):
- cooldownTimer.speedScale = entity.fields.get(FieldStore.Entity.ATTACK_SPEED)
- return cooldownTimer.isCooldowned() and entity.isEnergyEnough(needEnergy)
+ cooldownTimer.speedScale = entity.fields.get(FieldStore.Entity.ATTACK_SPEED) * attackSpeed
+ return cooldownTimer.isCooldowned() and entity.isEnergyEnough(needEnergy) and checkAttack(entity)
func tryAttack(entity: EntityBase):
- if canAttackBy(entity):
- var result = await attack(entity)
- if result:
- cooldownTimer.start()
- entity.useEnergy(needEnergy)
- return result
+ if looping:
+ if checkAttack(entity):
+ return await attack(entity)
+ else:
+ exitLoop(entity)
+ else:
+ if canAttackBy(entity):
+ if emitType == EmitType.HOLD_LOOP:
+ var result = await loopStart(entity)
+ if result:
+ looping = true
+ cooldownTimer.start()
+ entity.useEnergy(needEnergy)
+ return result
+ else:
+ var result = await attack(entity)
+ if result:
+ cooldownTimer.start()
+ entity.useEnergy(needEnergy)
+ return result
func charged(base: float, percent: float):
return base * sqrt(1 + chargedTime / 15 * percent)
+func exitLoop(entity: EntityBase):
+ if !looping: return
+ looping = false
+ loopExit(entity)
# 抽象
func update(_to: int, origin: Dictionary, _entity: EntityBase):
return origin
+func loopStart(_entity: EntityBase):
+ pass
+func checkAttack(_entity: EntityBase) -> bool:
+ return true
func attack(_entity: EntityBase):
pass
+func loopExit(_entity: EntityBase):
+ pass
diff --git a/scripts/Tools/BulletTool.gd b/scripts/Tools/BulletTool.gd
index d35cb9f..7e91606 100644
--- a/scripts/Tools/BulletTool.gd
+++ b/scripts/Tools/BulletTool.gd
@@ -28,7 +28,7 @@ static func findClosetBullet(to: Vector2, fromTree: SceneTree) -> BulletBase:
lastDistance = to.distance_to(bullet.position)
result = bullet
return result
-static func findClosetBulletCanDamage(to: Vector2, fromTree: SceneTree, target: EntityBase) -> BulletBase:
+static func findClosetBulletCanDamage(to: Vector2, fromTree: SceneTree, target: EntityBase, maxDistance: float = INF) -> BulletBase:
var result: BulletBase = null
var lastDistance = INF
for bullet in fromTree.get_nodes_in_group("bullets"):
@@ -36,4 +36,7 @@ static func findClosetBulletCanDamage(to: Vector2, fromTree: SceneTree, target:
if to.distance_to(bullet.position) < lastDistance:
lastDistance = to.distance_to(bullet.position)
result = bullet
+ if is_instance_valid(result):
+ if result.position.distance_to(to) > maxDistance:
+ return null
return result
diff --git a/scripts/Tools/GameRule.gd b/scripts/Tools/GameRule.gd
index 709cc75..2b8597d 100644
--- a/scripts/Tools/GameRule.gd
+++ b/scripts/Tools/GameRule.gd
@@ -7,7 +7,7 @@ static var allowFriendlyFire: bool = false # 是否允许友军伤害
static var bulletSpeedMultiplier: float = 1 # 子弹速度倍率
static var damageOffset: float = MathTool.percent(20) # 伤害随机浮动比例
static var beachballOffset: float = MathTool.percent(30) # 棒球掉落数随机浮动比例
-static var damageLabelSpawnOffset: float = 10 # 伤害标签生成位置的随机偏移
+static var damageLabelSpawnOffset: float = 30 # 伤害标签生成位置的随机偏移
static var itemDroppedSpawnOffset: float = 30 # 掉落物生成位置的随机偏移
static var appleDropRate: float = MathTool.percent(3) # 苹果掉落概率
static var refreshCountIncreaseCount: Vector2i = Vector2i(0, 3) # 刷新所需的棒球数量的增加的数量
diff --git a/themes/main.tres b/themes/main.tres
index 7cc2da5..f4ce5f2 100644
--- a/themes/main.tres
+++ b/themes/main.tres
@@ -1,4 +1,4 @@
-[gd_resource type="Theme" load_steps=9 format=3 uid="uid://dhvs6urgf6jr5"]
+[gd_resource type="Theme" format=3 uid="uid://dhvs6urgf6jr5"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2jby4"]
content_margin_left = 5.0