# 전투 Actor 스탯 Row 레이아웃

## 요약

- 전투 actor 초기화 루틴은 0x00457c60 기반 0x38-byte row prefix 8바이트를 actor +0x00으로 복사한다.
- HP view로 내보낸 out/enemy_stat_table row는 actual actor row +0x08에서 시작한다. 따라서 exported +0x06은 actor +0x1c attack, exported +0x0a는 actor +0x20 defense처럼 8바이트 보정이 필요하다.
- exported +0x34 name id는 current actor row 내부가 아니라 다음 actual row prefix의 +0x04 marker다. 이름 anchor로는 유효하지만 current actor struct 필드는 아니다.
- 플레이어 row 장비/레벨업 루틴 대조로 actor +0x26은 운 축으로 승격됐다. +0x28은 상태창/장비 운 보정 대상이 아니며 0x4343db critical/alternate 판정과 0x4344ab 상태 성공 gate의 attacker-side 숨은 발동률 계수로 분리한다.
- actor +0x2a는 숫자 계수가 아니라 0x48bcaa 자세/상태 테이블 index다. actual row +0x1c/exported +0x14는 초기 mode/status id이며, 몬스터 대부분의 값 1은 보통 상태다.
- actor +0x14는 몬스터에서는 EXP base, 플레이어에서는 current EXP다. 전투 보상 루프가 defeated enemy +0x14로 보상 EXP를 계산한 뒤 live player actor +0x14에 직접 더한다.
- actor +0x40/+0x41은 전투 종료 아이템 드롭 item id/probability로 확정됐다. 단 현재 80개 연속 몬스터 row의 source HP-view +0x2a/+0x2b가 전부 0이라 일반 몬스터 보상은 EXP/골드만 있고 아이템 드롭은 비활성이다.
- actor +0x1e/exported +0x08은 전체 80개 몬스터 row에 값이 있지만 전투 damage/hit/status 공식의 직접 소비처가 확인되지 않는다. 현재 전투 엔진 구현에서는 저장된 튜닝 축으로 보존하고 공식 필드로는 사용하지 않는다.
- 몬스터 HP view exporter의 설명은 이름 anchor 용도로만 유지한다. 실제 actor row 내부 구조는 이 보고서의 actual row/actor offset mapping을 기준으로 본다.

## Offset Mapping

| actual row | exported HP view | actor | width | role | status |
| --- | --- | --- | --- | --- | --- |
| `+0x00` | `` | `+0x00` | dword | actor prefix zero/reserved | 구조 확인, 의미 후보 |
| `+0x04` | `` | `+0x04` | byte x2 | battle action source/type prefix | 고신뢰 |
| `+0x06` | `` | `+0x06` | u16 | level / level-like battle value | 고신뢰 |
| `+0x08` | `+0x00` | `+0x08` | u32 source -> actor word | HP source, actor current/max/base HP | 확정 |
| `+0x0a` | `+0x02` | `+0x0e` | u16 | MP source, actor current/max/base MP | 확정 |
| `+0x0c` | `+0x04` | `+0x14` | u8 -> word | EXP base/current EXP | 확정 |
| `` | `` | `+0x16` | word | fixed 100 coefficient | 확정 |
| `+0x0e` | `+0x06` | `+0x1c` | u16 | attack axis | 고신뢰 |
| `+0x10` | `+0x08` | `+0x1e` | u16 | 저장된 튜닝 축 / 현 전투 공식 미사용 | 공식 미사용 확인 / 이름 보류 |
| `+0x12` | `+0x0a` | `+0x20` | u16 | defense axis | 고신뢰 |
| `+0x14` | `+0x0c` | `+0x22` | u16 | technique / hit axis | 고신뢰 |
| `+0x16` | `+0x0e` | `+0x24` | u16 | agility / avoid axis | 고신뢰 |
| `+0x18` | `+0x10` | `+0x26` | u16 | luck axis / status-critical resistance-side axis | 고신뢰 |
| `+0x1a` | `+0x12` | `+0x28` | u16 | 숨은 상태/크리티컬 발동률 계수 | 역할 확정 / UI 비표시 |
| `+0x1c` | `+0x14` | `+0x2a` | u16 | initial battle mode/status id | 확정 |
| `+0x1e` | `+0x16` | `+0x2c` | u8 table | family/rate table start | 고신뢰 |
| `+0x32` | `+0x2a` | `+0x40` | u8 item + u8 chance/range | item drop id / item drop probability divisor | 루틴 확정 / 현재 연속 몬스터 테이블 전부 0 |
| `+0x36` | `+0x2e` | `+0x44` | u16 | gold/reward source | 고신뢰 |
| `next +0x04` | `+0x34` | `` | u16 boundary marker | next row prefix marker used as exported monster name id | 구조 확인 |

## Sample Rows

| name | actual row | HP view | level | HP | EXP base | atk | def | tech | agi | +26 | +28 | +2a init | +36..+39 hit class | gold |
| --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- | ---: |
| 원숭이 | `0x00457d40` | `0x00457d48` | 2 | 15 | 22 | 19 | 12 | 22 | 14 | 30 | 100 | 1 | `0x4b 0x64 0x64 0x7d` | 3 |
| 멧돼지 | `0x00457e58` | `0x00457e60` | 3 | 22 | 31 | 27 | 16 | 27 | 22 | 45 | 100 | 1 | `0x32 0x64 0x96 0x64` | 4 |
| 슬라임 | `0x00457f38` | `0x00457f40` | 4 | 20 | 27 | 26 | 23 | 32 | 10 | 20 | 100 | 1 | `0x19 0x64 0xc8 0x19` | 1 |
| 박쥐 | `0x004581a0` | `0x004581a8` | 6 | 8 | 25 | 27 | 10 | 45 | 40 | 75 | 100 | 1 | `0x7d 0x64 0x00 0x00` | 5 |
| 파워 | `0x004582b8` | `0x004582c0` | 11 | 300 | 99 | 51 | 56 | 60 | 37 | 40 | 100 | 1 | `0x64 0x64 0x64 0x00` | 1000 |
| 스피드 | `0x004582f0` | `0x004582f8` | 11 | 300 | 99 | 46 | 50 | 64 | 48 | 100 | 100 | 1 | `0x64 0x64 0x64 0x00` | 1000 |
| 숙련주작권사 | `0x00458360` | `0x00458368` | 15 | 124 | 37 | 75 | 65 | 76 | 63 | 50 | 100 | 1 | `0x64 0x5a 0x5a 0x64` | 50 |
| 숙련창룡권사 | `0x00458398` | `0x004583a0` | 15 | 116 | 37 | 70 | 68 | 79 | 68 | 50 | 100 | 1 | `0x5a 0x5a 0x6e 0x5a` | 50 |
| 숙련현무권사 | `0x004583d0` | `0x004583d8` | 15 | 120 | 37 | 72 | 70 | 73 | 65 | 50 | 100 | 1 | `0x5f 0x55 0x55 0xaf` | 50 |
| 주작권사 | `0x00458718` | `0x00458720` | 12 | 82 | 30 | 70 | 52 | 59 | 51 | 50 | 100 | 1 | `0x5a 0x64 0x64 0x64` | 20 |
| 창룡권사 | `0x00458750` | `0x00458758` | 12 | 75 | 30 | 66 | 55 | 64 | 54 | 50 | 100 | 1 | `0x5a 0x64 0x64 0x64` | 20 |
| 현무권사 | `0x00458788` | `0x00458790` | 12 | 89 | 30 | 68 | 58 | 56 | 48 | 50 | 100 | 1 | `0x5a 0x64 0x6e 0x64` | 20 |
| 주작성령 | `0x004589b8` | `0x004589c0` | 18 | 178 | 39 | 85 | 71 | 85 | 80 | 77 | 100 | 1 | `0x73 0x64 0x4b 0x64` | 0 |
| 창룡성령 | `0x004589f0` | `0x004589f8` | 18 | 189 | 39 | 81 | 73 | 90 | 83 | 77 | 100 | 1 | `0x73 0x64 0x4b 0x64` | 0 |
| 현무성령 | `0x00458a28` | `0x00458a30` | 18 | 200 | 39 | 83 | 75 | 87 | 78 | 77 | 100 | 1 | `0x73 0x64 0x4b 0x64` | 0 |
| 폭호 | `0x00458b78` | `0x00458b80` | 35 | 1500 | 100 | 140 | 140 | 140 | 110 | 70 | 100 | 1 | `0x64 0x5f 0x69 0x64` | 1000 |
| 데드드래곤 | `0x00458d38` | `0x00458d40` | 49 | 1250 | 88 | 176 | 166 | 170 | 135 | 50 | 100 | 1 | `0x64 0x64 0x6e 0x46` | 600 |

## +1e Distribution

| value | count | examples |
| ---: | ---: | --- |
| 20 | 9 | 독사, 구렁이, 화사, 수사, 뢰사, 박쥐, 큰박쥐, 흡혈박쥐, 마왕박쥐 |
| 25 | 1 | 초류권사 |
| 30 | 4 | 원숭이, 취한원숭이, 멧돼지, 구멍멧돼지 |
| 35 | 2 | 돌기멧돼지, 외뿔멧돼지 |
| 40 | 4 | 스피드, 근육맨１호, 권법가, 바니－Ｓ |
| 46 | 1 | 격투가 |
| 50 | 27 | 맹호권사범, 숙련주작권사, 숙련창룡권사, 숙련현무권사, 백호권사범, 근육맨, 핀푸, 핀푸, 탕, 탕 |
| 60 | 2 | 근육맨２호, 근육맨 |
| 65 | 2 | 귀갑권사, 암각권총통 |
| 67 | 3 | 견원이, 언원이, 문원이 |
| 70 | 4 | 슬라임, 마왕슬라임, 폭호, 투귀 |
| 75 | 3 | 바위슬라임, 현무성령, 야차 |
| 80 | 6 | 불꽃슬라임, 물슬라임, 벼락슬라임, 동작석상, 해골, 해골전사 |
| 85 | 1 | 스컬나이트 |
| 89 | 1 | 뇌룡 |
| 90 | 2 | 린샹, 지옥의마인 |
| 91 | 1 | 화룡 |
| 95 | 1 | 빙룡 |
| 99 | 2 | 유령, 데드드래곤 |
| 100 | 4 | 파워, 창룡성령, 리치, 두개골 |

## 남은 미확정

- 없음
