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); } }