콘텐츠로 이동

전투 시스템

모든 판정은 서버에서 이루어집니다. 클라이언트는 「이 몬스터를 공격하겠다」만 보내고 결과는 서버가 정합니다.

폭발 20면체 주사위를 굴립니다:

굴림 합계 + 명중 보너스 > 대상 Guard → 명중
굴림 합계 + 명중 보너스 ≤ 대상 Guard → 빗나감

초과여야 합니다. 굴린 값이 Guard와 정확히 같으면 빗나갑니다.

명중 보너스:

  • 플레이어 = floor(레벨 / 2) + STR 보정값 + 무기 강화 +N
  • 몬스터 = 레벨 그대로(절반 아님) — 플레이어보다 가파릅니다. 플레이어의 Guard는 레벨이 아니라 장비로 오르기 때문입니다. monsters.csvattackBonus가 지정돼 있으면 그 값을 기본값 대신 쓰고, 아래의 장소 명중 보너스가 그 위에 더해집니다.

플레이어 Guard는 상한이 없어 장비와 강화만으로 얼마든지 올라가지만, 몬스터 명중 보너스는 레벨이라 최대 20에서 멈춥니다 — 28만큼 벌어진 격차는 20칸짜리 d20 하나로는 감당이 안 됩니다. 그래서 난이도는 몬스터 자체가 아니라 어디서 싸우느냐로 조절합니다:

던전: 보너스 = max(0, 깊이 − 5) × 3
지상: 보너스 = max(0, 마을과의 거리 − 300m) / 20m
  • 몬스터의 레벨·체력·피해·경험치는 전혀 바뀌지 않고, 명중 보너스만 올라갑니다.
  • 안전 구간은 기존 난이도를 그대로 유지합니다 — Old Crypt 1~5층과 마을 반경 300m는 보너스가 0입니다.
  • 그 결과 깊은 던전과 마을에서 먼 야외는 눈에 띄게 어려워집니다 — 그런 구역에서는 강화 주문서(강화 시스템 참고)가 있으면 좋은 것에서 사실상 입장료로 바뀝니다.

d20을 굴려 20이 나오면 한 번 더 굴려서 더합니다. 그 굴림도 20이면 또 더합니다(최대 5회 — 합계 120이면 어떤 Guard보다도 높습니다).

굴림 13 → 합계 13
굴림 20, 10 → 합계 30
굴림 20, 20, 4 → 합계 44

이유. “자연 20이면 무조건 명중”으로 두면 명중률이 정확히 5%에서 고정됩니다 — 이건 밸런스 판단이 아니라 주사위 면이 20개라서 생기는 숫자일 뿐입니다. 아무리 두꺼운 갑옷을 입어도 코볼트가 스무 번에 한 번은 맞히게 되죠. 폭발 주사위는 모자란 만큼 확률이 줄어들되 0은 되지 않게 합니다 — 격차가 20을 넘을 때마다 확률이 다시 1/20로 꺾입니다. 코볼트(+1)가 Guard 40을 맞힐 확률은 0.25%로, 평균 400번에 한 번 — 공격 쿨다운 1.9초 기준 13분입니다. 자연 1은 특별 취급하지 않습니다.

가로가 대상 Guard, 세로가 당신의 총 명중 보너스입니다.

명중 보너스Guard 8Guard 9Guard 10Guard 11Guard 13Guard 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%
홉고블린 12 40% 50% 60% 70% 80%
13 35% 45% 55% 65% 75%
오크 워로드 13 35% 45% 55% 65% 75%
버그베어 14 30% 40% 50% 60% 70%
잊힌 망자 14 30% 40% 50% 60% 70%
오우거 15 25% 35% 45% 55% 65%
리저드포크 15 25% 35% 45% 55% 65%
트롤 16 20% 30% 40% 50% 60%
스톤 골렘 17 15% 25% 35% 45% 55%
오우거 워로드 17 15% 25% 35% 45% 55%
키클롭스 20 5% 10% 20% 30% 40%
스켈레톤 20 5% 10% 20% 30% 40%
스켈레톤 전사 24 4% 5% 5% 10% 20%
스켈레톤 기사 32 2% 3% 3% 3% 4%

반대로, 당신의 Guard(DEX 기본값 + 장비 합계)로 찾아보세요:

몬스터명중 보너스내 Guard 10내 Guard 14내 Guard 18내 Guard 22명중 시 피해
코볼트 +1 55% 35% 15% 5% 1d4
고블린 +2 60% 40% 20% 5% 1d4
스토커 +3 65% 45% 25% 5% 1d6
오크 +4 70% 50% 30% 10% 1d6
여성 오크 +4 70% 50% 30% 10% 1d6
홉고블린 +5 75% 55% 35% 15% 1d8
고블린 족장 +5 75% 55% 35% 15% 1d8
+6 80% 60% 40% 20% 2d6
버그베어 +7 85% 65% 45% 25% 2d6
오우거 +8 90% 70% 50% 30% 2d8
잊힌 망자 +8 90% 70% 50% 30% 3d6
트롤 +9 95% 75% 55% 35% 2d10
스톤 골렘 +10 100% 80% 60% 40% 2d10
오크 워로드 +10 100% 80% 60% 40% 2d8
오우거 워로드 +10 100% 80% 60% 40% 2d8
리저드포크 +13 100% 95% 75% 55% 3d6
키클롭스 +15 100% 100% 85% 65% 3d8
스켈레톤 +20 100% 100% 100% 90% 6d8
스켈레톤 전사 +20 100% 100% 100% 90% 6d8
스켈레톤 기사 +25 100% 100% 100% 100% 6d12

Guard를 쌓는 효율은 아주 직접적입니다 — 상대가 폭발 없이 굴릴 수 있는 범위 안에서는 Guard가 1 오를 때마다 명중률이 5%씩 떨어집니다. 그 범위를 벗어나면 폭발 주사위가 작동해서, 20점 구간을 넘길 때마다 확률이 1/20로 꺾이므로 하락 폭이 훨씬 가팔라집니다. 판금 세트를 완성하고(Guard 합계 19) 방어구 강화 주문서까지 쓰면 저레벨 몬스터는 거의 당신을 때리지 못하지만, 깊은 던전의 고레벨 몬스터는 명중 보너스가 레벨에 그대로 비례하므로 더 잘 따라옵니다.

명중했을 때만 피해를 굴립니다. 주사위 표기는 {개수}d{면수}입니다:

2d6 → 6면체 두 개를 굴려 합산(2–12)

플레이어의 근접 피해에는 STR 보정값이 더해집니다.

무기피해 주사위최소평균최대무게
양손대검 2d8 2 9.0 16 6 kg
강철 장검 1d10 1 5.5 10 4 kg
철검 1d8 1 4.5 8 3 kg
이가 나간 철검 1d8 1 4.5 8 3 kg
모닝스타 1d8 1 4.5 8 5 kg
그레이트클럽 1d8 1 4.5 8 10 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
1d1 1 1.0 1 2 kg

STR 보정값은 명중할 때마다 더해지므로, 피해가 낮은 무기일수록 상대적 상승폭이 큽니다: STR 18(+4)로 단검(1d4, 평균 2.5)을 쓰면 실제 평균은 6.5로 2.6배가 됩니다.

무기는 세 가지 추가 필드를 선언할 수 있습니다: range(미터 단위 사거리; 비어 있으면 근접으로 취급해 서버의 고정 2미터 리치를 씁니다), rangedAbility(명중·피해 보너스를 STR 대신 계산할 능력치), hands(차지하는 손 개수 — 2면 보조손도 함께 봉인합니다). 이 이 필드들을 처음 쓰는 무기입니다: 양손, 사거리 10미터, 명중과 피해는 DEX로 계산합니다.

  • 사거리 판정은 max(근접 리치, 무기 사거리)로 이뤄집니다 — 벽, 닫힌 문, 가구는 화살도 근접 공격과 똑같이 막습니다. 울타리는 화살을 막지 않아 그대로 넘어갑니다 (프로토콜 v69). 다만 이동과 근접 공격은 여전히 울타리에 막힙니다. 사거리 밖이지만 10미터 도발 범위 안의 공격은 대상을 깨우기만 하고 피해는 주지 않습니다.
  • 추격은 무기 자체의 사거리 끝에서 멈춰 서서 쏩니다 — 거리를 벌리며 쏘는 카이팅은 없습니다.
  • 명중하면 화살이 날아가는 모습이 보입니다(고정 30 m/s, 매 프레임 목표의 현재 위치로 조준을 다시 잡아 반드시 명중합니다). 빗나가면 원래 방향을 유지한 채 목표를 3미터 지나쳐 사라집니다.

활 자체의 주사위는 상징적인 값(1d1)일 뿐입니다 — 실제 피해는 화살에서 나오며, 두 주사위는 함께 굴러갑니다. 몬스터가 자기 주사위에 무기 주사위를 더하는 것과 같은 방식입니다:

아이템주사위평균비고
1d1 1.0 활 자체 — 사거리와 능력치만 결정
철화살 1d6 3.5 합산 평균 4.5, 철검(1d8)에 근접
강철 화살 1d8 4.5 합산 평균 5.5, 강철 장검(1d10)에 근접

활은 화살이 있어야 쏠 수 있습니다: items.csvammoKind가 활과 화살에 같은 이름(arrow)을 붙여 짝을 짓습니다. ammoKind가 없는 무기는 아무것도 소모하지 않으므로 근접 무기는 영향을 받지 않습니다. 화살은 가방에 쌓이며 장비 슬롯을 차지하지 않고, 강화할 수 없습니다.

  • 활을 장착할 때 아직 선택한 화살이 없으면 가방에서 가장 강한 더미를 자동으로 고릅니다.
  • 더 저렴한 화살을 직접 골랐다면, 더 좋은 화살을 주워도 그 선택을 덮어쓰지 않습니다.
  • 고른 더미가 떨어지면 다음으로 강한 화살로 자동 전환됩니다. 가방이 완전히 비면 공격이 거부되고(OutOfAmmo) 자동 공격도 함께 멈춰, 쿨다운마다 거부 메시지가 쌓이지 않습니다.

hands: 2 무기(지금은 활뿐)를 장착하면 보조손 장비가 가방으로 내려가며, 장착 중에는 보조손 장비 요청이 거부됩니다.

Guard는 NetHack의 AC를 뒤집은 값입니다 — 높을수록 좋습니다.

Guard의미
0–7거의 무방비
8–9방어가 약함
10보통
11–13단단함
14+중장갑 이상

NetHack과의 대응: Guard = 10 − AC.

XP = 1 + 레벨² + max(Guard - 10, 0) × 2

Guard가 10을 넘는 만큼 보너스가 붙습니다 — 잡기 어려운 몬스터가 더 많이 줍니다.

몬스터레벨GuardXP체력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
홉고블린 5 12 30 23 1.30
6 13 43 27 1.59
버그베어 7 14 58 32 1.81
잊힌 망자 8 14 73 40 1.82
오우거 8 15 75 36 2.08
트롤 9 16 94 41 2.29
오크 워로드 10 13 107 120 0.89
스톤 골렘 10 17 115 45 2.56
오우거 워로드 10 17 115 140 0.82
리저드포크 13 15 180 59 3.05
키클롭스 15 20 246 68 3.62
스켈레톤 16 20 277 72 3.85
스켈레톤 전사 20 24 429 90 4.77
스켈레톤 기사 25 32 670 350 1.91

XP / 체력 열이 효율 지표입니다 — 클수록 체력 1점을 깎을 때 얻는 경험치가 많습니다. 오크 워로드는 XP가 가장 높지만 120이나 되는 체력을 깎아야 해서 효율은 최고가 아닙니다.

2~50레벨은 이제 플레이 시간 기준으로 맞춘 구간표를 따르며( 업데이트 로그 프로토콜 v39 참고), 순수 지수 곡선이 아닙니다 — **50레벨을 넘어야 다시 “매 레벨 두 배”**가 됩니다:

XP(n) = XP(50) × 2^(n-50) (n > 50)

표는 하루 4시간 플레이하는 표준 유저를 기준으로 잡았습니다: 210레벨은 레벨당 5분에서 22분(누적 2시간), 1030레벨은 22분에서 5.5시간(대략 하루 한 번), 30~50레벨은 5.5시간에서 8시간(후반은 이틀에 한 번쯤)이며, 50레벨 도달까지 총 약 199.5시간(50일)이 걸립니다.

레벨누적 XP이 레벨에 필요오크 몇 마리쯤
1 0
2 17 17 1
3 76 59 4
4 226 150 8
5 586 360 19
6 1,256 670 36
7 2,356 1,100 58
8 4,056 1,700 90
9 6,556 2,500 132
10 9,956 3,400 179
11 17,156 7,200 379
12 29,156 12,000 632
13 48,156 19,000 1,000
14 74,156 26,000 1,369
15 110,156 36,000 1,895
16 158,156 48,000 2,527
17 219,156 61,000 3,211
18 296,156 77,000 4,053
19 391,156 95,000 5,000
20 511,156 120,000 6,316
21 651,156 140,000 7,369
22 811,156 160,000 8,422
23 1,001,156 190,000 10,000
24 1,231,156 230,000 12,106
25 1,491,156 260,000 13,685
26 1,791,156 300,000 15,790
27 2,131,156 340,000 17,895
28 2,521,156 390,000 20,527
29 2,961,156 440,000 23,158
30 3,451,156 490,000 25,790
31 3,991,156 540,000 28,422
32 4,581,156 590,000 31,053
33 5,221,156 640,000 33,685
34 5,911,156 690,000 36,316
35 6,661,156 750,000 39,474
36 7,471,156 810,000 42,632
37 8,341,156 870,000 45,790
38 9,271,156 930,000 48,948
39 10,271,156 1,000,000 52,632
40 11,371,156 1,100,000 57,895
41 12,571,156 1,200,000 63,158
42 13,771,156 1,200,000 63,158
43 15,071,156 1,300,000 68,422
44 16,471,156 1,400,000 73,685
45 17,971,156 1,500,000 78,948
46 19,571,156 1,600,000 84,211
47 21,271,156 1,700,000 89,474
48 23,071,156 1,800,000 94,737
49 24,971,156 1,900,000 100,000
50 26,971,156 2,000,000 105,264

맨 오른쪽 열은 오크(레벨 4, Guard 11, 마리당 19 XP) 기준입니다. 야외 로스터는 15레벨 독안거인(Cyclops)에서 끝나고 던전 깊이 보정도 20층에서 멈추기 때문에, 실제 페이스는 대략 15~20레벨까지만 표와 맞고 그 위로는 더 강한 상대가 없어 표보다 훨씬 느려집니다.

죽어도 장비는 잃지 않지만 경험치가 깎입니다:

현재 레벨 구간 = XP(L+1) - XP(L)
차감량 = max(1, floor(구간 × 0.15))

즉 **현재 레벨 진행도의 15%**입니다.

깎은 뒤 XP가 현재 레벨의 시작치보다 낮아지면 한 레벨 떨어집니다. 다만 보호 장치가 둘 있습니다:

  • 한 번 죽어서 최대 한 레벨만 떨어집니다.
  • 레벨 1은 떨어지지 않습니다.

레벨이 떨어지면 XP가 아래 구간의 30% 진행도로 보정됩니다 — 승급 직전에서 계속 맴도는 상황을 막기 위해서입니다.

레벨레벨 구간사망 차감오크 몇 마리로 회복
2 59 8 1
3 150 22 2
4 360 54 3
5 670 100 6
6 1,100 165 9
7 1,700 255 14
8 2,500 375 20
9 3,400 510 27
10 7,200 1,080 57
11 12,000 1,800 95
12 19,000 2,850 150
13 26,000 3,900 206

레벨이 떨어지면 체력도 줄어듭니다

섹션 제목: “레벨이 떨어지면 체력도 줄어듭니다”

「레벨업/다운을 반복해 체력을 불리는」 짓을 막기 위해, 레벨이 떨어질 때 깎이는 체력의 분포가 레벨업 때 오르는 분포와 완전히 같습니다:

생명 주사위를 굴리고, 최소 절반을 보장한 뒤, CON 보정값을 더한다

그래서 장기 기댓값이 0입니다 — 오르내림을 반복해도 통계적 이득이 없습니다. 체력이 레벨 1의 초기값 아래로 내려가지도 않습니다.

생명 주사위클래스상승 / 하락 기댓값
d10 야만인, 혈거인, 기사, 발키리 6.50
d8 레인저, 사무라이, 몽크, 사제 5.25
d6 고고학자, 힐러, 로그, 위저드, 바드 4.00
d4 관광객 2.75

레벨이 떨어지지 않았다면 체력은 깎이지 않습니다.

죽은 뒤 부활을 요청하면 서버가 체력이 0인지 확인하고 가득 채운 뒤 원점 (0, 0, 0)으로 보냅니다. 포만도는 300(든든함 구간의 하한)으로 초기화되어, 굶은 채로 부활해 바로 쇠약해지는 일이 없습니다.

불사조 부적: 쓰러진 자리에서 부활

섹션 제목: “불사조 부적: 쓰러진 자리에서 부활”

가방에 불사조 부적이 있으면 사망 대화상자에 “불사조 부적 사용” 버튼이 추가됩니다. 사용하면 쓰러진 자리, 같은 층에서 부활하며 최대 체력의 **70%**를 회복하고 부적 1개를 소모합니다. 사망 시 이미 적용된 경험치 페널티는 그대로입니다. 마을로 돌아가는 일반 부활과 달리 제자리 부활은 포만도를 초기화하지 않으며, 부활 후 무적 시간도 없습니다. 살아 있을 때 사용하면 거절되고 부적은 소모되지 않습니다. Rica가 5,000동에 판매하며, 월드 드랍 확률은 0.2%입니다.

몬스터 AI는 클라이언트가 계산하지만 공격 판정은 반드시 서버가 정합니다.

상태설명
idle대기(30% 확률로 무작위 이동)
walk이동 중
run플레이어 추적(추적 거리 안)
attack공격 중(공격 거리 안)
hit피격 경직(약 800밀리초)
dead사망

몬스터는 죽은 뒤 30초가 지나야 사라집니다. 각 몬스터의 추적 거리와 공격 간격은 몬스터 도감에 있습니다.

「선제공격」이든 「반격형」이든, 플레이어가 몬스터 5m 안에 들어오는 순간 도발 없이도 교전이 시작됩니다 — 「반격형」이라고 안심하고 스쳐 지나갈 수 있는 거리가 아닙니다.

일부 몬스터의 공격과 음식은 디버프를 겁니다. 같은 디버프는 중첩되지 않고 다시 걸리면 지속시간만 갱신되지만, 서로 다른 디버프는 동시에 걸릴 수 있고 배수는 곱해서 적용됩니다.

디버프확률지속시간초당 피해이동 속도공격 속도최대 하중갑옷 무게(젖음)포만도 소비생명 자연 회복
식중독 70% 5분 ×0.6 ×0.6 ×0.6 ×4 정지
출혈 35% 8초 1 정지
젖음 100% 7.5분 ×0.83 ×1.5
알딸딸함 100% 5분 ×1.1 ×1.1
취함 100% 5분 ×0.85 ×0.85 ×0.85
만취 100% 5분 ×0.6 ×0.6 ×0.6

출혈 — 놀의 발톱 공격이 명중하면 확률적으로 걸립니다. 이 새 효과를 감안해 놀의 피해 주사위는 2d8에서 2d6로 낮아졌습니다. 출혈 자체로 사망할 수 있으며, 처치자 없이 일반 사망과 같이 처리됩니다.

식중독 — 생선을 날로 먹었을 때의 위험입니다. 자세한 내용은 음식과 포만도를 참고하세요.

젖음 — 강이나 바다에 들어가면 걸리며 450초(게임 내 1시간) 지속됩니다. 이동 속도가 ×0.83으로 떨어져(뛰기 속도가 4.5에서 3.75로, 걷기 3.0과 뛰기 4.5의 중간이 됩니다) 입고 있는 갑옷과 가방 속 갑옷 모두 물을 먹어 무거워집니다 (갑옷 무게 ×1.5) — 갑옷을 많이 걸칠수록 쓸 수 있는 최대 하중이 그만큼 줄어듭니다. 물속을 계속 걸으면 지속시간이 갱신되며, 물에서 나와야 카운트다운이 시작됩니다. 불 켜진 모닥불 근처(3m 이내)에 있으면 더 빨리 마르는데, 흠뻑 젖은 상태에서도 45초면 완전히 마릅니다. 다리 위를 걷는 것은 젖음으로 치지 않습니다. 프로토콜 v78부터는 비를 오래 맞아도 같은 젖음 상태가 걸립니다 — 자세한 내용은 날씨 시스템을 참고하세요.

스킬과 마나(Mana)(프로토콜 v71–v79)

섹션 제목: “스킬과 마나(Mana)(프로토콜 v71–v79)”

캐릭터 머리 위 생명력 바 아래에 파란색 MP 바가 생겼습니다. MP를 쓰는 스킬이 아직 없는 직업도 전부 표시됩니다. 최대 MP는 직업·WIS·레벨로 계산되며 현실 16초마다 자연 회복되고, 마지막으로 MP를 쓴 뒤 현실 10초 동안은 회복이 시작되지 않습니다. 기존 캐릭터는 이 업데이트 이후 첫 접속 시 최대 MP로 채워졌고, 레벨업할 때마다 최대치가 다시 계산됩니다.

캐릭터 창의 ABILITIES 탭에 보유한 스킬이 아이콘으로 표시되며, 기존 1–0 퀵슬롯으로 끌어다 놓으면 사용할 수 있습니다. 인벤토리와 같은 드래그· 툴팁 코드를 공유합니다.

스킬제공 대상장착 조건효과재사용 대기
Double SlashRogue 기본 제공주무기 단검다음 기본 공격이 각각 100% 피해를 주는 독립된 2연격으로 대체됩니다10초
Guardian WardKnight 기본 제공주무기 검/철퇴 + 보조무기 방패자신과 같은 층 20m 이내 파티원의 Guard가 60초 동안 +10%45초, MP 2 소모

Guardian Ward는 원래 포만도를 소모했지만, 프로토콜 v79부터 MP 2를 소모합니다. MP가 2 미만이면 시전할 수 없고, 실패한 시전은 MP도 재사용 대기시간도 소비하지 않습니다. 재시전은 지속시간을 60초로 갱신할 뿐 중첩되지 않습니다.

서버의 스킬 목록에는 Radiance(자기 자신용 조명 토글)와 True Aim (활 전용 필중 표식)도 이미 구현되어 프로토콜까지 지원하지만, 현재는 스킬 목록과 퀵슬롯에서 의도적으로 숨겨져 있어 플레이어가 아직 사용할 수 없습니다.

방패는 이제 armorType: shield라는 별도 분류를 갖습니다(현재는 Wooden Shield와 Raven Shield뿐). 같은 보조무기 슬롯에 들어가는 횃불은 방패로 치지 않습니다. Goblin Sword와 Small Sword는 Sword 무기 타입으로 통합됐고, Dagger와 Great Sword는 여전히 별도 타입입니다.