1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-27 22:41:56 +08:00
Files
Dog-Lynx-And-HCN/scripts/Contents/Weapons/DaoStatue.gd
T
fallingshrimp 8d8f25976c feat(武器系统): 优化道像武器逻辑并调整能量消耗
- 将子弹过滤逻辑提取为独立方法 forceFilter
- 增加攻击前检查气力层的功能
- 降低武器能量需求从50改为25
- 更新武器描述文本以更准确反映机制
2026-04-05 07:50:24 +08:00

34 lines
1.2 KiB
GDScript

@tool
extends Weapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
origin["atk"] += 4 * to * soulLevel
origin["rate1"] *= soulLevel
origin["rate2"] *= soulLevel
origin["rate3"] *= soulLevel
return origin
func checkAttack(entity: EntityBase) -> bool:
return len(entity.getOrCreateCycleTimer("parry", 2000, 100).bullets) > 0
func attack(entity: EntityBase):
var parryCounter = entity.getOrCreateCycleTimer("parry", 2000, 100)
for bullet in BulletBase.generate(
ComponentManager.getBullet("Wuwei"),
entity,
entity.position,
entity.position.angle_to_point(get_global_mouse_position())
):
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:
if bulle is ParryBallBullet:
bulle.tryDestroy()
parryCounter.forceFilter()
return true