2025-08-27 19:59:05 +08:00
|
|
|
extends BulletBase
|
2025-09-06 09:13:19 +08:00
|
|
|
class_name BigLaser
|
|
|
|
|
|
|
|
|
|
var dotTime: float = 100
|
2026-05-10 14:58:05 +08:00
|
|
|
var executeAtk: float = 0.25
|
2025-08-27 19:59:05 +08:00
|
|
|
|
2025-08-28 11:14:14 +08:00
|
|
|
func spawn():
|
2025-09-06 09:13:19 +08:00
|
|
|
CameraManager.shake(5000, 100) # 激光会运行5秒(5000毫秒),期间震屏超高强度
|
2025-08-28 12:00:09 +08:00
|
|
|
CameraManager.playAnimation("bigLaser")
|
2025-08-27 19:59:05 +08:00
|
|
|
func ai():
|
2026-04-25 13:28:43 +08:00
|
|
|
rotation = lerp_angle(rotation, ((launcher.currentFocusedPosition - position).angle()), 0.1)
|
2025-08-27 19:59:05 +08:00
|
|
|
position = launcher.texture.global_position
|
|
|
|
|
func applyDot():
|
|
|
|
|
hitbox.disabled = true
|
2025-09-06 09:13:19 +08:00
|
|
|
await TickTool.millseconds(dotTime / launcher.fields[FieldStore.Entity.ATTACK_SPEED])
|
2026-05-10 15:02:37 +08:00
|
|
|
await TickTool.frame() # 等至少一帧,防止跳帧导致没检测到伤害
|
2025-08-27 19:59:05 +08:00
|
|
|
hitbox.disabled = false
|
2025-09-06 09:13:19 +08:00
|
|
|
await TickTool.millseconds(dotTime / launcher.fields[FieldStore.Entity.ATTACK_SPEED])
|
|
|
|
|
await TickTool.frame() # 等至少一帧,防止跳帧导致没检测到伤害
|
2025-08-27 19:59:05 +08:00
|
|
|
return true
|
2026-05-10 14:58:05 +08:00
|
|
|
func damageOverride(origin: float, something: Variant):
|
|
|
|
|
if something is EntityBase:
|
|
|
|
|
return origin * (1 + (executeAtk if something.getHealthPercent() < 0.3 else 0.0))
|
|
|
|
|
elif something is ObstacleBase:
|
|
|
|
|
return origin * (1 + (executeAtk if something.getHealthPercent() < 0.3 else 0.0))
|
|
|
|
|
else:
|
|
|
|
|
return origin
|