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

refactor(武器系统): 优化Oxygener武器逻辑并更新描述

重构Oxygener武器的攻击逻辑,将浓硝酸子弹作为火焰子弹的附属效果
更新武器描述文本以匹配新的攻击机制
修改AcidBulletBase中storm变量的类型为更通用的Node2D
移除Rooster角色中不再使用的武器
This commit is contained in:
2026-03-07 09:27:42 +08:00
parent 205d6d8a12
commit 3aa28ecf39
4 changed files with 25 additions and 24 deletions
+3 -8
View File
@@ -1,9 +1,8 @@
[gd_scene load_steps=21 format=3 uid="uid://dky8574uqc18r"]
[gd_scene load_steps=20 format=3 uid="uid://dky8574uqc18r"]
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_e5pl8"]
[ext_resource type="Script" uid="uid://cthtupc6dtbav" path="res://scripts/Contents/Characters/Rooster.gd" id="2_oqdqd"]
[ext_resource type="PackedScene" uid="uid://dgxvgsipl0gr1" path="res://components/Weapons/CursorKnife.tscn" id="3_0omr3"]
[ext_resource type="PackedScene" uid="uid://c0n3igy4hucrg" path="res://components/Weapons/PurpleCrystal.tscn" id="4_0omr3"]
[ext_resource type="PackedScene" uid="uid://u0djqwuuysp8" path="res://components/Weapons/Volcano.tscn" id="3_da2ca"]
[ext_resource type="AudioStream" uid="uid://cdrevrq7n6yqa" path="res://resources/sounds/effect/Boing.mp3" id="4_66s6c"]
[ext_resource type="AudioStream" uid="uid://benyec5bqni0b" path="res://resources/sounds/effect/Chomp.wav" id="4_k0yme"]
[ext_resource type="AudioStream" uid="uid://dmxh3bpk8vyy5" path="res://resources/sounds/effect/Coin.mp3" id="5_xnbhq"]
@@ -102,11 +101,7 @@ process_material = SubResource("ParticleProcessMaterial_joj4g")
[node name="weaponStore" parent="." index="2"]
process_mode = 4
[node name="CursorKnife" parent="weaponStore" index="0" instance=ExtResource("3_0omr3")]
offset_bottom = 350.0
[node name="PurpleCrystal" parent="weaponStore" index="1" instance=ExtResource("4_0omr3")]
debugRebuild = false
[node name="Volcano" parent="weaponStore" index="0" instance=ExtResource("3_da2ca")]
[node name="sprint" parent="sounds" index="0"]
stream = ExtResource("4_66s6c")
+2 -2
View File
@@ -22,7 +22,7 @@ storeType = {
"max-n": 1,
"min-n": 1
}
descriptionTemplate = "大概率高速喷出火焰,造成$fireatk点伤害。小概率喷出$min-n~$max-n滴[b]浓硝酸[/b],每滴造成$atk点伤害。[b]火焰[/b]具有高额击退效果,[b]浓硝酸[/b]液滴的射程较短。"
descriptionTemplate = "高速喷出[b]火焰[/b],造成$fireatk点伤害。小概率喷出[b]硝化火[/b],召唤$min-n~$max-n滴[b]浓硝酸[/b]围绕在火焰旁,每滴造成$atk点伤害。[b]火焰[/b]具有高额击退效果,[b]浓硝酸[/b]液滴的射程较短。"
cooldown = 50.0
debugRebuild = true
@@ -35,4 +35,4 @@ quality = 0
typeTopic = 2
[node name="description" parent="container" index="2"]
text = "[center]大概率高速喷出火焰,造成[color=cyan]1.00[/color]点伤害。小概率喷出[color=cyan]3[/color]~[color=cyan]7[/color]滴[b]浓硝酸[/b],每滴造成[color=cyan]3.00[/color]点伤害。[b]火焰[/b]具有高额击退效果,[b]浓硝酸[/b]液滴的射程较短。[/center]"
text = "[center]高速喷出[b]火焰[/b],造成[color=cyan]1.00[/color]点伤害。小概率喷出[b]硝化火[/b],召唤[color=cyan]3[/color]~[color=cyan]7[/color]滴[b]浓硝酸[/b]围绕在火焰旁,每滴造成[color=cyan]3.00[/color]点伤害。[b]火焰[/b]具有高额击退效果,[b]浓硝酸[/b]液滴的射程较短。[/center]"
+1 -1
View File
@@ -12,7 +12,7 @@ var arg2 = 0
var arg3 = 0
var randomPercent: float = 0
var storm: AcidStormBullet = null
var storm: Node2D = null
func register():
scale.y *= MathTool.randomChoiceFrom([-1, 1])
+19 -13
View File
@@ -7,17 +7,23 @@ func update(to: int, origin: Dictionary, _entity: EntityBase):
origin["max-n"] += 2 * soulLevel
return origin
func attack(entity: EntityBase):
var bulletName = MathTool.randomChoiceFromWeights(["OxygenFire", "AcidN"], [10, 1])
for i in randi_range(readStore("min-n"), readStore("max-n")) if bulletName == "AcidN" else 1:
for bullet in BulletBase.generate(
ComponentManager.getBullet(bulletName),
entity,
entity.findWeaponAnchor("normal"),
entity.position.angle_to_point(get_global_mouse_position()),
):
if bullet is OxygenFire:
bullet.baseDamage = readStore("fireatk")
elif bullet is AcidN:
bullet.baseDamage = readStore("atk")
bullet.lifeTime *= 0.5
for bullet in BulletBase.generate(
ComponentManager.getBullet("OxygenFire"),
entity,
entity.findWeaponAnchor("normal"),
entity.position.angle_to_point(get_global_mouse_position()),
):
if bullet is OxygenFire:
bullet.baseDamage = readStore("fireatk")
if MathTool.rate(0.1):
for i in randi_range(readStore("min-n"), readStore("max-n")):
for n in BulletBase.generate(
ComponentManager.getBullet("AcidN"),
entity,
bullet.position,
0,
):
if n is AcidN:
n.baseDamage = readStore("atk")
n.storm = bullet
return true