import { AnimationState } from '../../../types'; import type { StateFunctionRuntimeSource } from '../types'; /** * battle_all_in_crush * * 战斗中的正面爆发动作。它要求主角不绕、不拖,直接把当前回合的叙事、 * 技能权重和视觉表现都推向“强压正面敌人”的方向。 */ export const BATTLE_ALL_IN_CRUSH_FUNCTION_SOURCE: StateFunctionRuntimeSource = { definition: { id: 'battle_all_in_crush', state: 'battle', category: 'battle', text: '战斗:全力压上', description: '正面强攻,优先触发高爆发和终结类技能,伤害更高,但承受的反击也更重。', visual: { playerAnimation: AnimationState.SKILL3, playerMoveMeters: 0, playerOffsetY: 0, playerFacing: 'right', scrollWorld: false, monsterActionTemplate: '{monster}被正面强攻逼得节节后退', monsterAnimation: 'attack', monsterMoveMeters: 0, }, effect: { damageMultiplier: 1.3, incomingDamageMultiplier: 1.15, turnTimeMultiplier: 1, skillWeights: { finisher: 5, burst: 4, mobility: 2, steady: 1.5, projectile: 1.2, }, }, }, promptDescription: '对面前敌人全力猛攻,文案可以自然改写,但仍要保持这是正面强攻而不是别的行为。', documentation: { id: 'battle_all_in_crush', domain: 'state', title: '战斗:全力压上', source: 'src/data/functionCatalog/state/battleAllInCrush.ts', summary: '战斗阶段的高风险高收益强攻 function。', detailedDescription: '这个 function 用于把当前回合塑造成硬碰硬的压制回合,让主角优先打出爆发和终结倾向更强的技能或叙事动作。', trigger: '仅在 battle 状态且场上仍有存活敌人时参与候选。', execution: '提高 damageMultiplier,并抬高 finisher / burst 权重,同时略微提高 incomingDamageMultiplier,突出换血压力。', result: '适合在残局抢收头、需要快速压血,或者希望把敌人直接压回去时使用。', state: 'battle', category: 'battle', active: true, }, runtime: { buildSuggestedActionText({ metrics, environment }) { if (metrics.monsterHpRatio <= 0.25) { return `压上去收掉${environment.monsterName}最后一口气`; } if (metrics.playerHpRatio <= 0.35) { return `顶着伤势强压${environment.monsterName}赌一波强杀`; } return `正面强压${environment.monsterName}不给喘息`; }, getPriority({ metrics }) { return metrics.monsterHpRatio <= 0.25 ? 8 : metrics.playerHpRatio <= 0.35 ? 2 : 4; }, }, };