국가 관계와 우호도: 저장 위치, 처음 값, 월간 변화, 해전 결과, 추방
나라끼리의 관계(외교)와 주인공에 대한 각 나라의 우호도입니다. 표시 방법은 index.md를 따릅니다.
나라 번호: 0 포르투갈, 1 에스파냐, 2 오스만 투르크, 3 잉글랜드, 4 이탈리아, 5 네덜란드, 6 해적.
1. 저장 위치
확인됨[직접] (기록 그룹 00·01, KO 0x36A2E)
| 자료 | 위치 | 크기 |
|---|---|---|
| 국가 기록 7개 | 세이브 슬롯 0x04D6 (DS:0x1106) | 32바이트 |
| 주인공 명성·우호도 6명 | 세이브 슬롯 0x05B6 (DS:0x11E6) | 14바이트 |
국가 기록(32바이트). 필드 뜻은 확인됨[대조], 처음 값은 확인됨[직접](DATA1.LZW 15번 엔트리를 직접 읽음):
| 오프셋 | 내용 |
|---|---|
+0x00 | 길드 이익(u16) |
+0x02 | 노리는 나라(7 = 플레이어) |
+0x03 | 전략 모드 |
+0x04 | 상선대 목적 항구(0xFF 없음) |
+0x05~+0x08 | 왕실 원조(금 천 단위, 미사용, 배 종류, 배 수) |
+0x09 | 공격성 |
+0x0A | 수도 |
+0x0B~+0x11 | 다른 나라 7곳에 대한 관계(저장값 − 30 = 표시값) |
+0x12~+0x18 | 상태: 동맹 0x20, 봉쇄 0x10, 하위 4비트는 월간 값 |
주인공 기록(14바이트, 확인됨[직접]):
| 오프셋 | 내용 |
|---|---|
+0x00 | 교역 명성(u16) |
+0x02 | 해적 명성(u16) |
+0x04 | 모험 명성(u16) |
+0x06~+0x0C | 나라 7곳의 우호도(저장값 − 100 = 표시값) |
+0x0D | 작위(0 없음 ~ 9) |
명성 세 위치는 시나리오가 읽는 필드로, 작위는 점술가 코드가 읽는 필드로 직접 확인했습니다(scenario.md). 우호도의 −100 치우침은 확인됨[대조]입니다.
2. 처음 값 (새 게임 자료)
확인됨[직접] (DATA1.LZW 15번 엔트리 0x04D6부터)
| 나라 | 공격성 | 수도(항구 번호) | 노리는 나라 | 전략 모드 | 상선대 목적 항구 |
|---|---|---|---|---|---|
| 포르투갈 | 60 | 0 리스본 | 2 | 0 | 17 |
| 에스파냐 | 70 | 1 세빌리아 | 6 | 1 | 3 |
| 오스만 | 80 | 2 이스탄불 | 4 | 2 | 61 |
| 잉글랜드 | 90 | 29 런던 | 1 | 5 | 52 |
| 이탈리아 | 50 | 8 제노바 | 2 | 0 | 27 |
| 네덜란드 | 85 | 33 암스테르담 | 0 | 5 | 59 |
| 해적 | 100 | 4 | 1 | 8 | 없음 |
표시 관계(행이 상대를 보는 값):
| 에서 / 에게 | 포 | 에 | 오 | 잉 | 이 | 네 | 해 |
|---|---|---|---|---|---|---|---|
| 포르투갈 | 70 | 55 동맹 | 0 | 20 | 40 | 20 | 10 |
| 에스파냐 | 55 동맹 | 70 | 5 | 15 | 35 | 20 | −10 |
| 오스만 | 0 | 5 | 70 | 25 | −5 봉쇄 | 20 | 40 |
| 잉글랜드 | 20 | 15 | 25 | 70 | 20 | 30 | 30 |
| 이탈리아 | 40 | 35 | −5 봉쇄 | 20 | 70 | 20 | 0 |
| 네덜란드 | 20 | 20 | 20 | 30 | 20 | 70 | 30 |
| 해적 | 10 | −10 | 40 | 30 | 0 | 30 | 70 |
새 게임 자료에서 길드 이익과 주인공 기록(명성, 우호도, 작위)은 모두 0입니다. 게임 시작 때 다른 값으로 채우는지는 확인하지 않았습니다.
3. 월간 변화
확인됨[대조] (KO 0x1CFD1 월간 반복, KO 0x1CDAD 값 계산, KO 0x1CF46 실행, KO 0x1CEB4 항구 빼앗기; 영문판 EN 0x1D363/0x1D13F/0x1D2D8/0x1D246과 명령어 차이 0~9, 상수 차이 없음)
매달 여섯 나라의 모든 순서쌍(i가 j를 봄)에 대해 i의 j에 대한 상태 바이트 하위 4비트에 값을 쓰고, 그 값에 따라 행동합니다.
값 표는 확인됨[직접] (DS:0xAC74 = 파일 0x47924, 36바이트; 첨자 = 관계 구간 × 12 + 이익 비교 × 3 + 상태):
관계 구간 = floor((저장 관계 + 9) / 40) 0: 저장 0~30, 1: 31~70, 2: 71~110
이익 비교 0: i 이익/2 > j 이익 1: j 이익/2 > i 이익 2: i > j 3: 그 밖(j ≥ i)
상태 0: 동맹 1: 봉쇄 2: 둘 다 아님
| 관계 구간 | 이익 비교 | 동맹 | 봉쇄 | 둘 다 아님 |
|---|---|---|---|---|
| 0 | i가 j의 두 배 넘음 | 0 | 3 | 0 |
| 0 | j가 i의 두 배 넘음 | 1 | 3 | 5 |
| 0 | i가 더 큼 | 0 | 3 | 1 |
| 0 | j가 같거나 큼 | 1 | 3 | 5 |
| 1 | i가 j의 두 배 넘음 | 6 | 4 | 규칙 9 |
| 1 | j가 i의 두 배 넘음 | 1 | 3 | 규칙 10 |
| 1 | i가 더 큼 | 6 | 규칙 7 | 규칙 9 |
| 1 | j가 같거나 큼 | 0 | 3 | 규칙 10 |
| 2 | i가 j의 두 배 넘음 | 6 | 4 | 2 |
| 2 | j가 i의 두 배 넘음 | 6 | 3 | 1 |
| 2 | i가 더 큼 | 6 | 규칙 7 | 규칙 8 |
| 2 | j가 같거나 큼 | 6 | 규칙 7 | 규칙 8 |
규칙(확인됨[직접], KO 0x1CE5D~0x1CEA1; R = 저장 관계):
- 규칙 7:
random(100) < R이면 3, 아니면 0. - 규칙 8:
random(100) > R이면 2, 아니면 0. - 규칙 9:
30 + random(20) > R이면 2, 아니면 0. - 규칙 10:
30 + random(10) > R이면 2, 아니면 0.
값에 따른 행동(확인됨[대조], 상태 바이트 전체로 비교하므로 동맹·봉쇄 비트가 없는 쌍만 해당):
- 1: j가 i를 보는 관계가
3 + random(5)오르고, i의 값도 같은 값으로 맞춥니다. 상한이 없습니다. 이것이 플레이어 없이 관계가 오르는 유일한 길입니다. - 4: i가 j의 항구를 빼앗는 처리지만, 4는 봉쇄 칸에서만 나오므로 실제로는 일어나지 않습니다.
- 0, 2, 3, 5, 6은 다른 곳에서 읽지 않습니다.
4. 관계가 바뀌는 다른 경우
확인됨[대조]
| 원인 | 변화 |
|---|---|
| 왕명: 문서 전달 | 두 방향 +5, 저장 100 상한 |
| 왕명: 조약 교섭 | 두 방향 +10, 저장 100 상한 |
| 플레이어가 해전에서 이김(결과 코드가 짝수) | 내 나라→상대 random(5) + 3(3~7) 감소, 0 하한, 반대 방향도 같은 값으로 |
| 컴퓨터 함대끼리 싸움 | −2 또는 −3(npc.md) |
5. 해전 승리 뒤 우호도
확인됨[대조] (KO 0x15A93, 영문판 EN 0x15DE5와 명령어 차이 0; 등급 고르기 KO 0x14F8D, 영문판 EN 0x15240과 2개 차이, 소지품 주소만 다름)
결과 코드가 짝수(적 기함 도주 2, 승리 4·6, 시나리오 취소 8)일 때만 적용됩니다. 밤이 되거나 도주·항복이면 적용하지 않습니다.
외교 등급(처음 0). 내 나라의 사략허가서(도구 0x1D + 나라)를 가지고 있으면 1로 시작하고, 그때만 아래 검사를 차례로 덮어씁니다.
저장 관계 ≤ 40 → 2
상대→나 상태에 봉쇄 비트 → 3
내 나라 기록 +2(노리는 나라) = 상대 → 4
저장 관계 ≥ 60 → 5
나→상대 상태에 동맹 비트 → 6
| 등급 | 모국 배수 | 상대 배율 |
|---|---|---|
| 0, 1 | +1 | 30 |
| 2 | +2 | 10 |
| 3 | +3 | 6 |
| 4 | +4 | 3 |
| 5 | −1 | 90 |
| 6 | −1 | 60 |
모국 우호도 변화 = 모국 배수 × (5~9 사이 무작위)
상대 우호도 감소 = floor(상대 배율 × (10~14 사이 무작위) / 30)
우호도 저장값은 0~200(표시 −100~+100)으로 묶입니다.
같은 나라 배를 친 경우와 추방
확인됨[대조]
- 상대가 내 나라이면 위 감소에 더해
10~14를 더 빼고, 모국 증가는 없습니다. 관계도 3~7 내려갑니다. - 그 뒤 모국 우호도 저장값이 40 이하(표시 −60 이하)이면 추방: 작위를 잃고 소속이 해적이 됩니다(공통 대사 568).
- 41~70(표시 −59~−30)이고 작위가 있으면 작위 박탈: 소속은 유지(569).
- 둘 다 작위를 0으로, 공통 시나리오를 섹션 0으로 되돌리고 플래그 16~18을 지워 진행 중인 왕명·길드 의뢰를 취소합니다(
KO 0x15CD0, 영문판EN 0x16020). 명성은 줄지 않습니다.
확인하지 못한 것
- 우호도·명성의 게임 시작 때 초기화 코드.
- 길드 정보(국가가 노리는 나라를 매달 다시 고르는 공식)는 영문판 연구에 있으나 한글판 루틴을 따로 맞추지 않았습니다(외부자료): 나라 n은
floor(나라 m의 길드 이익 × n의 m에 대한 관계 / 100)가 가장 작은 m을 고르고,100 + random(180 − 공격성) < |200 − 플레이어 우호도|이고 플레이어가 n 소속이 아니면 플레이어(7)를 노립니다. - 투자에 따른 항구 지지도 변화는 trade.md에 있습니다.