From c5d521136dfb84cacaa5d9764be591d9aa73437c Mon Sep 17 00:00:00 2001 From: pan Date: Thu, 4 Jun 2026 14:14:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D(=E5=8D=A1=E7=89=8C&=E6=96=BD?= =?UTF-8?q?=E6=B3=95=E7=B3=BB=E7=BB=9F):=20=E4=BF=AE=E6=AD=A3=E5=8D=A1?= =?UTF-8?q?=E7=89=8C=E6=B6=88=E8=80=97=E4=B8=8E=E6=96=BD=E6=B3=95=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E9=80=89=E6=8B=A9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 调整“持续天降火球”技能卡牌的法力消耗从5改为0,修复错误配置;优化敌方技能的施法目标选择逻辑,通过索敌范围获取真实敌人位置,替代原有的固定偏移位置,提升技能释放准确性 --- assets/script/game/common/config/CardSet.ts | 2 +- assets/script/game/hero/SCastSystem.ts | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/assets/script/game/common/config/CardSet.ts b/assets/script/game/common/config/CardSet.ts index 7b1e87c0..19191aad 100644 --- a/assets/script/game/common/config/CardSet.ts +++ b/assets/script/game/common/config/CardSet.ts @@ -139,7 +139,7 @@ CardPoolList.push( is_inst: true, t_times: 1, t_inv: 0, keep_waves: 15, overrides: { ap: 50 } }, { - uuid: 6101, type: CardType.Skill, cost: 5, weight: 10, pool_lv: 1, wave: 1, kind: CKind.Skill, card_lv: 1, + uuid: 6101, type: CardType.Skill, cost: 0, weight: 10, pool_lv: 1, wave: 1, kind: CKind.Skill, card_lv: 1, name: "持续天降火球", info: "战斗中每隔3秒释放一个火球,造成300%伤害,持续2波次", is_inst: false, t_times: 999, t_inv: 3, keep_waves: 15, overrides: { TGroup: TGroup.Enemy, ap: 300, hit_count: 2 } } diff --git a/assets/script/game/hero/SCastSystem.ts b/assets/script/game/hero/SCastSystem.ts index 78d6fc73..3977164f 100644 --- a/assets/script/game/hero/SCastSystem.ts +++ b/assets/script/game/hero/SCastSystem.ts @@ -112,6 +112,23 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate mockAttrs.freeze_chance = 0; mockAttrs.puncture_chance = 0; mockAttrs.fac = FacSet.HERO; + mockAttrs.type = HType.Long; // 假定为远程,拥有较长索敌范围 + + let targetPos: Vec3 | null = null; + if (!isFriendly) { + // 伪造一个 view 供找敌逻辑使用,位置为 spawnPos + const mockView = { + node: { position: spawnPos } + } as any; + // 获取全屏索敌范围 + const maxRange = this.resolveMaxCastRange(mockAttrs, mockAttrs.type as HType); + const target = this.findNearestEnemyInRange(mockAttrs, mockView, maxRange); + if (target && target.node) { + targetPos = this.resolveEnemyCastTargetPos(config, mockAttrs, mockView, target, maxRange); + } + // 如果全屏都没找到敌人,直接放弃释放伤害技能 + if (!targetPos) return; + } for (let i = 0; i < castTimes; i++) { if (isFriendly) { @@ -119,7 +136,7 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate if (friendlyTargets.length === 0) continue; this.applyFriendlySkillEffects(s_uuid, cardLv, config, null as any, mockAttrs, friendlyTargets, spawnPos); } else { - const enemyTargetPos = this.resolveRepeatCastTargetPos(new Vec3(spawnPos.x + 300, spawnPos.y, spawnPos.z), i); + const enemyTargetPos = this.resolveRepeatCastTargetPos(targetPos, i); this.createSkillEntityForCard(s_uuid, cardLv, mockAttrs, spawnPos, enemyTargetPos, i, overrides); } }