1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-27 22:41:56 +08:00
Files

64 lines
1.7 KiB
GDScript
Raw Permalink Normal View History

@tool
extends Weapon
func sublimateOptions() -> Array[SublimateOption]:
return [
SublimateOption.new(
"聚焦校准",
"散射-2°",
func(w: Weapon, _e):
w.addStoreExtra("split", -2),
1,
CategoryStore.Quality.RARE
),
SublimateOption.new(
"晶核过载",
"伤害+5,但散射+4°",
func(w: Weapon, _e):
w.addStoreExtra("atk", 5)
w.addStoreExtra("split", 4),
1,
CategoryStore.Quality.LEGENDARY
),
SublimateOption.new(
"弹头塑形",
"穿透+5%",
func(w: Weapon, _e):
w.addStoreExtra("penerate", 0.1),
1,
CategoryStore.Quality.EPIC
),
SublimateOption.new(
"晶能循环",
"能量消耗-0.05",
func(_w, _e):
needEnergy -= 0.05,
1,
CategoryStore.Quality.COMMON
),
SublimateOption.new(
"动能压制",
"命中敌人时有5%概率回收0.25点能量",
func(w: Weapon, _e):
w.addStoreExtra("cycleRate", 0.05)
w.addStoreExtra("cycleCount", 0.25),
1,
CategoryStore.Quality.COMMON
),
]
func update(to, origin, _entity):
origin["atk"] += 1 * to * soulLevel
origin["count"] = 1 * soulLevel
origin["split"] /= 1 + 0.005 * to * soulLevel
return origin
func attack(entity: EntityBase):
for bullet in BulletBase.generate(ComponentManager.getBullet("ChainGun"), entity, entity.texture.global_position, (get_global_mouse_position() - entity.texture.global_position).angle()):
if bullet is ChainGunBullet:
bullet.baseDamage = readStore("atk")
bullet.count = floor(readStore("count"))
bullet.splits = readStore("split")
bullet.penerate += readStoreExtra("penerate")
bullet.cycleRate = readStoreExtra("cycleRate")
bullet.cycleCount = readStoreExtra("cycleCount")
return true