fix: 특수 유저 커맨드의 Ref 호환 경계를 보강한다
수뇌 국가 설정과 NPC 정책을 actor-bound ENGINE mutation으로 옮기고, 추방·등용·점령·멸망·아이템 폐기의 특수 분기를 Ref와 맞춘다. 요청 ID를 사용자·프로필별로 격리하고 토너먼트 손상 projection을 fail-closed하며 실제 DB 및 Ref 차등 회귀를 보강한다.
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user