From dfb5f8c926d83b9b84b4779585fef8085574a229 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: Sun, 10 May 2026 15:00:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=AD=A6=E5=99=A8):=20=E4=B8=BAHCN?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=B7=BB=E5=8A=A0BigLaser=E6=AD=A6=E5=99=A8?= =?UTF-8?q?=E5=B9=B6=E8=B0=83=E6=95=B4=E4=BC=A4=E5=AE=B3=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在HCN角色中新增BigLaser武器 - 修改BigLaser的executeAtk为固定值1 - 调整bulletHit和calculateDamage方法,添加entity参数 --- components/Characters/HCN.tscn | 3 +++ scripts/Contents/Weapons/BigLaser.gd | 3 ++- scripts/Statemachine/BulletBase.gd | 4 ++-- scripts/Statemachine/EntityBase.gd | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/components/Characters/HCN.tscn b/components/Characters/HCN.tscn index 2caca8f..851c152 100644 --- a/components/Characters/HCN.tscn +++ b/components/Characters/HCN.tscn @@ -3,9 +3,12 @@ [ext_resource type="PackedScene" uid="uid://bs863g2s8r770" path="res://components/Abstracts/PlayerBase.tscn" id="1_eeneu"] [ext_resource type="Script" uid="uid://bevc4f6apql4t" path="res://scripts/Contents/Characters/HCN.gd" id="2_f7uj3"] [ext_resource type="PackedScene" uid="uid://yq7vmijwvgx1" path="res://components/Weapons/AcidWind.tscn" id="3_2fpmn"] +[ext_resource type="PackedScene" uid="uid://cxabqjo7skxev" path="res://components/Weapons/BigLaser.tscn" id="4_4gd8a"] [node name="HCN" unique_id=1711205167 instance=ExtResource("1_eeneu")] script = ExtResource("2_f7uj3") displayName = "氰化氢" [node name="AcidWind" parent="weaponStore" parent_id_path=PackedInt32Array(1319091445) index="0" unique_id=1599717188 instance=ExtResource("3_2fpmn")] + +[node name="BigLaser" parent="weaponStore" parent_id_path=PackedInt32Array(1319091445) index="1" unique_id=906291376 instance=ExtResource("4_4gd8a")] diff --git a/scripts/Contents/Weapons/BigLaser.gd b/scripts/Contents/Weapons/BigLaser.gd index 7421485..b6a06f9 100644 --- a/scripts/Contents/Weapons/BigLaser.gd +++ b/scripts/Contents/Weapons/BigLaser.gd @@ -57,7 +57,8 @@ func attack(entity: EntityBase): var bigLaser: BigLaser = bullet bigLaser.dotTime = readStore("time") * 1000 bigLaser.baseDamage = readStore("atk") - bigLaser.executeAtk = readStoreExtra("executeAtk") + # bigLaser.executeAtk = readStoreExtra("executeAtk") + bigLaser.executeAtk = 1 await TickTool.frame() bigLaser.animator.speed_scale = 5 / (5 + readStoreExtra("duration")) return true diff --git a/scripts/Statemachine/BulletBase.gd b/scripts/Statemachine/BulletBase.gd index f437b88..fcfe966 100644 --- a/scripts/Statemachine/BulletBase.gd +++ b/scripts/Statemachine/BulletBase.gd @@ -141,10 +141,10 @@ func setupCuttable(cutSpeed: float): ) func getDamage(): return baseDamage * damageMultipliers[usingDamageMultiplier] -func calculateDamage(crit: bool, entity: Variant): +func calculateDamage(crit: bool, something: Variant): var baseDmg = getDamage() * launcher.fields.get(FieldStore.Entity.DAMAGE_MULTIPILER) * randf_range(1 - GameRule.damageOffset, 1 + GameRule.damageOffset) var damage = baseDmg + baseDmg * int(crit) * launcher.fields.get(FieldStore.Entity.CRIT_DAMAGE) - return damageOverride(damage, entity) + return damageOverride(damage, something) func determineCrit(): return MathTool.rate(launcher.fields.get(FieldStore.Entity.CRIT_RATE) + GameRule.critRateInfluenceByLuckValue * launcher.fields[FieldStore.Entity.LUCK_VALUE]) func hitEntity(target: Node): diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 57b03da..5ce5655 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -285,7 +285,7 @@ func takeDamage(baseDamage: float, crit: bool = false, perfectMiss: bool = false func bulletHit(bullet: BulletBase, crit: bool, damageOverride = "none"): # 当受伤时 hurtAnimator.play("hurt") - var damage = bullet.calculateDamage(crit) if damageOverride == "none" else damageOverride + var damage = bullet.calculateDamage(crit, self ) if damageOverride == "none" else damageOverride var perfectMiss = false if sprinting: playSound("miss")