전투 시스템
모든 판정은 서버에서 이루어집니다. 클라이언트는 「이 몬스터를 공격하겠다」만 보내고 결과는 서버가 정합니다.
명중 판정
섹션 제목: “명중 판정”20면체 주사위를 굴립니다:
d20 + 명중 보너스 > 대상 Guard → 명중d20 + 명중 보너스 ≤ 대상 Guard → 빗나감초과여야 합니다. 굴린 값이 Guard와 정확히 같으면 빗나갑니다.
명중 보너스:
- 기본 =
floor(레벨 / 2) - 플레이어 근접 공격은 여기에 STR 보정값이 더해집니다
- 몬스터는 데이터에 지정값이 있으면 그것을, 없으면 레벨 기본값을 씁니다
명중률 대조표
섹션 제목: “명중률 대조표”가로가 대상 Guard, 세로가 당신의 총 명중 보너스입니다.
| 명중 보너스 | Guard 8 | Guard 9 | Guard 10 | Guard 11 | Guard 13 | Guard 15 |
|---|---|---|---|---|---|---|
| +0 | 60% | 55% | 50% | 45% | 35% | 25% |
| +1 | 65% | 60% | 55% | 50% | 40% | 30% |
| +2 | 70% | 65% | 60% | 55% | 45% | 35% |
| +3 | 75% | 70% | 65% | 60% | 50% | 40% |
| +4 | 80% | 75% | 70% | 65% | 55% | 45% |
| +5 | 85% | 80% | 75% | 70% | 60% | 50% |
| +6 | 90% | 85% | 80% | 75% | 65% | 55% |
| +7 | 95% | 90% | 85% | 80% | 70% | 60% |
| +8 | 100% | 95% | 90% | 85% | 75% | 65% |
| +9 | 100% | 100% | 95% | 90% | 80% | 70% |
| +10 | 100% | 100% | 100% | 95% | 85% | 75% |
각 몬스터를 때릴 확률
섹션 제목: “각 몬스터를 때릴 확률”당신의 총 명중 보너스(레벨의 절반 + STR 보정값)로 찾아보세요:
| 몬스터 | Guard | +0 | +2 | +4 | +6 | +8 |
|---|---|---|---|---|---|---|
| 코볼트 | 8 | 60% | 70% | 80% | 90% | 100% |
| 고블린 | 9 | 55% | 65% | 75% | 85% | 95% |
| 스토커 | 10 | 50% | 60% | 70% | 80% | 90% |
| 여성 오크 | 10 | 50% | 60% | 70% | 80% | 90% |
| 오크 | 11 | 45% | 55% | 65% | 75% | 85% |
| 고블린 족장 | 11 | 45% | 55% | 65% | 75% | 85% |
| 오크 워로드 | 13 | 35% | 45% | 55% | 65% | 75% |
몬스터가 당신을 때릴 확률
섹션 제목: “몬스터가 당신을 때릴 확률”반대로, 당신의 Guard(DEX 기본값 + 장비 합계)로 찾아보세요:
| 몬스터 | 명중 보너스 | 내 Guard 10 | 내 Guard 14 | 내 Guard 18 | 내 Guard 22 | 명중 시 피해 |
|---|---|---|---|---|---|---|
| 코볼트 | +0 | 50% | 30% | 10% | 0% | 1d4 |
| 고블린 | +1 | 55% | 35% | 15% | 0% | 1d4 |
| 스토커 | +1 | 55% | 35% | 15% | 0% | 1d6 |
| 오크 | +2 | 60% | 40% | 20% | 0% | 1d6 |
| 여성 오크 | +3 | 65% | 45% | 25% | 5% | 1d6 |
| 고블린 족장 | +2 | 60% | 40% | 20% | 0% | 1d8 |
| 오크 워로드 | +6 | 80% | 60% | 40% | 20% | 2d8 |
Guard를 쌓는 효율은 아주 직접적입니다 — Guard가 1 오를 때마다 상대의 명중률이 5%씩 떨어집니다. 판금 세트를 완성하면(Guard 합계 19) 저레벨 몬스터는 거의 당신을 때리지 못합니다.
명중했을 때만 피해를 굴립니다. 주사위 표기는 {개수}d{면수}입니다:
2d6 → 6면체 두 개를 굴려 합산(2–12)플레이어의 근접 피해에는 STR 보정값이 더해집니다.
무기 피해 대조표
섹션 제목: “무기 피해 대조표”| 무기 | 피해 주사위 | 최소 | 평균 | 최대 | 무게 |
|---|---|---|---|---|---|
| 철검 | 1d8 | 1 | 4.5 | 8 | 3 kg |
| 낡은 철검 | 1d6 | 1 | 3.5 | 6 | 3 kg |
| 창 | 1d6 | 1 | 3.5 | 6 | 4 kg |
| 단검 | 1d4 | 1 | 2.5 | 4 | 1 kg |
| 고블린 검 | 1d4 | 1 | 2.5 | 4 | 2 kg |
| 작은 검 | 1d4 | 1 | 2.5 | 4 | 1.5 kg |
| 횃불 | 1d4 | 1 | 2.5 | 4 | 1 kg |
| 타다 남은 횃불 | 1d4 | 1 | 2.5 | 4 | 1 kg |
STR 보정값은 명중할 때마다 더해지므로, 피해가 낮은 무기일수록 상대적 상승폭이 큽니다: STR 18(+4)로 단검(1d4, 평균 2.5)을 쓰면 실제 평균은 6.5로 2.6배가 됩니다.
Guard의 의미
섹션 제목: “Guard의 의미”Guard는 NetHack의 AC를 뒤집은 값입니다 — 높을수록 좋습니다.
| Guard | 의미 |
|---|---|
| 0–7 | 거의 무방비 |
| 8–9 | 방어가 약함 |
| 10 | 보통 |
| 11–13 | 단단함 |
| 14+ | 중장갑 이상 |
NetHack과의 대응: Guard = 10 − AC.
경험치
섹션 제목: “경험치”몬스터를 잡으면 얼마
섹션 제목: “몬스터를 잡으면 얼마”XP = 1 + 레벨² + max(Guard - 10, 0) × 2Guard가 10을 넘는 만큼 보너스가 붙습니다 — 잡기 어려운 몬스터가 더 많이 줍니다.
| 몬스터 | 레벨 | Guard | XP | 체력 | XP / 체력 |
|---|---|---|---|---|---|
| 코볼트 | 1 | 8 | 2 | 5 | 0.40 |
| 고블린 | 2 | 9 | 5 | 9 | 0.56 |
| 스토커 | 3 | 10 | 10 | 14 | 0.71 |
| 여성 오크 | 4 | 10 | 17 | 18 | 0.94 |
| 오크 | 4 | 11 | 19 | 18 | 1.06 |
| 고블린 족장 | 5 | 11 | 28 | 23 | 1.22 |
| 오크 워로드 | 10 | 13 | 107 | 120 | 0.89 |
XP / 체력 열이 효율 지표입니다 — 클수록 체력 1점을 깎을 때 얻는 경험치가 많습니다. 오크 워로드는 XP가 가장 높지만 120이나 되는 체력을 깎아야 해서 효율은 최고가 아닙니다.
레벨업에 필요한 양
섹션 제목: “레벨업에 필요한 양”XP(n) = 20 × 2^(n-2) (n ≥ 2)한 레벨마다 정확히 두 배인 순수 지수 곡선이며, 완화 구간이 전혀 없습니다.
| 레벨 | 누적 XP | 이 레벨에 필요 | 오크 몇 마리쯤 |
|---|---|---|---|
| 1 | 0 | — | — |
| 2 | 20 | 20 | 2 |
| 3 | 40 | 20 | 2 |
| 4 | 80 | 40 | 3 |
| 5 | 160 | 80 | 5 |
| 6 | 320 | 160 | 9 |
| 7 | 640 | 320 | 17 |
| 8 | 1,280 | 640 | 34 |
| 9 | 2,560 | 1,280 | 68 |
| 10 | 5,120 | 2,560 | 135 |
| 11 | 10,240 | 5,120 | 270 |
| 12 | 20,480 | 10,240 | 539 |
| 13 | 40,960 | 20,480 | 1,078 |
| 14 | 81,920 | 40,960 | 2,156 |
| 15 | 163,840 | 81,920 | 4,312 |
| 16 | 327,680 | 163,840 | 8,624 |
| 17 | 655,360 | 327,680 | 17,247 |
| 18 | 1,310,720 | 655,360 | 34,493 |
| 19 | 2,621,440 | 1,310,720 | 68,986 |
| 20 | 5,242,880 | 2,621,440 | 137,971 |
맨 오른쪽 열은 오크(레벨 4, Guard 11, 마리당 19 XP) 기준입니다. 두 자릿수 레벨에 들어서면 현재 몬스터로 레벨을 올리는 게 매우 느려집니다 — 지금 게임의 콘텐츠 분량은 대략 10레벨 언저리에 대응합니다.
사망 페널티
섹션 제목: “사망 페널티”죽어도 장비는 잃지 않지만 경험치가 깎입니다:
현재 레벨 구간 = XP(L+1) - XP(L)차감량 = max(1, floor(구간 × 0.15))즉 **현재 레벨 진행도의 15%**입니다.
레벨이 떨어지나
섹션 제목: “레벨이 떨어지나”깎은 뒤 XP가 현재 레벨의 시작치보다 낮아지면 한 레벨 떨어집니다. 다만 보호 장치가 둘 있습니다:
- 한 번 죽어서 최대 한 레벨만 떨어집니다.
- 레벨 1은 떨어지지 않습니다.
레벨이 떨어지면 XP가 아래 구간의 30% 진행도로 보정됩니다 — 승급 직전에서 계속 맴도는 상황을 막기 위해서입니다.
| 레벨 | 레벨 구간 | 사망 차감 | 오크 몇 마리로 회복 |
|---|---|---|---|
| 2 | 20 | 3 | 1 |
| 3 | 40 | 6 | 1 |
| 4 | 80 | 12 | 1 |
| 5 | 160 | 24 | 2 |
| 6 | 320 | 48 | 3 |
| 7 | 640 | 96 | 6 |
| 8 | 1,280 | 192 | 11 |
| 9 | 2,560 | 384 | 21 |
| 10 | 5,120 | 768 | 41 |
| 11 | 10,240 | 1,536 | 81 |
| 12 | 20,480 | 3,072 | 162 |
| 13 | 40,960 | 6,144 | 324 |
레벨이 떨어지면 체력도 줄어듭니다
섹션 제목: “레벨이 떨어지면 체력도 줄어듭니다”「레벨업/다운을 반복해 체력을 불리는」 짓을 막기 위해, 레벨이 떨어질 때 깎이는 체력의 분포가 레벨업 때 오르는 분포와 완전히 같습니다:
생명 주사위를 굴리고, 최소 절반을 보장한 뒤, CON 보정값을 더한다그래서 장기 기댓값이 0입니다 — 오르내림을 반복해도 통계적 이득이 없습니다. 체력이 레벨 1의 초기값 아래로 내려가지도 않습니다.
| 생명 주사위 | 클래스 | 상승 / 하락 기댓값 |
|---|---|---|
| d10 | 야만인, 혈거인, 기사, 발키리 | 6.50 |
| d8 | 레인저, 사무라이, 몽크, 사제 | 5.25 |
| d6 | 고고학자, 힐러, 로그, 위저드 | 4.00 |
| d4 | 관광객 | 2.75 |
레벨이 떨어지지 않았다면 체력은 깎이지 않습니다.
죽은 뒤 부활을 요청하면 서버가 체력이 0인지 확인하고 가득 채운 뒤 원점 (0, 0, 0)으로
보냅니다. 포만도는 300(든든함 구간의 하한)으로 초기화되어, 굶은 채로 부활해 바로
쇠약해지는 일이 없습니다.
몬스터 AI
섹션 제목: “몬스터 AI”몬스터 AI는 클라이언트가 계산하지만 공격 판정은 반드시 서버가 정합니다.
| 상태 | 설명 |
|---|---|
idle | 대기(30% 확률로 무작위 이동) |
walk | 이동 중 |
run | 플레이어 추적(추적 거리 안) |
attack | 공격 중(공격 거리 안) |
hit | 피격 경직(약 800밀리초) |
dead | 사망 |
몬스터는 죽은 뒤 30초가 지나야 사라집니다. 각 몬스터의 추적 거리와 공격 간격은 몬스터 도감에 있습니다.