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

feat(武器/子弹): 新增危险攻击星效果并优化无为子弹表现

添加危险攻击星特效资源及场景配置
调整无为子弹的追踪逻辑和动画效果
修改道像武器的伤害计算公式和冷却时间
移除角色中不再使用的紫水晶武器
This commit is contained in:
2026-04-03 19:24:27 +08:00
parent 7e90bd1c1c
commit 3791978230
18 changed files with 454 additions and 17 deletions
+88 -2
View File
@@ -3,6 +3,7 @@
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_eg848"]
[ext_resource type="Texture2D" uid="uid://d1ismqrlhbv7f" path="res://resources/bullets/wuwei/Wuwei.png" id="2_6ny68"]
[ext_resource type="Script" uid="uid://dxgplcmmg0dgi" path="res://scripts/Contents/Bullets/Wuwei.gd" id="2_vxgkj"]
[ext_resource type="PackedScene" uid="uid://bog4t1abiv5sb" path="res://components/Effects/DangerAttackStar.tscn" id="4_rpg0e"]
[sub_resource type="Animation" id="Animation_6ny68"]
length = 0.001
@@ -41,6 +42,40 @@ tracks/2/keys = {
"update": 1,
"values": [false]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("static/DangerAttackStar:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/4/type = "bezier"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("static/DangerAttackStar:position:x")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/5/type = "bezier"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("static/DangerAttackStar:position:y")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="Animation" id="Animation_vxgkj"]
resource_name = "destroy"
@@ -67,7 +102,7 @@ tracks/0/keys = {
[sub_resource type="Animation" id="Animation_06poh"]
resource_name = "spawn"
length = 3.0
step = 0.1
step = 0.02
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
@@ -75,7 +110,7 @@ tracks/0/path = NodePath(".:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(2, 2),
"handle_modes": PackedInt32Array(0, 2),
"points": PackedFloat32Array(0, 0, 0, 3.5, 4, -1.57, -2, -2, 0, 0),
"times": PackedFloat32Array(0, 3)
}
@@ -120,6 +155,54 @@ tracks/3/keys = {
"method": &"shoot"
}]
}
tracks/4/type = "method"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("static/DangerAttackStar")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.9),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"shot"
}]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("static/DangerAttackStar:visible")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 0.9),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/6/type = "bezier"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("static/DangerAttackStar:position:x")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"handle_modes": PackedInt32Array(0, 0),
"points": PackedFloat32Array(-176.115, -0.25, 0, 0, 0, 170.913, -0.24, 0, 0, 0),
"times": PackedFloat32Array(0.9, 1.14)
}
tracks/7/type = "bezier"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("static/DangerAttackStar:position:y")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"handle_modes": PackedInt32Array(2, 0),
"points": PackedFloat32Array(-5, -0.25, 0, 0.25, 0, -5, -0.036666673, 0, 0, 0),
"times": PackedFloat32Array(0.9, 1.14)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_57ptn"]
_data = {
@@ -135,6 +218,7 @@ height = 725.7404
[node name="Wuwei" unique_id=326826451 instance=ExtResource("1_eg848")]
script = ExtResource("2_vxgkj")
canMove = true
penerate = 1.0
autoSpawnAnimation = true
freeAfterSpawn = true
@@ -151,6 +235,8 @@ texture = ExtResource("2_6ny68")
unique_name_in_owner = true
position = Vector2(170.913, -7)
[node name="DangerAttackStar" parent="texture/static" index="1" unique_id=1065258878 instance=ExtResource("4_rpg0e")]
[node name="hitbox" parent="." index="1" unique_id=175349408]
position = Vector2(235, -77)
rotation = -0.29216617
+1 -6
View File
@@ -4,7 +4,6 @@
[ext_resource type="Script" uid="uid://cthtupc6dtbav" path="res://scripts/Contents/Characters/Rooster.gd" id="2_oqdqd"]
[ext_resource type="PackedScene" uid="uid://cx7nogfnv7s8t" path="res://components/Weapons/Tree.tscn" id="3_0omr3"]
[ext_resource type="PackedScene" uid="uid://bbrllsqjmx0ie" path="res://components/Weapons/DaoStatue.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"]
[ext_resource type="AudioStream" uid="uid://dmxh3bpk8vyy5" path="res://resources/sounds/effect/Coin.mp3" id="5_xnbhq"]
@@ -107,11 +106,7 @@ process_mode = 4
offset_bottom = 470.0
debugRebuild = false
[node name="PurpleCrystal" parent="weaponStore" index="1" unique_id=1666404074 instance=ExtResource("3_joj4g")]
offset_bottom = 350.0
debugRebuild = false
[node name="Tree" parent="weaponStore" index="2" unique_id=2010233768 instance=ExtResource("3_0omr3")]
[node name="Tree" parent="weaponStore" index="1" unique_id=2010233768 instance=ExtResource("3_0omr3")]
offset_bottom = 350.0
debugRebuild = false
+114
View File
@@ -0,0 +1,114 @@
[gd_scene format=3 uid="uid://bog4t1abiv5sb"]
[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_7hx85"]
[ext_resource type="AudioStream" uid="uid://b3jn85pkl143b" path="res://resources/sounds/effect/Flash1.ogg" id="2_kdi56"]
[ext_resource type="Texture2D" uid="uid://dvgykwd8doqad" path="res://resources/effects/star4/Effect_Danger0.png" id="3_31urn"]
[ext_resource type="Texture2D" uid="uid://ww2v4a6iucv3" path="res://resources/effects/star4/Effect_Danger1.png" id="4_88mlx"]
[ext_resource type="Texture2D" uid="uid://bi818isgqxuek" path="res://resources/effects/star4/Effect_Danger2.png" id="5_b42y7"]
[ext_resource type="Texture2D" uid="uid://ba7q3mq6rxjxy" path="res://resources/effects/star4/Effect_Danger3.png" id="6_hftyt"]
[ext_resource type="Texture2D" uid="uid://c7i5eeffpeoxb" path="res://resources/effects/star4/Effect_Danger4.png" id="7_7i5jk"]
[ext_resource type="Texture2D" uid="uid://susqpw4ttmd1" path="res://resources/effects/star4/Effect_Danger5.png" id="8_aukuc"]
[sub_resource type="Animation" id="Animation_bvpak"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("texture:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("texture:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
[sub_resource type="Animation" id="Animation_chtue"]
resource_name = "spawn"
length = 0.4
step = 0.04
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("texture:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.24, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector2(0.5, 0.5), Vector2(0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("texture:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.24, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_fuos2"]
_data = {
&"RESET": SubResource("Animation_bvpak"),
&"spawn": SubResource("Animation_chtue")
}
[sub_resource type="SpriteFrames" id="SpriteFrames_ldh0a"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("3_31urn")
}, {
"duration": 1.0,
"texture": ExtResource("4_88mlx")
}, {
"duration": 1.0,
"texture": ExtResource("5_b42y7")
}, {
"duration": 1.0,
"texture": ExtResource("6_hftyt")
}, {
"duration": 1.0,
"texture": ExtResource("7_7i5jk")
}, {
"duration": 1.0,
"texture": ExtResource("8_aukuc")
}],
"loop": false,
"name": &"spawn",
"speed": 20.0
}]
[node name="DangerAttackStar" unique_id=1065258878 instance=ExtResource("1_7hx85")]
spawnSound = "spawn"
spawnAnimation = "spawn"
spawnTexture = "spawn"
[node name="spawn" parent="sounds" index="0"]
stream = ExtResource("2_kdi56")
[node name="animator" parent="stage" index="0"]
libraries/ = SubResource("AnimationLibrary_fuos2")
[node name="texture" parent="stage" index="1"]
sprite_frames = SubResource("SpriteFrames_ldh0a")
frame = 5
frame_progress = 1.0
+1 -5
View File
@@ -3,7 +3,6 @@
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_mps21"]
[ext_resource type="Script" uid="uid://cu42bwm2r05p6" path="res://scripts/Contents/Weapons/DaoStatue.gd" id="2_c82g6"]
[ext_resource type="Texture2D" uid="uid://gwsychqkmv21" path="res://resources/weapons/Statue_Sword_Attack0.png" id="2_gx1sf"]
[ext_resource type="AudioStream" uid="uid://b3jn85pkl143b" path="res://resources/sounds/effect/Flash1.ogg" id="4_y3oaj"]
[node name="DaoStatue" unique_id=265403254 instance=ExtResource("1_mps21")]
script = ExtResource("2_c82g6")
@@ -28,12 +27,9 @@ descriptionTemplate = "挥出[b]天地之剑[/b],蓄力一段时间后,
攻击速度每降低[color=yellow]1%[/color],伤害+$rate2
每失去[color=yellow]1[/color]点生命值,伤害+$rate1
命中时每拥有[color=yellow]1[/color]层[b]气[/b],伤害+$rate3"
cooldown = 3000.0
cooldown = 4000.0
debugRebuild = true
[node name="attack" parent="sounds" index="0"]
stream = ExtResource("4_y3oaj")
[node name="avatar" parent="container/info" index="0"]
texture = ExtResource("2_gx1sf")
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dvgykwd8doqad"
path="res://.godot/imported/Effect_Danger0.png-47abbd13743f9bf4d0e274f6ef662480.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/effects/star4/Effect_Danger0.png"
dest_files=["res://.godot/imported/Effect_Danger0.png-47abbd13743f9bf4d0e274f6ef662480.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ww2v4a6iucv3"
path="res://.godot/imported/Effect_Danger1.png-d0194162d1815ef12fec9663e833180e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/effects/star4/Effect_Danger1.png"
dest_files=["res://.godot/imported/Effect_Danger1.png-d0194162d1815ef12fec9663e833180e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bi818isgqxuek"
path="res://.godot/imported/Effect_Danger2.png-2a7963a2fe20c31fda2062a6e1272ea1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/effects/star4/Effect_Danger2.png"
dest_files=["res://.godot/imported/Effect_Danger2.png-2a7963a2fe20c31fda2062a6e1272ea1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ba7q3mq6rxjxy"
path="res://.godot/imported/Effect_Danger3.png-c2a85eb56a570ee7e1c9b226cc52c10c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/effects/star4/Effect_Danger3.png"
dest_files=["res://.godot/imported/Effect_Danger3.png-c2a85eb56a570ee7e1c9b226cc52c10c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c7i5eeffpeoxb"
path="res://.godot/imported/Effect_Danger4.png-1ceb678a4c044e40d261df39036ae076.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/effects/star4/Effect_Danger4.png"
dest_files=["res://.godot/imported/Effect_Danger4.png-1ceb678a4c044e40d261df39036ae076.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://susqpw4ttmd1"
path="res://.godot/imported/Effect_Danger5.png-547c9754cce788bd1b934775f2ec30aa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/effects/star4/Effect_Danger5.png"
dest_files=["res://.godot/imported/Effect_Danger5.png-547c9754cce788bd1b934775f2ec30aa.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
+1 -1
View File
@@ -6,7 +6,7 @@ class_name WuweiBullet
func ai():
if canMove:
PresetBulletAI.lockLauncher(self , launcher, true)
look_at(get_global_mouse_position())
PresetBulletAI.trace(self , get_global_mouse_position(), 0.1)
func shoot():
for bullet in BulletBase.generate(
+9 -3
View File
@@ -1,6 +1,12 @@
@tool
extends Weapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
origin["atk"] += 4 * to * soulLevel
origin["rate1"] *= soulLevel
origin["rate2"] *= soulLevel
origin["rate3"] *= soulLevel
return origin
func attack(entity: EntityBase):
for bullet in BulletBase.generate(
ComponentManager.getBullet("Wuwei"),
@@ -10,7 +16,7 @@ func attack(entity: EntityBase):
):
if bullet is WuweiBullet:
bullet.baseDamage = readStore("atk")
bullet.baseDamage *= (readStore("rate2") + 1) ** ((1.0 - entity.fields[FieldStore.Entity.ATTACK_SPEED]) * 100)
bullet.baseDamage *= (readStore("rate1") + 1) ** (entity.fields[FieldStore.Entity.MAX_HEALTH] - entity.health)
bullet.baseDamage *= (readStore("rate3") + 1) ** len(entity.getOrCreateCycleTimer("parry", 2000, 100).bullets)
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("rate3") * len(entity.getOrCreateCycleTimer("parry", 2000, 100).bullets)) + 1
return true