@tool extends Weapon func sublimateOptions() -> Array[SublimateOption]: return [ SublimateOption.new( "破风之翎", "伤害+15%", func(w: Weapon, _e): w.addStoreExtra("atk", 0.15), 1, CategoryStore.Quality.COMMON ), SublimateOption.new( "嗜血", "伤害倍率+40%,但额外消耗1点生命值", func(w: Weapon, _e): w.addStoreExtra("atk", 0.4) w.addStoreExtra("self", 1), 2, CategoryStore.Quality.LEGENDARY ), SublimateOption.new( "风行者", "鸡毛箭出手速度+5%", func(w: Weapon, _e): w.addStoreExtra("initSpeed", 0.05), 1, CategoryStore.Quality.RARE ), SublimateOption.new( "破釜沉舟", "每失去5%生命值,伤害+6%", func(w: Weapon, _e): w.addStoreExtra("missAtk", 0.06), 2, CategoryStore.Quality.EPIC ), SublimateOption.new( "生命汲取", "鸡毛箭命中时回复0.2点生命值", func(w: Weapon, _e): w.addStoreExtra("lifesteal", 0.2), 1, CategoryStore.Quality.COMMON ), ] func update(to: int, origin: Dictionary, _entity: EntityBase): origin["atk"] += 0.1 * to * soulLevel origin["count"] = 1 * soulLevel origin["self"] += (soulLevel - 1) return origin func attack(entity: EntityBase): entity.takeDamage(readStore("self")) var weaponPos = entity.findWeaponAnchor("normal") for bullet in BulletBase.generate( ComponentManager.getBullet("Bow"), entity, weaponPos, weaponPos.angle_to_point(get_global_mouse_position()) ): if bullet is Bow: bullet.count = readStore("count") bullet.atk = readStore("atk") * (1 + (1 - entity.getHealthPercent()) * readStoreExtra("missAtk")) bullet.speed *= 1 + readStoreExtra("initSpeed") bullet.lifesteal = readStoreExtra("lifesteal") return true