1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00

feat(角色): 添加Gobo角色及相关资源

添加Gobo角色,包括武器、召唤物和治疗导弹功能
- 新增Gobo角色模型和动画资源
- 实现Gobo武器系统,可召唤Gobo单位
- 添加治疗导弹功能,Gobo受伤时会发射治疗友军
- 优化实体基础类,添加生命值初始化方法
- 修改子弹伤害判定逻辑,支持友军伤害设置
This commit is contained in:
2026-01-28 20:20:55 +08:00
parent df661d38e5
commit 4990a3e300
22 changed files with 410 additions and 9 deletions
+27
View File
@@ -0,0 +1,27 @@
[gd_scene load_steps=5 format=3 uid="uid://ds6yxgj6r8f4v"]
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_1wl5l"]
[ext_resource type="Texture2D" uid="uid://dpvk6pja35rdb" path="res://resources/items/apple-white.png" id="2_0jb7f"]
[ext_resource type="Script" uid="uid://d2ubbdwexom6t" path="res://scripts/Contents/Bullets/HealingMissle.gd" id="2_nxr84"]
[sub_resource type="SpriteFrames" id="SpriteFrames_nxr84"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("2_0jb7f")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="HealingMissle" instance=ExtResource("1_1wl5l")]
script = ExtResource("2_nxr84")
speed = 1.0
lifeTime = 5000.0
allowFriendlyDamage = true
[node name="texture" parent="." index="0"]
modulate = Color(0.0068707466, 1, 0, 1)
scale = Vector2(0.44360867, 0.44360867)
sprite_frames = SubResource("SpriteFrames_nxr84")
+7 -3
View File
@@ -1,8 +1,9 @@
[gd_scene load_steps=14 format=3 uid="uid://dky8574uqc18r"]
[gd_scene load_steps=15 format=3 uid="uid://dky8574uqc18r"]
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_e5pl8"]
[ext_resource type="Script" uid="uid://cthtupc6dtbav" path="res://scripts/Contents/Characters/Rooster.gd" id="2_oqdqd"]
[ext_resource type="PackedScene" uid="uid://dldnbpubu2jgm" path="res://components/Weapons/GrassWall.tscn" id="3_0omr3"]
[ext_resource type="PackedScene" uid="uid://blwoev5sencdh" path="res://components/Weapons/Gobo.tscn" id="3_jluqw"]
[ext_resource type="PackedScene" uid="uid://c0n3igy4hucrg" path="res://components/Weapons/PurpleCrystal.tscn" id="3_joj4g"]
[ext_resource type="AudioStream" uid="uid://cdrevrq7n6yqa" path="res://resources/sounds/effect/Boing.mp3" id="4_66s6c"]
[ext_resource type="AudioStream" uid="uid://benyec5bqni0b" path="res://resources/sounds/effect/Chomp.wav" id="4_k0yme"]
@@ -59,10 +60,13 @@ metadata/_edit_vertical_guides_ = [71.0]
[node name="weaponStore" parent="." index="1"]
process_mode = 4
[node name="PurpleCrystal" parent="weaponStore" index="0" instance=ExtResource("3_joj4g")]
[node name="Gobo" parent="weaponStore" index="0" instance=ExtResource("3_jluqw")]
offset_bottom = 446.0
[node name="PurpleCrystal" parent="weaponStore" index="1" instance=ExtResource("3_joj4g")]
offset_bottom = 350.0
[node name="GrassWall" parent="weaponStore" index="1" instance=ExtResource("3_0omr3")]
[node name="GrassWall" parent="weaponStore" index="2" instance=ExtResource("3_0omr3")]
[node name="sprint" parent="sounds" index="0"]
stream = ExtResource("4_66s6c")
+46
View File
@@ -0,0 +1,46 @@
[gd_scene load_steps=7 format=3 uid="uid://b2ilo4ag801m2"]
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_hgynr"]
[ext_resource type="Texture2D" uid="uid://xen2edbhf052" path="res://resources/characters/gobo/gobo-a.svg" id="2_e0tdx"]
[ext_resource type="Script" uid="uid://cqax27sw0wlme" path="res://scripts/Contents/Summons/Gobo.gd" id="2_ftr65"]
[ext_resource type="Texture2D" uid="uid://s12imwmfics6" path="res://resources/characters/gobo/gobo-b.svg" id="3_ftr65"]
[ext_resource type="Texture2D" uid="uid://d38bjxoowbg7t" path="res://resources/characters/gobo/gobo-c.svg" id="4_w2qsx"]
[sub_resource type="SpriteFrames" id="SpriteFrames_0xeeo"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("2_e0tdx")
}],
"loop": true,
"name": &"idle",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("2_e0tdx")
}, {
"duration": 1.0,
"texture": ExtResource("3_ftr65")
}, {
"duration": 1.0,
"texture": ExtResource("4_w2qsx")
}],
"loop": true,
"name": &"walk",
"speed": 5.0
}]
[node name="Gobo" instance=ExtResource("1_hgynr")]
script = ExtResource("2_ftr65")
attraction = 0.0
displayName = "Gobo"
[node name="texture" parent="." index="3"]
sprite_frames = SubResource("SpriteFrames_0xeeo")
animation = &"walk"
frame = 2
frame_progress = 0.92641157
[node name="statebar" parent="." index="4"]
position = Vector2(0, -122)
+39
View File
@@ -0,0 +1,39 @@
[gd_scene load_steps=4 format=3 uid="uid://blwoev5sencdh"]
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_0udcw"]
[ext_resource type="Script" uid="uid://cbg3xkg1giv35" path="res://scripts/Contents/Weapons/Gobo.gd" id="2_7yxbe"]
[ext_resource type="Texture2D" uid="uid://xen2edbhf052" path="res://resources/characters/gobo/gobo-a.svg" id="2_tw58e"]
[node name="Gobo" instance=ExtResource("1_0udcw")]
script = ExtResource("2_7yxbe")
avatarTexture = ExtResource("2_tw58e")
displayName = "Gobo"
quality = 4
typeTopic = 4
store = {
"atk": 50,
"health": 200,
"percent": 0.1
}
storeType = {
"atk": 1,
"health": 1,
"percent": 2
}
descriptionTemplate = "召唤[b]Gobo[/b]Gobo会自主行动,每受到$atk点伤害后会发射一枚[b]疗愈导弹[/b]。
[b]疗愈导弹[/b]命中障碍物或友军时对其产生Gobo剩余生命值×$percent点的治疗。
Gobo初始拥有$health点生命值。"
cooldown = 1000.0
[node name="avatar" parent="container/info" index="0"]
texture = ExtResource("2_tw58e")
[node name="name" parent="container/info" index="2"]
displayName = "Gobo"
quality = 4
typeTopic = 4
[node name="description" parent="container" index="2"]
text = "[center]召唤[b]Gobo[/b]Gobo会自主行动,每受到[color=cyan]50[/color]点伤害后会发射一枚[b]疗愈导弹[/b]。
[b]疗愈导弹[/b]命中障碍物或友军时对其产生Gobo剩余生命值×[color=cyan]10.0%[/color]点的治疗。
Gobo初始拥有[color=cyan]200[/color]点生命值。[/center]"
+19
View File
@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="92.86445373287707" height="108.58962005367785" viewBox="0.9168855250333294 0.7670083344434246 92.86445373287707 108.58962005367785">
<!-- Exported by Scratch - http://scratch.mit.edu/ -->
<g id="ID0.8323829737491906">
<path id="R_Leg" fill="#FFC93E" stroke="#603813" stroke-width="1.3268408178380042" d="M 47.2584 97.5577 C 47.2584 96.193 47.6412 94.2326 49.7588 93.7901 C 52.8139 93.1492 56.3094 96.2428 57.2601 97.153 C 57.1898 97.5152 58.3786 104.8234 58.3786 105.457 C 58.3786 107.5992 57.8061 107.6841 57.5839 107.7193 C 55.4921 108.0238 49.9174 102.1618 47.3586 98.7512 C 47.3234 98.5661 47.2584 98.1541 47.2584 97.5577 L 47.2584 97.5577 L 47.2584 97.5577 Z "/>
<path id="Center_Leg" fill="#FFC93E" stroke="#603813" stroke-width="1.3268408178380042" d="M 38.7878 107.7982 C 37.2713 106.1529 37.055 101.6941 37.055 99.7974 C 37.055 98.9926 37.0961 98.4573 37.0981 98.4407 L 37.1008 98.3995 C 37.1008 98.3995 37.0961 98.2277 37.0961 98.1647 C 37.0961 94.5928 40.3847 93.3529 40.942 93.1665 C 42.846 93.1897 46.1372 94.0906 46.9227 95.45 C 47.0023 95.5866 47.0766 95.7591 47.0766 95.98 C 47.0766 96.1738 47.0189 96.4086 46.8544 96.6919 C 46.7781 96.8219 45.426 100.017 44.2823 102.467 L 43.465 104.7326 C 42.8533 106.7122 41.8907 108.6932 40.8431 108.6932 C 40.0152 108.6945 39.3431 108.4013 38.7878 107.7982 L 38.7878 107.7982 L 38.7878 107.7982 Z "/>
<path id="R_Arm" fill="#FFC93E" stroke="#603813" stroke-width="1.3268408178380042" d="M 81.6786 81.9036 L 80.1999 79.2944 C 78.5805 76.4742 76.7096 73.8921 75.0597 71.6192 C 72.9387 68.6916 71.0931 65.6624 70.4821 63.5222 C 70.2618 62.7513 70.368 62.0156 70.6851 61.6089 C 70.7156 61.4994 71.0354 61.325 71.2609 61.2785 C 73.9783 60.6914 85.2266 67.1491 88.0329 70.6009 C 92.1441 75.6562 93.788 82.7475 92.8712 86.3193 C 92.495 87.7788 91.6538 88.8131 90.4358 89.3054 C 87.3223 90.5632 85.2744 88.293 81.6786 81.9036 L 81.6786 81.9036 L 81.6786 81.9036 Z "/>
<path id="Body" fill="#FFC93E" stroke="#603813" stroke-width="1.3268408178380042" stroke-linecap="round" stroke-linejoin="round" d="M 37.4006 32.0688 C 41.3938 29.8987 37.2726 21.728 33.2854 13.8241 C 31.1061 9.5025 27.2198 2.2036 28.4829 1.5196 C 30.9263 0.1954 42.5992 13.9707 47.3314 19.5228 L 52.1551 25.0173 C 52.1551 25.0173 55.6036 29.2479 58.2426 32.0383 C 58.2891 32.0867 60.7842 31.6993 62.5078 30.2669 C 63.9129 29.0947 63.7271 27.7831 64.1743 25.0246 C 64.5849 22.4903 65.0308 17.9041 66.3908 17.8809 C 68.4394 17.8497 69.7862 26.2937 70.3109 29.4217 L 70.6008 31.0949 C 71.2888 34.8153 74.8779 46.0013 75.0318 46.4756 C 75.0809 46.591 75.1619 46.741 75.1619 46.741 L 75.1917 46.8014 L 75.2328 46.8518 C 80.7751 53.7255 84.8969 62.06 84.8969 69.8685 C 84.8969 86.4036 70.4025 98.0433 51.0014 98.0433 C 47.403 98.0433 43.8836 97.5391 40.5406 96.5479 L 40.3608 96.4962 C 40.3608 96.4962 35.1132 96.055 28.4 104.8792 C 27.0533 106.6505 27.1733 108.3018 25.2753 107.7936 C 24.6424 107.6244 24.1773 107.1593 23.7979 106.3148 C 22.8903 104.3007 23.5603 99.5287 24.6696 96.4796 L 24.8441 96.0006 L 24.4434 95.6835 C 24.3452 95.6052 13.4571 87.6714 12.3572 76.3023 C 11.3985 66.3922 16.4047 60.7498 18.4819 57.6489 L 19.6754 55.6613 C 21.182 51.9959 18.3465 46.8982 15.8441 42.4002 C 14.3501 39.7147 11.9385 35.7959 12.4832 34.875 C 13.0876 33.8547 15.2477 34.9407 17.429 35.981 C 19.1977 36.8262 20.8994 38.0203 22.0809 37.2328 C 23.3096 36.4148 22.5035 34.3602 21.387 31.5161 C 20.3368 28.8452 18.3485 24.6259 19.1121 22.8844 C 19.3224 22.4054 19.6913 22.069 20.2399 21.8561 C 22.2687 21.0706 25.1691 24.4879 27.517 27.1608 C 30.381 30.4242 33.6291 34.1221 37.4006 32.0688 L 37.4006 32.0688 L 37.4006 32.0688 Z "/>
<g id="L_Eye">
<path id="White_1_" fill="#FFFFFF" d="M 40.7489 71.0792 C 40.7489 74.0613 43.1684 76.4795 46.1525 76.4795 C 49.1365 76.4795 51.5547 74.0613 51.5547 71.0792 C 51.5547 68.0952 49.1359 65.6737 46.1525 65.6737 C 43.1677 65.675 40.7489 68.0952 40.7489 71.0792 L 40.7489 71.0792 L 40.7489 71.0792 Z " stroke-width="0.6634204089190021"/>
<path id="Pupil_1_" fill="#603813" d="M 46.8796 67.1305 C 47.9284 67.1305 48.8791 67.5565 49.5671 68.2451 C 50.2557 68.9331 50.6816 69.8837 50.6816 70.9326 C 50.6816 71.9815 50.2557 72.9322 49.5671 73.6201 C 48.8791 74.3088 47.9284 74.7347 46.8796 74.7347 C 45.8307 74.7347 44.88 74.3088 44.1921 73.6201 C 43.5034 72.9322 43.0775 71.9815 43.0775 70.9326 C 43.0775 69.8837 43.5034 68.9331 44.1921 68.2451 C 44.88 67.5565 45.8307 67.1305 46.8796 67.1305 L 46.8796 67.1305 Z " stroke-width="0.6634204089190021"/>
</g>
<g id="R_Eye">
<path id="White" fill="#FFFFFF" d="M 66.7762 71.0792 C 66.7762 74.0613 69.195 76.4795 72.1804 76.4795 C 75.1625 76.4795 77.5827 74.0613 77.5827 71.0792 C 77.5827 68.0952 75.1638 65.6737 72.1804 65.6737 C 69.195 65.675 66.7762 68.0952 66.7762 71.0792 L 66.7762 71.0792 L 66.7762 71.0792 Z " stroke-width="0.6634204089190021"/>
<path id="Pupil" fill="#603813" d="M 69.1042 70.9326 C 69.1042 73.0323 70.8052 74.7333 72.9056 74.7333 C 75.0046 74.7333 76.7076 73.0337 76.7076 70.9326 C 76.7076 68.8342 75.0046 67.1305 72.9056 67.1305 C 70.8052 67.1305 69.1042 68.8335 69.1042 70.9326 L 69.1042 70.9326 L 69.1042 70.9326 Z " stroke-width="0.6634204089190021"/>
</g>
<path id="L_Arm" fill="#FFC93E" stroke="#603813" stroke-width="1.3268408178380042" d="M 3.4435 91.9365 C 2.3362 91.2293 1.698 90.0617 1.5952 88.5557 C 1.3451 84.8731 4.2595 78.2037 9.2238 73.9857 C 12.6139 71.1051 24.854 66.8141 27.4175 67.8868 C 27.6291 67.9757 27.913 68.204 27.9217 68.3194 C 28.1612 68.7758 28.1293 69.5169 27.7717 70.2347 C 26.7806 72.2276 24.4122 74.87 21.7903 77.3572 C 19.7523 79.297 17.4429 81.4876 15.3366 83.9668 L 13.4047 86.2556 C 8.703 91.8828 6.2716 93.7443 3.4435 91.9365 L 3.4435 91.9365 L 3.4435 91.9365 Z "/>
<path id="Mouth" fill="none" stroke="#603813" stroke-width="1.3268408178380042" stroke-linecap="round" stroke-linejoin="round" d="M 64.1889 88.0834 C 64.1889 88.0834 59.2709 88.0873 55.8271 85.1358 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://xen2edbhf052"
path="res://.godot/imported/gobo-a.svg-324026b3e192456adada726ade96da2d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/characters/gobo/gobo-a.svg"
dest_files=["res://.godot/imported/gobo-a.svg-324026b3e192456adada726ade96da2d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+19
View File
@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="92.86445379257202" height="108.5896201133728" viewBox="0.9463855028152466 0.8383083343505859 92.86445379257202 108.5896201133728">
<!-- Exported by Scratch - http://scratch.mit.edu/ -->
<g id="ID0.7388451900333166">
<path id="R_Leg" fill="#FFC93E" stroke="#603813" stroke-width="1.326840877532959" d="M 47.2879 97.629 C 47.2879 96.2643 47.6707 94.3039 49.7883 93.8614 C 52.8434 93.2205 56.3389 96.3141 57.2896 97.2243 C 57.2193 97.5865 58.4081 104.8948 58.4081 105.5277 C 58.4081 107.6705 57.8356 107.7554 57.6134 107.7906 C 55.5216 108.0951 49.9469 102.2331 47.3881 98.8225 C 47.3529 98.6374 47.2879 98.2254 47.2879 97.629 L 47.2879 97.629 L 47.2879 97.629 L 47.2879 97.629 Z "/>
<path id="Center_Leg" fill="#FFC93E" stroke="#603813" stroke-width="1.326840877532959" d="M 38.8173 107.8695 C 37.3008 106.2243 37.0845 101.7654 37.0845 99.8687 C 37.0845 99.064 37.1256 98.5286 37.1276 98.512 L 37.1303 98.4709 C 37.1303 98.4709 37.1256 98.299 37.1256 98.236 C 37.1256 94.6635 40.4142 93.4242 40.9715 93.2378 C 42.8755 93.261 46.1667 94.1619 46.9522 95.5206 C 47.0318 95.658 47.1061 95.8304 47.1061 96.0514 C 47.1061 96.2451 47.0484 96.4799 46.8839 96.7632 C 46.8076 96.8932 45.4555 100.0883 44.3118 102.5383 L 43.4945 104.8039 C 42.8828 106.7835 41.9202 108.7645 40.8726 108.7645 C 40.0447 108.7658 39.3726 108.4726 38.8173 107.8695 L 38.8173 107.8695 L 38.8173 107.8695 L 38.8173 107.8695 Z "/>
<path id="R_Arm" fill="#FFC93E" stroke="#603813" stroke-width="1.326840877532959" d="M 81.7081 81.9749 L 80.2294 79.3657 C 78.61 76.5455 76.7391 73.9634 75.0892 71.6906 C 72.9682 68.7629 71.1226 65.7337 70.5116 63.5935 C 70.2913 62.8226 70.3975 62.0869 70.7146 61.6802 C 70.7451 61.5707 71.0649 61.3963 71.2904 61.3498 C 74.0078 60.7627 85.2561 67.2204 88.0624 70.6716 C 92.1736 75.7275 93.8175 82.8188 92.9007 86.3906 C 92.5245 87.8502 91.6833 88.8844 90.4646 89.3767 C 87.3519 90.6345 85.3039 88.3643 81.7081 81.9749 L 81.7081 81.9749 L 81.7081 81.9749 L 81.7081 81.9749 Z "/>
<path id="Body" fill="#FFC93E" stroke="#603813" stroke-width="1.326840877532959" stroke-linecap="round" stroke-linejoin="round" d="M 37.4301 32.1401 C 41.4233 29.97 37.3021 21.7987 33.3149 13.8954 C 31.1356 9.5738 27.2493 2.2749 28.5124 1.5909 C 30.9558 0.2667 42.6287 14.042 47.3609 19.5941 L 52.1846 25.0879 C 52.1846 25.0879 55.6331 29.3192 58.2721 32.1089 C 58.3186 32.158 60.8137 31.7706 62.5373 30.3382 C 63.9424 29.166 63.7566 27.8544 64.2038 25.0959 C 64.6144 22.5616 65.0603 17.9754 66.4203 17.9522 C 68.4689 17.921 69.8157 26.365 70.3404 29.493 L 70.6303 31.1662 C 71.3183 34.8867 74.9074 46.0726 75.0613 46.5469 C 75.1104 46.6624 75.1914 46.8123 75.1914 46.8123 L 75.2212 46.8727 L 75.2623 46.9231 C 80.8046 53.7968 84.927 62.1313 84.927 69.9398 C 84.927 86.4749 70.4326 98.1146 51.0316 98.1146 C 47.4332 98.1146 43.9137 97.6104 40.5708 96.6193 L 40.391 96.5675 C 40.391 96.5675 35.1433 96.1263 28.4302 104.9505 C 27.0834 106.7218 27.2035 108.3731 25.3055 107.8649 C 24.6726 107.6957 24.2075 107.2307 23.828 106.3861 C 22.9205 104.372 23.5905 99.6 24.6998 96.5509 L 24.8742 96.0719 L 24.4735 95.7548 C 24.3753 95.6765 13.4873 87.7427 12.3873 76.3736 C 11.4287 66.4635 16.4349 60.8211 18.512 57.7203 L 19.7055 55.7326 C 21.2121 52.0666 18.3767 46.9695 15.8743 42.4715 C 14.3802 39.786 11.9687 35.8672 12.5134 34.9464 C 13.1178 33.926 15.2779 35.0114 17.4592 36.0523 C 19.2279 36.8975 20.9295 38.0916 22.1111 37.3042 C 23.3397 36.4862 22.5337 34.4309 21.4171 31.5875 C 20.367 28.9165 18.3787 24.6972 19.1423 22.9557 C 19.3526 22.4767 19.7214 22.1404 20.2701 21.9274 C 22.2988 21.1419 25.1993 24.5592 27.5472 27.2321 C 30.4105 30.4955 33.6586 34.1934 37.4301 32.1401 L 37.4301 32.1401 L 37.4301 32.1401 L 37.4301 32.1401 Z "/>
<g id="L_Eye">
<path id="White_1_" fill="#FFFFFF" d="M 40.7784 71.1505 C 40.7784 74.1326 43.1979 76.5508 46.1813 76.5508 C 49.1654 76.5508 51.5835 74.1326 51.5835 71.1505 C 51.5835 68.1665 49.1647 65.745 46.1813 65.745 C 43.1972 65.7463 40.7784 68.1665 40.7784 71.1505 L 40.7784 71.1505 L 40.7784 71.1505 L 40.7784 71.1505 Z " stroke-width="0.6634204387664795"/>
<path id="Pupil_1_" fill="#603813" d="M 46.9091 67.2019 C 47.9579 67.2019 48.9086 67.6278 49.5966 68.3164 C 50.2852 69.0044 50.7111 69.9551 50.7111 71.0039 C 50.7111 72.0528 50.2852 73.0035 49.5966 73.6914 C 48.9086 74.3801 47.9579 74.806 46.9091 74.806 C 45.8602 74.806 44.9095 74.3801 44.2216 73.6914 C 43.5329 73.0035 43.107 72.0528 43.107 71.0039 C 43.107 69.9551 43.5329 69.0044 44.2216 68.3164 C 44.9095 67.6278 45.8602 67.2019 46.9091 67.2019 L 46.9091 67.2019 L 46.9091 67.2019 Z " stroke-width="0.6634204387664795"/>
</g>
<g id="R_Eye">
<path id="White" fill="#FFFFFF" d="M 66.8057 71.1505 C 66.8057 74.1326 69.2246 76.5508 72.2099 76.5508 C 75.192 76.5508 77.6122 74.1326 77.6122 71.1505 C 77.6122 68.1665 75.1933 65.745 72.2099 65.745 C 69.2246 65.7463 66.8057 68.1665 66.8057 71.1505 L 66.8057 71.1505 L 66.8057 71.1505 L 66.8057 71.1505 Z " stroke-width="0.6634204387664795"/>
<path id="Pupil" fill="#603813" d="M 69.1337 71.0039 C 69.1337 73.103 70.8347 74.8047 72.9351 74.8047 C 75.0341 74.8047 76.7371 73.105 76.7371 71.0039 C 76.7371 68.9055 75.0341 67.2019 72.9351 67.2019 C 70.8347 67.2019 69.1337 68.9049 69.1337 71.0039 L 69.1337 71.0039 L 69.1337 71.0039 L 69.1337 71.0039 Z " stroke-width="0.6634204387664795"/>
</g>
<path id="L_Arm" fill="#FFC93E" stroke="#603813" stroke-width="1.326840877532959" d="M 3.473 92.0078 C 2.3657 91.3006 1.7275 90.133 1.6247 88.627 C 1.3746 84.9444 4.289 78.275 9.2533 74.057 C 12.6434 71.1764 24.8835 66.8854 27.447 67.9582 C 27.6586 68.0471 27.9426 68.2753 27.9512 68.3907 C 28.1907 68.8465 28.1588 69.5882 27.8012 70.306 C 26.8101 72.2989 24.4417 74.9413 21.8198 77.4285 C 19.7818 79.3683 17.4724 81.5589 15.3661 84.0381 L 13.4342 86.3269 C 8.7325 91.9541 6.3011 93.8156 3.473 92.0078 L 3.473 92.0078 L 3.473 92.0078 L 3.473 92.0078 Z "/>
<path id="Mouth" fill="#603813" d="M 56.9553 84.3951 L 56.9513 85.0286 C 56.9473 85.1998 57.015 87.1708 58.8666 89.0383 C 59.4962 89.6752 60.2624 89.9937 61.1434 89.9937 C 65.1876 89.9937 66.0123 85.0412 66.0494 84.7407 L 66.145 83.9526 L 56.9553 84.3951 L 56.9553 84.3951 L 56.9553 84.3951 L 56.9553 84.3951 Z " stroke-width="0.6634204387664795"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://s12imwmfics6"
path="res://.godot/imported/gobo-b.svg-075dcd98d32f1272ba543e817534f6fc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/characters/gobo/gobo-b.svg"
dest_files=["res://.godot/imported/gobo-b.svg-075dcd98d32f1272ba543e817534f6fc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+19
View File
@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="92.86379766464233" height="108.5890097618103" viewBox="0.9463855028152466 0.6389172077178955 92.86379766464233 108.5890097618103">
<!-- Exported by Scratch - http://scratch.mit.edu/ -->
<g id="ID0.06485128961503506">
<path id="R_Leg" fill="#FFC93E" stroke="#603813" stroke-width="1.326840877532959" d="M 47.2879 97.429 C 47.2879 96.065 47.6707 94.1046 49.7883 93.6621 C 52.8434 93.0212 56.3389 96.1147 57.289 97.025 C 57.2186 97.3872 58.4075 104.6954 58.4075 105.3283 C 58.4075 107.4712 57.8349 107.5561 57.6127 107.5913 C 55.5203 107.8958 49.9462 102.0338 47.3874 98.6231 C 47.3529 98.4374 47.2879 98.0254 47.2879 97.429 L 47.2879 97.429 L 47.2879 97.429 L 47.2879 97.429 L 47.2879 97.429 L 47.2879 97.429 Z "/>
<path id="Center_Leg" fill="#FFC93E" stroke="#603813" stroke-width="1.326840877532959" d="M 38.8173 107.6695 C 37.3008 106.0236 37.0845 101.5654 37.0845 99.6687 C 37.0845 98.864 37.1256 98.3292 37.1276 98.312 L 37.1303 98.2715 C 37.1303 98.2715 37.1256 98.0997 37.1256 98.036 C 37.1256 94.4642 40.4142 93.2242 40.9715 93.0378 C 42.8755 93.061 46.1667 93.9619 46.9522 95.3213 C 47.0318 95.4586 47.1061 95.6304 47.1061 95.8514 C 47.1061 96.0451 47.0484 96.2799 46.8839 96.5639 C 46.8076 96.6939 45.4555 99.8883 44.3118 102.339 L 43.4945 104.6045 C 42.8828 106.5842 41.9202 108.5645 40.8726 108.5645 C 40.0447 108.5658 39.3726 108.2726 38.8173 107.6695 L 38.8173 107.6695 L 38.8173 107.6695 L 38.8173 107.6695 L 38.8173 107.6695 L 38.8173 107.6695 Z "/>
<path id="R_Arm" fill="#FFC93E" stroke="#603813" stroke-width="1.326840877532959" d="M 81.7081 81.7749 L 80.2294 79.1657 C 78.6093 76.3455 76.7391 73.7634 75.0892 71.4906 C 72.9676 68.5629 71.1226 65.533 70.5109 63.3935 C 70.2907 62.622 70.3968 61.8862 70.7139 61.4802 C 70.7444 61.3707 71.0642 61.1963 71.2898 61.1498 C 74.0065 60.5627 85.2554 67.0198 88.0617 70.4716 C 92.1729 75.5275 93.8169 82.6181 92.9 86.1906 C 92.5239 87.6502 91.6827 88.6844 90.4646 89.1767 C 87.3519 90.4345 85.3039 88.1643 81.7081 81.7749 L 81.7081 81.7749 L 81.7081 81.7749 L 81.7081 81.7749 L 81.7081 81.7749 L 81.7081 81.7749 Z "/>
<path id="Body" fill="#FFC93E" stroke="#603813" stroke-width="1.326840877532959" stroke-linecap="round" stroke-linejoin="round" d="M 37.4301 31.9401 C 41.4233 29.7707 37.3021 21.5994 33.3149 13.6954 C 31.1356 9.3745 27.2493 2.0756 28.5124 1.3916 C 30.9558 0.0667 42.6287 13.842 47.3609 19.3941 L 52.1846 24.8886 C 52.1846 24.8886 55.6337 29.1192 58.2721 31.9096 C 58.3186 31.9587 60.8137 31.5712 62.5366 30.1389 C 63.9424 28.9666 63.7566 27.6544 64.2038 24.8959 C 64.6144 22.3616 65.0603 17.7754 66.4196 17.7528 C 68.4683 17.7217 69.815 26.165 70.3404 29.293 L 70.6297 30.9669 C 71.3176 34.6873 74.9067 45.8726 75.0607 46.3469 C 75.1098 46.4624 75.1907 46.613 75.1907 46.613 L 75.2205 46.6727 L 75.2617 46.7238 C 80.8039 53.5975 84.9264 61.9313 84.9264 69.7405 C 84.9264 86.2756 70.432 97.9153 51.0309 97.9153 C 47.4325 97.9153 43.9131 97.4111 40.5701 96.4199 L 40.3903 96.3682 C 40.3903 96.3682 35.1427 95.927 28.4295 104.7505 C 27.0828 106.5218 27.2028 108.1737 25.3048 107.6649 C 24.6719 107.4957 24.2068 107.0307 23.8274 106.1861 C 22.9198 104.172 23.5898 99.4 24.6991 96.3509 L 24.8736 95.8726 L 24.4729 95.5555 C 24.3747 95.4772 13.4866 87.5433 12.3867 76.1743 C 11.428 66.2641 16.4342 60.6217 18.5114 57.5209 L 19.7049 55.5333 C 21.2115 51.8673 18.376 46.7702 15.8736 42.2722 C 14.3796 39.5867 11.968 35.6679 12.5127 34.747 C 13.1171 33.7267 15.2772 34.812 17.4585 35.8529 C 19.2272 36.6981 20.9289 37.8923 22.1104 37.1048 C 23.3391 36.2862 22.533 34.2315 21.4165 31.3875 C 20.3663 28.7165 18.378 24.4978 19.1416 22.7564 C 19.3519 22.2774 19.7208 21.941 20.2694 21.7281 C 22.2982 20.9426 25.1986 24.3598 27.5465 27.0328 C 30.4105 30.2955 33.6586 33.9934 37.4301 31.9401 L 37.4301 31.9401 L 37.4301 31.9401 L 37.4301 31.9401 L 37.4301 31.9401 L 37.4301 31.9401 Z "/>
<g id="L_Eye">
<path id="White_1_" fill="#FFFFFF" d="M 40.7784 70.9505 C 40.7784 73.9326 43.1979 76.3508 46.1813 76.3508 C 49.1647 76.3508 51.5835 73.9326 51.5835 70.9505 C 51.5835 67.9665 49.1647 65.545 46.1813 65.545 C 43.1972 65.5463 40.7784 67.9665 40.7784 70.9505 L 40.7784 70.9505 L 40.7784 70.9505 L 40.7784 70.9505 L 40.7784 70.9505 L 40.7784 70.9505 Z " stroke-width="0.6634204387664795"/>
<path id="Pupil_1_" fill="#603813" d="M 46.9091 67.0019 C 47.9579 67.0019 48.9086 67.4278 49.5966 68.1164 C 50.2852 68.8044 50.7111 69.7551 50.7111 70.8039 C 50.7111 71.8528 50.2852 72.8035 49.5966 73.4914 C 48.9086 74.1801 47.9579 74.606 46.9091 74.606 C 45.8602 74.606 44.9095 74.1801 44.2216 73.4914 C 43.5329 72.8035 43.107 71.8528 43.107 70.8039 C 43.107 69.7551 43.5329 68.8044 44.2216 68.1164 C 44.9095 67.4278 45.8602 67.0019 46.9091 67.0019 L 46.9091 67.0019 L 46.9091 67.0019 L 46.9091 67.0019 L 46.9091 67.0019 Z " stroke-width="0.6634204387664795"/>
</g>
<g id="R_Eye">
<path id="White" fill="#FFFFFF" d="M 66.8057 70.9505 C 66.8057 73.9326 69.2246 76.3508 72.2093 76.3508 C 75.192 76.3508 77.6115 73.9326 77.6115 70.9505 C 77.6115 67.9665 75.1927 65.545 72.2093 65.545 C 69.2246 65.5463 66.8057 67.9665 66.8057 70.9505 L 66.8057 70.9505 L 66.8057 70.9505 L 66.8057 70.9505 L 66.8057 70.9505 L 66.8057 70.9505 Z " stroke-width="0.6634204387664795"/>
<path id="Pupil" fill="#603813" d="M 69.1337 70.8039 C 69.1337 72.9036 70.8353 74.6047 72.9351 74.6047 C 75.0348 74.6047 76.7378 72.9043 76.7378 70.8039 C 76.7378 68.7055 75.0348 67.0019 72.9351 67.0019 C 70.8353 67.0019 69.1337 68.7049 69.1337 70.8039 L 69.1337 70.8039 L 69.1337 70.8039 L 69.1337 70.8039 L 69.1337 70.8039 L 69.1337 70.8039 Z " stroke-width="0.6634204387664795"/>
</g>
<path id="L_Arm" fill="#FFC93E" stroke="#603813" stroke-width="1.326840877532959" d="M 3.473 91.8078 C 2.3657 91.0999 1.7275 89.9323 1.6247 88.427 C 1.3746 84.7444 4.289 78.075 9.2533 73.857 C 12.6434 70.9764 24.8835 66.6854 27.447 67.7582 C 27.6586 67.8464 27.9426 68.0746 27.9512 68.1907 C 28.1907 68.6465 28.1588 69.3882 27.8012 70.106 C 26.8101 72.0989 24.4417 74.7413 21.8198 77.2285 C 19.7818 79.1683 17.4724 81.3589 15.3661 83.8381 L 13.4342 86.1269 C 8.7325 91.7541 6.3011 93.6156 3.473 91.8078 L 3.473 91.8078 L 3.473 91.8078 L 3.473 91.8078 L 3.473 91.8078 L 3.473 91.8078 Z "/>
<path id="Mouth" fill="#603813" d="M 60.8177 81.3337 C 61.3318 81.3337 61.7982 81.7915 62.1352 82.5319 C 62.4729 83.2716 62.6819 84.2939 62.6819 85.4217 C 62.6819 86.5495 62.4729 87.5719 62.1352 88.3116 C 61.7982 89.052 61.3318 89.5097 60.8177 89.5097 C 60.3035 89.5097 59.8372 89.052 59.5001 88.3116 C 59.1625 87.5719 58.9535 86.5495 58.9535 85.4217 C 58.9535 84.2939 59.1625 83.2716 59.5001 82.5319 C 59.8372 81.7915 60.3035 81.3337 60.8177 81.3337 L 60.8177 81.3337 L 60.8177 81.3337 L 60.8177 81.3337 L 60.8177 81.3337 Z " stroke-width="0.6634204387664795"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d38bjxoowbg7t"
path="res://.godot/imported/gobo-c.svg-7d92174bbaa3236d452fc842786da9f3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/characters/gobo/gobo-c.svg"
dest_files=["res://.godot/imported/gobo-c.svg-7d92174bbaa3236d452fc842786da9f3.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dpvk6pja35rdb"
path="res://.godot/imported/apple-white.png-d39950409511c2e490d5c9c504fbd06c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/items/apple-white.png"
dest_files=["res://.godot/imported/apple-white.png-d39950409511c2e490d5c9c504fbd06c.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
@@ -0,0 +1,5 @@
extends BulletBase
class_name HealingMissleBullet
func ai():
PresetBulletAI.forward(self, rotation)
@@ -0,0 +1 @@
uid://d2ubbdwexom6t
+32
View File
@@ -0,0 +1,32 @@
extends SummonBase
class_name GoboSummon
var percent: float = 0.0
var healthSinceLastLaunch: float = 0
func initHealth(maxHealth: float):
super.initHealth(maxHealth)
healthSinceLastLaunch = maxHealth
func register():
fields[FieldStore.Entity.MOVEMENT_SPEED] = 1.5
healthChanged.connect(
func(newHealth):
if healthSinceLastLaunch - newHealth >= 1:
launch()
healthSinceLastLaunch = newHealth
)
func ai():
var target = BulletTool.findClosetBulletCanDamage(position, get_tree(), self)
if is_instance_valid(target):
move(target.position - position)
func launch():
for bullet in BulletBase.generate(
ComponentManager.getBullet("HealingMissle"),
self,
position,
position.angle_to_point(EntityTool.findClosetEntity(myMaster.position, get_tree(), isPlayer(), !isPlayer(), [self]).position)
):
if bullet is HealingMissleBullet:
bullet.baseDamage = health * percent * -1
+1
View File
@@ -0,0 +1 @@
uid://cqax27sw0wlme
+13
View File
@@ -0,0 +1,13 @@
@tool
extends Weapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
origin["health"] += 5 * to * soulLevel
origin["percent"] += 0.02 * to * soulLevel
return origin
func attack(entity: EntityBase):
var gobo = entity.summon(ComponentManager.getSummon("Gobo"))
if gobo is GoboSummon:
gobo.percent = readStore("percent")
gobo.initHealth(readStore("health"))
return true
+1
View File
@@ -0,0 +1 @@
uid://cbg3xkg1giv35
+2 -3
View File
@@ -7,7 +7,6 @@ func update(to: int, origin: Dictionary, _entity: EntityBase):
return origin
func attack(entity: EntityBase):
var summon = entity.summon(ComponentManager.getSummon("Shield"))
if !summon: return true
summon.fields[FieldStore.Entity.MAX_HEALTH] = readStore("atk")
summon.health = summon.fields[FieldStore.Entity.MAX_HEALTH]
if summon:
summon.initHealth(readStore("atk"))
return true
+1 -1
View File
@@ -10,7 +10,7 @@ class_name BulletBase
@export var penerateDamageReduction: float = 0.0
@export var lifeDistance: float = -1 # -1表示无限距离
@export var lifeTime: float = -1 # -1表示无限时间
@export var indisDamage: bool = false # 是否无差别伤害(不区分敌我)
@export var allowFriendlyDamage: bool = false # 是否无差别伤害(不区分敌我)
@export var canDamageSelf: bool = false # 是否可以伤害发射者
@export var autoSpawnAnimation: bool = false
@export var autoLoopAnimation: bool = false
+4
View File
@@ -200,6 +200,10 @@ func _physics_process(_delta: float) -> void:
trailParticle.emitting = trailing
# 通用方法
func initHealth(maxHealth: float):
fields[FieldStore.Entity.MAX_HEALTH] = maxHealth
health = maxHealth
statebar.forceSync()
func rebuildWeaponIcons():
if isPlayer():
for i in UIState.skillIconContainer.get_children():
+5 -2
View File
@@ -8,9 +8,12 @@ static func fromArea(area: Area2D) -> BulletBase:
static func canDamage(bullet: BulletBase, target: EntityBase) -> bool:
if !bullet or !target or !bullet.launcher: return false
if target.currentInvinsible: return false
if !bullet.canDamageSelf && target == bullet.launcher: return false
if !GameRule.allowFriendlyFire:
if target.isPlayer() == bullet.launcher.isPlayer() and bullet.launcher.currentFocusedBoss != target: return false
if target.isPlayer() == bullet.launcher.isPlayer() and bullet.launcher.currentFocusedBoss != target and !bullet.allowFriendlyDamage:
return false
if !bullet.canDamageSelf:
if target == bullet.launcher:
return false
return true
static func findClosetBullet(to: Vector2, fromTree: SceneTree) -> BulletBase:
var result: BulletBase = null