import { AnimationState } from '../../../types'; import type { StateFunctionRuntimeSource } from '../types'; /** * battle_feint_step * * 战斗中的机动切入动作。它把重点放在虚晃、变线与抢身位, * 让战斗叙事更偏向灵活切入而不是硬扛伤害。 */ export const BATTLE_FEINT_STEP_FUNCTION_SOURCE: StateFunctionRuntimeSource = { definition: { id: 'battle_feint_step', state: 'battle', category: 'battle', text: '战斗:虚晃切入', description: '通过假动作和变线切入制造破绽,偏向机动技能,伤害适中但更安全。', visual: { playerAnimation: AnimationState.SKILL1_JUMP, playerMoveMeters: 0, playerOffsetY: 0, playerFacing: 'right', scrollWorld: false, monsterActionTemplate: '{monster}被晃得节奏发虚,动作明显迟疑', monsterAnimation: 'attack', monsterMoveMeters: 0, }, effect: { damageMultiplier: 1.05, incomingDamageMultiplier: 0.8, skillWeights: { mobility: 5, burst: 2.4, steady: 2, finisher: 1.4, projectile: 1.2, }, }, }, promptDescription: '通过虚晃、变线或切步逼近面前敌人,文案可以自然改写,但仍要保持这是机动切入。', documentation: { id: 'battle_feint_step', domain: 'state', title: '战斗:虚晃切入', source: 'src/data/functionCatalog/state/battleFeintStep.ts', summary: '通过身位变化制造安全破绽的机动战斗 function。', detailedDescription: '它适合把回合讲成“先骗、再切、再进”的过程,让主角依靠节奏误导和位移逼出敌人的迟疑。', trigger: '仅在 battle 状态下参与候选。', execution: '小幅提高输出,显著降低 incomingDamageMultiplier,并把技能权重偏到 mobility,让系统更愿意选机动型动作。', result: '适合想稳一点地逼近敌人、减少硬吃反击,或需要围绕灵巧角色塑造打法时使用。', state: 'battle', category: 'battle', active: true, }, runtime: { buildSuggestedActionText({ metrics, environment }) { if (metrics.monsterHpRatio <= 0.35) { return `虚晃切进去收掉${environment.monsterName}`; } return `借假动作切进${environment.monsterName}身前`; }, getPriority({ metrics }) { return metrics.monsterHpRatio <= 0.5 ? 5 : 3; }, }, };