1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00
Files
Dog-Lynx-And-HCN/scripts/Contents/Weapons/BlueCrystal.gd
T
fallingshrimp 848a878992 feat(蓝水晶): 添加蓝水晶子弹追踪和分裂功能
为蓝水晶子弹添加追踪开关和速度提升属性
实现命中敌人时概率分裂钻石的功能
添加武器升华选项以增强蓝水晶能力
2026-05-10 15:17:57 +08:00

65 lines
2.0 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@tool
extends Weapon
func sublimateOptions() -> Array[SublimateOption]:
return [
SublimateOption.new(
"晶核提纯",
"蓝水晶与钻石伤害+1",
func(w: Weapon, _e):
w.addStoreExtra("atk", 1),
1,
CategoryStore.Quality.COMMON
),
SublimateOption.new(
"钻石护盾",
"环绕钻石数量+1",
func(w: Weapon, _e):
w.addStoreExtra("count", 1),
1,
CategoryStore.Quality.RARE
),
SublimateOption.new(
"贯穿棱镜",
"穿透+10%",
func(w: Weapon, _e):
w.addStoreExtra("penerate", 0.1),
1,
CategoryStore.Quality.EPIC
),
SublimateOption.new(
"碎晶裂变",
"蓝水晶命中敌人时,有8%概率分裂出1颗钻石(伤害-20%",
func(w: Weapon, _e):
w.addStoreExtra("splitRate", 0.08),
1,
CategoryStore.Quality.LEGENDARY
),
SublimateOption.new(
"动能贯穿",
"蓝水晶飞行速度+10%",
func(w: Weapon, _e):
w.addStoreExtra("speed", 0.1),
1,
CategoryStore.Quality.COMMON
),
]
func update(to: int, origin: Dictionary, _entity: EntityBase):
origin["atk"] += 2 * to * soulLevel
origin["count"] = 1 + 1 * soulLevel
return origin
func attack(entity: EntityBase):
for crystal in BulletBase.generate(ComponentManager.getBullet("BlueCrystal"), entity, entity.findWeaponAnchor("normal"), deg_to_rad(randf_range(0, 360))):
if crystal is BlueCrystalBullet:
crystal.tracer = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !entity.isPlayer(), entity.isPlayer())
crystal.baseDamage = readStore("atk")
crystal.penerate += readStoreExtra("penerate")
crystal.speedBoost = readStoreExtra("speed")
for index in readStore("count"):
for diamond in BulletBase.generate(ComponentManager.getBullet("Diamond2"), entity, crystal.position, deg_to_rad(360.0 / readStore("count") * index)):
if diamond is Diamond2Bullet:
diamond.baseDamage = readStore("atk")
diamond.parent = crystal
diamond.penerate += readStoreExtra("penerate")
return true