mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-03 18:27:13 +08:00
feat(子弹系统): 重构伤害计算并添加音效
将子弹的伤害属性从`damage`重命名为`baseDamage`,并引入`damageMultipliers`数组支持多段伤害 为火山武器添加三段攻击音效并调整伤害倍率 更新相关武器和子弹脚本以适配新的伤害系统
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -2,7 +2,7 @@ extends BulletBase
|
||||
class_name Pencil
|
||||
|
||||
func register():
|
||||
damage = 20
|
||||
baseDamage = 20
|
||||
func spawn():
|
||||
await TickTool.millseconds(1000)
|
||||
hitbox.disabled = false
|
||||
|
||||
@@ -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()])
|
||||
|
||||
@@ -2,6 +2,6 @@ extends BulletBase
|
||||
class_name Star
|
||||
|
||||
func register():
|
||||
damage = 1
|
||||
baseDamage = 1
|
||||
func ai():
|
||||
PresetBulletAI.forward(self, rotation)
|
||||
|
||||
@@ -25,4 +25,4 @@ func generateShadow():
|
||||
false, false, true, true
|
||||
):
|
||||
if i is VolcanoShadow:
|
||||
i.damage = damage
|
||||
i.baseDamage = baseDamage
|
||||
|
||||
@@ -11,5 +11,5 @@ func attack(entity: EntityBase):
|
||||
for bullet in BulletBase.generate(ComponentManager.getBullet("BigLaser"), entity, weaponPos, (get_global_mouse_position() - weaponPos).angle()):
|
||||
var bigLaser: BigLaser = bullet
|
||||
bigLaser.dotTime = readStore("time") * 1000
|
||||
bigLaser.damage = readStore("atk")
|
||||
bigLaser.baseDamage = readStore("atk")
|
||||
return true
|
||||
|
||||
@@ -10,7 +10,7 @@ func attack(entity: EntityBase):
|
||||
var weaponPos = entity.findWeaponAnchor("normal")
|
||||
for j in BulletBase.generate(ComponentManager.getBullet("MushroomPickaxe"), entity, entity.texture.global_position, weaponPos.angle_to_point(get_global_mouse_position())):
|
||||
var bullet: MushroomPickaxe = j
|
||||
bullet.damage = readStore("atk")
|
||||
bullet.baseDamage = readStore("atk")
|
||||
bullet.rate = readStore("rate")
|
||||
bullet.count = readStore("count")
|
||||
return true
|
||||
|
||||
@@ -9,6 +9,6 @@ func attack(entity: EntityBase):
|
||||
var weaponPos = entity.findWeaponAnchor("normal")
|
||||
for j in BulletBase.generate(ComponentManager.getBullet("NuclearBomb"), entity, weaponPos, weaponPos.angle_to_point(get_global_mouse_position())):
|
||||
var bullet: NuclearBomb = j
|
||||
bullet.damage = readStore("atk")
|
||||
bullet.baseDamage = readStore("atk")
|
||||
bullet.radius = readStore("radius")
|
||||
return true
|
||||
|
||||
@@ -13,7 +13,7 @@ func attack(entity: EntityBase):
|
||||
for i in range(int(randi_range(readStore("mincount"), readStore("maxcount")))):
|
||||
for j in BulletBase.generate(ComponentManager.getBullet("VectorStar"), entity, weaponPos, deg_to_rad(randf_range(0, 360))):
|
||||
var bullet: VectorStar = j
|
||||
bullet.damage = readStore("atk")
|
||||
bullet.baseDamage = readStore("atk")
|
||||
bullet.tracer = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !entity.isPlayer(), entity.isPlayer())
|
||||
bullet.forwardTime = readStore("forwardtime") * 1000
|
||||
return true
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
extends Weapon
|
||||
|
||||
func update(to: int, origin: Dictionary, _entity: EntityBase):
|
||||
origin["rotate"] += 0.015 * to * soulLevel
|
||||
origin["rotate"] += 0.005 * to * soulLevel
|
||||
origin["dmg1"] += 0.03 * to * soulLevel
|
||||
origin["dmg2"] += 0.03 * to * soulLevel
|
||||
origin["dmg3"] += 0.03 * to * soulLevel
|
||||
origin["atk"] += 1 * to * soulLevel
|
||||
return origin
|
||||
func attack(entity: EntityBase):
|
||||
for j in BulletBase.generate(
|
||||
@@ -12,5 +16,6 @@ func attack(entity: EntityBase):
|
||||
entity.position.angle_to_point(entity.get_global_mouse_position()), false, false, true, true
|
||||
):
|
||||
var bullet: Volcano = j
|
||||
bullet.damage = readStore("atk")
|
||||
bullet.baseDamage = readStore("atk")
|
||||
bullet.rotates = readStore("rotate")
|
||||
bullet.damageMultipliers = [readStore("dmg1"), readStore("dmg2"), readStore("dmg3")]
|
||||
|
||||
Reference in New Issue
Block a user