67 lines
2.2 KiB
TypeScript
67 lines
2.2 KiB
TypeScript
import { AnimationState } from '../../../types';
|
||
import type { StateFunctionRuntimeSource } from '../types';
|
||
|
||
/**
|
||
* idle_rest_focus
|
||
*
|
||
* 空闲状态下的原地恢复动作。它不会推进遭遇,而是给玩家一个
|
||
* 在非战斗场景里回收少量血蓝的缓冲回合。
|
||
*/
|
||
export const IDLE_REST_FOCUS_FUNCTION_SOURCE: StateFunctionRuntimeSource = {
|
||
definition: {
|
||
id: 'idle_rest_focus',
|
||
state: 'idle',
|
||
category: 'recovery',
|
||
text: '原地调息恢复',
|
||
description: '暂时停步整理呼吸,恢复少量生命与灵力,继续保持空闲状态。',
|
||
visual: {
|
||
playerAnimation: AnimationState.IDLE,
|
||
playerMoveMeters: 0,
|
||
playerOffsetY: 0,
|
||
playerFacing: 'right',
|
||
scrollWorld: false,
|
||
},
|
||
effect: {
|
||
healAmount: 10,
|
||
manaRestore: 15,
|
||
sceneShift: 0,
|
||
enterBattle: false,
|
||
},
|
||
},
|
||
promptDescription:
|
||
'原地调息、休整或恢复状态,文案可以自然改写,但仍要保持这是恢复。',
|
||
documentation: {
|
||
id: 'idle_rest_focus',
|
||
domain: 'state',
|
||
title: '原地调息恢复',
|
||
source: 'src/data/functionCatalog/state/idleRestFocus.ts',
|
||
summary: '空闲阶段用于回血回蓝的恢复 function。',
|
||
detailedDescription:
|
||
'它承担非战斗状态下的短暂停步与内息整理,让玩家不推进主线遭遇,也能通过一回合修整状态。',
|
||
trigger: '仅在 idle 状态下参与候选,并会在生命或灵力偏低时提升优先级。',
|
||
execution:
|
||
'不推动场景前进,effect 直接提供 healAmount 与 manaRestore,确保结果稳定由本地规则控制。',
|
||
result: '适合战后休整、资源吃紧,或玩家想稳一下再继续探路时使用。',
|
||
state: 'idle',
|
||
category: 'recovery',
|
||
active: true,
|
||
},
|
||
runtime: {
|
||
buildSuggestedActionText({ metrics }) {
|
||
if (metrics.playerHpRatio <= 0.35) {
|
||
return '原地打坐恢复气血';
|
||
}
|
||
if (metrics.playerManaRatio <= 0.35) {
|
||
return '盘坐调息恢复灵力';
|
||
}
|
||
return '原地调息整理状态';
|
||
},
|
||
getPriority({ metrics }) {
|
||
return metrics.playerHpRatio <= 0.35 || metrics.playerManaRatio <= 0.35
|
||
? 8
|
||
: 2;
|
||
},
|
||
},
|
||
};
|
||
|