72 lines
2.4 KiB
TypeScript
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;
|
|
},
|
|
},
|
|
};
|
|
|