2025-09-06 08:23:57 +08:00
|
|
|
@tool
|
2025-09-06 08:05:43 +08:00
|
|
|
extends Weapon
|
|
|
|
|
class_name BigLaserWeapon
|
|
|
|
|
|
2026-05-10 14:58:05 +08:00
|
|
|
func sublimateOptions() -> Array[SublimateOption]:
|
|
|
|
|
return [
|
|
|
|
|
SublimateOption.new(
|
|
|
|
|
"湮灭强化",
|
|
|
|
|
"伤害+15",
|
|
|
|
|
func(w: Weapon, _e):
|
|
|
|
|
w.addStoreExtra("atk", 15),
|
|
|
|
|
1,
|
|
|
|
|
CategoryStore.Quality.COMMON
|
|
|
|
|
),
|
|
|
|
|
SublimateOption.new(
|
|
|
|
|
"高频激荡",
|
|
|
|
|
"间隔-0.01秒",
|
|
|
|
|
func(w: Weapon, _e):
|
|
|
|
|
w.addStoreExtra("time", -0.01),
|
|
|
|
|
1,
|
|
|
|
|
CategoryStore.Quality.RARE
|
|
|
|
|
),
|
|
|
|
|
SublimateOption.new(
|
|
|
|
|
"临界斩杀",
|
|
|
|
|
"对生命值低于30%的敌人,伤害+25%",
|
|
|
|
|
func(w: Weapon, _e):
|
|
|
|
|
w.addStoreExtra("executeAtk", 0.25),
|
|
|
|
|
1,
|
|
|
|
|
CategoryStore.Quality.EPIC
|
|
|
|
|
),
|
|
|
|
|
SublimateOption.new(
|
|
|
|
|
"蓄能聚焦",
|
|
|
|
|
"射线伤害+30,但伤害间隔+0.03秒",
|
|
|
|
|
func(w: Weapon, _e):
|
|
|
|
|
w.addStoreExtra("atk", 30)
|
|
|
|
|
w.addStoreExtra("time", 0.03),
|
|
|
|
|
1,
|
|
|
|
|
CategoryStore.Quality.LEGENDARY
|
|
|
|
|
),
|
|
|
|
|
SublimateOption.new(
|
|
|
|
|
"空间撕裂",
|
|
|
|
|
"射线持续时间+0.3秒",
|
|
|
|
|
func(w: Weapon, _e):
|
|
|
|
|
w.addStoreExtra("duration", 0.3),
|
|
|
|
|
2,
|
|
|
|
|
CategoryStore.Quality.COMMON
|
|
|
|
|
),
|
|
|
|
|
]
|
|
|
|
|
|
2025-09-06 08:05:43 +08:00
|
|
|
func update(to: int, origin: Dictionary, _entity: EntityBase):
|
2025-09-20 07:01:17 +08:00
|
|
|
origin["atk"] += 5 * to * soulLevel
|
2025-09-21 16:17:49 +08:00
|
|
|
origin["time"] /= 1 + 0.05 * to * soulLevel
|
2025-09-06 08:05:43 +08:00
|
|
|
return origin
|
|
|
|
|
func attack(entity: EntityBase):
|
|
|
|
|
var weaponPos = entity.findWeaponAnchor("normal")
|
2025-09-21 13:11:31 +08:00
|
|
|
for bullet in BulletBase.generate(ComponentManager.getBullet("BigLaser"), entity, weaponPos, (get_global_mouse_position() - weaponPos).angle()):
|
2025-09-06 09:13:19 +08:00
|
|
|
var bigLaser: BigLaser = bullet
|
|
|
|
|
bigLaser.dotTime = readStore("time") * 1000
|
2025-11-22 08:42:51 +08:00
|
|
|
bigLaser.baseDamage = readStore("atk")
|
2026-05-10 15:04:17 +08:00
|
|
|
bigLaser.executeAtk = readStoreExtra("executeAtk")
|
2026-05-10 14:58:05 +08:00
|
|
|
await TickTool.frame()
|
|
|
|
|
bigLaser.animator.speed_scale = 5 / (5 + readStoreExtra("duration"))
|
2025-09-06 08:05:43 +08:00
|
|
|
return true
|