fix: 특수 유저 커맨드의 Ref 호환 경계를 보강한다

수뇌 국가 설정과 NPC 정책을 actor-bound ENGINE mutation으로 옮기고, 추방·등용·점령·멸망·아이템 폐기의 특수 분기를 Ref와 맞춘다.

요청 ID를 사용자·프로필별로 격리하고 토너먼트 손상 projection을 fail-closed하며 실제 DB 및 Ref 차등 회귀를 보강한다.
This commit is contained in:
2026-08-24 12:10:57 +00:00
parent 5389f8ed94
commit 630bc29100
74 changed files with 3893 additions and 1141 deletions
@@ -2541,7 +2541,7 @@ export const createImmediateGeneralActionExecutor = async (options: {
const failureText =
definition.formatConstraintFailure?.(reason, constraintCtx, args, view) ??
`${reason} ${definition.name} 실패.`;
if (input.actionKey === 'che_접경귀환' || input.actionKey === 'che_등용수락') {
if (input.actionKey === 'che_접경귀환') {
options.world.pushLog(createGeneralActionLog(general.id, failureText), general.turnTime);
}
return { ok: false, reason: failureText };
@@ -2671,10 +2671,16 @@ export const createImmediateGeneralActionExecutor = async (options: {
nextGeneral = applyLegacyGeneralProgression(
{
...nextGeneral,
lastTurn: {
command: definition.name,
arg: extractArgsRecord(args),
},
// Ref's recruitment-letter acceptance is an immediate
// side action and never replaces the receiver's
// reserved-command repetition state.
lastTurn:
input.actionKey === 'che_등용수락'
? general.lastTurn
: {
command: definition.name,
arg: extractArgsRecord(args),
},
},
general,
input.actionKey,