56 lines
2.0 KiB
TypeScript
56 lines
2.0 KiB
TypeScript
import { AnimationState } from '../../../types';
|
|
import type { StateFunctionSource } from '../types';
|
|
|
|
/**
|
|
* battle_escape_breakout
|
|
*
|
|
* 战斗中的脱离动作。它不是继续换血,而是明确让主角放弃当前缠斗,
|
|
* 把叙事重心切到“拉开距离、甩开追击、离开战场”。
|
|
*/
|
|
export const BATTLE_ESCAPE_BREAKOUT_FUNCTION_SOURCE: StateFunctionSource = {
|
|
definition: {
|
|
id: 'battle_escape_breakout',
|
|
state: 'battle',
|
|
category: 'escape',
|
|
text: '逃跑:转身甩开',
|
|
description: '立刻放弃缠斗,转身拉开距离,冲向下一片区域。',
|
|
visual: {
|
|
playerAnimation: AnimationState.RUN,
|
|
playerMoveMeters: -0.6,
|
|
playerOffsetY: 0,
|
|
playerFacing: 'left',
|
|
scrollWorld: true,
|
|
monsterActionTemplate: '{monster}在后方死死咬住不放',
|
|
monsterAnimation: 'idle',
|
|
monsterMoveMeters: 0,
|
|
},
|
|
effect: {
|
|
escapeDurationMs: 5000,
|
|
escapeDistance: 5,
|
|
monsterLagStart: 0.52,
|
|
monsterLagEnd: 0.34,
|
|
sceneShift: 0,
|
|
enterBattle: false,
|
|
},
|
|
},
|
|
promptDescription:
|
|
'从当前战斗中脱身、拉开距离或撤离,文案可以自然改写,但仍要保持这是逃脱而不是继续交战。',
|
|
documentation: {
|
|
id: 'battle_escape_breakout',
|
|
domain: 'state',
|
|
title: '逃跑:转身甩开',
|
|
source: 'src/data/functionCatalog/state/battleEscapeBreakout.ts',
|
|
summary: '用于脱战、逃离和切离镜头压力的战斗 function。',
|
|
detailedDescription:
|
|
'它让回合从“继续打”切换到“先活下来”,并带出逃跑镜头、距离拉开和怪物追击落后的演出逻辑。',
|
|
trigger: '仅在 battle 状态下参与候选,并会在低血时提升优先级。',
|
|
execution:
|
|
'不追求伤害,而是提供 escapeDurationMs、escapeDistance 与 monsterLag 参数,驱动逃跑流程与镜头表现。',
|
|
result: '适合生命见底、资源不够,或玩家主动决定放弃当前战斗时使用。',
|
|
state: 'battle',
|
|
category: 'escape',
|
|
active: true,
|
|
},
|
|
};
|
|
|