1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00

feat(武器): 为火山武器添加幻影攻击功能

在火山武器的第4段攻击时发射多支火山幻影,造成额外伤害。修改了动画、伤害计算和武器描述,包括:
- 添加count和dmg5属性控制幻影数量和伤害
- 调整幻影动画效果和速度
- 更新武器描述模板和显示文本
This commit is contained in:
2025-11-22 16:36:59 +08:00
parent 0316387e73
commit 4a04c4ca01
5 changed files with 43 additions and 17 deletions
+14
View File
@@ -252,6 +252,20 @@ tracks/9/keys = {
"times": PackedFloat32Array(0, 0.6, 1.2, 1.45)
}
tracks/9/use_blend = true
tracks/10/type = "method"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("%texture/..")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(1.45),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"generateShadow"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_w1utg"]
_data = {
+5 -5
View File
@@ -44,7 +44,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1, 0.90000004, 1),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.70000005), Color(1, 1, 1, 0.70000005), Color(1, 1, 1, 0)]
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.5), Color(1, 1, 1, 0.5), Color(1, 1, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
@@ -53,10 +53,10 @@ tracks/1/path = NodePath("static:scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.1, 0.90000004, 1),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"times": PackedFloat32Array(0, 0.1, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector2(0, 0), Vector2(0.8, 0.8), Vector2(0.8, 0.8), Vector2(0, 0)]
"values": [Vector2(0, 0), Vector2(1.5, 1.5), Vector2(0, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_i7b6y"]
@@ -70,7 +70,7 @@ size = Vector2(76, 12)
[node name="VolcanoShadow" instance=ExtResource("1_4oiyn")]
script = ExtResource("2_i7b6y")
speed = 30.0
speed = 25.0
penerate = 1.0
penerateDamageReduction = 0.2
autoSpawnAnimation = true
+6 -3
View File
@@ -14,23 +14,26 @@ typeTopic = 2
costBeachball = 300
store = {
"atk": 10.0,
"count": 2.0,
"dmg1": 1.0,
"dmg2": 0.75,
"dmg3": 1.5,
"dmg4": 1.25,
"dmg5": 0.6,
"rotate": 0.05
}
storeType = {
"atk": 1,
"count": 1,
"dmg1": 2,
"dmg2": 2,
"dmg3": 2,
"dmg4": 2,
"dmg5": 2,
"rotate": 2
}
descriptionTemplate = "召唤1支[b]火山[/b],以$rotate的效率跟随鼠标指向,进行基础伤害为$atk的4段挥舞攻击。造成的伤害分别为$dmg1$dmg2$dmg3$dmg4。"
descriptionTemplate = "召唤1支[b]火山[/b],以$rotate的效率跟随鼠标指向,进行基础伤害为$atk的4段挥舞攻击。造成的伤害分别为$dmg1$dmg2$dmg3$dmg4,第4段攻击时发射$count支[b]火山幻影[/b],造成$dmg5伤害。"
cooldown = 1750.0
debugRebuild = true
[node name="avatar" parent="container/info" index="0"]
texture = ExtResource("2_hh01t")
@@ -47,4 +50,4 @@ quality = 4
typeTopic = 2
[node name="description" parent="container" index="2"]
text = "[center]召唤1支[b]火山[/b],以[color=cyan]5%[/color]的效率跟随鼠标指向,进行基础伤害为[color=cyan]10[/color]的4段挥舞攻击。造成的伤害分别为[color=cyan]100%[/color][color=cyan]75%[/color][color=cyan]150%[/color][color=cyan]125%[/color]。[/center]"
text = "[center]召唤1支[b]火山[/b],以[color=cyan]5%[/color]的效率跟随鼠标指向,进行基础伤害为[color=cyan]10[/color]的4段挥舞攻击。造成的伤害分别为[color=cyan]100%[/color][color=cyan]75%[/color][color=cyan]150%[/color][color=cyan]125%[/color],第4段攻击时发射[color=cyan]2[/color]支[b]火山幻影[/b],造成[color=cyan]25%[/color]伤害。[/center]"
+14 -9
View File
@@ -5,6 +5,9 @@ class_name Volcano
@onready var anchor: Node2D = $%anchor
var rotates: float = 0
var count: int = 0
var dmg5: float = 0
var splitAngle: float = 10
func register():
animator.speed_scale = launcher.fields.get(FieldStore.Entity.ATTACK_SPEED)
@@ -17,12 +20,14 @@ func ai():
)
func generateShadow():
for i in BulletBase.generate(
ComponentManager.getBullet("VolcanoShadow"),
launcher,
textureSword.global_position,
anchor.global_rotation,
false, false, true, true
):
if i is VolcanoShadow:
i.baseDamage = baseDamage
var startAngle = rotation - deg_to_rad(count * splitAngle / 2)
for i in count:
for bullet in BulletBase.generate(
ComponentManager.getBullet("VolcanoShadow"),
launcher,
position,
startAngle + i * deg_to_rad(splitAngle),
false, false, true, true
):
if bullet is VolcanoShadow:
bullet.baseDamage = baseDamage * dmg5
+4
View File
@@ -7,6 +7,8 @@ func update(to: int, origin: Dictionary, _entity: EntityBase):
origin["dmg2"] += 0.03 * to * soulLevel
origin["dmg3"] += 0.03 * to * soulLevel
origin["dmg4"] += 0.03 * to * soulLevel
origin["dmg5"] += 0.04 * to * soulLevel
origin["count"] = 1 * soulLevel + 1
origin["atk"] += 1 * to * soulLevel
return origin
func attack(entity: EntityBase):
@@ -20,3 +22,5 @@ func attack(entity: EntityBase):
bullet.baseDamage = readStore("atk")
bullet.rotates = readStore("rotate")
bullet.damageMultipliers = [readStore("dmg1"), readStore("dmg2"), readStore("dmg3"), readStore("dmg4")]
bullet.count = readStore("count")
bullet.dmg5 = readStore("dmg5")