修复(卡牌&施法系统): 修正卡牌消耗与施法目标选择逻辑

调整“持续天降火球”技能卡牌的法力消耗从5改为0,修复错误配置;优化敌方技能的施法目标选择逻辑,通过索敌范围获取真实敌人位置,替代原有的固定偏移位置,提升技能释放准确性
This commit is contained in:
pan
2026-06-04 14:14:02 +08:00
parent 27cd20c70d
commit c5d521136d
2 changed files with 19 additions and 2 deletions

View File

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