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

调整“持续天降火球”技能卡牌的法力消耗从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

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

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