mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-07-08 19:17:05 +08:00
Compare commits
26 Commits
dev
...
62d7ecf93a
| Author | SHA1 | Date | |
|---|---|---|---|
| 62d7ecf93a | |||
| c31b3bdc4f | |||
| b1cb089705 | |||
| d739771c1a | |||
| c7b1660311 | |||
| a3c03fc73a | |||
| 9c1c739deb | |||
| cf9568bcac | |||
| 8b14e36031 | |||
| a6448813b8 | |||
| 7c78deaa7b | |||
| 6f8b2fec90 | |||
| 1eb05ca758 | |||
| b9208189fe | |||
| 8754b6d491 | |||
| 972a8494b5 | |||
| c1143d5f71 | |||
| 8c95202d72 | |||
| 2563dc8c81 | |||
| 32a0f43bfa | |||
| fbcab848e2 | |||
| 04727c0feb | |||
| ad63aacf94 | |||
| e8413dd01b | |||
| c079c20f28 | |||
| df8ea7c466 |
@@ -34,6 +34,21 @@ corner_detail = 1
|
|||||||
font_size = 12
|
font_size = 12
|
||||||
font_color = Color(0.55, 0.55, 0.55, 1)
|
font_color = Color(0.55, 0.55, 0.55, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_jv1l6"]
|
||||||
|
content_margin_left = 10.0
|
||||||
|
content_margin_top = 10.0
|
||||||
|
content_margin_right = 10.0
|
||||||
|
content_margin_bottom = 10.0
|
||||||
|
bg_color = Color(0, 0, 0, 0.4)
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(1, 1, 1, 1)
|
||||||
|
corner_radius_top_left = 15
|
||||||
|
corner_radius_bottom_right = 15
|
||||||
|
corner_detail = 1
|
||||||
|
|
||||||
[node name="WeaponCard" type="PanelContainer" unique_id=2085048785]
|
[node name="WeaponCard" type="PanelContainer" unique_id=2085048785]
|
||||||
offset_right = 350.0
|
offset_right = 350.0
|
||||||
offset_bottom = 304.0
|
offset_bottom = 304.0
|
||||||
@@ -183,9 +198,20 @@ text = "无灵"
|
|||||||
label_settings = SubResource("LabelSettings_b3nsw")
|
label_settings = SubResource("LabelSettings_b3nsw")
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="description" type="RichTextLabel" parent="container" unique_id=566230682]
|
[node name="back" type="PanelContainer" parent="container" unique_id=517412512]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_styles/panel = SubResource("StyleBoxFlat_jv1l6")
|
||||||
|
|
||||||
|
[node name="scroller" type="ScrollContainer" parent="container/back" unique_id=543588938]
|
||||||
|
custom_minimum_size = Vector2(0, 200)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
horizontal_scroll_mode = 0
|
||||||
|
|
||||||
|
[node name="description" type="RichTextLabel" parent="container/back/scroller" unique_id=566230682]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
text = "[center]造成[color=cyan]10[/color]点伤害。[/center]"
|
text = "[center]造成[color=cyan]10[/color]点伤害。[/center]"
|
||||||
fit_content = true
|
fit_content = true
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=9 format=3 uid="uid://clr5pbkifgear"]
|
[gd_scene format=3 uid="uid://clr5pbkifgear"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_qpsi6"]
|
[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="Script" uid="uid://dl7d0v7f2uute" path="res://scripts/Contents/Bullets/AcidStorm.gd" id="2_daxsl"]
|
||||||
@@ -104,22 +104,21 @@ _data = {
|
|||||||
[sub_resource type="CircleShape2D" id="CircleShape2D_daxsl"]
|
[sub_resource type="CircleShape2D" id="CircleShape2D_daxsl"]
|
||||||
radius = 59.008472
|
radius = 59.008472
|
||||||
|
|
||||||
[node name="AcidStorm" instance=ExtResource("1_qpsi6")]
|
[node name="AcidStorm" unique_id=61904763 instance=ExtResource("1_qpsi6")]
|
||||||
script = ExtResource("2_daxsl")
|
script = ExtResource("2_daxsl")
|
||||||
speed = 2.5
|
speed = 2.5
|
||||||
|
motionType = 3
|
||||||
penerate = 1.0
|
penerate = 1.0
|
||||||
autoSpawnAnimation = true
|
autoSpawnAnimation = true
|
||||||
freeAfterSpawn = true
|
freeAfterSpawn = true
|
||||||
|
|
||||||
[node name="texture" parent="." index="0"]
|
[node name="texture" parent="." index="0" unique_id=162977358]
|
||||||
scale = Vector2(0.2, 0.2)
|
scale = Vector2(0.2, 0.2)
|
||||||
sprite_frames = SubResource("SpriteFrames_daxsl")
|
sprite_frames = SubResource("SpriteFrames_daxsl")
|
||||||
|
|
||||||
[node name="animator" parent="texture" index="0"]
|
[node name="animator" parent="texture" index="0" unique_id=1114087117]
|
||||||
libraries = {
|
libraries/ = SubResource("AnimationLibrary_5atmc")
|
||||||
&"": SubResource("AnimationLibrary_5atmc")
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="hitbox" parent="." index="1"]
|
[node name="hitbox" parent="." index="1" unique_id=175349408]
|
||||||
shape = SubResource("CircleShape2D_daxsl")
|
shape = SubResource("CircleShape2D_daxsl")
|
||||||
disabled = true
|
disabled = true
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ script = ExtResource("2_165xl")
|
|||||||
displayName = "蹦蹦炸弹"
|
displayName = "蹦蹦炸弹"
|
||||||
speed = 4.0
|
speed = 4.0
|
||||||
baseDamage = 30.0
|
baseDamage = 30.0
|
||||||
motionType = 3
|
motionType = 7
|
||||||
lifeTime = 10000.0
|
lifeTime = 10000.0
|
||||||
autoLoopAnimation = true
|
autoLoopAnimation = true
|
||||||
|
|
||||||
|
|||||||
@@ -145,7 +145,6 @@ height = 580.0
|
|||||||
script = ExtResource("2_nbqhn")
|
script = ExtResource("2_nbqhn")
|
||||||
speed = 25.0
|
speed = 25.0
|
||||||
penerate = 1.0
|
penerate = 1.0
|
||||||
penerateDamageReduction = 0.1
|
|
||||||
autoSpawnAnimation = true
|
autoSpawnAnimation = true
|
||||||
autoPlayTexture = true
|
autoPlayTexture = true
|
||||||
freeAfterSpawn = true
|
freeAfterSpawn = true
|
||||||
|
|||||||
@@ -0,0 +1,99 @@
|
|||||||
|
[gd_scene format=3 uid="uid://dnjct3fifocnb"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_xwju0"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://mo0gjwh5amev" path="res://resources/effects/danger/Effect_Boss_YiGung_Upper1206.png" id="2_0na4i"]
|
||||||
|
[ext_resource type="Script" uid="uid://d3m2bjkxg82a2" path="res://scripts/Contents/Bullets/InternalDamage.gd" id="2_nsbh7"]
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_nsbh7"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": ExtResource("2_0na4i")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"default",
|
||||||
|
"speed": 5.0
|
||||||
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_nsbh7"]
|
||||||
|
resource_name = "destroy"
|
||||||
|
length = 0.5
|
||||||
|
step = 0.1
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_6y1wt"]
|
||||||
|
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": [6.283185307179586, 0.0]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_8ryqb"]
|
||||||
|
resource_name = "spawn"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_3d1xe"]
|
||||||
|
_data = {
|
||||||
|
&"destroy": SubResource("Animation_nsbh7"),
|
||||||
|
&"loop": SubResource("Animation_6y1wt"),
|
||||||
|
&"spawn": SubResource("Animation_8ryqb")
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_nsbh7"]
|
||||||
|
_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_6y1wt"]
|
||||||
|
curve = SubResource("Curve_nsbh7")
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_8ryqb"]
|
||||||
|
_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_3d1xe"]
|
||||||
|
curve = SubResource("Curve_8ryqb")
|
||||||
|
|
||||||
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_fkmpk"]
|
||||||
|
particle_flag_disable_z = true
|
||||||
|
spread = 0.0
|
||||||
|
angular_velocity_min = -200.00002
|
||||||
|
angular_velocity_max = 199.99998
|
||||||
|
gravity = Vector3(0, 0, 0)
|
||||||
|
scale_min = 0.29999998
|
||||||
|
scale_max = 0.29999998
|
||||||
|
scale_curve = SubResource("CurveTexture_3d1xe")
|
||||||
|
alpha_curve = SubResource("CurveTexture_6y1wt")
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id="CircleShape2D_0na4i"]
|
||||||
|
radius = 150.0
|
||||||
|
|
||||||
|
[node name="InternalDamage" unique_id=5571707 instance=ExtResource("1_xwju0")]
|
||||||
|
script = ExtResource("2_nsbh7")
|
||||||
|
autoLoopAnimation = true
|
||||||
|
|
||||||
|
[node name="texture" parent="." index="0" unique_id=162977358]
|
||||||
|
rotation = 3.7873645
|
||||||
|
scale = Vector2(0.3, 0.3)
|
||||||
|
sprite_frames = SubResource("SpriteFrames_nsbh7")
|
||||||
|
|
||||||
|
[node name="animator" parent="texture" index="0" unique_id=1114087117]
|
||||||
|
libraries/ = SubResource("AnimationLibrary_3d1xe")
|
||||||
|
|
||||||
|
[node name="trail" type="GPUParticles2D" parent="texture" index="2" unique_id=1763528617]
|
||||||
|
z_index = -1
|
||||||
|
amount = 10
|
||||||
|
texture = ExtResource("2_0na4i")
|
||||||
|
lifetime = 0.5
|
||||||
|
process_material = SubResource("ParticleProcessMaterial_fkmpk")
|
||||||
|
|
||||||
|
[node name="hitbox" parent="." index="1" unique_id=175349408]
|
||||||
|
shape = SubResource("CircleShape2D_0na4i")
|
||||||
|
disabled = true
|
||||||
@@ -97,6 +97,7 @@ alpha_curve = SubResource("CurveTexture_3jny5")
|
|||||||
|
|
||||||
[node name="MagicMissle" unique_id=5571707 instance=ExtResource("1_4sjx4")]
|
[node name="MagicMissle" unique_id=5571707 instance=ExtResource("1_4sjx4")]
|
||||||
script = ExtResource("2_lrw10")
|
script = ExtResource("2_lrw10")
|
||||||
|
motionType = 7
|
||||||
penerate = 1.0
|
penerate = 1.0
|
||||||
penerateDamageReduction = 0.1
|
penerateDamageReduction = 0.1
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ radius = 1000.0
|
|||||||
[node name="NuclearBomb" unique_id=432957691 instance=ExtResource("1_dpea6")]
|
[node name="NuclearBomb" unique_id=432957691 instance=ExtResource("1_dpea6")]
|
||||||
script = ExtResource("2_f85ek")
|
script = ExtResource("2_f85ek")
|
||||||
displayName = "核弹"
|
displayName = "核弹"
|
||||||
motionType = 3
|
motionType = 7
|
||||||
canDamageSelf = true
|
canDamageSelf = true
|
||||||
autoDestroyOnHitMap = false
|
autoDestroyOnHitMap = false
|
||||||
|
|
||||||
|
|||||||
@@ -124,6 +124,7 @@ script = ExtResource("2_x26jp")
|
|||||||
displayName = "乾坤剑"
|
displayName = "乾坤剑"
|
||||||
speed = 20.0
|
speed = 20.0
|
||||||
baseDamage = 25.0
|
baseDamage = 25.0
|
||||||
|
motionType = 7
|
||||||
penerate = 1.0
|
penerate = 1.0
|
||||||
penerateDamageReduction = 0.2
|
penerateDamageReduction = 0.2
|
||||||
lifeTime = 3000.0
|
lifeTime = 3000.0
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=5 format=3 uid="uid://c0oc8aqfef0tt"]
|
[gd_scene format=3 uid="uid://c0oc8aqfef0tt"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_k4d80"]
|
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_k4d80"]
|
||||||
[ext_resource type="Script" uid="uid://bv848wj2ko0y0" path="res://scripts/Contents/Bullets/RedCrystal.gd" id="2_llvlo"]
|
[ext_resource type="Script" uid="uid://bv848wj2ko0y0" path="res://scripts/Contents/Bullets/RedCrystal.gd" id="2_llvlo"]
|
||||||
@@ -15,13 +15,14 @@ animations = [{
|
|||||||
"speed": 5.0
|
"speed": 5.0
|
||||||
}]
|
}]
|
||||||
|
|
||||||
[node name="RedCrystal" instance=ExtResource("1_k4d80")]
|
[node name="RedCrystal" unique_id=1424825822 instance=ExtResource("1_k4d80")]
|
||||||
script = ExtResource("2_llvlo")
|
script = ExtResource("2_llvlo")
|
||||||
displayName = "红水晶"
|
displayName = "红水晶"
|
||||||
speed = 8.0
|
speed = 8.0
|
||||||
|
motionType = 7
|
||||||
lifeTime = 3000.0
|
lifeTime = 3000.0
|
||||||
metadata/_edit_vertical_guides_ = [150.0]
|
metadata/_edit_vertical_guides_ = [150.0]
|
||||||
|
|
||||||
[node name="texture" parent="." index="0"]
|
[node name="texture" parent="." index="0" unique_id=162977358]
|
||||||
modulate = Color(1.2892731, 0.44830602, 0.44830602, 1)
|
modulate = Color(1.2892731, 0.44830602, 0.44830602, 1)
|
||||||
sprite_frames = SubResource("SpriteFrames_ns31y")
|
sprite_frames = SubResource("SpriteFrames_ns31y")
|
||||||
|
|||||||
@@ -68,6 +68,18 @@ tracks/4/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true]
|
"values": [true]
|
||||||
}
|
}
|
||||||
|
tracks/5/type = "value"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("%texture/..:motionType")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [0]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_nqryj"]
|
[sub_resource type="Animation" id="Animation_nqryj"]
|
||||||
resource_name = "destroy"
|
resource_name = "destroy"
|
||||||
@@ -203,6 +215,18 @@ tracks/7/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false, true]
|
"values": [false, true]
|
||||||
}
|
}
|
||||||
|
tracks/8/type = "value"
|
||||||
|
tracks/8/imported = false
|
||||||
|
tracks/8/enabled = true
|
||||||
|
tracks/8/path = NodePath("%texture/..:motionType")
|
||||||
|
tracks/8/interp = 1
|
||||||
|
tracks/8/loop_wrap = true
|
||||||
|
tracks/8/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 1.7),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [0, 6]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ccsa1"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ccsa1"]
|
||||||
_data = {
|
_data = {
|
||||||
|
|||||||
@@ -55,6 +55,18 @@ tracks/3/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [0]
|
"values": [0]
|
||||||
}
|
}
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("%texture/..:motionType")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [0]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_oinqg"]
|
[sub_resource type="Animation" id="Animation_oinqg"]
|
||||||
resource_name = "destroy"
|
resource_name = "destroy"
|
||||||
@@ -151,6 +163,18 @@ tracks/5/keys = {
|
|||||||
"method": &"generateShadow"
|
"method": &"generateShadow"
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
|
tracks/6/type = "value"
|
||||||
|
tracks/6/imported = false
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("%texture/..:motionType")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.3, 1.45),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [6, 0, 6]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_w1utg"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_w1utg"]
|
||||||
_data = {
|
_data = {
|
||||||
@@ -186,8 +210,8 @@ texture = ExtResource("2_wwxm2")
|
|||||||
[node name="audio" type="AudioStreamPlayer2D" parent="texture/anchor/textureSword" index="0" unique_id=167399724]
|
[node name="audio" type="AudioStreamPlayer2D" parent="texture/anchor/textureSword" index="0" unique_id=167399724]
|
||||||
|
|
||||||
[node name="hitbox" parent="." index="1" unique_id=175349408 node_paths=PackedStringArray("target")]
|
[node name="hitbox" parent="." index="1" unique_id=175349408 node_paths=PackedStringArray("target")]
|
||||||
position = Vector2(150, 0)
|
position = Vector2(299.99997, 0.1221919)
|
||||||
rotation = 1.5707964
|
rotation = 0.00040731629
|
||||||
shape = SubResource("CircleShape2D_1sgli")
|
shape = SubResource("CircleShape2D_1sgli")
|
||||||
script = ExtResource("7_1sgli")
|
script = ExtResource("7_1sgli")
|
||||||
target = NodePath("../texture/anchor/textureSword")
|
target = NodePath("../texture/anchor/textureSword")
|
||||||
|
|||||||
@@ -19,10 +19,9 @@ theme_override_styles/panel = SubResource("StyleBoxFlat_fi2nw")
|
|||||||
displayName = "牧羊犬"
|
displayName = "牧羊犬"
|
||||||
slogan = "恪守使命不离不弃"
|
slogan = "恪守使命不离不弃"
|
||||||
avatar = ExtResource("2_fi2nw")
|
avatar = ExtResource("2_fi2nw")
|
||||||
description = "每3秒发动格挡,弹反一切子弹。"
|
description = "每隔3秒发动格挡。"
|
||||||
fields = Array[int]([0, 8, 3])
|
fields = Array[int]([0, 8, 3])
|
||||||
fieldValues = Array[float]([50.0, 0.15, -0.2])
|
fieldValues = Array[float]([50.0, 0.15, -0.2])
|
||||||
clickToRebuild = true
|
|
||||||
|
|
||||||
[node name="avatarTexture" parent="wrapper" parent_id_path=PackedInt32Array(2023039659) index="0" unique_id=1334645594]
|
[node name="avatarTexture" parent="wrapper" parent_id_path=PackedInt32Array(2023039659) index="0" unique_id=1334645594]
|
||||||
texture = ExtResource("2_fi2nw")
|
texture = ExtResource("2_fi2nw")
|
||||||
@@ -34,4 +33,4 @@ text = "牧羊犬"
|
|||||||
text = "“恪守使命不离不弃”"
|
text = "“恪守使命不离不弃”"
|
||||||
|
|
||||||
[node name="descriptionLabel" parent="wrapper/infoContainer" parent_id_path=PackedInt32Array(143242635) index="1" unique_id=808054282]
|
[node name="descriptionLabel" parent="wrapper/infoContainer" parent_id_path=PackedInt32Array(143242635) index="1" unique_id=808054282]
|
||||||
text = "每3秒发动格挡,弹反一切子弹。"
|
text = "每3秒发动格挡。"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=9 format=3 uid="uid://bb363wvwvs7m4"]
|
[gd_scene format=3 uid="uid://bb363wvwvs7m4"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_cbgnh"]
|
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_cbgnh"]
|
||||||
[ext_resource type="Script" uid="uid://soehdxfbpmc0" path="res://scripts/Contents/Characters/Dog.gd" id="2_pb36u"]
|
[ext_resource type="Script" uid="uid://soehdxfbpmc0" path="res://scripts/Contents/Characters/Dog.gd" id="2_pb36u"]
|
||||||
@@ -47,7 +47,7 @@ animations = [{
|
|||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_e644g"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_e644g"]
|
||||||
size = Vector2(140, 91)
|
size = Vector2(140, 91)
|
||||||
|
|
||||||
[node name="Dog" instance=ExtResource("1_cbgnh")]
|
[node name="Dog" unique_id=391590609 instance=ExtResource("1_cbgnh")]
|
||||||
script = ExtResource("2_pb36u")
|
script = ExtResource("2_pb36u")
|
||||||
displayName = "哈士奇"
|
displayName = "哈士奇"
|
||||||
drops = Array[int]([3])
|
drops = Array[int]([3])
|
||||||
@@ -75,8 +75,8 @@ frame_progress = 0.6540908
|
|||||||
position = Vector2(1, 12.5)
|
position = Vector2(1, 12.5)
|
||||||
shape = SubResource("RectangleShape2D_e644g")
|
shape = SubResource("RectangleShape2D_e644g")
|
||||||
|
|
||||||
[node name="normal" type="Node2D" parent="texture/weapons" index="0"]
|
[node name="normal" type="Node2D" parent="texture/weapons" index="0" unique_id=1000814647]
|
||||||
position = Vector2(53, -35)
|
position = Vector2(61, 13)
|
||||||
|
|
||||||
[node name="statebar" parent="." index="4"]
|
[node name="statebar" parent="." index="4"]
|
||||||
position = Vector2(11, -122)
|
position = Vector2(11, -122)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=9 format=3 uid="uid://c8h1abpbe6cww"]
|
[gd_scene format=3 uid="uid://c8h1abpbe6cww"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_twxai"]
|
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_twxai"]
|
||||||
[ext_resource type="Script" uid="uid://dsfht8qodraln" path="res://scripts/Contents/Characters/Hen.gd" id="2_8u5a0"]
|
[ext_resource type="Script" uid="uid://dsfht8qodraln" path="res://scripts/Contents/Characters/Hen.gd" id="2_8u5a0"]
|
||||||
@@ -34,7 +34,7 @@ size = Vector2(101, 49.5)
|
|||||||
[sub_resource type="CircleShape2D" id="CircleShape2D_rwj47"]
|
[sub_resource type="CircleShape2D" id="CircleShape2D_rwj47"]
|
||||||
radius = 19.026299
|
radius = 19.026299
|
||||||
|
|
||||||
[node name="Hen" instance=ExtResource("1_twxai")]
|
[node name="Hen" unique_id=1625119529 instance=ExtResource("1_twxai")]
|
||||||
script = ExtResource("2_8u5a0")
|
script = ExtResource("2_8u5a0")
|
||||||
displayName = "母鸡"
|
displayName = "母鸡"
|
||||||
drops = Array[int]([1])
|
drops = Array[int]([1])
|
||||||
@@ -58,11 +58,12 @@ scale = Vector2(0.29643428, 0.29643428)
|
|||||||
position = Vector2(-13.5, 0.75)
|
position = Vector2(-13.5, 0.75)
|
||||||
shape = SubResource("RectangleShape2D_1stll")
|
shape = SubResource("RectangleShape2D_1stll")
|
||||||
|
|
||||||
[node name="hitbox2" type="CollisionShape2D" parent="texture/hurtbox" index="1"]
|
[node name="hitbox2" type="CollisionShape2D" parent="texture/hurtbox" index="1" unique_id=5127309]
|
||||||
position = Vector2(49, -28)
|
position = Vector2(49, -28)
|
||||||
shape = SubResource("CircleShape2D_rwj47")
|
shape = SubResource("CircleShape2D_rwj47")
|
||||||
|
|
||||||
[node name="normal" type="Node2D" parent="texture/weapons" index="0"]
|
[node name="normal" type="Node2D" parent="texture/weapons" index="0" unique_id=676880742]
|
||||||
|
position = Vector2(66, -25)
|
||||||
|
|
||||||
[node name="statebar" parent="." index="4" node_paths=PackedStringArray("entity")]
|
[node name="statebar" parent="." index="4" node_paths=PackedStringArray("entity")]
|
||||||
position = Vector2(0, -118)
|
position = Vector2(0, -118)
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://bs863g2s8r770" path="res://components/Abstracts/PlayerBase.tscn" id="1_ns0m5"]
|
[ext_resource type="PackedScene" uid="uid://bs863g2s8r770" path="res://components/Abstracts/PlayerBase.tscn" id="1_ns0m5"]
|
||||||
[ext_resource type="Script" uid="uid://b8g0hkqvyeptg" path="res://scripts/Contents/Characters/Lynx.gd" id="2_d6nve"]
|
[ext_resource type="Script" uid="uid://b8g0hkqvyeptg" path="res://scripts/Contents/Characters/Lynx.gd" id="2_d6nve"]
|
||||||
[ext_resource type="PackedScene" uid="uid://frwt0fgrpskb" path="res://components/Weapons/Meowmere.tscn" id="3_nitbu"]
|
[ext_resource type="PackedScene" uid="uid://c0n3igy4hucrg" path="res://components/Weapons/PurpleCrystal.tscn" id="3_nitbu"]
|
||||||
|
|
||||||
[node name="Lynx" unique_id=1711205167 instance=ExtResource("1_ns0m5")]
|
[node name="Lynx" unique_id=1711205167 instance=ExtResource("1_ns0m5")]
|
||||||
script = ExtResource("2_d6nve")
|
script = ExtResource("2_d6nve")
|
||||||
displayName = "猞猁"
|
displayName = "猞猁"
|
||||||
|
|
||||||
[node name="Meowmere" parent="weaponStore" index="0" unique_id=1965287972 instance=ExtResource("3_nitbu")]
|
[node name="PurpleCrystal" parent="weaponStore" index="0" unique_id=1991730660 instance=ExtResource("3_nitbu")]
|
||||||
|
|||||||
@@ -298,13 +298,15 @@ size_flags_horizontal = 3
|
|||||||
theme = ExtResource("4_lfxcn")
|
theme = ExtResource("4_lfxcn")
|
||||||
selected = 0
|
selected = 0
|
||||||
allow_reselect = true
|
allow_reselect = true
|
||||||
item_count = 3
|
item_count = 4
|
||||||
popup/item_0/text = "无尽波次·标准游戏体验"
|
popup/item_0/text = "无尽波次·标准游戏体验"
|
||||||
popup/item_0/id = 0
|
popup/item_0/id = 0
|
||||||
popup/item_1/text = "Boss Rush"
|
popup/item_1/text = "Boss Rush"
|
||||||
popup/item_1/id = 1
|
popup/item_1/id = 1
|
||||||
popup/item_2/text = "割草·高难度⚠️"
|
popup/item_2/text = "割草·高难度⚠️"
|
||||||
popup/item_2/id = 2
|
popup/item_2/id = 2
|
||||||
|
popup/item_3/text = "[Debug] Testboss"
|
||||||
|
popup/item_3/id = 3
|
||||||
|
|
||||||
[node name="useTutorial" type="HBoxContainer" parent="content/wrapper/layout/startGameWrapper/start/starter/singleplayer/playConfig" index="2" unique_id=2079979053]
|
[node name="useTutorial" type="HBoxContainer" parent="content/wrapper/layout/startGameWrapper/start/starter/singleplayer/playConfig" index="2" unique_id=2079979053]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
[gd_scene load_steps=4 format=3 uid="uid://yq7vmijwvgx1"]
|
[gd_scene format=3 uid="uid://yq7vmijwvgx1"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_pyyxv"]
|
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_pyyxv"]
|
||||||
[ext_resource type="Script" uid="uid://bxa5hc7aokisg" path="res://scripts/Contents/Weapons/AcidWind.gd" id="2_1j38u"]
|
[ext_resource type="Script" uid="uid://bxa5hc7aokisg" path="res://scripts/Contents/Weapons/AcidWind.gd" id="2_1j38u"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ckr8tw7fsa7qx" path="res://resources/weapons/AcidWind.png" id="2_pnd3r"]
|
[ext_resource type="Texture2D" uid="uid://ckr8tw7fsa7qx" path="res://resources/weapons/AcidWind.png" id="2_pnd3r"]
|
||||||
|
|
||||||
[node name="AcidWind" instance=ExtResource("1_pyyxv")]
|
[node name="AcidWind" unique_id=1599717188 instance=ExtResource("1_pyyxv")]
|
||||||
script = ExtResource("2_1j38u")
|
script = ExtResource("2_1j38u")
|
||||||
avatarTexture = ExtResource("2_pnd3r")
|
avatarTexture = ExtResource("2_pnd3r")
|
||||||
displayName = "酸蚀风暴"
|
displayName = "酸蚀风暴"
|
||||||
@@ -39,25 +39,24 @@ descriptionTemplate = "发射一个[b]酸蚀风暴[/b],以$f的频率吸引一
|
|||||||
[color=lightyellow][b]盐酸[/b][/color]:使敌人 [i]移动速度[/i] 降低$cl-speed,[i]攻击速度[/i] 降低$cl-atkspeed。
|
[color=lightyellow][b]盐酸[/b][/color]:使敌人 [i]移动速度[/i] 降低$cl-speed,[i]攻击速度[/i] 降低$cl-atkspeed。
|
||||||
[color=pink][b]碳酸[/b][/color]:降低敌人$c-atk伤害。
|
[color=pink][b]碳酸[/b][/color]:降低敌人$c-atk伤害。
|
||||||
[color=orange][b]磷酸[/b][/color]:使敌人 [i]散射角[/i] 增加$p-offset。"
|
[color=orange][b]磷酸[/b][/color]:使敌人 [i]散射角[/i] 增加$p-offset。"
|
||||||
needEnergy = 10.0
|
needEnergy = 25.0
|
||||||
cooldown = 2000.0
|
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_pnd3r")
|
texture = ExtResource("2_pnd3r")
|
||||||
|
|
||||||
[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 = "10.0"
|
text = "10.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 = 200
|
count = 200
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" index="0"]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "酸蚀风暴"
|
displayName = "酸蚀风暴"
|
||||||
quality = 4
|
quality = 4
|
||||||
typeTopic = 3
|
typeTopic = 3
|
||||||
|
|
||||||
[node name="description" parent="container" index="2"]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]发射一个[b]酸蚀风暴[/b],以[color=cyan]30.0Hz[/color]的频率吸引一下五种[b]酸[/b]到风暴中心,强酸可造成[color=cyan]1.00[/color]点伤害,弱酸造成[color=cyan]0.50[/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=green][b]硫酸[/b][/color]:命中时溅射1~[color=cyan]4[/color]滴[b]硫酸[/b]。
|
||||||
[color=lightblue][b]硝酸[/b][/color]:额外造成[color=cyan]500.0%[/color]伤害。
|
[color=lightblue][b]硝酸[/b][/color]:额外造成[color=cyan]500.0%[/color]伤害。
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ sources = Array[String](["Magic Craft", "Harry Potter"])
|
|||||||
tease = "秒天秒地秒空气"
|
tease = "秒天秒地秒空气"
|
||||||
needEnergy = 200.0
|
needEnergy = 200.0
|
||||||
cooldown = 6000.0
|
cooldown = 6000.0
|
||||||
debugRebuild = true
|
|
||||||
|
|
||||||
[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
|
[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
|
||||||
stream = ExtResource("4_cb5nh")
|
stream = ExtResource("4_cb5nh")
|
||||||
@@ -48,9 +47,10 @@ typeTopic = 1
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "Magic Craft × Harry Potter"
|
text = "Magic Craft × Harry Potter"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]召唤[b]湮灭射线[/b],
|
text = "[center]召唤[b]湮灭射线[/b],
|
||||||
每[color=cyan]0.10[/color]秒造成[color=cyan]40[/color]点伤害。[/center]"
|
每[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]
|
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
||||||
|
visible = true
|
||||||
text = "“秒天秒地秒空气”"
|
text = "“秒天秒地秒空气”"
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
[gd_scene load_steps=5 format=3 uid="uid://c3crr8r7y3oho"]
|
[gd_scene format=3 uid="uid://c3crr8r7y3oho"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_rlc3s"]
|
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_rlc3s"]
|
||||||
[ext_resource type="Script" uid="uid://8xlc5upq36n7" path="res://scripts/Contents/Weapons/BlueCrystal.gd" id="2_jbcf8"]
|
[ext_resource type="Script" uid="uid://8xlc5upq36n7" path="res://scripts/Contents/Weapons/BlueCrystal.gd" id="2_jbcf8"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dl1tawdvnlsux" path="res://resources/weapons/blue-crystal.png" id="3_fewtg"]
|
[ext_resource type="Texture2D" uid="uid://dl1tawdvnlsux" path="res://resources/weapons/blue-crystal.png" id="3_fewtg"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dclinyhu256xi" path="res://resources/sounds/effect/Low Whoosh.mp3" id="4_fewtg"]
|
[ext_resource type="AudioStream" uid="uid://dclinyhu256xi" path="res://resources/sounds/effect/Low Whoosh.mp3" id="4_fewtg"]
|
||||||
|
|
||||||
[node name="BlueCrystal" instance=ExtResource("1_rlc3s")]
|
[node name="BlueCrystal" unique_id=1636642891 instance=ExtResource("1_rlc3s")]
|
||||||
script = ExtResource("2_jbcf8")
|
script = ExtResource("2_jbcf8")
|
||||||
avatarTexture = ExtResource("3_fewtg")
|
avatarTexture = ExtResource("3_fewtg")
|
||||||
displayName = "蓝水晶簇"
|
displayName = "蓝水晶簇"
|
||||||
@@ -22,15 +22,15 @@ storeType = {
|
|||||||
descriptionTemplate = "发射[b]蓝水晶[/b],可无限追踪,命中造成$atk点伤害,飞行过程中有$count颗[b]钻石[/b]环绕。"
|
descriptionTemplate = "发射[b]蓝水晶[/b],可无限追踪,命中造成$atk点伤害,飞行过程中有$count颗[b]钻石[/b]环绕。"
|
||||||
cooldown = 250.0
|
cooldown = 250.0
|
||||||
|
|
||||||
[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_fewtg")
|
stream = ExtResource("4_fewtg")
|
||||||
|
|
||||||
[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_fewtg")
|
texture = ExtResource("3_fewtg")
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" index="0"]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "蓝水晶簇"
|
displayName = "蓝水晶簇"
|
||||||
typeTopic = 3
|
typeTopic = 3
|
||||||
|
|
||||||
[node name="description" parent="container" index="2"]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]发射[b]蓝水晶[/b],可无限追踪,命中造成[color=cyan]5[/color]点伤害,飞行过程中有[color=cyan]2[/color]颗[b]钻石[/b]环绕。[/center]"
|
text = "[center]发射[b]蓝水晶[/b],可无限追踪,命中造成[color=cyan]3[/color]点伤害,飞行过程中有[color=cyan]2[/color]颗[b]钻石[/b]环绕。[/center]"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ costBeachball = 50
|
|||||||
store = {
|
store = {
|
||||||
"atk": 5,
|
"atk": 5,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"self": 2.0
|
"self": 5.0
|
||||||
}
|
}
|
||||||
storeType = {
|
storeType = {
|
||||||
"atk": 2,
|
"atk": 2,
|
||||||
@@ -23,7 +23,6 @@ storeType = {
|
|||||||
descriptionTemplate = "消耗$self点生命值,发射$count支[b]鸡毛箭[/b],每支造成当前飞行速度的$atk伤害。"
|
descriptionTemplate = "消耗$self点生命值,发射$count支[b]鸡毛箭[/b],每支造成当前飞行速度的$atk伤害。"
|
||||||
tease = "损人又害己"
|
tease = "损人又害己"
|
||||||
cooldown = 2000.0
|
cooldown = 2000.0
|
||||||
debugRebuild = true
|
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_ex3jl")
|
texture = ExtResource("2_ex3jl")
|
||||||
@@ -35,8 +34,9 @@ count = 50
|
|||||||
displayName = "鸡毛弓"
|
displayName = "鸡毛弓"
|
||||||
quality = 2
|
quality = 2
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]消耗[color=cyan]2[/color]点生命值,发射[color=cyan]1[/color]支[b]鸡毛箭[/b],每支造成当前飞行速度的[color=cyan]500.0%[/color]伤害。[/center]"
|
text = "[center]消耗[color=cyan]5[/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]
|
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
||||||
|
visible = true
|
||||||
text = "“损人又害己”"
|
text = "“损人又害己”"
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ descriptionTemplate = "超高速发射$count个[b]微型水晶[/b],可造成$a
|
|||||||
sources = Array[String](["Terraria"])
|
sources = Array[String](["Terraria"])
|
||||||
needEnergy = 0.75
|
needEnergy = 0.75
|
||||||
cooldown = 66.0
|
cooldown = 66.0
|
||||||
debugRebuild = true
|
|
||||||
|
|
||||||
[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
|
[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
|
||||||
stream = ExtResource("4_g38si")
|
stream = ExtResource("4_g38si")
|
||||||
@@ -44,8 +43,5 @@ displayName = "链式机枪"
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "Terraria"
|
text = "Terraria"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" 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]"
|
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
|
|
||||||
|
|||||||
@@ -21,22 +21,26 @@ descriptionTemplate = "发射[b]齿轮[/b],在飞行一定距离后回旋。
|
|||||||
齿轮的伤害频率与转速成正比。
|
齿轮的伤害频率与转速成正比。
|
||||||
锋利度:$atk,初始转速:$rotate,
|
锋利度:$atk,初始转速:$rotate,
|
||||||
齿轮的转速随时间逐渐降低。"
|
齿轮的转速随时间逐渐降低。"
|
||||||
tease = "马后炮最令人措手不及"
|
tease = "马后炮令人措手不及"
|
||||||
|
needEnergy = 4.0
|
||||||
cooldown = 1000.0
|
cooldown = 1000.0
|
||||||
debugRebuild = true
|
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_qs30c")
|
texture = ExtResource("2_qs30c")
|
||||||
|
|
||||||
|
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
||||||
|
text = "4.0"
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "齿轮回旋镖"
|
displayName = "齿轮回旋镖"
|
||||||
quality = 3
|
quality = 3
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]发射[b]齿轮[/b],在飞行一定距离后回旋。
|
text = "[center]发射[b]齿轮[/b],在飞行一定距离后回旋。
|
||||||
齿轮的伤害频率与转速成正比。
|
齿轮的伤害频率与转速成正比。
|
||||||
锋利度:[color=cyan]2[/color],初始转速:[color=cyan]15.0°[/color],
|
锋利度:[color=cyan]2[/color],初始转速:[color=cyan]15.0°[/color],
|
||||||
齿轮的转速随时间逐渐降低。[/center]"
|
齿轮的转速随时间逐渐降低。[/center]"
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
||||||
text = "“马后炮最令人措手不及”"
|
visible = true
|
||||||
|
text = "“马后炮令人措手不及”"
|
||||||
|
|||||||
@@ -35,8 +35,5 @@ count = 350
|
|||||||
displayName = "光标刃轮"
|
displayName = "光标刃轮"
|
||||||
typeTopic = 1
|
typeTopic = 1
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]造成[color=cyan]10[/color]点伤害,攻击速度+[color=cyan]0.4%[/color]。[/center]"
|
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
|
|
||||||
|
|||||||
@@ -12,10 +12,9 @@ displayName = "道教石像"
|
|||||||
typeTopic = 1
|
typeTopic = 1
|
||||||
costBeachball = 499
|
costBeachball = 499
|
||||||
store = {
|
store = {
|
||||||
"atk": 50,
|
"atk": 20,
|
||||||
"rate1": 0.05,
|
"rate1": 0.05,
|
||||||
"rate2": 0.025,
|
"rate2": 1.05
|
||||||
"rate3": 0.01
|
|
||||||
}
|
}
|
||||||
storeType = {
|
storeType = {
|
||||||
"atk": 1,
|
"atk": 1,
|
||||||
@@ -23,18 +22,19 @@ storeType = {
|
|||||||
"rate2": 2,
|
"rate2": 2,
|
||||||
"rate3": 2
|
"rate3": 2
|
||||||
}
|
}
|
||||||
descriptionTemplate = "挥出[b]天地之剑[/b],蓄力一段时间后,
|
descriptionTemplate = "消耗[color=yellow]3[/color]层气力,挥出[b]无为之剑[/b],
|
||||||
发射一道[b]无量斩[/b],造成$atk点伤害。
|
蓄力一段时间后,发动[b]无量反击[/b],
|
||||||
|
造成$atk点基础伤害。
|
||||||
|
|
||||||
攻击速度每降低[color=yellow]1%[/color],伤害+$rate2;
|
|
||||||
每失去[color=yellow]1[/color]点生命值,伤害+$rate1;
|
每失去[color=yellow]1[/color]点生命值,伤害+$rate1;
|
||||||
拥有的所有[b]气力[/b]层数之和,每化解[color=yellow]1[/color]点伤害,[b]无量斩[/b]的伤害+$rate3;
|
无量反击可化解路径上的一切伤害,
|
||||||
每次攻击需要消耗至少[color=yellow]1[/color]层气力。"
|
每化解[color=yellow]1[/color]点伤害:
|
||||||
|
斩击的伤害*$rate2,
|
||||||
|
敌人产生[color=yellow]1[/color]点内伤。"
|
||||||
sources = Array[String](["Nine Sols"])
|
sources = Array[String](["Nine Sols"])
|
||||||
tease = "天机不可泄露"
|
tease = "天机不可泄露"
|
||||||
needEnergy = 25.0
|
needEnergy = 40.0
|
||||||
cooldown = 4000.0
|
cooldown = 4000.0
|
||||||
debugRebuild = true
|
|
||||||
|
|
||||||
[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
|
[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
|
||||||
stream = ExtResource("4_y3oaj")
|
stream = ExtResource("4_y3oaj")
|
||||||
@@ -43,7 +43,7 @@ stream = ExtResource("4_y3oaj")
|
|||||||
texture = ExtResource("2_gx1sf")
|
texture = ExtResource("2_gx1sf")
|
||||||
|
|
||||||
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
||||||
text = "25.0"
|
text = "40.0"
|
||||||
|
|
||||||
[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
|
[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
|
||||||
count = 499
|
count = 499
|
||||||
@@ -55,14 +55,17 @@ typeTopic = 1
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "Nine Sols"
|
text = "Nine Sols"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]挥出[b]天地之剑[/b],蓄力一段时间后,
|
text = "消耗[color=yellow]3[/color]层气力,挥出[b]无为之剑[/b],
|
||||||
发射一道[b]无量斩[/b],造成[color=cyan]50[/color]点伤害。
|
蓄力一段时间后,发动[b]无量反击[/b],
|
||||||
|
造成[color=cyan]20[/color]点基础伤害。
|
||||||
|
|
||||||
攻击速度每降低[color=yellow]1%[/color],伤害+[color=cyan]2.5%[/color];
|
|
||||||
每失去[color=yellow]1[/color]点生命值,伤害+[color=cyan]5.0%[/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]"
|
每化解[color=yellow]1[/color]点伤害:
|
||||||
|
斩击的伤害*[color=cyan]105.0%[/color],
|
||||||
|
敌人产生[color=yellow]1[/color]点内伤。"
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
||||||
|
visible = true
|
||||||
text = "“天机不可泄露”"
|
text = "“天机不可泄露”"
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
script = ExtResource("2_7yxbe")
|
script = ExtResource("2_7yxbe")
|
||||||
avatarTexture = ExtResource("2_tw58e")
|
avatarTexture = ExtResource("2_tw58e")
|
||||||
displayName = "Gobo"
|
displayName = "Gobo"
|
||||||
quality = 4
|
|
||||||
typeTopic = 4
|
typeTopic = 4
|
||||||
store = {
|
store = {
|
||||||
"atk": 100,
|
"atk": 100,
|
||||||
@@ -24,15 +23,21 @@ storeType = {
|
|||||||
}
|
}
|
||||||
descriptionTemplate = "召唤[b]Gobo[/b],Gobo会自主行动,每受到$atk点伤害后会生产$count颗[b]苹果[/b]。Gobo初始拥有$health点生命值。"
|
descriptionTemplate = "召唤[b]Gobo[/b],Gobo会自主行动,每受到$atk点伤害后会生产$count颗[b]苹果[/b]。Gobo初始拥有$health点生命值。"
|
||||||
sources = Array[String](["Scratch"])
|
sources = Array[String](["Scratch"])
|
||||||
|
needEnergy = 75.0
|
||||||
cooldown = 1000.0
|
cooldown = 1000.0
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_tw58e")
|
texture = ExtResource("2_tw58e")
|
||||||
|
|
||||||
|
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
||||||
|
text = "75.0"
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "Gobo"
|
displayName = "Gobo"
|
||||||
quality = 4
|
|
||||||
typeTopic = 4
|
typeTopic = 4
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
|
text = "Scratch"
|
||||||
|
|
||||||
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" 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]"
|
text = "[center]召唤[b]Gobo[/b],Gobo会自主行动,每受到[color=cyan]100[/color]点伤害后会生产[color=cyan]1[/color]颗[b]苹果[/b]。Gobo初始拥有[color=cyan]200[/color]点生命值。[/center]"
|
||||||
|
|||||||
@@ -11,20 +11,19 @@ displayName = "草方块菌落"
|
|||||||
typeTopic = 4
|
typeTopic = 4
|
||||||
costBeachball = 10
|
costBeachball = 10
|
||||||
store = {
|
store = {
|
||||||
"atk": 100
|
"atk": 50
|
||||||
}
|
}
|
||||||
descriptionTemplate = "分泌一堵[b]肽聚墙[/b],可抵挡$atk点伤害,敌人更有可能瞄准你。"
|
descriptionTemplate = "分泌一堵[b]肽聚墙[/b],可抵挡$atk点伤害,敌人更有可能瞄准你。"
|
||||||
sources = Array[String](["UDA"])
|
sources = Array[String](["UDA"])
|
||||||
tease = "也许弹反会更合适?"
|
tease = "也许弹反会更合适?"
|
||||||
needEnergy = 35.0
|
needEnergy = 15.0
|
||||||
cooldown = 1000.0
|
cooldown = 1000.0
|
||||||
debugRebuild = true
|
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_kh4xg")
|
texture = ExtResource("2_kh4xg")
|
||||||
|
|
||||||
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
||||||
text = "35.0"
|
text = "100.0"
|
||||||
|
|
||||||
[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
|
[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
|
||||||
count = 10
|
count = 10
|
||||||
@@ -36,8 +35,9 @@ typeTopic = 4
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "UDA"
|
text = "UDA"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]分泌一堵[b]肽聚墙[/b],可抵挡[color=cyan]100[/color]点伤害,敌人更有可能瞄准你。[/center]"
|
text = "[center]分泌一堵[b]肽聚墙[/b],可抵挡[color=cyan]200[/color]点伤害,敌人更有可能瞄准你。[/center]"
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
||||||
|
visible = true
|
||||||
text = "“也许弹反会更合适?”"
|
text = "“也许弹反会更合适?”"
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ descriptionTemplate = "使光标化身为[b]恒星[/b]产生强大引力,并
|
|||||||
万有引力常数:$atk。"
|
万有引力常数:$atk。"
|
||||||
sources = Array[String](["万有引力", "宇宙航行"])
|
sources = Array[String](["万有引力", "宇宙航行"])
|
||||||
tease = "告诉我,逃逸速度是多少?!"
|
tease = "告诉我,逃逸速度是多少?!"
|
||||||
debugRebuild = true
|
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_r5y0x")
|
texture = ExtResource("2_r5y0x")
|
||||||
@@ -34,7 +33,7 @@ displayName = "引力源"
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "万有引力 × 宇宙航行"
|
text = "万有引力 × 宇宙航行"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]使光标化身为[b]恒星[/b]产生强大引力,并吸引[color=yellow]1[/color]颗行星围绕其。移动恒星来使行星产生加速度,[color=yellow]行星速度越快撞击伤害越高[/color]。
|
text = "[center]使光标化身为[b]恒星[/b]产生强大引力,并吸引[color=yellow]1[/color]颗行星围绕其。移动恒星来使行星产生加速度,[color=yellow]行星速度越快撞击伤害越高[/color]。
|
||||||
行星的速度太快会发生[color=red]逃逸[/color],
|
行星的速度太快会发生[color=red]逃逸[/color],
|
||||||
撞上恒星后会[color=red]坠毁[/color]。
|
撞上恒星后会[color=red]坠毁[/color]。
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ cooldown = 1000.0
|
|||||||
texture = ExtResource("2_74sfb")
|
texture = ExtResource("2_74sfb")
|
||||||
|
|
||||||
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
||||||
text = "75.0"
|
text = "50.0"
|
||||||
|
|
||||||
[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
|
[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
|
||||||
count = 600
|
count = 600
|
||||||
@@ -41,8 +41,5 @@ typeTopic = 4
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "Internet"
|
text = "Internet"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]召唤[b]抓狂的哈基米[/b],跟踪敌人,每[color=cyan]0.25[/color]秒造成[color=cyan]7[/color]点伤害。[/center]"
|
text = "[center]召唤[b]抓狂的哈基米[/b],跟踪敌人,每[color=cyan]0.25[/color]秒造成[color=cyan]7[/color]点伤害。[/center]"
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
|
||||||
visible = false
|
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ descriptionTemplate = "发射$count颗[b]茴香豆[/b],在敌人间反弹,
|
|||||||
sources = Array[String](["Zenless Zone Zero", "孔乙己"])
|
sources = Array[String](["Zenless Zone Zero", "孔乙己"])
|
||||||
tease = "不多了,我剩得不多了!"
|
tease = "不多了,我剩得不多了!"
|
||||||
cooldown = 1000.0
|
cooldown = 1000.0
|
||||||
debugRebuild = true
|
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_d5bd0")
|
texture = ExtResource("2_d5bd0")
|
||||||
@@ -39,7 +38,7 @@ typeTopic = 3
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "Zenless Zone Zero × 孔乙己"
|
text = "Zenless Zone Zero × 孔乙己"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" 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]"
|
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]
|
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
||||||
|
|||||||
@@ -22,11 +22,15 @@ storeType = {
|
|||||||
descriptionTemplate = "散射5~$count针[b]河豚刺针[/b],每根针造成$atk点伤害,撞上敌人后有$penerate概率反弹。"
|
descriptionTemplate = "散射5~$count针[b]河豚刺针[/b],每根针造成$atk点伤害,撞上敌人后有$penerate概率反弹。"
|
||||||
sources = Array[String](["Minecraft", "Pathogenic"])
|
sources = Array[String](["Minecraft", "Pathogenic"])
|
||||||
tease = "看我扎不扎你就完了"
|
tease = "看我扎不扎你就完了"
|
||||||
|
needEnergy = 2.0
|
||||||
cooldown = 2000.0
|
cooldown = 2000.0
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_y0xe1")
|
texture = ExtResource("2_y0xe1")
|
||||||
|
|
||||||
|
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
||||||
|
text = "2.0"
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "河豚"
|
displayName = "河豚"
|
||||||
quality = 0
|
quality = 0
|
||||||
@@ -34,8 +38,9 @@ quality = 0
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "Minecraft × Pathogenic"
|
text = "Minecraft × Pathogenic"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]散射5~[color=cyan]10[/color]针[b]河豚刺针[/b],每根针造成[color=cyan]15[/color]点伤害,撞上敌人后有[color=cyan]20.0%[/color]概率反弹。[/center]"
|
text = "[center]散射5~[color=cyan]10[/color]针[b]河豚刺针[/b],每根针造成[color=cyan]30[/color]点伤害,撞上敌人后有[color=cyan]25.0%[/color]概率反弹。[/center]"
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
||||||
|
visible = true
|
||||||
text = "“看我扎不扎你就完了”"
|
text = "“看我扎不扎你就完了”"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ typeTopic = 4
|
|||||||
costBeachball = 200
|
costBeachball = 200
|
||||||
store = {
|
store = {
|
||||||
"angle": 35.0,
|
"angle": 35.0,
|
||||||
"atk": 15.0,
|
"atk": 20.0,
|
||||||
"count": 1.0,
|
"count": 1.0,
|
||||||
"power": 0.02,
|
"power": 0.02,
|
||||||
"trace": 1.0
|
"trace": 1.0
|
||||||
@@ -46,10 +46,7 @@ count = 200
|
|||||||
displayName = "彩虹旗"
|
displayName = "彩虹旗"
|
||||||
typeTopic = 4
|
typeTopic = 4
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
text = "[center]召唤[b]彩虹旗[/b],每[color=cyan]35.0°[/color]发射1/[color=cyan]1[/color]条以[color=cyan]2.0%[/color]效率追踪[color=cyan]1.00[/color]秒的[b]七彩光标[/b],每条造成[color=cyan]15[/color]点伤害。[/center]"
|
text = "[center]召唤[b]彩虹旗[/b],每[color=cyan]35.0°[/color]发射1/[color=cyan]1[/color]条以[color=cyan]2.0%[/color]效率追踪[color=cyan]1.00[/color]秒的[b]七彩光标[/b],每条造成[color=cyan]15[/color]点伤害。[/center]"
|
||||||
autowrap_mode = 2
|
autowrap_mode = 2
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
|
||||||
visible = false
|
|
||||||
|
|||||||
@@ -36,12 +36,16 @@ descriptionTemplate = "召唤[color=yellow]1[/color]枚[b]魔法导弹[/b],围
|
|||||||
分裂出$count枚[b]次级导弹[/b],
|
分裂出$count枚[b]次级导弹[/b],
|
||||||
可继承分裂最多$count次。"
|
可继承分裂最多$count次。"
|
||||||
sources = Array[String](["万有引力", "宇宙航行"])
|
sources = Array[String](["万有引力", "宇宙航行"])
|
||||||
cooldown = 1000.0
|
tease = "物理学还在追我"
|
||||||
debugRebuild = true
|
needEnergy = 25.0
|
||||||
|
cooldown = 3000.0
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_3sdrm")
|
texture = ExtResource("2_3sdrm")
|
||||||
|
|
||||||
|
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
||||||
|
text = "25.0"
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "导弹法杖"
|
displayName = "导弹法杖"
|
||||||
quality = 2
|
quality = 2
|
||||||
@@ -50,7 +54,7 @@ typeTopic = 3
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "万有引力 × 宇宙航行"
|
text = "万有引力 × 宇宙航行"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]召唤[color=yellow]1[/color]枚[b]魔法导弹[/b],围绕鼠标指针做由鼠标指针提供向心力的圆周运动。
|
text = "[center]召唤[color=yellow]1[/color]枚[b]魔法导弹[/b],围绕鼠标指针做由鼠标指针提供向心力的圆周运动。
|
||||||
鼠标指针质量:[color=cyan]100.00[/color]kg,
|
鼠标指针质量:[color=cyan]100.00[/color]kg,
|
||||||
魔法导弹质量:[color=cyan]10.00[/color]kg,
|
魔法导弹质量:[color=cyan]10.00[/color]kg,
|
||||||
@@ -61,5 +65,5 @@ text = "[center]召唤[color=yellow]1[/color]枚[b]魔法导弹[/b],围绕鼠
|
|||||||
可继承分裂最多[color=cyan]3[/color]次。[/center]"
|
可继承分裂最多[color=cyan]3[/color]次。[/center]"
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
||||||
visible = false
|
visible = true
|
||||||
text = "“ ”"
|
text = "“物理学还在追我”"
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ storeType = {
|
|||||||
}
|
}
|
||||||
descriptionTemplate = "发射$count只伤害以$reduce衰减的造成$childatk点伤害的[b]彩虹猫[/b]的同时挥舞造成$atk点伤害。"
|
descriptionTemplate = "发射$count只伤害以$reduce衰减的造成$childatk点伤害的[b]彩虹猫[/b]的同时挥舞造成$atk点伤害。"
|
||||||
sources = Array[String](["Terraria"])
|
sources = Array[String](["Terraria"])
|
||||||
|
needEnergy = 2.0
|
||||||
cooldown = 230.0
|
cooldown = 230.0
|
||||||
|
|
||||||
[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
|
[node name="attack" parent="sounds" parent_id_path=PackedInt32Array(1775425991) index="0" unique_id=853583292]
|
||||||
@@ -35,6 +36,9 @@ volume_db = 10.0
|
|||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_kiocs")
|
texture = ExtResource("2_kiocs")
|
||||||
|
|
||||||
|
[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" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
|
[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
|
||||||
count = 600
|
count = 600
|
||||||
|
|
||||||
@@ -43,5 +47,8 @@ displayName = "彩虹猫之刃"
|
|||||||
quality = 2
|
quality = 2
|
||||||
typeTopic = 3
|
typeTopic = 3
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
|
text = "Terraria"
|
||||||
|
|
||||||
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" 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]"
|
text = "[center]发射[color=cyan]1[/color]只伤害以[color=cyan]25.0%[/color]衰减的造成[color=cyan]6[/color]点伤害的[b]彩虹猫[/b]的同时挥舞造成[color=cyan]5[/color]点伤害。[/center]"
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ storeType = {
|
|||||||
}
|
}
|
||||||
descriptionTemplate = "命中时造成$atk点伤害,有$rate概率挖出1~$count个随机物品。"
|
descriptionTemplate = "命中时造成$atk点伤害,有$rate概率挖出1~$count个随机物品。"
|
||||||
sources = Array[String](["Terraria"])
|
sources = Array[String](["Terraria"])
|
||||||
|
cooldown = 0.0
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_u2d30")
|
texture = ExtResource("2_u2d30")
|
||||||
@@ -31,5 +32,5 @@ count = 750
|
|||||||
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "蘑菇矿挖爪"
|
displayName = "蘑菇矿挖爪"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]命中时造成[color=cyan]1[/color]点伤害,有[color=cyan]10.0%[/color]概率挖出1~[color=cyan]3[/color]个随机物品。[/center]"
|
text = "[center]命中时造成[color=cyan]1[/color]点伤害,有[color=cyan]10.0%[/color]概率挖出1~[color=cyan]3[/color]个随机物品。[/center]"
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
[gd_scene load_steps=4 format=3 uid="uid://b2qhes4apaxsj"]
|
[gd_scene format=3 uid="uid://b2qhes4apaxsj"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_k4t0h"]
|
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_k4t0h"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cp57lmeohvo3o" path="res://resources/weapons/nuclear-bomb.png" id="2_5nh8i"]
|
[ext_resource type="Texture2D" uid="uid://cp57lmeohvo3o" path="res://resources/weapons/nuclear-bomb.png" id="2_5nh8i"]
|
||||||
[ext_resource type="Script" path="res://scripts/Contents/Weapons/NuclearBomb.gd" id="2_hscw2"]
|
[ext_resource type="Script" uid="uid://ctjdfkr4sef7y" path="res://scripts/Contents/Weapons/NuclearBomb.gd" id="2_hscw2"]
|
||||||
|
|
||||||
[node name="NuclearBomb" instance=ExtResource("1_k4t0h")]
|
[node name="NuclearBomb" unique_id=1502548572 instance=ExtResource("1_k4t0h")]
|
||||||
script = ExtResource("2_hscw2")
|
script = ExtResource("2_hscw2")
|
||||||
avatarTexture = ExtResource("2_5nh8i")
|
avatarTexture = ExtResource("2_5nh8i")
|
||||||
displayName = "核弹控制器"
|
displayName = "核弹控制器"
|
||||||
@@ -22,14 +22,11 @@ storeType = {
|
|||||||
descriptionTemplate = "倒计时10秒后对半径$radius范围的实体造成$atk点[b]无差别伤害[/b]。"
|
descriptionTemplate = "倒计时10秒后对半径$radius范围的实体造成$atk点[b]无差别伤害[/b]。"
|
||||||
needEnergy = 120.0
|
needEnergy = 120.0
|
||||||
cooldown = 2000.0
|
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_5nh8i")
|
texture = ExtResource("2_5nh8i")
|
||||||
|
|
||||||
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" index="0"]
|
|
||||||
displayName = "核弹控制器"
|
displayName = "核弹控制器"
|
||||||
quality = 4
|
quality = 4
|
||||||
typeTopic = 2
|
typeTopic = 2
|
||||||
@@ -39,6 +36,3 @@ typeTopicColorMap = {
|
|||||||
2: Color(1, 0.274813, 0, 1),
|
2: Color(1, 0.274813, 0, 1),
|
||||||
3: Color(0.707984, 0, 1, 1)
|
3: Color(0.707984, 0, 1, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="description" parent="container" index="2"]
|
|
||||||
text = "[center]倒计时10秒后对半径[color=cyan]750[/color]→[color=yellow]765[/color]范围的实体造成[color=cyan]2000[/color]→[color=yellow]2050[/color]点[b]无差别伤害[/b]。[/center]"
|
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ storeType = {
|
|||||||
descriptionTemplate = "高速喷出[b]火焰[/b],造成$fireatk点伤害。小概率喷出[b]硝化火[/b],召唤$min-n~$max-n滴[b]浓硝酸[/b]围绕在火焰旁,每滴造成$atk点伤害。[b]火焰[/b]具有高额击退效果,[b]浓硝酸[/b]液滴的射程较短,每发射$count次火焰会消耗[color=yellow]1[/color]个[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]。"
|
如果没有则消耗[color=yellow]5[/color]点[b]能量[/b]。"
|
||||||
cooldown = 50.0
|
cooldown = 50.0
|
||||||
debugRebuild = true
|
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_xmkcx")
|
texture = ExtResource("2_xmkcx")
|
||||||
@@ -37,9 +36,6 @@ displayName = "氧化加农炮"
|
|||||||
quality = 0
|
quality = 0
|
||||||
typeTopic = 2
|
typeTopic = 2
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" 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],
|
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]"
|
如果没有则消耗[color=yellow]5[/color]点[b]能量[/b]。[/center]"
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
|
||||||
visible = false
|
|
||||||
|
|||||||
@@ -15,14 +15,15 @@ store = {
|
|||||||
}
|
}
|
||||||
descriptionTemplate = "按住蓄力扔出钢管,蓄力越久伤害越高,至少造成$atk点伤害,发射钢管后继续按住鼠标可进行连续发射。"
|
descriptionTemplate = "按住蓄力扔出钢管,蓄力越久伤害越高,至少造成$atk点伤害,发射钢管后继续按住鼠标可进行连续发射。"
|
||||||
sources = Array[String](["MEME"])
|
sources = Array[String](["MEME"])
|
||||||
needEnergy = 2.0
|
tease = "保护耳朵"
|
||||||
|
needEnergy = 40.0
|
||||||
cooldown = 3000.0
|
cooldown = 3000.0
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
[node name="avatar" parent="container/info" parent_id_path=PackedInt32Array(1625294072) index="0" unique_id=1021985889]
|
||||||
texture = ExtResource("2_mmtf8")
|
texture = ExtResource("2_mmtf8")
|
||||||
|
|
||||||
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
[node name="energy" parent="container/info/infos/energyInfo" parent_id_path=PackedInt32Array(644675021) index="1" unique_id=1664028115]
|
||||||
text = "2.0"
|
text = "40.0"
|
||||||
|
|
||||||
[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
|
[node name="beachball" parent="container/info/infos" parent_id_path=PackedInt32Array(492799150) index="1" unique_id=653442983]
|
||||||
count = 350
|
count = 350
|
||||||
@@ -33,8 +34,9 @@ displayName = "钢管"
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "MEME"
|
text = "MEME"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]按住蓄力扔出钢管,蓄力越久伤害越高,至少造成[color=cyan]5[/color]点伤害,发射钢管后继续按住鼠标可进行连续发射。[/center]"
|
text = "[center]按住蓄力扔出钢管,蓄力越久伤害越高,至少造成[color=cyan]5[/color]点伤害,发射钢管后继续按住鼠标可进行连续发射。[/center]"
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
||||||
visible = false
|
visible = true
|
||||||
|
text = "“保护耳朵”"
|
||||||
|
|||||||
@@ -26,8 +26,5 @@ count = 200
|
|||||||
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "紫水晶簇"
|
displayName = "紫水晶簇"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]发射[b]紫水晶[/b],撞击时造成[color=cyan]0[/color]点伤害。[/center]"
|
text = "[center]发射[b]紫水晶[/b],撞击时造成[color=cyan]10[/color]点伤害。[/center]"
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
|
||||||
visible = false
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
[gd_scene load_steps=5 format=3 uid="uid://dt8w2w816tsj0"]
|
[gd_scene format=3 uid="uid://dt8w2w816tsj0"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_88g2h"]
|
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_88g2h"]
|
||||||
[ext_resource type="Texture2D" uid="uid://s8r37cmth6o8" path="res://resources/weapons/red-crystal.png" id="2_3e8g7"]
|
[ext_resource type="Texture2D" uid="uid://s8r37cmth6o8" path="res://resources/weapons/red-crystal.png" id="2_3e8g7"]
|
||||||
[ext_resource type="Script" uid="uid://dmsjasfucknxq" path="res://scripts/Contents/Weapons/RedCrystal.gd" id="2_wfewu"]
|
[ext_resource type="Script" uid="uid://dmsjasfucknxq" path="res://scripts/Contents/Weapons/RedCrystal.gd" id="2_wfewu"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dclinyhu256xi" path="res://resources/sounds/effect/Low Whoosh.mp3" id="4_qt0vq"]
|
[ext_resource type="AudioStream" uid="uid://dclinyhu256xi" path="res://resources/sounds/effect/Low Whoosh.mp3" id="4_qt0vq"]
|
||||||
|
|
||||||
[node name="RedCrystal" instance=ExtResource("1_88g2h")]
|
[node name="RedCrystal" unique_id=1209955095 instance=ExtResource("1_88g2h")]
|
||||||
script = ExtResource("2_wfewu")
|
script = ExtResource("2_wfewu")
|
||||||
avatarTexture = ExtResource("2_3e8g7")
|
avatarTexture = ExtResource("2_3e8g7")
|
||||||
displayName = "红水晶簇"
|
displayName = "红水晶簇"
|
||||||
@@ -24,20 +24,20 @@ storeType = {
|
|||||||
"radius": 1
|
"radius": 1
|
||||||
}
|
}
|
||||||
descriptionTemplate = "发射[b]红水晶[/b],在3秒后以$radius的半径爆炸,造成$atk点伤害并向随机方向发射1~$count个[b]水晶碎片[/b],造成$percent基础伤害。"
|
descriptionTemplate = "发射[b]红水晶[/b],在3秒后以$radius的半径爆炸,造成$atk点伤害并向随机方向发射1~$count个[b]水晶碎片[/b],造成$percent基础伤害。"
|
||||||
cooldown = 1000.0
|
cooldown = 1500.0
|
||||||
|
|
||||||
[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_qt0vq")
|
stream = ExtResource("4_qt0vq")
|
||||||
|
|
||||||
[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_3e8g7")
|
texture = ExtResource("2_3e8g7")
|
||||||
|
|
||||||
[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
|
count = 400
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" index="0"]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "红水晶簇"
|
displayName = "红水晶簇"
|
||||||
typeTopic = 1
|
typeTopic = 1
|
||||||
|
|
||||||
[node name="description" parent="container" index="2"]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]发射[b]红水晶[/b],在3秒后以[color=cyan]150[/color]的半径爆炸,造成[color=cyan]45[/color]点伤害并向随机方向发射1~[color=cyan]3[/color]个[b]水晶碎片[/b],造成[color=cyan]50%[/color]基础伤害。[/center]"
|
text = "[center]发射[b]红水晶[/b],在3秒后以[color=cyan]150[/color]的半径爆炸,造成[color=cyan]45[/color]点伤害并向随机方向发射1~[color=cyan]3[/color]个[b]水晶碎片[/b],造成[color=cyan]50%[/color]基础伤害。[/center]"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ storeType = {
|
|||||||
"dmg": 2,
|
"dmg": 2,
|
||||||
"heal": 1
|
"heal": 1
|
||||||
}
|
}
|
||||||
descriptionTemplate = "召唤7条灵魂,每条造成$atk点伤害,命中敌人时将伤害的$dmg转换为能量并提供$heal点治疗。"
|
descriptionTemplate = "召唤[color=yellow]6[/color]条灵魂,每条造成$atk点伤害,命中敌人时将伤害的$dmg转换为能量并提供$heal点治疗。"
|
||||||
sources = Array[String](["Undertale"])
|
sources = Array[String](["Undertale"])
|
||||||
needEnergy = 150.0
|
needEnergy = 150.0
|
||||||
cooldown = 180000.0
|
cooldown = 180000.0
|
||||||
@@ -41,5 +41,8 @@ displayName = "bilioicik"
|
|||||||
quality = 2
|
quality = 2
|
||||||
typeTopic = 3
|
typeTopic = 3
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "[center]召唤7条灵魂,每条造成[color=cyan]2[/color]点伤害,命中敌人时将伤害的[color=cyan]10.0%[/color]转换为能量并提供[color=cyan]1[/color]点治疗。[/center]"
|
text = "Undertale"
|
||||||
|
|
||||||
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
|
text = "[center]召唤[color=yellow]6[/color]条灵魂,每条造成[color=cyan]2[/color]点伤害,命中敌人时将伤害的[color=cyan]10.0%[/color]转换为能量并提供[color=cyan]1[/color]点治疗。[/center]"
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
[gd_scene load_steps=4 format=3 uid="uid://sp8f50c5mxyc"]
|
[gd_scene format=3 uid="uid://sp8f50c5mxyc"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_rax6s"]
|
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_rax6s"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b6tr2k13qog0j" path="res://resources/weapons/shield.png" id="2_gcjwh"]
|
[ext_resource type="Texture2D" uid="uid://b6tr2k13qog0j" path="res://resources/weapons/shield.png" id="2_gcjwh"]
|
||||||
[ext_resource type="Script" uid="uid://dcacy48pcfci3" path="res://scripts/Contents/Weapons/Shield.gd" id="2_s74sn"]
|
[ext_resource type="Script" uid="uid://dcacy48pcfci3" path="res://scripts/Contents/Weapons/Shield.gd" id="2_s74sn"]
|
||||||
|
|
||||||
[node name="Shield" instance=ExtResource("1_rax6s")]
|
[node name="Shield" unique_id=1677111509 instance=ExtResource("1_rax6s")]
|
||||||
script = ExtResource("2_s74sn")
|
script = ExtResource("2_s74sn")
|
||||||
avatarTexture = ExtResource("2_gcjwh")
|
avatarTexture = ExtResource("2_gcjwh")
|
||||||
displayName = "回响水晶"
|
displayName = "回响水晶"
|
||||||
@@ -12,25 +12,25 @@ quality = 3
|
|||||||
typeTopic = 4
|
typeTopic = 4
|
||||||
costBeachball = 1000
|
costBeachball = 1000
|
||||||
store = {
|
store = {
|
||||||
"atk": 70
|
"atk": 200
|
||||||
}
|
}
|
||||||
descriptionTemplate = "召唤一个可抵挡$atk点伤害的[b]音元盾[/b]。"
|
descriptionTemplate = "召唤一个可抵挡$atk点伤害的[b]音元盾[/b]。"
|
||||||
needEnergy = 50.0
|
needEnergy = 70.0
|
||||||
cooldown = 30000.0
|
cooldown = 30000.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_gcjwh")
|
texture = ExtResource("2_gcjwh")
|
||||||
|
|
||||||
[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 = "50.0"
|
text = "50.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 = 1000
|
count = 1000
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" index="0"]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "回响水晶"
|
displayName = "回响水晶"
|
||||||
quality = 3
|
quality = 3
|
||||||
typeTopic = 4
|
typeTopic = 4
|
||||||
|
|
||||||
[node name="description" parent="container" index="2"]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]召唤一个可抵挡[color=cyan]70[/color]点伤害的[b]音元盾[/b]。[/center]"
|
text = "[center]召唤一个可抵挡[color=cyan]70[/color]点伤害的[b]音元盾[/b]。[/center]"
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_0lbwr"]
|
[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="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"]
|
[ext_resource type="Texture2D" uid="uid://w5yqnejlmfou" path="res://resources/weapons/Jade_神手玉.png" id="3_nwamk"]
|
||||||
|
|
||||||
[node name="Tree" unique_id=185228402 instance=ExtResource("1_0lbwr")]
|
[node name="Tree" unique_id=185228402 instance=ExtResource("1_0lbwr")]
|
||||||
script = ExtResource("2_jsuc8")
|
script = ExtResource("2_jsuc8")
|
||||||
avatarTexture = ExtResource("3_nwamk")
|
avatarTexture = ExtResource("3_nwamk")
|
||||||
displayName = "扶桑元神"
|
displayName = "神手玉"
|
||||||
quality = 4
|
quality = 4
|
||||||
typeTopic = 3
|
typeTopic = 3
|
||||||
costBeachball = 900
|
costBeachball = 900
|
||||||
@@ -24,23 +24,49 @@ storeType = {
|
|||||||
"max": 1,
|
"max": 1,
|
||||||
"rate": 2
|
"rate": 2
|
||||||
}
|
}
|
||||||
descriptionTemplate = "进行[b]格挡[/b],化解飞来的子弹。
|
descriptionTemplate = "进行[b]格挡[/b],化解敌人的攻击。
|
||||||
每成功格挡一次,获得一点[b]气力[/b]。
|
每成功格挡一次,获得一点[b]气力[/b]。
|
||||||
每拥有一点气力,增加[color=yellow]1[/color]点冲刺初速度,闪避穿过敌人时对其贴上一层[b]符咒[/b],符咒会自动引爆,召唤[b]乾坤剑[/b]穿透敌人。
|
|
||||||
近战攻击造成乾坤剑的$rate点伤害。
|
|
||||||
|
|
||||||
每次格挡有$rate的概率弹反,子弹弹反后造成乾坤剑的$rate伤害。
|
每拥有一点气力:
|
||||||
|
增加[color=yellow]1[/color]点冲刺速度。
|
||||||
|
闪避穿过敌人时对其贴上一层[b]符咒[/b],
|
||||||
|
符咒会自动引爆,
|
||||||
|
召唤[b]乾坤剑[/b]穿透敌人。
|
||||||
|
自身最多储存$max点气力。
|
||||||
|
|
||||||
|
近战攻击造成乾坤剑的$rate伤害。
|
||||||
|
|
||||||
每次格挡最多化解$count个子弹,
|
每次格挡最多化解$count个子弹,
|
||||||
体内最多储存$max点气力。
|
每化解[color=yellow]1[/color]点伤害,
|
||||||
每化解[color=yellow]1[/color]点伤害,
|
乾坤剑造成的伤害+$atk点。
|
||||||
乾坤剑造成的伤害+$atk点。
|
|
||||||
格挡时机越精确,成功率越高。
|
|
||||||
|
|
||||||
格挡成功后继续按住攻击可进行[b]蓄力[/b],
|
对于[b]近战挥舞[/b]攻击,
|
||||||
其后松开格挡键进行[b]无量反击[/b],
|
化解本次伤害,
|
||||||
可弹反一切子弹,
|
敌人产生[color=yellow]1[/color]枚[b]内伤[/b];
|
||||||
但需消耗[color=yellow]1[/color]层气力,
|
对于[b]近战戳刺[/b]攻击,
|
||||||
可将弹反的伤害转换为能量。"
|
将本次伤害反弹,
|
||||||
|
造成乾坤剑的$rate伤害,
|
||||||
|
产生大量击退,
|
||||||
|
敌人产生[color=yellow]1[/color]枚[b]内伤[/b];
|
||||||
|
对于[b]远程射弹[/b]攻击,
|
||||||
|
化解本次伤害,
|
||||||
|
有$rate的概率发生[b]弹反[/b],
|
||||||
|
子弹弹反后造成乾坤剑的$rate伤害;
|
||||||
|
对于[b]猛冲[/b]攻击,
|
||||||
|
化解本次伤害,
|
||||||
|
反弹敌人的速度,
|
||||||
|
敌人产生[color=yellow]1[/color]枚[b]内伤[/b];
|
||||||
|
对于[b]吐息[/b]攻击,
|
||||||
|
[color=red]无法化解伤害[/color]但产生少量击退;
|
||||||
|
对于[b]魔法或召唤[/b]攻击,
|
||||||
|
[color=red]无法化解伤害[/color]但可以少量储能;
|
||||||
|
对于[b]爆炸[/b]攻击,
|
||||||
|
[color=red]无法化解伤害[/color]且[color=red]自身产生[color=yellow]2[/color]枚内伤[/color];
|
||||||
|
|
||||||
|
敌人或自身受到的任意[color=yellow]爆炸类伤害[/color]都会引爆其所有内伤,每枚内伤造成$atk点伤害。
|
||||||
|
格挡时机越精确,成功率越高。
|
||||||
|
触发[b]不精准格挡[/b]时,自身产生[color=yellow]1[/color]枚内伤。
|
||||||
|
每次格挡最多产生[color=yellow]1[/color]枚内伤。"
|
||||||
sources = Array[String](["Nine Sols", "Terraria"])
|
sources = Array[String](["Nine Sols", "Terraria"])
|
||||||
tease = "卸劲反伤"
|
tease = "卸劲反伤"
|
||||||
cooldown = 250.0
|
cooldown = 250.0
|
||||||
@@ -52,31 +78,58 @@ texture = ExtResource("3_nwamk")
|
|||||||
count = 900
|
count = 900
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "扶桑元神"
|
displayName = "神手玉"
|
||||||
quality = 4
|
quality = 4
|
||||||
typeTopic = 3
|
typeTopic = 3
|
||||||
|
|
||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "Nine Sols × Terraria"
|
text = "Nine Sols × Terraria"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]进行[b]格挡[/b],化解飞来的子弹。
|
text = "进行[b]格挡[/b],化解敌人的攻击。
|
||||||
每成功格挡一次,获得一点[b]气力[/b]。
|
每成功格挡一次,获得一点[b]气力[/b]。
|
||||||
每拥有一点气力,增加[color=yellow]1[/color]点冲刺初速度,闪避穿过敌人时对其贴上一层[b]符咒[/b],符咒会自动引爆,召唤[b]乾坤剑[/b]穿透敌人。
|
|
||||||
近战攻击造成乾坤剑的[color=cyan]100.0%[/color]点伤害。
|
|
||||||
|
|
||||||
每次格挡有[color=cyan]100.0%[/color]的概率弹反,子弹弹反后造成乾坤剑的[color=cyan]100.0%[/color]伤害。
|
每拥有一点气力:
|
||||||
|
增加[color=yellow]1[/color]点冲刺速度。
|
||||||
|
闪避穿过敌人时对其贴上一层[b]符咒[/b],
|
||||||
|
符咒会自动引爆,
|
||||||
|
召唤[b]乾坤剑[/b]穿透敌人。
|
||||||
|
自身最多储存[color=cyan]3[/color]点气力。
|
||||||
|
|
||||||
|
近战攻击造成乾坤剑的[color=cyan]25.0%[/color]伤害。
|
||||||
|
|
||||||
每次格挡最多化解[color=cyan]1[/color]个子弹,
|
每次格挡最多化解[color=cyan]1[/color]个子弹,
|
||||||
体内最多储存[color=cyan]3[/color]点气力。
|
每化解[color=yellow]1[/color]点伤害,
|
||||||
每化解[color=yellow]1[/color]点伤害,
|
乾坤剑造成的伤害+[color=cyan]10[/color]点。
|
||||||
乾坤剑造成的伤害+[color=cyan]10[/color]点。
|
|
||||||
格挡时机越精确,成功率越高。
|
|
||||||
|
|
||||||
格挡成功后继续按住攻击可进行[b]蓄力[/b],
|
对于[b]近战挥舞[/b]攻击,
|
||||||
其后松开格挡键进行[b]无量反击[/b],
|
化解本次伤害,
|
||||||
可弹反一切子弹,
|
敌人产生[color=yellow]1[/color]枚[b]内伤[/b];
|
||||||
但需消耗[color=yellow]1[/color]层气力,
|
对于[b]近战戳刺[/b]攻击,
|
||||||
可将弹反的伤害转换为能量。[/center]"
|
将本次伤害反弹,
|
||||||
|
造成乾坤剑的[color=cyan]25.0%[/color]伤害,
|
||||||
|
产生大量击退,
|
||||||
|
敌人产生[color=yellow]1[/color]枚[b]内伤[/b];
|
||||||
|
对于[b]远程射弹[/b]攻击,
|
||||||
|
化解本次伤害,
|
||||||
|
有[color=cyan]25.0%[/color]的概率发生[b]弹反[/b],
|
||||||
|
子弹弹反后造成乾坤剑的[color=cyan]25.0%[/color]伤害;
|
||||||
|
对于[b]猛冲[/b]攻击,
|
||||||
|
化解本次伤害,
|
||||||
|
反弹敌人的速度,
|
||||||
|
敌人产生[color=yellow]1[/color]枚[b]内伤[/b];
|
||||||
|
对于[b]吐息[/b]攻击,
|
||||||
|
[color=red]无法化解伤害[/color]但产生少量击退;
|
||||||
|
对于[b]魔法或召唤[/b]攻击,
|
||||||
|
[color=red]无法化解伤害[/color]但可以少量储能;
|
||||||
|
对于[b]爆炸[/b]攻击,
|
||||||
|
[color=red]无法化解伤害[/color]且[color=red]自身产生[color=yellow]2[/color]枚内伤[/color];
|
||||||
|
|
||||||
|
敌人或自身受到的任意[color=yellow]爆炸类伤害[/color]都会引爆其所有内伤,每枚内伤造成[color=cyan]10[/color]点伤害。
|
||||||
|
格挡时机越精确,成功率越高。
|
||||||
|
触发[b]不精准格挡[/b]时,自身产生[color=yellow]1[/color]枚内伤。
|
||||||
|
每次格挡最多产生[color=yellow]1[/color]枚内伤。"
|
||||||
|
|
||||||
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
[node name="tease" parent="container" parent_id_path=PackedInt32Array(575698869) index="3" unique_id=689277044]
|
||||||
|
visible = true
|
||||||
text = "“卸劲反伤”"
|
text = "“卸劲反伤”"
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
[gd_scene load_steps=4 format=3 uid="uid://bb1uh8k7gkhr7"]
|
[gd_scene format=3 uid="uid://bb1uh8k7gkhr7"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_tmgup"]
|
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_tmgup"]
|
||||||
[ext_resource type="Script" uid="uid://bqalhq6akgpoc" path="res://scripts/Contents/Weapons/VectorStarWeapon.gd" id="2_1dfg4"]
|
[ext_resource type="Script" uid="uid://bqalhq6akgpoc" path="res://scripts/Contents/Weapons/VectorStarWeapon.gd" id="2_1dfg4"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d2pndtow16635" path="res://resources/bullets/lgbt-bullet/造型2.svg" id="3_wfty8"]
|
[ext_resource type="Texture2D" uid="uid://d2pndtow16635" path="res://resources/bullets/lgbt-bullet/造型2.svg" id="3_wfty8"]
|
||||||
|
|
||||||
[node name="VectorStar" instance=ExtResource("1_tmgup")]
|
[node name="VectorStar" unique_id=947309755 instance=ExtResource("1_tmgup")]
|
||||||
script = ExtResource("2_1dfg4")
|
script = ExtResource("2_1dfg4")
|
||||||
avatarTexture = ExtResource("3_wfty8")
|
avatarTexture = ExtResource("3_wfty8")
|
||||||
displayName = "矢量核心"
|
displayName = "矢量核心"
|
||||||
quality = 2
|
quality = 2
|
||||||
costBeachball = 400
|
costBeachball = 400
|
||||||
store = {
|
store = {
|
||||||
"atk": 10,
|
"atk": 15,
|
||||||
"forwardtime": 1.0,
|
"forwardtime": 1.0,
|
||||||
"maxcount": 10,
|
"maxcount": 10,
|
||||||
"mincount": 5
|
"mincount": 5
|
||||||
@@ -23,22 +23,21 @@ storeType = {
|
|||||||
"mincount": 1.0
|
"mincount": 1.0
|
||||||
}
|
}
|
||||||
descriptionTemplate = "发射$mincount~$maxcount个[b]无主的飞星[/b],在$forwardtime秒后向目标冲刺并造成$atk点伤害。"
|
descriptionTemplate = "发射$mincount~$maxcount个[b]无主的飞星[/b],在$forwardtime秒后向目标冲刺并造成$atk点伤害。"
|
||||||
needEnergy = 5.0
|
needEnergy = 12.0
|
||||||
cooldown = 750.0
|
cooldown = 750.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("3_wfty8")
|
texture = ExtResource("3_wfty8")
|
||||||
|
|
||||||
[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 = "5.0"
|
text = "12.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 = 400
|
count = 400
|
||||||
|
|
||||||
[node name="name" parent="container/info/displays" index="0"]
|
[node name="name" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="0" unique_id=1576068972]
|
||||||
displayName = "矢量核心"
|
displayName = "矢量核心"
|
||||||
quality = 2
|
quality = 2
|
||||||
|
|
||||||
[node name="description" parent="container" index="2"]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" unique_id=566230682]
|
||||||
text = "[center]发射[color=cyan]5[/color]~[color=cyan]10[/color]个[b]无主的飞星[/b],在[color=cyan]1.00[/color]秒后向目标冲刺并造成[color=cyan]10[/color]点伤害。[/center]"
|
text = "[center]发射[color=cyan]5[/color]~[color=cyan]10[/color]个[b]无主的飞星[/b],在[color=cyan]1.00[/color]秒后向目标冲刺并造成[color=cyan]15[/color]点伤害。[/center]"
|
||||||
|
|||||||
@@ -47,5 +47,5 @@ displayName = "火山"
|
|||||||
quality = 4
|
quality = 4
|
||||||
typeTopic = 2
|
typeTopic = 2
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" 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]"
|
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]"
|
||||||
|
|||||||
@@ -36,8 +36,5 @@ quality = 3
|
|||||||
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
[node name="source" parent="container/info/displays" parent_id_path=PackedInt32Array(784441328) index="1" unique_id=365191794]
|
||||||
text = "Terraria × Undertale"
|
text = "Terraria × Undertale"
|
||||||
|
|
||||||
[node name="description" parent="container" parent_id_path=PackedInt32Array(575698869) index="2" unique_id=566230682]
|
[node name="description" parent="container/back/scroller" parent_id_path=PackedInt32Array(543588938) index="0" 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]"
|
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
|
|
||||||
|
|||||||
@@ -126,10 +126,9 @@
|
|||||||
"[b]%s[/b]成了宇航员,",
|
"[b]%s[/b]成了宇航员,",
|
||||||
"[b]%s[/b]现在是太空垃圾,",
|
"[b]%s[/b]现在是太空垃圾,",
|
||||||
"[b]%s[/b]脱离了轨道,",
|
"[b]%s[/b]脱离了轨道,",
|
||||||
"[b]%s[/b]已飞升,",
|
"[b]%s[/b]已飞升!",
|
||||||
"[b]%s[/b]已离开游戏,",
|
"[b]%s[/b]已离开游戏,",
|
||||||
"[b]%s[/b]跳起了舞,",
|
"[b]%s[/b]跳起了舞,",
|
||||||
"[b]%s[/b]被开发者玩死了,",
|
"[b]%s[/b]被开发者玩死了,",
|
||||||
"[b]%s[/b]被*刻意的游戏设计*杀死了!",
|
|
||||||
"[b]%s[/b]菜死了,"
|
"[b]%s[/b]菜死了,"
|
||||||
]
|
]
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://w5yqnejlmfou"
|
||||||
|
path="res://.godot/imported/Jade_神手玉.png-1967ba97c31e1d92072a4a98707c87b2.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://resources/weapons/Jade_神手玉.png"
|
||||||
|
dest_files=["res://.godot/imported/Jade_神手玉.png-1967ba97c31e1d92072a4a98707c87b2.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
|
||||||
@@ -2,6 +2,7 @@ extends BulletBase
|
|||||||
class_name InfinitySwordBullet
|
class_name InfinitySwordBullet
|
||||||
|
|
||||||
var implused: Array[EntityBase] = []
|
var implused: Array[EntityBase] = []
|
||||||
|
var rate2: float = 0
|
||||||
|
|
||||||
func spawn():
|
func spawn():
|
||||||
CameraManager.shake(2000, 100)
|
CameraManager.shake(2000, 100)
|
||||||
@@ -15,3 +16,8 @@ func succeedToHit(_dmg: float, entity: EntityBase):
|
|||||||
var eff = EffectController.create(ComponentManager.getEffect("ShootBlood"), entity.position)
|
var eff = EffectController.create(ComponentManager.getEffect("ShootBlood"), entity.position)
|
||||||
eff.particles.hide()
|
eff.particles.hide()
|
||||||
eff.shot()
|
eff.shot()
|
||||||
|
func hitBullet(bullet: BulletBase):
|
||||||
|
if !is_instance_valid(launcher): return
|
||||||
|
if BulletTool.canDamage(bullet, launcher):
|
||||||
|
baseDamage *= rate2 ** bullet.getDamage()
|
||||||
|
InternalDamageBullet.generateBall(launcher, bullet.launcher, sqrt(baseDamage))
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
extends BulletBase
|
||||||
|
class_name InternalDamageBullet
|
||||||
|
|
||||||
|
var hoster: EntityBase
|
||||||
|
|
||||||
|
func spawn():
|
||||||
|
if is_instance_valid(hoster):
|
||||||
|
hoster.died.connect(tryDestroy)
|
||||||
|
hoster.hit.connect(
|
||||||
|
func(_damage, bullet: BulletBase, _crit):
|
||||||
|
if bullet.motionType == BulletBase.MotionType.EXPLOSION:
|
||||||
|
hitbox.set_deferred("disabled", false)
|
||||||
|
)
|
||||||
|
|
||||||
|
static func generateBall(by: EntityBase, who: EntityBase, atk: float):
|
||||||
|
var internalDamages = who.getOrCreateCycleTimer("internalDamages", 3000, 150)
|
||||||
|
for bullet in BulletBase.generate(
|
||||||
|
ComponentManager.getBullet("InternalDamage"),
|
||||||
|
by,
|
||||||
|
Vector2.ZERO,
|
||||||
|
0
|
||||||
|
):
|
||||||
|
if bullet is InternalDamageBullet:
|
||||||
|
bullet.baseDamage = atk
|
||||||
|
bullet.hoster = who
|
||||||
|
internalDamages.host(bullet)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://d3m2bjkxg82a2
|
||||||
@@ -9,7 +9,7 @@ func ai():
|
|||||||
speed *= 1.05
|
speed *= 1.05
|
||||||
speed = clamp(speed, 0, 20)
|
speed = clamp(speed, 0, 20)
|
||||||
if is_instance_valid(tracer) and timeLived() < maxTraceTime:
|
if is_instance_valid(tracer) and timeLived() < maxTraceTime:
|
||||||
PresetBulletAI.trace(self, tracer.getTrackingAnchor(), tracePower)
|
PresetBulletAI.trace(self , tracer.getTrackingAnchor(), tracePower)
|
||||||
PresetBulletAI.forward(self, rotation)
|
PresetBulletAI.forward(self , rotation)
|
||||||
func destroy(_b):
|
func destroy(_b):
|
||||||
EffectController.create(ComponentManager.getEffect("LGBTBoom"), position).shot()
|
EffectController.create(ComponentManager.getEffect("LGBTBoom"), position).shot()
|
||||||
|
|||||||
@@ -10,19 +10,18 @@ var atk: float = 1
|
|||||||
var reflectRate: float = 1
|
var reflectRate: float = 1
|
||||||
|
|
||||||
func parryEffect(bullet: BulletBase):
|
func parryEffect(bullet: BulletBase):
|
||||||
# 生成格挡特效
|
|
||||||
parryiedTimes += 1
|
parryiedTimes += 1
|
||||||
var eff = EffectController.create(ComponentManager.getEffect("Parry"), position + (bullet.position - position).normalized() * 200) # 从子弹位置,面向其他子弹的方向前进150
|
var eff = EffectController.create(ComponentManager.getEffect("Parry"), position + (bullet.position - position).normalized() * 200) # 从子弹位置,面向其他子弹的方向前进150
|
||||||
eff.modulate = bullet.modulate.blend(bullet.texture.modulate)
|
eff.modulate = bullet.modulate.blend(bullet.texture.modulate)
|
||||||
eff.rotation = position.angle_to_point(bullet.position)
|
eff.rotation = position.angle_to_point(bullet.position)
|
||||||
eff.shot()
|
eff.shot()
|
||||||
launcher.impluse((position - bullet.position).normalized() * sqrt(abs(bullet.speed)) * 250)
|
launcher.impluse((position - bullet.position).normalized() * sqrt(abs(bullet.speed)) * 250)
|
||||||
func penerateEffect(entity: EntityBase):
|
func penerateEffect(entity: EntityBase, effPos: Vector2):
|
||||||
parryiedTimes += 1
|
parryiedTimes += 1
|
||||||
var eff = EffectController.create(ComponentManager.getEffect("ParryEntity"), position)
|
var eff = EffectController.create(ComponentManager.getEffect("ParryEntity"), effPos)
|
||||||
eff.rotation = position.angle_to_point(position)
|
eff.rotation = entity.position.angle_to_point(effPos)
|
||||||
eff.shot()
|
eff.shot()
|
||||||
entity.impluse((entity.position - position).normalized() * 450)
|
entity.impluse((entity.position - effPos).normalized() * 450)
|
||||||
func generateParryBall(bDamage: float):
|
func generateParryBall(bDamage: float):
|
||||||
var cycler = launcher.getOrCreateCycleTimer("parry", 2000, 100)
|
var cycler = launcher.getOrCreateCycleTimer("parry", 2000, 100)
|
||||||
if len(cycler.bullets) < maxBallCount: # 玩家最多只能拥有多少气
|
if len(cycler.bullets) < maxBallCount: # 玩家最多只能拥有多少气
|
||||||
@@ -48,11 +47,12 @@ func spawn():
|
|||||||
eff.shot()
|
eff.shot()
|
||||||
func succeedToHit(_dmg: float, entity: EntityBase):
|
func succeedToHit(_dmg: float, entity: EntityBase):
|
||||||
if parryiedTimes < maxParryTimes && MathTool.rate(parryRate):
|
if parryiedTimes < maxParryTimes && MathTool.rate(parryRate):
|
||||||
penerateEffect(entity)
|
penerateEffect(entity, entity.position * 1.01)
|
||||||
func hitBullet(bullet: BulletBase): # 当前子弹与其他子弹相撞
|
func hitBullet(bullet: BulletBase): # 当前子弹与其他子弹相撞
|
||||||
if !is_instance_valid(launcher): return
|
if !is_instance_valid(launcher): return
|
||||||
if BulletTool.canDamage(bullet, launcher): # 其他子弹可以使当前子弹的发射者受伤吗?
|
if BulletTool.canDamage(bullet, launcher): # 其他子弹可以使当前子弹的发射者受伤吗?
|
||||||
if parryiedTimes < maxParryTimes && MathTool.rate(parryRate): # 一个刀光最多格挡多少个敌方子弹?
|
if parryiedTimes < maxParryTimes:
|
||||||
|
if MathTool.rate(parryRate): # 一个刀光最多格挡多少个敌方子弹?
|
||||||
# 可以格挡 挥舞运动(近战攻击)、射弹运动(远程攻击)和猛冲运动 的子弹,射弹如果被弹反则不会产生气力
|
# 可以格挡 挥舞运动(近战攻击)、射弹运动(远程攻击)和猛冲运动 的子弹,射弹如果被弹反则不会产生气力
|
||||||
# 魔法运动和召唤运动的子弹虽不能格挡,但是可以储能,吐息运动的子弹会对发射者产生击退
|
# 魔法运动和召唤运动的子弹虽不能格挡,但是可以储能,吐息运动的子弹会对发射者产生击退
|
||||||
if bullet.motionType == BulletBase.MotionType.PROJECTILE:
|
if bullet.motionType == BulletBase.MotionType.PROJECTILE:
|
||||||
@@ -73,17 +73,33 @@ func hitBullet(bullet: BulletBase): # 当前子弹与其他子弹相撞
|
|||||||
parryEffect(bullet)
|
parryEffect(bullet)
|
||||||
bullet.hitbox.set_deferred("disabled", true)
|
bullet.hitbox.set_deferred("disabled", true)
|
||||||
generateParryBall(bullet.baseDamage)
|
generateParryBall(bullet.baseDamage)
|
||||||
|
InternalDamageBullet.generateBall(launcher, bullet.launcher, atk)
|
||||||
|
elif bullet.motionType == BulletBase.MotionType.STAB:
|
||||||
|
parryEffect(bullet)
|
||||||
|
penerateEffect(bullet.launcher, bullet.launcher.position * 1.01)
|
||||||
|
bullet.hitbox.set_deferred("disabled", true)
|
||||||
|
bullet.launcher.takeDamage(atk * reflectRate * bullet.getDamage())
|
||||||
|
bullet.launcher.impluse(Vector2.from_angle(bullet.rotation) * -2000)
|
||||||
|
generateParryBall(bullet.baseDamage)
|
||||||
|
InternalDamageBullet.generateBall(launcher, bullet.launcher, atk)
|
||||||
elif bullet.motionType == BulletBase.MotionType.SPRINT:
|
elif bullet.motionType == BulletBase.MotionType.SPRINT:
|
||||||
parryEffect(bullet)
|
parryEffect(bullet)
|
||||||
bullet.tryDestroy()
|
bullet.tryDestroy()
|
||||||
bullet.launcher.velocity *= -0.1
|
bullet.launcher.velocity *= 0
|
||||||
generateParryBall(bullet.baseDamage)
|
generateParryBall(bullet.baseDamage)
|
||||||
|
InternalDamageBullet.generateBall(launcher, bullet.launcher, atk)
|
||||||
elif bullet.motionType == BulletBase.MotionType.BREATH:
|
elif bullet.motionType == BulletBase.MotionType.BREATH:
|
||||||
penerateEffect(bullet.launcher)
|
penerateEffect(bullet.launcher, launcher.position)
|
||||||
bullet.launcher.impluse(Vector2.from_angle(bullet.rotation) * -500)
|
bullet.launcher.impluse(Vector2.from_angle(bullet.rotation) * -500)
|
||||||
elif bullet.motionType == BulletBase.MotionType.SUMMON || bullet.motionType == BulletBase.MotionType.MAGIC:
|
elif bullet.motionType == BulletBase.MotionType.SUMMON || bullet.motionType == BulletBase.MotionType.MAGIC:
|
||||||
penerateEffect(bullet.launcher)
|
penerateEffect(bullet.launcher, launcher.position)
|
||||||
launcher.storeEnergy(sqrt(bullet.baseDamage))
|
launcher.storeEnergy(sqrt(bullet.baseDamage))
|
||||||
|
elif bullet.motionType == BulletBase.MotionType.EXPLOSION:
|
||||||
|
penerateEffect(bullet.launcher, launcher.position)
|
||||||
|
for i in 2:
|
||||||
|
InternalDamageBullet.generateBall(bullet.launcher, launcher, sqrt(bullet.getDamage()))
|
||||||
|
else:
|
||||||
|
InternalDamageBullet.generateBall(bullet.launcher, launcher, atk)
|
||||||
|
|
||||||
func refract(_newBullet: BulletBase, _entity: EntityBase, _index: int, _total: int, _lastBullet: float):
|
func refract(_newBullet: BulletBase, _entity: EntityBase, _index: int, _total: int, _lastBullet: float):
|
||||||
return null
|
return null
|
||||||
|
|||||||
@@ -3,10 +3,16 @@ class_name WuweiBullet
|
|||||||
|
|
||||||
@export var canMove: bool = true
|
@export var canMove: bool = true
|
||||||
|
|
||||||
|
var rate2: float = 0
|
||||||
|
|
||||||
func ai():
|
func ai():
|
||||||
if canMove:
|
if canMove:
|
||||||
PresetBulletAI.lockLauncher(self , launcher, true)
|
PresetBulletAI.lockLauncher(self , launcher, true)
|
||||||
PresetBulletAI.trace(self , launcher.currentFocusedPosition, 0.1)
|
PresetBulletAI.trace(self , launcher.currentFocusedPosition, 0.1)
|
||||||
|
func hitBullet(bullet: BulletBase):
|
||||||
|
if !is_instance_valid(launcher): return
|
||||||
|
if BulletTool.canDamage(bullet, launcher):
|
||||||
|
baseDamage *= rate2 ** bullet.getDamage()
|
||||||
|
|
||||||
func shoot():
|
func shoot():
|
||||||
for bullet in BulletBase.generate(
|
for bullet in BulletBase.generate(
|
||||||
@@ -17,6 +23,7 @@ func shoot():
|
|||||||
):
|
):
|
||||||
if bullet is InfinitySwordBullet:
|
if bullet is InfinitySwordBullet:
|
||||||
bullet.baseDamage = baseDamage
|
bullet.baseDamage = baseDamage
|
||||||
|
bullet.rate2 = rate2
|
||||||
func beReady():
|
func beReady():
|
||||||
canMove = false
|
canMove = false
|
||||||
EffectController.create(ComponentManager.getEffect("Danger"), findAnchor("Spawn")).shot()
|
EffectController.create(ComponentManager.getEffect("Danger"), findAnchor("Spawn")).shot()
|
||||||
|
|||||||
@@ -4,17 +4,15 @@ func register():
|
|||||||
fields[FieldStore.Entity.MAX_HEALTH] = 120
|
fields[FieldStore.Entity.MAX_HEALTH] = 120
|
||||||
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.2
|
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.2
|
||||||
fields[FieldStore.Entity.OFFSET_SHOOT] = 0
|
fields[FieldStore.Entity.OFFSET_SHOOT] = 0
|
||||||
attackCooldownMap[0] = randi_range(3000, 5000)
|
attackCooldownMap[0] = randi_range(100, 500)
|
||||||
func spawn():
|
func spawn():
|
||||||
texture.play("walk")
|
texture.play("walk")
|
||||||
func ai():
|
func ai():
|
||||||
PresetEntityAI.follow(self, currentFocusedBoss, 300)
|
PresetEntityAI.follow(self , currentFocusedBoss, 300)
|
||||||
tryAttack(0)
|
tryAttack(0)
|
||||||
func attack(type):
|
func attack(type):
|
||||||
if type == 0:
|
if type == 0:
|
||||||
var weaponPos = findWeaponAnchor("normal")
|
var weaponPos = findWeaponAnchor("normal")
|
||||||
var angle = weaponPos.angle_to_point(currentFocusedBoss.position)
|
var angle = weaponPos.angle_to_point(currentFocusedBoss.position)
|
||||||
for i in 3:
|
BulletBase.generate(ComponentManager.getBullet("DogCircle"), self , weaponPos, angle)
|
||||||
BulletBase.generate(ComponentManager.getBullet("DogCircle"), self, weaponPos, angle)
|
|
||||||
await TickTool.millseconds(100)
|
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -2,4 +2,4 @@ extends EffectController
|
|||||||
class_name ParryEffect
|
class_name ParryEffect
|
||||||
|
|
||||||
func beforeShot():
|
func beforeShot():
|
||||||
CameraManager.shake(200, 300)
|
CameraManager.shake(300, 500)
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ extends FullscreenPanelBase
|
|||||||
|
|
||||||
func beforeOpen(args: Array = []):
|
func beforeOpen(args: Array = []):
|
||||||
audio.play()
|
audio.play()
|
||||||
var reasonTemplate = MathTool.randomChoiceFrom(GameRule.deadReasons)
|
deadreason.text = ("[color=gray]%s[/color]") % args[0]
|
||||||
deadreason.text = ("[color=gray]" + reasonTemplate + "凶手是[b]%s[/b]的[b]%s[/b]。[/color]") % args
|
|
||||||
func afterOpen(_args: Array = []):
|
func afterOpen(_args: Array = []):
|
||||||
gameControl.enable()
|
gameControl.enable()
|
||||||
|
|||||||
@@ -29,9 +29,10 @@ class_name StarterPanel
|
|||||||
|
|
||||||
var historyStack
|
var historyStack
|
||||||
|
|
||||||
static var GAMEMODE_MAP_WAVE = [Wave.WAVE_NORMAL, Wave.WAVE_BOSSRUSH, Wave.WAVE_MOWING]
|
static var GAMEMODE_MAP_WAVE = [Wave.WAVE_NORMAL, Wave.WAVE_BOSSRUSH, Wave.WAVE_MOWING, Wave.WAVE_TESTBOSS]
|
||||||
static var START_CHARACTERS = ["MuyangDog", "Lynx", "HCN"]
|
static var START_CHARACTERS = ["MuyangDog", "Lynx", "HCN"]
|
||||||
static var buildingShader: bool = true
|
static var buildingShader: bool = true
|
||||||
|
static var tutorialWatched: bool = false
|
||||||
static var selectingFeed: bool = true
|
static var selectingFeed: bool = true
|
||||||
static var selectedCharacter: String = MathTool.randomChoiceFrom(START_CHARACTERS)
|
static var selectedCharacter: String = MathTool.randomChoiceFrom(START_CHARACTERS)
|
||||||
|
|
||||||
@@ -93,6 +94,9 @@ func startSingleplayerGame():
|
|||||||
UIState.setPanel("CompilingTip")
|
UIState.setPanel("CompilingTip")
|
||||||
else:
|
else:
|
||||||
UIState.setPanel("SelectInitialFeed")
|
UIState.setPanel("SelectInitialFeed")
|
||||||
|
if useTutorialBtn.button_pressed:
|
||||||
|
tutorialWatched = true
|
||||||
|
SaveEngine.save()
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
historyStack = Composables.useHistoryStack(playerNameInput)
|
historyStack = Composables.useHistoryStack(playerNameInput)
|
||||||
@@ -100,6 +104,7 @@ func _ready():
|
|||||||
func(on: bool):
|
func(on: bool):
|
||||||
useTutorialBtn.text = "观看" if on else "跳过"
|
useTutorialBtn.text = "观看" if on else "跳过"
|
||||||
)
|
)
|
||||||
|
useTutorialBtn.button_pressed = tutorialWatched
|
||||||
multiplayer.connection_failed.connect(
|
multiplayer.connection_failed.connect(
|
||||||
func():
|
func():
|
||||||
setState(MultiplayerState.ConnectionState.DISCONNECTED)
|
setState(MultiplayerState.ConnectionState.DISCONNECTED)
|
||||||
@@ -146,6 +151,8 @@ func _ready():
|
|||||||
setPlayerName(getLast.call(1), newText)
|
setPlayerName(getLast.call(1), newText)
|
||||||
mutexPlayer.rpc(newText)
|
mutexPlayer.rpc(newText)
|
||||||
)
|
)
|
||||||
|
if WorldManager.isRelease():
|
||||||
|
gamemodeOption.remove_item(3)
|
||||||
func _physics_process(_delta):
|
func _physics_process(_delta):
|
||||||
levelShow.text = "%d ∈ [%d, %d]" % [diffEdit.value, diffEdit.min_value, diffEdit.max_value]
|
levelShow.text = "%d ∈ [%d, %d]" % [diffEdit.value, diffEdit.min_value, diffEdit.max_value]
|
||||||
GameRule.difficulty = diffEdit.value
|
GameRule.difficulty = diffEdit.value
|
||||||
@@ -202,6 +209,7 @@ func rebuildInfo():
|
|||||||
func(newValue: float):
|
func(newValue: float):
|
||||||
OutGameStorage.upgradableFieldsValue[fieldShow.field] = newValue
|
OutGameStorage.upgradableFieldsValue[fieldShow.field] = newValue
|
||||||
OutGameStorage.upgradableFieldsLevel[fieldShow.field] += 1
|
OutGameStorage.upgradableFieldsLevel[fieldShow.field] += 1
|
||||||
|
SaveEngine.save()
|
||||||
rebuildInfo()
|
rebuildInfo()
|
||||||
)
|
)
|
||||||
upgradeFieldsBox.add_child(fieldShow)
|
upgradeFieldsBox.add_child(fieldShow)
|
||||||
@@ -215,6 +223,7 @@ func rebuildInfo():
|
|||||||
getCurrentSelectedCharacter().animator.play("hide")
|
getCurrentSelectedCharacter().animator.play("hide")
|
||||||
selectedCharacter = card.name
|
selectedCharacter = card.name
|
||||||
getCurrentSelectedCharacter().animator.play("show")
|
getCurrentSelectedCharacter().animator.play("show")
|
||||||
|
SaveEngine.save()
|
||||||
)
|
)
|
||||||
charactersBox.add_child(card)
|
charactersBox.add_child(card)
|
||||||
if selectedCharacter == card.name:
|
if selectedCharacter == card.name:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ extends Weapon
|
|||||||
func update(to: int, origin: Dictionary, _entity: EntityBase):
|
func update(to: int, origin: Dictionary, _entity: EntityBase):
|
||||||
origin["atk"] += 0.1 * to * soulLevel
|
origin["atk"] += 0.1 * to * soulLevel
|
||||||
origin["count"] = 1 * soulLevel
|
origin["count"] = 1 * soulLevel
|
||||||
origin["self"] *= soulLevel
|
origin["self"] += (soulLevel - 1)
|
||||||
return origin
|
return origin
|
||||||
func attack(entity: EntityBase):
|
func attack(entity: EntityBase):
|
||||||
entity.takeDamage(readStore("self"))
|
entity.takeDamage(readStore("self"))
|
||||||
|
|||||||
@@ -2,13 +2,12 @@
|
|||||||
extends Weapon
|
extends Weapon
|
||||||
|
|
||||||
func update(to: int, origin: Dictionary, _entity: EntityBase):
|
func update(to: int, origin: Dictionary, _entity: EntityBase):
|
||||||
origin["atk"] += 4 * to * soulLevel
|
origin["atk"] += 3 * to * soulLevel
|
||||||
origin["rate1"] *= soulLevel
|
origin["rate1"] *= soulLevel
|
||||||
origin["rate2"] *= soulLevel
|
origin["rate2"] += 0.1 * (soulLevel - 1)
|
||||||
origin["rate3"] *= soulLevel
|
|
||||||
return origin
|
return origin
|
||||||
func checkAttack(entity: EntityBase) -> bool:
|
func checkAttack(entity: EntityBase) -> bool:
|
||||||
return len(entity.getOrCreateCycleTimer("parry", 2000, 100).bullets) > 0
|
return len(entity.getOrCreateCycleTimer("parry", 2000, 100).bullets) > 2
|
||||||
func attack(entity: EntityBase):
|
func attack(entity: EntityBase):
|
||||||
var parryCounter = entity.getOrCreateCycleTimer("parry", 2000, 100)
|
var parryCounter = entity.getOrCreateCycleTimer("parry", 2000, 100)
|
||||||
for bullet in BulletBase.generate(
|
for bullet in BulletBase.generate(
|
||||||
@@ -19,14 +18,9 @@ func attack(entity: EntityBase):
|
|||||||
):
|
):
|
||||||
if bullet is WuweiBullet:
|
if bullet is WuweiBullet:
|
||||||
bullet.baseDamage = readStore("atk")
|
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
|
bullet.baseDamage *= max(-0.99, readStore("rate1") * (entity.fields[FieldStore.Entity.MAX_HEALTH] - entity.health)) + 1
|
||||||
var atkAll = 0
|
bullet.rate2 = readStore("rate2")
|
||||||
for bulle in parryCounter.bullets:
|
for bulle in parryCounter.bullets.slice(0, 3):
|
||||||
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:
|
if bulle is ParryBallBullet:
|
||||||
bulle.tryDestroy()
|
bulle.tryDestroy()
|
||||||
parryCounter.forceFilter()
|
parryCounter.forceFilter()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ func attack(entity: EntityBase):
|
|||||||
if !summon: return true
|
if !summon: return true
|
||||||
summon.atk = readStore("atk")
|
summon.atk = readStore("atk")
|
||||||
summon.maxTraceTime = readStore("trace") * 1000
|
summon.maxTraceTime = readStore("trace") * 1000
|
||||||
summon.tracePower = readStore("power")
|
summon.tracePower = clamp(readStore("power"), 0, 1)
|
||||||
summon.count = readStore("count")
|
summon.count = readStore("count")
|
||||||
summon.angle = readStore("angle")
|
summon.angle = readStore("angle")
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ extends Area2D
|
|||||||
class_name BulletBase
|
class_name BulletBase
|
||||||
|
|
||||||
enum MotionType {
|
enum MotionType {
|
||||||
SWING, # 挥舞(近战攻击)
|
SWING, # 近战挥舞
|
||||||
PROJECTILE, # 射弹
|
PROJECTILE, # 射弹
|
||||||
MAGIC, # 魔法
|
MAGIC, # 魔法
|
||||||
SUMMON, # 召唤
|
SUMMON, # 召唤
|
||||||
SPRINT, # 冲撞
|
SPRINT, # 冲撞
|
||||||
BREATH, # 吐息
|
BREATH, # 吐息
|
||||||
|
STAB, # 近战戳刺
|
||||||
|
EXPLOSION, # 爆炸
|
||||||
}
|
}
|
||||||
|
|
||||||
signal destroied(becauseMap: bool)
|
signal destroied(becauseMap: bool)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ func getStateAngle(index: int):
|
|||||||
return lifetime() / period * deg_to_rad(360) - deg_to_rad(360.0 * index / len(bullets))
|
return lifetime() / period * deg_to_rad(360) - deg_to_rad(360.0 * index / len(bullets))
|
||||||
func forceFilter():
|
func forceFilter():
|
||||||
bullets = bullets.filter(is_instance_valid)
|
bullets = bullets.filter(is_instance_valid)
|
||||||
func apply():
|
func apply(where: Vector2):
|
||||||
forceFilter()
|
forceFilter()
|
||||||
for index in len(bullets):
|
for index in len(bullets):
|
||||||
var bullet = bullets[index]
|
var bullet = bullets[index]
|
||||||
@@ -24,7 +24,7 @@ func apply():
|
|||||||
var offset = Vector2.from_angle(newStateAngle)
|
var offset = Vector2.from_angle(newStateAngle)
|
||||||
bullet.cycleStateAngle = newStateAngle
|
bullet.cycleStateAngle = newStateAngle
|
||||||
offset.y *= 0.25
|
offset.y *= 0.25
|
||||||
bullet.position = bullet.launcher.position + offset * distance
|
bullet.position = where + offset * distance
|
||||||
bullet.scale = Vector2.ONE * (1 + offset.y)
|
bullet.scale = Vector2.ONE * (1 + offset.y)
|
||||||
func host(bullet: BulletBase):
|
func host(bullet: BulletBase):
|
||||||
bullets.append(bullet)
|
bullets.append(bullet)
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ var attackingStates: Array[int] = []
|
|||||||
var inventory = {
|
var inventory = {
|
||||||
ItemStore.ItemType.BASEBALL: 200,
|
ItemStore.ItemType.BASEBALL: 200,
|
||||||
ItemStore.ItemType.BASKETBALL: 200,
|
ItemStore.ItemType.BASKETBALL: 200,
|
||||||
ItemStore.ItemType.APPLE: 5,
|
ItemStore.ItemType.APPLE: 3,
|
||||||
ItemStore.ItemType.BEACHBALL: 0,
|
ItemStore.ItemType.BEACHBALL: 0,
|
||||||
ItemStore.ItemType.SOUL: 0,
|
ItemStore.ItemType.SOUL: 0,
|
||||||
ItemStore.ItemType.CRYSTAL: 0,
|
ItemStore.ItemType.CRYSTAL: 0,
|
||||||
@@ -73,7 +73,7 @@ var inventory = {
|
|||||||
var inventoryMax = {
|
var inventoryMax = {
|
||||||
ItemStore.ItemType.BASEBALL: INF, # 无限
|
ItemStore.ItemType.BASEBALL: INF, # 无限
|
||||||
ItemStore.ItemType.BASKETBALL: INF,
|
ItemStore.ItemType.BASKETBALL: INF,
|
||||||
ItemStore.ItemType.APPLE: 5,
|
ItemStore.ItemType.APPLE: 3,
|
||||||
ItemStore.ItemType.BEACHBALL: INF,
|
ItemStore.ItemType.BEACHBALL: INF,
|
||||||
ItemStore.ItemType.SOUL: INF,
|
ItemStore.ItemType.SOUL: INF,
|
||||||
ItemStore.ItemType.CRYSTAL: INF,
|
ItemStore.ItemType.CRYSTAL: INF,
|
||||||
@@ -214,7 +214,7 @@ func _physics_process(_delta: float) -> void:
|
|||||||
trailParticle.emitting = trailing
|
trailParticle.emitting = trailing
|
||||||
for cycler in cycleTimers.values():
|
for cycler in cycleTimers.values():
|
||||||
if cycler is CycleTimer:
|
if cycler is CycleTimer:
|
||||||
cycler.apply()
|
cycler.apply(position)
|
||||||
|
|
||||||
# 通用方法
|
# 通用方法
|
||||||
func impluse(force: Vector2):
|
func impluse(force: Vector2):
|
||||||
@@ -416,7 +416,7 @@ func tryDie(by: BulletBase = null):
|
|||||||
fields[FieldStore.Entity.MAX_HEALTH] * randf_range(1 - GameRule.beachballOffset, 1 + GameRule.beachballOffset),
|
fields[FieldStore.Entity.MAX_HEALTH] * randf_range(1 - GameRule.beachballOffset, 1 + GameRule.beachballOffset),
|
||||||
position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset)
|
position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset)
|
||||||
)
|
)
|
||||||
for i in randi_range(0, 20 if isBoss else 5):
|
for i in randi_range(0, (15 + level) if isBoss else 5):
|
||||||
ItemDropped.generate(
|
ItemDropped.generate(
|
||||||
ItemStore.ItemType.CRYSTAL,
|
ItemStore.ItemType.CRYSTAL,
|
||||||
5 if isBoss else 1,
|
5 if isBoss else 1,
|
||||||
@@ -425,7 +425,7 @@ func tryDie(by: BulletBase = null):
|
|||||||
if isBoss:
|
if isBoss:
|
||||||
ItemDropped.generate(
|
ItemDropped.generate(
|
||||||
ItemStore.ItemType.DIAMOND,
|
ItemStore.ItemType.DIAMOND,
|
||||||
randi_range(1, 3),
|
randi_range(1, level),
|
||||||
position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset)
|
position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset)
|
||||||
)
|
)
|
||||||
if isBoss:
|
if isBoss:
|
||||||
@@ -436,7 +436,11 @@ func tryDie(by: BulletBase = null):
|
|||||||
)
|
)
|
||||||
if isPlayer():
|
if isPlayer():
|
||||||
if UIState.player == self:
|
if UIState.player == self:
|
||||||
UIState.setPanel("GameOver", [displayName, by.launcher.displayName, by.displayName])
|
var reasonTemplate = MathTool.randomChoiceFrom(GameRule.deadReasons)
|
||||||
|
if is_instance_valid(by):
|
||||||
|
UIState.setPanel("GameOver", ["%s凶手是[b]%s[/b]的[b]%s[/b]。" % [reasonTemplate, by.launcher.displayName, by.displayName] % displayName])
|
||||||
|
else:
|
||||||
|
UIState.setPanel("GameOver", ["%s凶手是[b]%s[/b]。" % [reasonTemplate, "*刻意的游戏设计*"] % displayName])
|
||||||
EffectController.create(ComponentManager.getEffect("DeadBlood"), texture.global_position).shot()
|
EffectController.create(ComponentManager.getEffect("DeadBlood"), texture.global_position).shot()
|
||||||
await die()
|
await die()
|
||||||
died.emit()
|
died.emit()
|
||||||
@@ -504,6 +508,7 @@ func summon(who: PackedScene, syncFields: bool = true, lockValue: bool = true) -
|
|||||||
instance.position = get_global_mouse_position()
|
instance.position = get_global_mouse_position()
|
||||||
instance.myMaster = self
|
instance.myMaster = self
|
||||||
summoned(instance)
|
summoned(instance)
|
||||||
|
instance.add_to_group("entities")
|
||||||
if isPlayer(): instance.add_to_group("players")
|
if isPlayer(): instance.add_to_group("players")
|
||||||
if syncFields:
|
if syncFields:
|
||||||
if lockValue:
|
if lockValue:
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ func apply(entity: EntityBase):
|
|||||||
var value = fieldValues[i]
|
var value = fieldValues[i]
|
||||||
entity.fields[field] += value
|
entity.fields[field] += value
|
||||||
var applier = FieldStore.entityApplier.get(field)
|
var applier = FieldStore.entityApplier.get(field)
|
||||||
if applier and applier.call(entity, value):
|
if applier and !applier.call(entity, value):
|
||||||
entity.fields[field] -= value
|
entity.fields[field] -= value
|
||||||
entity.fields[field] = clamp(entity.fields[field], FieldStore.entityMinValueMap.get(field, 0), FieldStore.entityMaxValueMap.get(field, INF))
|
entity.fields[field] = clamp(entity.fields[field], FieldStore.entityMinValueMap.get(field, 0), FieldStore.entityMaxValueMap.get(field, INF))
|
||||||
for i in weapons:
|
for i in weapons:
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ func buildDescription(showNext: bool = false) -> String:
|
|||||||
else:
|
else:
|
||||||
text = "[color=cyan]%s[/color]" % data
|
text = "[color=cyan]%s[/color]" % data
|
||||||
result = result.replace("$" + key, text)
|
result = result.replace("$" + key, text)
|
||||||
return "[center]%s[/center]" % result
|
return result
|
||||||
func readStore(key: String, default: Variant = null):
|
func readStore(key: String, default: Variant = null):
|
||||||
return store.get(key, default)
|
return store.get(key, default)
|
||||||
func playSound(sound: String):
|
func playSound(sound: String):
|
||||||
|
|||||||
@@ -31,6 +31,14 @@ static func fill(origin: Dictionary, filler: Callable) -> Dictionary:
|
|||||||
return accum,
|
return accum,
|
||||||
{}
|
{}
|
||||||
)
|
)
|
||||||
|
static func mapEntries(origin: Dictionary, mapper: Callable) -> Dictionary:
|
||||||
|
return origin.keys().reduce(
|
||||||
|
func(accum, key):
|
||||||
|
var entry = mapper.call(key, origin[key])
|
||||||
|
accum[entry[0]] = entry[1]
|
||||||
|
return accum,
|
||||||
|
{}
|
||||||
|
)
|
||||||
static func dictionaryFromEntries(keys: Array, values: Array) -> Dictionary:
|
static func dictionaryFromEntries(keys: Array, values: Array) -> Dictionary:
|
||||||
var result = {}
|
var result = {}
|
||||||
for index in len(keys):
|
for index in len(keys):
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
class_name SaveEngine
|
||||||
|
|
||||||
|
const SAVE_FILE = "user://save.json"
|
||||||
|
|
||||||
|
static func serialize():
|
||||||
|
return {
|
||||||
|
"out-game": {
|
||||||
|
"value": OutGameStorage.upgradableFieldsValue,
|
||||||
|
"level": OutGameStorage.upgradableFieldsLevel,
|
||||||
|
"inventory": OutGameStorage.inventory,
|
||||||
|
},
|
||||||
|
"ui-state": {
|
||||||
|
"tutorial-watched": StarterPanel.tutorialWatched,
|
||||||
|
"selected-character": StarterPanel.selectedCharacter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static func apply(saveData: Dictionary):
|
||||||
|
OutGameStorage.upgradableFieldsValue = saveData["out-game"]["value"]
|
||||||
|
OutGameStorage.upgradableFieldsLevel = saveData["out-game"]["level"]
|
||||||
|
OutGameStorage.inventory = saveData["out-game"]["inventory"]
|
||||||
|
StarterPanel.tutorialWatched = saveData["ui-state"]["tutorial-watched"]
|
||||||
|
StarterPanel.selectedCharacter = saveData["ui-state"]["selected-character"]
|
||||||
|
static func load():
|
||||||
|
var origin = JsonTool.parseFromFile(SAVE_FILE)
|
||||||
|
if origin is Dictionary:
|
||||||
|
origin["out-game"]["value"] = ArrayTool.mapEntries(origin["out-game"]["value"], func(key, value): return [int(key), value])
|
||||||
|
origin["out-game"]["level"] = ArrayTool.mapEntries(origin["out-game"]["level"], func(key, value): return [int(key), value])
|
||||||
|
origin["out-game"]["inventory"] = ArrayTool.mapEntries(origin["out-game"]["inventory"], func(key, value): return [int(key), value])
|
||||||
|
return origin
|
||||||
|
static func save():
|
||||||
|
var file = FileAccess.open(SAVE_FILE, FileAccess.ModeFlags.WRITE)
|
||||||
|
if file is FileAccess:
|
||||||
|
file.store_string(JsonTool.stringify(serialize()))
|
||||||
|
file.close()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dae5c5gtbf3uo
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
class_name GameRule
|
class_name GameRule
|
||||||
|
|
||||||
static var deadReasons: Array = JsonTool.parseJson("res://resources/constants/deadReasons.json")
|
static var deadReasons: Array = JsonTool.parseFromFile("res://resources/constants/deadReasons.json")
|
||||||
static var helpText: String
|
static var helpText: String
|
||||||
static var difficultyRange: Vector2 = Vector2(-20, 50) # 难度倍数范围,包括最小值和最大值,负数则降低难度
|
static var difficultyRange: Vector2 = Vector2(-20, 50) # 难度倍数范围,包括最小值和最大值,负数则降低难度
|
||||||
static var difficulty: float = 1 # 难度倍数,可以写小数
|
static var difficulty: float = 1 # 难度倍数,可以写小数
|
||||||
@@ -10,17 +10,17 @@ static var damageOffset: float = MathTool.percent(20) # 伤害随机浮动比例
|
|||||||
static var beachballOffset: float = MathTool.percent(30) # 棒球掉落数随机浮动比例
|
static var beachballOffset: float = MathTool.percent(30) # 棒球掉落数随机浮动比例
|
||||||
static var damageLabelSpawnOffset: float = 30 # 伤害标签生成位置的随机偏移
|
static var damageLabelSpawnOffset: float = 30 # 伤害标签生成位置的随机偏移
|
||||||
static var itemDroppedSpawnOffset: float = 30 # 掉落物生成位置的随机偏移
|
static var itemDroppedSpawnOffset: float = 30 # 掉落物生成位置的随机偏移
|
||||||
static var appleDropRate: float = MathTool.percent(2) # 苹果掉落概率
|
static var appleDropRate: float = MathTool.percent(1) # 苹果掉落概率
|
||||||
static var refreshCountIncreaseCount: Vector2i = Vector2i(0, 3) # 刷新所需的棒球数量的增加的数量
|
static var refreshCountIncreaseCount: Vector2i = Vector2i(1, 3) # 刷新所需的棒球数量的增加的数量
|
||||||
static var entityCountBoostPerWave: float = MathTool.percent(2) # 每波敌人数量增加的百分比,倍数级
|
static var entityCountBoostPerWave: float = MathTool.percent(2) # 每波敌人数量增加的百分比,倍数级
|
||||||
static var itemShowLifetime: int = 1500 # 物品展示组件如果设置了自动隐藏,那么隐藏前可以存活的时间
|
static var itemShowLifetime: int = 1500 # 物品展示组件如果设置了自动隐藏,那么隐藏前可以存活的时间
|
||||||
static var tipSpawnRateWhenGetDroppedItem: float = MathTool.percent(25) # 当玩家获取到掉落物时,提示的概率
|
static var tipSpawnRateWhenGetDroppedItem: float = MathTool.percent(25) # 当玩家获取到掉落物时,提示的概率
|
||||||
static var entityHealthIncreasePerWave: float = MathTool.percent(1) # 每波敌人生命值增加的百分比,指数级
|
static var entityHealthIncreasePerWave: float = MathTool.percent(1) # 每波敌人生命值增加的百分比,指数级
|
||||||
static var entityDamageIncreasePerWave: float = MathTool.percent(1) # 每波敌人伤害增加的百分比,指数级
|
static var entityDamageIncreasePerWave: float = MathTool.percent(1) # 每波敌人伤害增加的百分比,指数级
|
||||||
static var entityLevelOffsetByWave: float = MathTool.percent(30) # 每波敌人等级根据当前波数随机浮动的比例
|
static var entityLevelOffsetByWave: float = MathTool.percent(30) # 每波敌人等级根据当前波数随机浮动的比例
|
||||||
static var appleDropRateInfluenceByLuckValue: float = MathTool.percent(2) # 幸运值对苹果掉率的影响
|
static var appleDropRateInfluenceByLuckValue: float = MathTool.percent(0.07) # 幸运值对苹果掉率的影响
|
||||||
static var critRateInfluenceByLuckValue: float = MathTool.percent(2.5) # 幸运值对暴击率的影响
|
static var critRateInfluenceByLuckValue: float = MathTool.percent(0.15) # 幸运值对暴击率的影响
|
||||||
static var penerateRateInfluenceByLuckValue: float = MathTool.percent(3) # 幸运值对穿透率的影响
|
static var penerateRateInfluenceByLuckValue: float = MathTool.percent(0.2) # 幸运值对穿透率的影响
|
||||||
static var detainTime: float = 250 # 血量如果在这个时间内没有改变才会开始播放降低动画
|
static var detainTime: float = 250 # 血量如果在这个时间内没有改变才会开始播放降低动画
|
||||||
static var weaponUpdateCost: float = 1.1 # 武器升级后消耗的棒球数量倍数
|
static var weaponUpdateCost: float = 1.1 # 武器升级后消耗的棒球数量倍数
|
||||||
static var canSpawnMobWhenBossWave: bool = true # Boss波次是否可生成小怪
|
static var canSpawnMobWhenBossWave: bool = true # Boss波次是否可生成小怪
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
class_name JsonTool
|
class_name JsonTool
|
||||||
|
|
||||||
static func parseJson(filePath: String):
|
static func parseFromFile(filePath: String):
|
||||||
var file = FileAccess.open(filePath, FileAccess.READ)
|
var file = FileAccess.open(filePath, FileAccess.READ)
|
||||||
|
if file is FileAccess:
|
||||||
var json = file.get_as_text()
|
var json = file.get_as_text()
|
||||||
file.close()
|
file.close()
|
||||||
|
return parseFromText(json)
|
||||||
|
static func parseFromText(text: String):
|
||||||
var jsonObj = JSON.new()
|
var jsonObj = JSON.new()
|
||||||
jsonObj.parse(json)
|
jsonObj.parse(text)
|
||||||
return jsonObj.data
|
return jsonObj.data
|
||||||
|
static func stringify(data: Variant):
|
||||||
|
return JSON.stringify(data, " ")
|
||||||
|
|||||||
@@ -22,12 +22,14 @@ func _physics_process(_delta):
|
|||||||
static func shake(millseconds: float, intensity: float = 10, steper: Callable = func(currentValue, _totalValue, _restPercent): return currentValue):
|
static func shake(millseconds: float, intensity: float = 10, steper: Callable = func(currentValue, _totalValue, _restPercent): return currentValue):
|
||||||
if StarterPanel.buildingShader: return
|
if StarterPanel.buildingShader: return
|
||||||
var startTime = WorldManager.getTime()
|
var startTime = WorldManager.getTime()
|
||||||
instance.shakeIntensity = intensity
|
instance.shakeIntensity += intensity
|
||||||
|
instance.shaking = true
|
||||||
await TickTool.until(
|
await TickTool.until(
|
||||||
func():
|
func():
|
||||||
instance.shakeIntensity = steper.call(instance.shakeIntensity, intensity, 1 - (WorldManager.getTime() - startTime) / millseconds)
|
instance.shakeIntensity = steper.call(instance.shakeIntensity, intensity, 1 - (WorldManager.getTime() - startTime) / millseconds)
|
||||||
return WorldManager.getTime() - startTime >= millseconds || !instance.shaking
|
return WorldManager.getTime() - startTime >= millseconds || !instance.shaking
|
||||||
)
|
)
|
||||||
|
instance.shaking = false
|
||||||
instance.shakeIntensity = 0
|
instance.shakeIntensity = 0
|
||||||
static func shakeStop():
|
static func shakeStop():
|
||||||
instance.shaking = false
|
instance.shaking = false
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
class_name GameBusManager
|
class_name GameBusManager
|
||||||
|
|
||||||
|
static func _static_init():
|
||||||
|
init()
|
||||||
|
|
||||||
|
static func init():
|
||||||
|
var save = SaveEngine.load()
|
||||||
|
if save:
|
||||||
|
print(save)
|
||||||
|
SaveEngine.apply(save)
|
||||||
static func restart(tree: SceneTree):
|
static func restart(tree: SceneTree):
|
||||||
for bullet in tree.get_nodes_in_group("bullets"):
|
for bullet in tree.get_nodes_in_group("bullets"):
|
||||||
bullet.queue_free()
|
bullet.queue_free()
|
||||||
@@ -14,6 +22,7 @@ static func restart(tree: SceneTree):
|
|||||||
OutGameStorage.saveInventory()
|
OutGameStorage.saveInventory()
|
||||||
CameraManager.shakeStop()
|
CameraManager.shakeStop()
|
||||||
WorldManager.timeRestart()
|
WorldManager.timeRestart()
|
||||||
|
SaveEngine.save()
|
||||||
StarterPanel.selectingFeed = true
|
StarterPanel.selectingFeed = true
|
||||||
|
|
||||||
UIState.setPanel("Starter")
|
UIState.setPanel("Starter")
|
||||||
|
|||||||
Reference in New Issue
Block a user