From 3aa28ecf39593902b905380bbe33fb675e1ff863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Sat, 7 Mar 2026 09:27:42 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E6=AD=A6=E5=99=A8=E7=B3=BB=E7=BB=9F):?= =?UTF-8?q?=20=E4=BC=98=E5=8C=96Oxygener=E6=AD=A6=E5=99=A8=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=B9=B6=E6=9B=B4=E6=96=B0=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重构Oxygener武器的攻击逻辑,将浓硝酸子弹作为火焰子弹的附属效果 更新武器描述文本以匹配新的攻击机制 修改AcidBulletBase中storm变量的类型为更通用的Node2D 移除Rooster角色中不再使用的武器 --- components/Characters/Rooster.tscn | 11 ++------ components/Weapons/Oxygener.tscn | 4 +-- scripts/Contents/Bullets/AcidBulletBase.gd | 2 +- scripts/Contents/Weapons/Oxygener.gd | 32 +++++++++++++--------- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/components/Characters/Rooster.tscn b/components/Characters/Rooster.tscn index 33e4583..e43148d 100644 --- a/components/Characters/Rooster.tscn +++ b/components/Characters/Rooster.tscn @@ -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") diff --git a/components/Weapons/Oxygener.tscn b/components/Weapons/Oxygener.tscn index ea9539e..bc40a5f 100644 --- a/components/Weapons/Oxygener.tscn +++ b/components/Weapons/Oxygener.tscn @@ -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]" diff --git a/scripts/Contents/Bullets/AcidBulletBase.gd b/scripts/Contents/Bullets/AcidBulletBase.gd index 10a0b8b..1857bbb 100644 --- a/scripts/Contents/Bullets/AcidBulletBase.gd +++ b/scripts/Contents/Bullets/AcidBulletBase.gd @@ -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]) diff --git a/scripts/Contents/Weapons/Oxygener.gd b/scripts/Contents/Weapons/Oxygener.gd index 2e88e25..dd48217 100644 --- a/scripts/Contents/Weapons/Oxygener.gd +++ b/scripts/Contents/Weapons/Oxygener.gd @@ -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