# 커맨드와 실행 시기

## 화면의 상태 표시

서버는 내 장수, 도시, 국가와 현재 시점으로 각 커맨드를 사전 평가합니다.

| 표시           | 의미                                                                          |
| -------------- | ----------------------------------------------------------------------------- |
| 사용 가능      | 현재 알려진 조건을 만족합니다. 실행 시 다시 검사합니다.                       |
| 대상 선택 필요 | 도시·장수·국가·수량 같은 입력을 고르면 판정할 수 있습니다.                    |
| 사용 불가      | 현재 확정된 조건을 만족하지 않으며 이유가 함께 표시됩니다.                    |
| 정보 부족      | 사전 화면에 없는 실행 context가 필요합니다. 실제 실행 성공을 뜻하지 않습니다. |

전체 key와 화면 이름은 [자동 생성 커맨드 목록](./command-catalog.generated.md)에 있습니다.

## 시기별로 보는 장수 커맨드

### 재야·방랑 상태

임관, 무작위 임관, 장수를 따라 임관, 거병, 건국 계열이 중심입니다. 서버의 가입 방식이 “무작위 임관만”
이면 직접 국가를 고르는 임관·등용장 수락은 막힙니다. 초반에는 국가별 인원 제한과 건국 가능 도시·시점도
적용될 수 있습니다.

### 국가 소속·도시 주둔

농지 개간, 상업 투자, 치안 강화, 수비 강화, 성벽 보수, 정착 장려, 기술 연구, 헌납처럼 도시·국가를
전제로 한 내정 커맨드를 사용할 수 있습니다. 대부분은 다음을 함께 검사합니다.

- 재야나 방랑 국가가 아닌지
- 내 장수가 실제 소속 도시를 점유하고 있는지
- 해당 도시가 보급 상태인지
- 목표 내정치가 이미 최대인지
- 필요한 금·쌀과 능력·병력이 있는지

### 병력이 있을 때

훈련, 사기 진작, 단련, 전투 태세, 숙련 전환, 이동·집합·귀환, 출병을 검토할 수 있습니다. 출병은 병력과
군량뿐 아니라 인접·경로, 대상 도시, 외교 관계, 보호 기간과 병종 조건을 실행 시점에 다시 확인합니다.

### 대상이 필요한 행동

등용, 증여, 첩보, 화계, 파괴, 선동, 탈취, 이동·출병 등은 대상이나 수량을 선택해야 합니다. 목록에 대상을
고를 수 없으면 이미 사라졌거나 현재 권한·공개 범위에서 선택할 수 없는 경우일 수 있습니다.

### 국가 이탈·신분 변경

하야, 은퇴, 방랑, 선양, 모반 시도, 해산은 장수 또는 국가의 소속과 생애 상태를 크게 바꿉니다. 군주인지,
국가가 방랑 상태인지, 건국 직후인지, 후계 대상이 유효한지 같은 추가 조건이 있습니다. 로그와 확인 문구를
읽고 가까운 후속 예턴도 함께 점검해 주세요.

## 시기별로 보는 국가 커맨드

국가 예턴은 국가 운영 권한이 있을 때 보입니다. 많은 국가 명령은 군주만 실행할 수 있고, 일부 화면 운영
기능은 직책별 권한을 따릅니다.

### 상시 국가 운영

포상, 발령, 부대 탈퇴 지시, 몰수, 물자 원조, 국호·국기 변경, 천도, 증축·감축, 인구 이동 등이 있습니다.
국고·군량, 수도와 대상 도시, 장수·직책, 보급과 도시 규모 조건을 확인합니다.

### 외교 상태에 따른 명령

선전포고는 기본 구현에서 scenario 시작 연도보다 적어도 1년 지난 뒤에 허용되며, 대상 국가와의 상태도
맞아야 합니다. 종전·불가침·불가침 파기 제안은 현재 외교 관계와 최소 기간을 검사합니다. 상대가 제안을
수락하는 즉시 행동은 일반 예약 국가 턴과 별도의 승인 흐름으로 처리됩니다.

### 전략 커맨드

의병 모집, 허보, 필사즉생, 백성 동원, 이호경식, 수몰, 급습, 피장파장, 초토화는 군주 여부와 전략 커맨드
재사용 가능 상태를 검사합니다. 명령마다 대상 도시·국가, 교전, 수도, 자원과 추가 상태가 다릅니다.
초반 보호 기간에는 의병 모집·몰수 등 일부 행동이 제한됩니다.

### 특수 병종 연구

`event_*연구` 명령은 scenario가 해당 명령을 profile에 넣고 필요한 연구 flag가 아직 없을 때 사용할 수
있습니다. 군주와 국고 조건을 검사하며 11턴 또는 23턴을 연속으로 쌓은 뒤 비용을 지불하고 병종 사용
권한을 얻습니다. 소스의 선행 턴 값 11·23은 완료 턴을 포함하지 않으므로 화면에서 필요한 전체 실행은
각각 12턴·24턴입니다.

## 보호 기간과 연도

scenario의 `startYear`와 `openingPartYear`가 초반 제한의 기준입니다. 다음은 대표적인 동작이며 서버별
상수에 따라 실제 연도가 달라집니다.

- 출병은 예약 사전 판단과 실제 실행 모두 보호 기간을 고려합니다.
- 방랑, 의병 모집, 몰수 같은 일부 국가 변화도 초반에는 제한됩니다.
- 기술 연구의 허용 기술 단계와 임관 인원 제한은 경과 연도에 따라 넓어질 수 있습니다.
- 선전포고는 시작 직후가 아니라 상대 연도 1 이상에서 가능합니다.

“몇 년 몇 월부터”를 고정 문구로 외우기보다 현재 서버의 시작 연도와 화면의 불가 이유를 확인해 주세요.

## 실패했을 때

1. 메인 로그에서 실패 이유를 확인합니다.
2. 자원·병력, 소속 도시와 보급, 직책, 대상과 외교 상태를 다시 확인합니다.
3. 여러 턴 뒤 실행될 명령이면 앞선 예턴이 상태를 바꾸는지 살펴봅니다.
4. command table을 새로 불러와 대상 목록과 가능 상태를 갱신합니다.
5. 동일 요청을 반복 전송하지 말고 화면이 최신 revision을 받은 뒤 다시 저장해 주세요.
