Files
Genarrative/src/data/functionCatalog/state/battleFeintStep.ts
T
2026-04-28 19:36:39 +08:00

72 lines
2.4 KiB
TypeScript

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