공백지 출병 시 재야 장수의 수비 참여를 차단

defenderGenerals 선정이 nationId === defenderCity.nationId만 비교해
공백지(nationId 0)와 재야 장수(nationId 0)가 0 === 0으로 같은 세력으로
판정되었다. nationId 0는 실제 국가가 아니라 무소속을 뜻하므로
general.nationId !== 0 조건을 추가해 war/aftermath.ts의 수비국 장수
조건과 같은 의미로 맞춘다. 공백지 공격/공성/점령과 경로 탐색의 공백지
허용은 그대로 두고, 병력·훈련·사기를 갖춘 재야 장수는 수비하지 않고
국가 소속 수비 장수는 계속 수비함을 회귀 테스트로 고정한다.
This commit is contained in:
2026-09-02 14:59:00 +00:00
parent 77299ffe41
commit b1984669d4
2 changed files with 161 additions and 0 deletions
@@ -583,6 +583,11 @@ export class ActionDefinition<
const defenderGenerals = orderDefenderGenerals(
generals.filter(
(general) =>
// nationId 0는 "국가가 없음"을 뜻한다. 공백지(defenderCity.nationId
// === 0)에 머물러 있는 재야 장수는 0 === 0으로 맞아떨어져도 그
// 도시의 수비 세력이 아니다(war/aftermath.ts의 수비국 장수 조건과
// 같은 의미다).
general.nationId !== 0 &&
general.cityId === defenderCity.id &&
general.nationId === defenderCity.nationId &&
general.crew > 0 &&