mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-26 13:32:29 +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
|
position = launcher.texture.global_position
|
||||||
func applyDot():
|
func applyDot():
|
||||||
hitbox.disabled = true
|
hitbox.disabled = true
|
||||||
await TickTool.millseconds(50)
|
await TickTool.millseconds(100 / launcher.fields[FieldStore.Entity.ATTACK_SPEED])
|
||||||
hitbox.disabled = false
|
hitbox.disabled = false
|
||||||
await TickTool.millseconds(50)
|
await TickTool.millseconds(100 / launcher.fields[FieldStore.Entity.ATTACK_SPEED])
|
||||||
BulletBase.generate(
|
BulletBase.generate(
|
||||||
preload("res://components/Bullets/LaserPluse.tscn"),
|
preload("res://components/Bullets/LaserPluse.tscn"),
|
||||||
launcher,
|
launcher,
|
||||||
@@ -20,3 +20,5 @@ func applyDot():
|
|||||||
rotation
|
rotation
|
||||||
)
|
)
|
||||||
return true
|
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 !canDamageSelf && entity == launcher: return
|
||||||
if !indisDamage && !GameRule.allowFriendlyFire:
|
if !indisDamage && !GameRule.allowFriendlyFire:
|
||||||
if entity.isPlayer() == launcher.isPlayer(): return
|
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()):
|
if MathTool.rate(fullPenerate()):
|
||||||
fields[FieldStore.Bullet.PENERATE] -= entity.fields[FieldStore.Entity.PENARATION_RESISTANCE]
|
fields[FieldStore.Bullet.PENERATE] -= entity.fields[FieldStore.Entity.PENARATION_RESISTANCE]
|
||||||
else:
|
else:
|
||||||
@@ -77,6 +78,8 @@ func spawn():
|
|||||||
pass
|
pass
|
||||||
func applyDot():
|
func applyDot():
|
||||||
pass
|
pass
|
||||||
|
func succeedToHit(_dmg: float):
|
||||||
|
pass
|
||||||
|
|
||||||
static func generate(
|
static func generate(
|
||||||
bullet: PackedScene,
|
bullet: PackedScene,
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ func takeDamage(bullet: BulletBase, crit: bool):
|
|||||||
bullet.launcher.storeEnergy(energy * 0.35)
|
bullet.launcher.storeEnergy(energy * 0.35)
|
||||||
bullet.launcher.setBoss(null)
|
bullet.launcher.setBoss(null)
|
||||||
tryDie(bullet)
|
tryDie(bullet)
|
||||||
|
return damage
|
||||||
func collectItem(itemType: ItemStore.ItemType, amount: int):
|
func collectItem(itemType: ItemStore.ItemType, amount: int):
|
||||||
inventory[itemType] += amount
|
inventory[itemType] += amount
|
||||||
playSound("collect")
|
playSound("collect")
|
||||||
|
|||||||
Reference in New Issue
Block a user