mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-10 21:57:12 +08:00
feat(武器系统): 为BigLaser武器添加执行伤害和升华选项
- 在ObstacleBase和EntityBase中添加getHealthPercent方法用于获取生命值百分比 - 修改bulletHit方法支持伤害覆盖参数 - 为BigLaser武器添加5个升华选项,包括临界斩杀效果 - 实现damageOverride方法根据目标生命值动态调整伤害 - 修复store数值可能为负数的问题
This commit is contained in:
@@ -141,10 +141,10 @@ func setupCuttable(cutSpeed: float):
|
||||
)
|
||||
func getDamage():
|
||||
return baseDamage * damageMultipliers[usingDamageMultiplier]
|
||||
func calculateDamage(crit: bool):
|
||||
func calculateDamage(crit: bool, entity: Variant):
|
||||
var baseDmg = getDamage() * launcher.fields.get(FieldStore.Entity.DAMAGE_MULTIPILER) * randf_range(1 - GameRule.damageOffset, 1 + GameRule.damageOffset)
|
||||
var damage = baseDmg + baseDmg * int(crit) * launcher.fields.get(FieldStore.Entity.CRIT_DAMAGE)
|
||||
return damage
|
||||
return damageOverride(damage, entity)
|
||||
func determineCrit():
|
||||
return MathTool.rate(launcher.fields.get(FieldStore.Entity.CRIT_RATE) + GameRule.critRateInfluenceByLuckValue * launcher.fields[FieldStore.Entity.LUCK_VALUE])
|
||||
func hitEntity(target: Node):
|
||||
@@ -161,7 +161,7 @@ func hitObstacle(target: Node):
|
||||
var obstacle = target as ObstacleBase
|
||||
if is_instance_valid(obstacle.launcher):
|
||||
if not BulletTool.canDamage(self , obstacle.launcher): return
|
||||
obstacle.takeDamage(calculateDamage(determineCrit()))
|
||||
obstacle.takeDamage(calculateDamage(determineCrit(), target))
|
||||
if MathTool.rate(fullPenerate() - obstacle.penerateResistance):
|
||||
baseDamage *= 1.0 - penerateDamageReduction
|
||||
else:
|
||||
@@ -257,6 +257,8 @@ func refract(newBullet: BulletBase, _entity: EntityBase, _index: int, _total: in
|
||||
return newBullet
|
||||
func hitBullet(_bullet: BulletBase):
|
||||
pass
|
||||
func damageOverride(origin: float, _something: Variant):
|
||||
return origin
|
||||
|
||||
static func generate(
|
||||
bullet: PackedScene,
|
||||
|
||||
Reference in New Issue
Block a user