1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-27 22:41:56 +08:00

fix: 修复子弹伤害计算并调整触发条件

调整Wuwei子弹的伤害计算方式,移除冗余计算并添加rate2变量控制伤害倍率。修改Parrier子弹的反射伤害计算,加入子弹伤害因子。优化DaoStatue武器的攻击触发条件,从检测1颗子弹改为3颗,并简化子弹生成逻辑。
This commit is contained in:
2026-05-08 16:18:13 +08:00
parent 04727c0feb
commit fbcab848e2
3 changed files with 10 additions and 9 deletions
+1 -1
View File
@@ -76,7 +76,7 @@ func hitBullet(bullet: BulletBase): # 当前子弹与其他子弹相撞
elif bullet.motionType == BulletBase.MotionType.STAB:
parryEffect(bullet)
bullet.hitbox.set_deferred("disabled", true)
bullet.launcher.takeDamage(atk * reflectRate)
bullet.launcher.takeDamage(atk * reflectRate * bullet.getDamage())
bullet.launcher.impluse(Vector2.from_angle(bullet.rotation) * -2000)
generateParryBall(bullet.baseDamage)
elif bullet.motionType == BulletBase.MotionType.SPRINT:
+6
View File
@@ -3,10 +3,16 @@ class_name WuweiBullet
@export var canMove: bool = true
var rate2: float = 0
func ai():
if canMove:
PresetBulletAI.lockLauncher(self , launcher, true)
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():
for bullet in BulletBase.generate(
+3 -8
View File
@@ -7,7 +7,7 @@ func update(to: int, origin: Dictionary, _entity: EntityBase):
origin["rate2"] += 0.06 * (soulLevel - 1)
return origin
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):
var parryCounter = entity.getOrCreateCycleTimer("parry", 2000, 100)
for bullet in BulletBase.generate(
@@ -18,14 +18,9 @@ func attack(entity: EntityBase):
):
if bullet is WuweiBullet:
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
var atkAll = 0
for bulle in parryCounter.bullets:
if bulle is ParryBallBullet:
atkAll += bulle.atk
bullet.baseDamage *= max(-0.99, readStore("rate3") * atkAll) + 1
for bulle in parryCounter.bullets:
bullet.rate2 = readStore("rate2")
for bulle in parryCounter.bullets.slice(0, 3):
if bulle is ParryBallBullet:
bulle.tryDestroy()
parryCounter.forceFilter()