mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 06:51:54 +08:00
fix: 修复子弹伤害计算并添加命中成功回调
- 在EntityBase.gd中添加takeDamage方法的返回值 - 修改BigLaser.gd中的applyDot延迟时间计算方式并添加succeedToHit方法 - 在BulletBase.gd中完善伤害处理流程,添加命中回调机制
This commit is contained in:
@@ -10,9 +10,9 @@ func ai():
|
||||
position = launcher.texture.global_position
|
||||
func applyDot():
|
||||
hitbox.disabled = true
|
||||
await TickTool.millseconds(50)
|
||||
await TickTool.millseconds(100 / launcher.fields[FieldStore.Entity.ATTACK_SPEED])
|
||||
hitbox.disabled = false
|
||||
await TickTool.millseconds(50)
|
||||
await TickTool.millseconds(100 / launcher.fields[FieldStore.Entity.ATTACK_SPEED])
|
||||
BulletBase.generate(
|
||||
preload("res://components/Bullets/LaserPluse.tscn"),
|
||||
launcher,
|
||||
@@ -20,3 +20,5 @@ func applyDot():
|
||||
rotation
|
||||
)
|
||||
return true
|
||||
func succeedToHit(_dmg: float):
|
||||
fields[FieldStore.Bullet.DAMAGE] *= 1.1
|
||||
|
||||
@@ -54,7 +54,8 @@ func hit(target: Node):
|
||||
if !canDamageSelf && entity == launcher: return
|
||||
if !indisDamage && !GameRule.allowFriendlyFire:
|
||||
if entity.isPlayer() == launcher.isPlayer(): return
|
||||
entity.takeDamage(self, MathTool.rate(launcher.fields.get(FieldStore.Entity.CRIT_RATE) + GameRule.critRateInfluenceByLuckValue * launcher.fields[FieldStore.Entity.LUCK_VALUE]))
|
||||
var damage = entity.takeDamage(self, MathTool.rate(launcher.fields.get(FieldStore.Entity.CRIT_RATE) + GameRule.critRateInfluenceByLuckValue * launcher.fields[FieldStore.Entity.LUCK_VALUE]))
|
||||
succeedToHit(damage)
|
||||
if MathTool.rate(fullPenerate()):
|
||||
fields[FieldStore.Bullet.PENERATE] -= entity.fields[FieldStore.Entity.PENARATION_RESISTANCE]
|
||||
else:
|
||||
@@ -77,6 +78,8 @@ func spawn():
|
||||
pass
|
||||
func applyDot():
|
||||
pass
|
||||
func succeedToHit(_dmg: float):
|
||||
pass
|
||||
|
||||
static func generate(
|
||||
bullet: PackedScene,
|
||||
|
||||
@@ -151,6 +151,7 @@ func takeDamage(bullet: BulletBase, crit: bool):
|
||||
bullet.launcher.storeEnergy(energy * 0.35)
|
||||
bullet.launcher.setBoss(null)
|
||||
tryDie(bullet)
|
||||
return damage
|
||||
func collectItem(itemType: ItemStore.ItemType, amount: int):
|
||||
inventory[itemType] += amount
|
||||
playSound("collect")
|
||||
|
||||
Reference in New Issue
Block a user