mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-07-09 19:42:54 +08:00
feat(武器): 为火山武器添加幻影攻击功能
在火山武器的第4段攻击时发射多支火山幻影,造成额外伤害。修改了动画、伤害计算和武器描述,包括: - 添加count和dmg5属性控制幻影数量和伤害 - 调整幻影动画效果和速度 - 更新武器描述模板和显示文本
This commit is contained in:
@@ -252,6 +252,20 @@ tracks/9/keys = {
|
|||||||
"times": PackedFloat32Array(0, 0.6, 1.2, 1.45)
|
"times": PackedFloat32Array(0, 0.6, 1.2, 1.45)
|
||||||
}
|
}
|
||||||
tracks/9/use_blend = true
|
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"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_w1utg"]
|
||||||
_data = {
|
_data = {
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ tracks/0/keys = {
|
|||||||
"times": PackedFloat32Array(0, 0.1, 0.90000004, 1),
|
"times": PackedFloat32Array(0, 0.1, 0.90000004, 1),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||||
"update": 0,
|
"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/type = "value"
|
||||||
tracks/1/imported = false
|
tracks/1/imported = false
|
||||||
@@ -53,10 +53,10 @@ tracks/1/path = NodePath("static:scale")
|
|||||||
tracks/1/interp = 1
|
tracks/1/interp = 1
|
||||||
tracks/1/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
"times": PackedFloat32Array(0, 0.1, 0.90000004, 1),
|
"times": PackedFloat32Array(0, 0.1, 1),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
"update": 0,
|
"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"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_i7b6y"]
|
||||||
@@ -70,7 +70,7 @@ size = Vector2(76, 12)
|
|||||||
|
|
||||||
[node name="VolcanoShadow" instance=ExtResource("1_4oiyn")]
|
[node name="VolcanoShadow" instance=ExtResource("1_4oiyn")]
|
||||||
script = ExtResource("2_i7b6y")
|
script = ExtResource("2_i7b6y")
|
||||||
speed = 30.0
|
speed = 25.0
|
||||||
penerate = 1.0
|
penerate = 1.0
|
||||||
penerateDamageReduction = 0.2
|
penerateDamageReduction = 0.2
|
||||||
autoSpawnAnimation = true
|
autoSpawnAnimation = true
|
||||||
|
|||||||
@@ -14,23 +14,26 @@ typeTopic = 2
|
|||||||
costBeachball = 300
|
costBeachball = 300
|
||||||
store = {
|
store = {
|
||||||
"atk": 10.0,
|
"atk": 10.0,
|
||||||
|
"count": 2.0,
|
||||||
"dmg1": 1.0,
|
"dmg1": 1.0,
|
||||||
"dmg2": 0.75,
|
"dmg2": 0.75,
|
||||||
"dmg3": 1.5,
|
"dmg3": 1.5,
|
||||||
"dmg4": 1.25,
|
"dmg4": 1.25,
|
||||||
|
"dmg5": 0.6,
|
||||||
"rotate": 0.05
|
"rotate": 0.05
|
||||||
}
|
}
|
||||||
storeType = {
|
storeType = {
|
||||||
"atk": 1,
|
"atk": 1,
|
||||||
|
"count": 1,
|
||||||
"dmg1": 2,
|
"dmg1": 2,
|
||||||
"dmg2": 2,
|
"dmg2": 2,
|
||||||
"dmg3": 2,
|
"dmg3": 2,
|
||||||
"dmg4": 2,
|
"dmg4": 2,
|
||||||
|
"dmg5": 2,
|
||||||
"rotate": 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
|
cooldown = 1750.0
|
||||||
debugRebuild = true
|
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" index="0"]
|
[node name="avatar" parent="container/info" index="0"]
|
||||||
texture = ExtResource("2_hh01t")
|
texture = ExtResource("2_hh01t")
|
||||||
@@ -47,4 +50,4 @@ quality = 4
|
|||||||
typeTopic = 2
|
typeTopic = 2
|
||||||
|
|
||||||
[node name="description" parent="container" index="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]"
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ class_name Volcano
|
|||||||
@onready var anchor: Node2D = $%anchor
|
@onready var anchor: Node2D = $%anchor
|
||||||
|
|
||||||
var rotates: float = 0
|
var rotates: float = 0
|
||||||
|
var count: int = 0
|
||||||
|
var dmg5: float = 0
|
||||||
|
var splitAngle: float = 10
|
||||||
|
|
||||||
func register():
|
func register():
|
||||||
animator.speed_scale = launcher.fields.get(FieldStore.Entity.ATTACK_SPEED)
|
animator.speed_scale = launcher.fields.get(FieldStore.Entity.ATTACK_SPEED)
|
||||||
@@ -17,12 +20,14 @@ func ai():
|
|||||||
)
|
)
|
||||||
|
|
||||||
func generateShadow():
|
func generateShadow():
|
||||||
for i in BulletBase.generate(
|
var startAngle = rotation - deg_to_rad(count * splitAngle / 2)
|
||||||
ComponentManager.getBullet("VolcanoShadow"),
|
for i in count:
|
||||||
launcher,
|
for bullet in BulletBase.generate(
|
||||||
textureSword.global_position,
|
ComponentManager.getBullet("VolcanoShadow"),
|
||||||
anchor.global_rotation,
|
launcher,
|
||||||
false, false, true, true
|
position,
|
||||||
):
|
startAngle + i * deg_to_rad(splitAngle),
|
||||||
if i is VolcanoShadow:
|
false, false, true, true
|
||||||
i.baseDamage = baseDamage
|
):
|
||||||
|
if bullet is VolcanoShadow:
|
||||||
|
bullet.baseDamage = baseDamage * dmg5
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ func update(to: int, origin: Dictionary, _entity: EntityBase):
|
|||||||
origin["dmg2"] += 0.03 * to * soulLevel
|
origin["dmg2"] += 0.03 * to * soulLevel
|
||||||
origin["dmg3"] += 0.03 * to * soulLevel
|
origin["dmg3"] += 0.03 * to * soulLevel
|
||||||
origin["dmg4"] += 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
|
origin["atk"] += 1 * to * soulLevel
|
||||||
return origin
|
return origin
|
||||||
func attack(entity: EntityBase):
|
func attack(entity: EntityBase):
|
||||||
@@ -20,3 +22,5 @@ func attack(entity: EntityBase):
|
|||||||
bullet.baseDamage = readStore("atk")
|
bullet.baseDamage = readStore("atk")
|
||||||
bullet.rotates = readStore("rotate")
|
bullet.rotates = readStore("rotate")
|
||||||
bullet.damageMultipliers = [readStore("dmg1"), readStore("dmg2"), readStore("dmg3"), readStore("dmg4")]
|
bullet.damageMultipliers = [readStore("dmg1"), readStore("dmg2"), readStore("dmg3"), readStore("dmg4")]
|
||||||
|
bullet.count = readStore("count")
|
||||||
|
bullet.dmg5 = readStore("dmg5")
|
||||||
|
|||||||
Reference in New Issue
Block a user