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

feat(子弹系统): 重构伤害计算并添加音效

将子弹的伤害属性从`damage`重命名为`baseDamage`,并引入`damageMultipliers`数组支持多段伤害
为火山武器添加三段攻击音效并调整伤害倍率
更新相关武器和子弹脚本以适配新的伤害系统
This commit is contained in:
2025-11-22 08:42:51 +08:00
parent b263122a52
commit 46ea2fc775
28 changed files with 145 additions and 31 deletions
+1 -1
View File
@@ -18,7 +18,7 @@ func ai():
trail.emitting = true
hitbox.disabled = false
speed = (1 - lifeDistancePercent()) * initialSpeed
damage = speed * atk
baseDamage = speed * atk
PresetBulletAI.forward(self, rotation)
if speed < 1:
tryDestroy()
+1 -1
View File
@@ -9,7 +9,7 @@ func register():
func spawn():
CameraManager.shake(5000, 100) # 激光会运行5秒(5000毫秒),期间震屏超高强度
CameraManager.playAnimation("bigLaser")
damage *= launcher.fields[FieldStore.Entity.ATTACK_SPEED]
baseDamage *= launcher.fields[FieldStore.Entity.ATTACK_SPEED]
func ai():
rotation = lerp_angle(rotation, ((get_global_mouse_position() - position).angle()), 0.1)
position = launcher.texture.global_position
@@ -13,7 +13,7 @@ var forwarded: bool = false
func register():
speed = 1
damage = 1
baseDamage = 1
func spawn():
myColor = allColor.gradient.sample(randf())
superlight.material = superlight.material.duplicate()
@@ -5,7 +5,7 @@ extends BulletBase
var myColor: Color
func register():
damage = 1
baseDamage = 1
penerate = 1
func spawn():
myColor = allColor.gradient.sample(randf())
@@ -10,7 +10,7 @@ extends BulletBase
var myColor: Color
func register():
speed = 1
damage = 1
baseDamage = 1
penerate = 1
func spawn():
myColor = allColor.gradient.sample(randf())
@@ -11,7 +11,7 @@ var myColor: Color
func register():
speed = 0
damage = 1
baseDamage = 1
penerate = 1
func spawn():
myColor = allColor.gradient.sample(randf())
@@ -15,5 +15,5 @@ func ai():
track.visible = false
hitbox.disabled = false
PresetBulletAI.forward(self, rotation)
damage = speed / 5
baseDamage = speed / 5
speed *= 1.15
+1 -1
View File
@@ -8,7 +8,7 @@ var splits: float = 10.0
func spawn():
for j in count:
for i in BulletBase.generate(ComponentManager.getBullet("PurpleCrystalSmall"), launcher, anchor.global_position, rotation):
i.damage = damage
i.damage = baseDamage
var dir = Vector2.from_angle(i.rotation).rotated(deg_to_rad(-90))
i.global_position += dir * (count - j * 2) * splits / 2
func ai():
+1 -1
View File
@@ -7,7 +7,7 @@ func register():
speed = 0
penerate = 1
func ai():
damage = launcher.velocity.length() / 500 * atk
baseDamage = launcher.velocity.length() / 500 * atk
PresetBulletAI.lockLauncher(self, launcher, true)
if !launcher.sprinting:
tryDestroy()
+1 -1
View File
@@ -4,7 +4,7 @@ class_name Diamond
const traceTime = 1500
func register():
damage = 2
baseDamage = 2
func ai():
PresetBulletAI.forward(self, rotation)
if timeLived() < traceTime:
+1 -1
View File
@@ -2,7 +2,7 @@ extends BulletBase
class_name Pencil
func register():
damage = 20
baseDamage = 20
func spawn():
await TickTool.millseconds(1000)
hitbox.disabled = false
+1 -1
View File
@@ -20,7 +20,7 @@ func register():
func(area):
var bullet = BulletTool.fromArea(area)
if bullet and BulletTool.canDamage(bullet, launcher):
launcher.storeEnergy(damage * 2)
launcher.storeEnergy(baseDamage * 2)
)
func spawn():
modulate = Color(colors[index % colors.size()])
+1 -1
View File
@@ -2,6 +2,6 @@ extends BulletBase
class_name Star
func register():
damage = 1
baseDamage = 1
func ai():
PresetBulletAI.forward(self, rotation)
+1 -1
View File
@@ -25,4 +25,4 @@ func generateShadow():
false, false, true, true
):
if i is VolcanoShadow:
i.damage = damage
i.baseDamage = baseDamage