판정 · 주사위
#1 능력치 판정 성공(자동 굴림)
LIVE#1 · dice.success
은신 행동에 민첩(DEX) 판정이 붙고 성공한 경우
- 주사위 오버레이가 자동으로 굴러가고
- 총합이 DC 이상 → 성공 결과 카드
- 이어서 성공 서사가 로그에 추가됨
5 steps
#2 · dice.critical
원굴림이 최대값(20)이 나온 결정적 성공
- 원굴림 20이 강조되고
- 대성공 연출/문구
- 판정 성공으로 확정
4 steps
#3 · dice.fail
총합이 DC 미만이라 실패한 경우
- 실패 결과 카드
- 실패에 따른 서사(발각/미끄러짐 등)
5 steps
#4 · dice.fumble
원굴림이 1인 결정적 실패
4 steps
판정 · 주사위
#5 수동 굴림(주사위 자동 굴림 OFF)
LIVE#5 · dice.manual
설정에서 자동 굴림을 끈 상태에서 판정이 필요한 경우
- 오버레이가 자동으로 안 굴러가고
- 인라인 '주사위 판별 필요!' 패널이 뜨며
- 탭하면 오버레이가 굴러 결과 확정
5 steps
판정 · 주사위
#6 d4 판정(룰북 커스텀)
LIVE#6 · dice.d4
월드 룰북이 d4를 판정 주사위로 정의한 경우
- dice_sides가 4로 표기되고
- 굴림 범위가 1~4
- 성공/실패 판정은 동일하게 동작
4 steps
판정 · 주사위
#7 d6 판정(룰북 커스텀)
LIVE#7 · dice.d6
월드 룰북이 d6을 판정 주사위로 정의한 경우
- dice_sides가 6으로 표기되고
- 굴림 범위가 1~6
- 성공/실패 판정은 동일하게 동작
4 steps
판정 · 주사위
#8 d8 판정(룰북 커스텀)
LIVE#8 · dice.d8
월드 룰북이 d8을 판정 주사위로 정의한 경우
- dice_sides가 8로 표기되고
- 굴림 범위가 1~8
- 성공/실패 판정은 동일하게 동작
4 steps
판정 · 주사위
#9 d10 판정(룰북 커스텀)
LIVE#9 · dice.d10
월드 룰북이 d10을 판정 주사위로 정의한 경우
- dice_sides가 10으로 표기되고
- 굴림 범위가 1~10
- 성공/실패 판정은 동일하게 동작
4 steps
판정 · 주사위
#10 d12 판정(룰북 커스텀)
LIVE#10 · dice.d12
월드 룰북이 d12를 판정 주사위로 정의한 경우
- dice_sides가 12로 표기되고
- 굴림 범위가 1~12
- 성공/실패 판정은 동일하게 동작
4 steps
판정 · 주사위
#11 d20 판정(룰북 커스텀)
LIVE#11 · dice.d20
월드 룰북이 d20을 판정 주사위로 정의한 경우
- dice_sides가 20으로 표기되고
- 굴림 범위가 1~20
- 성공/실패 판정은 동일하게 동작
4 steps
판정 · 주사위
#12 2d6 데미지(다중 주사위 동시 굴림)
LIVE#12 · dice.2d6
무기 피해가 2d6처럼 같은 종류 주사위 여러 개의 합인 경우
- 주사위 2개가 동시에 던져져 각자 다른 눈으로 착지하고(순차 굴림 아님)
- 표시된 합계가 두 눈의 합과 정확히 일치하며
- 성공/실패 도장 대신 피해량으로 표시됨
4 steps
판정 · 주사위
#13 3d6 데미지(다중 주사위 동시 굴림)
LIVE#13 · dice.3d6
무기 피해가 3d6처럼 같은 종류 주사위 3개의 합인 경우
- 주사위 3개가 동시에 던져져 각자 다른 눈으로 착지하고
- 표시된 합계가 세 눈의 합과 정확히 일치
4 steps
판정 · 주사위
#14 4d6 데미지(다중 주사위 동시 굴림)
LIVE#14 · dice.4d6
무기/주문 피해가 4d6처럼 같은 종류 주사위 4개의 합인 경우
- 주사위 4개가 동시에 던져져 각자 다른 눈으로 착지하고
- 표시된 합계가 네 눈의 합과 정확히 일치
4 steps
판정 · 주사위
#15 한 턴 연속 판정
LIVE#15 · dice.multi-check
서버가 한 턴에 두 판정(등반 → 균형)을 checks로 함께 보낸 경우
- 첫 판정(등반)이 굴러 확정된 뒤
- 두 번째 판정(균형)이 이어서 굴러가고
- 결과 카드 두 장이 순서대로 로그에 남음
4 steps
#16 · combat.enter-single
탐험 중 단일 적과 조우해 서버가 combat_hud.in_combat=true 스냅샷을 보낸 경우
- 조우를 묘사한 GM 문장이 모두 타이핑된 뒤 화면 중앙에 '전투 돌입!' 신호가 짧게 표시되고
- 입력창 왼쪽 상호작용 아이콘이 칼 모양으로 바뀌고
- 아이콘을 누르면 바텀시트에 '안개에 오염된 굶주린 쥐' 한 마리의 외관·체력바가 표시되고
6 steps
전투
#17 전투 진입 — 적 다섯 마리
LIVE#17 · combat.enter-five
여러 적이 동시에 조우해 서버가 다섯 개 몬스터를 가진 combat_hud 스냅샷을 보낸 경우
- 조우를 묘사한 GM 문장이 모두 타이핑된 뒤 화면 중앙에 '전투 돌입!' 신호가 짧게 표시되고
- 입력창 왼쪽 상호작용 아이콘이 칼 모양으로 바뀌고
- 아이콘을 누르면 바텀시트가 다섯 몬스터의 이름·외관·체력바를 모두 목록으로 표시하고
6 steps
전투
#18 몬스터 ? 도감 툴팁 — 다수 적·모바일 시트
LIVE#18 · combat.monster-info-tooltip-mobile
다섯 적이 있는 전투 바텀시트에서 이름 옆 ?를 눌러, 로그의 {monster:...}와 같은 월드 도감을 확인하는 경우
- 시트 헤더의 생존 표기가 '생존 5/5'로 표시되고 목록이 필요한 높이에서만 스크롤되며
- '안개 낀 광산 좀비' 옆 ?를 누르면 실제 GET /api/world/:worldId/lookup 응답의 설명·속성이 툴팁에 표시되고
- 중독·기절 아이콘은 이름 대신 아이콘으로만 보이고 탭하면 각 상태의 남은 턴 툴팁이 열리며
5 steps
전투
#19 공격 명중+데미지 → 처치 → 전리품
LIVE#19 · combat.hit-kill-loot
전투 HUD에 뜬 몬스터를 공격해(명중+데미지 checks) 처치하고, 전리품이 떨어진 경우
- 전투 HUD에 고블린 우두머리 체력바가 표시되고
- 명중 굴림 → 데미지 굴림이 순서대로 재생되고
- 처치 즉시 HUD에 '처치' 태그가 붙고(combat_update), 서버의 별도 종료 신호 없이 클라이언트 타이머로 잠시 후 HUD에서 사라지며
8 steps
전투
#20 플레이어 공격 뒤 적 자동 턴 순차 재생
LIVE#20 · combat.counter
전투 HUD 몬스터를 공격했지만 못 죽여서, 플레이어 결과를 읽은 뒤 적이 자신의 턴을 진행하는 경우
- 전투 HUD에 오크 체력바가 표시되고 데미지만큼 줄어들며
- 내 명중 굴림 → 내 데미지 굴림 → 내 공격 결과 서사 순서로 재생되고
- 그 서사가 끝난 뒤에만 오크의 행동 묘사 → 오크 명중 굴림 → 오크 데미지 굴림 → 결과 서사가 이어지며
10 steps
전투
#21 수동 전투 한 턴 — 내 판정부터 적 턴까지
LIVE#21 · combat.manual-full-turn
기본 설정인 자동 주사위 OFF에서 플레이어가 적을 공격하고, 살아남은 적이 한 번의 자동 턴을 진행하는 경우
- 내 명중 판정을 직접 탭하고, 내 피해 판정을 직접 탭한 뒤에만 내 공격 서사가 재생되고
- 내 서사를 읽는 동안과 적 턴의 행동/명중/피해 판정 중에는 입력창과 전송 버튼이 계속 잠기며
- 적 행동 서사 → 적 명중 → 적 피해 → 결과 서사 순서가 내 결과 뒤에만 이어지고
12 steps
전투
#22 전투 처리 중 단절·재접속 — 늦은 중복 이벤트
LIVE#22 · combat.reconnect-during-turn
내 공격의 tentative 주사위가 도착한 뒤 연결이 끊기고, 재접속/동일 요청 재전송 뒤 이전 이벤트가 늦게 한 번 더 도착한 경우
- 끊김 동안 입력이 잠기고 재연결 배너가 보이며, 재접속 뒤 전투 HUD·HP·현재 턴이 유지되고
- 같은 client_action_id의 재전송이 새 턴을 한 번 더 소비하지 않으며
- 같은 event_id의 주사위/PLAYER 최종 응답이 늦게 재도착해도 주사위 카드·플레이어 발화·GM 서사가 각각 한 번만 남고
15 steps
전투
#23 스킬 쿨타임 배지 — 재사용 대기 중 사용 불가
LIVE#23 · combat.skill-cooldown
방금 쓴 스킬이 아직 쿨타임(2턴 남음)이라 배지가 뜬 경우 (2026-07-24 skill_cooldowns 실배선)
- 전투 액션 덱/시트의 '화염 폭풍' 스킬에 '2턴' 쿨타임 배지가 표시되고
- 그 상태로 다시 시전을 시도하면 발동하지 않고 실패 서사가 나오며
- 실패 시도로 턴을 소비해 적 반격을 맞음(HP 감소)
7 steps
전투
#24 복합 전투 입력 — 첫 행동 판정 후 다음 행동 제안
LIVE#24 · combat.deferred-next-action
한 입력에 ‘넘어뜨리고 찌른다’처럼 독립 행동 둘이 들어와 서버가 첫 행동만 해결한 경우
- 명중/피해 등 첫 제압 행동의 판정과 결과 서사만 먼저 재생되고
- 입력창 바로 위에 ‘다음 행동 제안 · 넘어진 좀비를 찌른다’가 한 줄로 표시되며
- ‘행동에 넣기’를 누르면 전송 없이 입력창에만 문구가 채워지고, 직접 보내야 다음 턴이 진행되며
8 steps
#25 · combat.end
전투 HUD의 마지막 적을 쓰러뜨려 전투가 끝난 경우 (2026-07-22 라이프사이클, 2026-07-24 combat_hud 실배선)
- 처치 직후 HUD에 '처치' 태그가 잠시 붙었다가
- 서버 최종 응답의 combat_hud.in_combat=false로 HUD가 즉시 닫히고
- 마무리 GM 문장의 첫 글자가 타이핑되는 순간 화면 중앙에 '전투 종료' 신호가 짧게 표시되고
8 steps
전투
#26 HP 0 패배 → 전투 종료 → 게임오버
LIVE#26 · combat.player-defeat-game-over
전투 중 내 HP가 0이 되고, 월드가 영구 사망/엔딩 정책을 적용한 경우
- 캐릭터 패널 HP가 0으로 실제 소켓 갱신되는 순간 핏빛 피해 섬광이 보이고
- 서버 최종 응답에서 전투 HUD가 닫히며
- HP가 0으로 갱신되는 바로 그 순간 눈을 감듯 깜빡이며 배경·캐릭터가 암전되고, GM 서사가 타이핑 중이어도 로그는 계속 읽히며
9 steps
전투
#27 HP 0 패배 → 전투 종료 → 상황형 구출 후 재개
LIVE#27 · combat.player-defeat-rescued
전투 중 내 HP가 0이 되었지만, 비하드코어 월드 정책에 따라 살아남아 다음 장면으로 이어지는 경우
- 캐릭터 패널 HP 0과 서버의 전투 종료 스냅샷이 순서대로 반영되고
- HP 0 갱신과 동시에 피해 섬광 뒤 눈을 감듯 검은 페이드가 재생되며 전투 HUD가 다시 열리지 않고
- GM이 상황에 맞는 구조/치료/시간 경과 중 하나를 선택한 뒤 HP가 회복되고
12 steps
전투
#28 치명타 피해 → HP 0 → 눈 감김 타이밍
LIVE#28 · combat.defeat-impact-timing
적의 명중·피해 판정이 끝난 직후 character panel의 HP가 0이 되고, 그 다음 GM 패배 서사가 타이핑되는 경우
- 적의 명중/피해 판정 카드가 먼저 순서대로 재생되고
- 피해가 확정된 뒤 HP 0 패널 갱신 순간에 핏빛 섬광과 몇 번의 눈꺼풀 깜빡임이 시작되며
- 암전은 로그의 패배 서사가 타이핑되는 동안 위아래로 천천히 닫히고, 로그 글자는 계속 읽을 수 있으며
9 steps
성장 · 자원
#29 레벨업 + 배분 포인트(SP) 지급
LIVE#29 · growth.levelup-sp
경험치를 얻어 레벨이 오르고, 규칙서에 따라 SP가 지급된 경우 (2026-07-22 신규)
- 내 정보 패널의 레벨이 8로 상승
- 미배분 스탯 포인트가 현재 값에서 +3 증가(이미 썼다면 그 위에 가산)
- 레벨업 축하 서사에 SP 획득 언급
6 steps
성장 · 자원
#30 물약 사용 → HP 회복 + 소모
LIVE#30 · growth.potion-heal
체력 물약을 마셔 HP가 오르고 아이템 개수가 줄어드는 경우
- 가방(내 정보)에 물약이 실제로 뜨고 '사용 가능'으로 클릭되며
- 내 정보 HP 상승
- 인벤토리에서 물약이 사라짐(1개 소모)
8 steps
성장 · 자원
#31 상태이상 — 중독(매 턴 피해)
LIVE#31 · growth.status-poison
파티원이 독에 걸려 매 턴 HP가 깎이는 상태 (2026-07-24 roster 실배선 — active_conditions)
- 파티 탭 로스터에서 엘윈 아바타 아래 '중독' 상태 아이콘이 뜨고
- 해당 파티원 HP 바가 감소
5 steps
성장 · 자원
#32 상태이상 — 기절 / 전투불능
LIVE#32 · growth.status-downed
파티원이 기절해 행동할 수 없는 상태 (2026-07-24 roster 실배선)
- 파티 탭 로스터에서 리나 아바타 아래 '기절' 상태 아이콘이 뜨고
- HP 바가 0에 가깝게 표시됨
5 steps
거래 · 전리품
#33 전리품 카드 — 희귀도/수량
LIVE#33 · trade.loot-rare
여러 개의 희귀 아이템을 획득한 경우
- 전리품 카드에 희귀도 색상
- 수량 표기
- 이름/설명 렌더
3 steps
거래 · 전리품
#34 전리품 카드 — 긴 이름/설명(레이아웃)
LIVE#34 · trade.loot-epic-long
이름·설명이 매우 긴 에픽 아이템 (줄바꿈/말줄임 검증)
- 긴 텍스트가 카드 밖으로 넘치지 않고
- 에픽 희귀도 강조
- 레이아웃이 깨지지 않음
3 steps
거래 · 전리품
#35 상점 구매 — 골드/가방 실제 갱신
LIVE#35 · trade.buy
'상점' 버튼으로 상인 패널을 열고 살 수 있는 물건을 구매한 경우 (2026-07-24 merchant 실배선 — REST 왕복)
- 우측 상단(또는 하단) '상점' 버튼이 나타나고, 누르면 대장장이 물목이 뜨며
- '강철 방패(30골드)'를 구매하면 골드가 52 → 22로 실제로 줄고
- 가방(내 정보)에 강철 방패가 새로 추가됨
6 steps
거래 · 전리품
#36 소지금 부족 — 실제 거래 거부
LIVE#36 · trade.insufficient
'상점'에서 골드가 모자란 물건을 구매 시도한 경우 (2026-07-24 merchant 실배선 — 진짜 실패 토스트)
- '전설의 대검(500골드)'을 구매 시도하면
- 실제 서버 응답이 실패(success:false)해 '골드가 부족합니다' 오류 토스트가 뜨고
- 가방/골드는 그대로 유지됨(52골드)
5 steps
서사 · 연출
#37 배경 + NPC 등장(단독)
LIVE#37 · narrative.stage-single
장소 배경이 깔리고 대화 상대 NPC 한 명이 무대에 등장한 경우
- 배경 이미지 전환
- NPC 초상이 지정 위치에 등장
- 이름표 표시
4 steps
서사 · 연출
#38 다중 캐릭터 배치 + 감정 표정
LIVE#38 · narrative.stage-multi-emotion
여러 캐릭터가 서로 다른 위치·감정으로 함께 무대에 선 경우
- 좌/중/우 배치가 겹치지 않고
- 각 캐릭터의 감정 표정 반영
- 이름표
4 steps
이어하기 · 로그 복구
#39 이전 기록 로드 중 새 응답 도착
LIVE#39 · history.pagination-live-race
긴 로그에서 ‘이전 기록’을 누른 뒤, 이전 페이지가 늦게 도착하기 전에 다음 행동의 실시간 GM 응답이 도착한 경우
- 처음에는 최신 50개와 '이전 기록' 버튼이 보이고, 버튼을 누르면 불러오는 동안 중복 요청이 막히며
- 버튼을 누른 직후 드라이버의 다음 행동(또는 자유 입력)을 보내면 새 PLAYER/GM 응답이 먼저 로그 끝에 추가되고
- 늦게 도착한 이전 50개가 위에 prepend되어도 새 응답이 사라지거나 순서가 뒤집히지 않고, 경계에 겹친 log_id 51은 한 번만 보이며
5 steps
시나리오 · 퀘스트 · 결말
#40 새 시나리오 수여 — 나레이션 뒤 확인
LIVE#40 · story.scenario-granted
GM이 한 장면의 나레이션과 함께 새 시나리오를 부여한 경우
- GM 나레이션이 모두 타이핑된 뒤에만 새 시나리오 패널이 열리고
- 패널 바깥의 플레이 화면은 테마와 관계없이 중성 검정 음영으로 어두워지며
- ‘계속’을 누르면 패널이 닫히고 다음 행동을 입력할 수 있음
4 steps
시나리오 · 퀘스트 · 결말
#41 퀘스트 제안 모달 — 수락/거절
LIVE#41 · story.quest-offer
NPC가 새 퀘스트를 제안해 실제 수락/거절 모달이 뜬 경우 (2026-07-24 interactive_ui.quest_offer 실배선 — 이전엔 배너 텍스트로만 흉내 냈다)
- 퀘스트 제안 모달이 뜨고(제목·설명·제안자 이름)
- 모달 바깥 플레이 화면은 새 시나리오와 동일한 중성 검정 음영으로 어두워지고
- '수락'을 누르면 실제 서버 왕복(SessionUiActionResultDto) 후 모달이 닫히며
4 steps
시나리오 · 퀘스트 · 결말
#42 퀘스트 완료 → 보상
LIVE#42 · story.quest-complete
퀘스트 완료 조건을 채워 보상(골드·아이템·경험치)이 지급된 경우
- 완료 서사에 보상 언급
- 보상 전리품 카드(이름·수량·희귀도)
4 steps
시나리오 · 퀘스트 · 결말
#43 결말(ENDING) 도달
LIVE#43 · story.ending
월드가 정의한 결말 조건을 충족해 캠페인이 종결되는 경우 (2026-07-20 기능, 2026-07-24 campaign_state.ending_event 실배선)
- 이번 턴 나레이션 뒤에 결말 헤더 + 에필로그가 같은 GM 엔트리로 이어붙고
- 엔딩 이미지가 있으면 그 턴의 최종 배경으로 전환되며
- 그 이후에도 세션은 잠기지 않고 계속 입력 가능(락 없음)
4 steps
#44 · suggest.multi
GM이 다음 행동 후보를 여러 개 제안한 경우
- 칩이 여러 개 나란히 표시되고
- 가로 넘침 없이 배치
- 클릭하면 그 문구로 발화
4 steps
#45 · suggest.one
제안 행동이 하나뿐인 경우
4 steps
추천 행동 칩
#46 추천 칩 없음(숨김)
LIVE#46 · suggest.none
추천 행동이 없는 순수 서사 턴
4 steps
추천 행동 칩
#47 추천 칩 — 긴 문구
LIVE#47 · suggest.long
제안 문구가 긴 경우 (말줄임/줄바꿈)
4 steps
#48 · multiplayer.party-chat
게임 진행과 분리된 파티 잡담 채널에 메시지가 오가는 경우
- 파티 탭에 수신/발신 말풍선
- 다른 탭이면 알림 배지
- 게임 로그와 섞이지 않음
4 steps
멀티플레이
#49 파티 로스터 — HP/상태이상 아이콘
LIVE#49 · multiplayer.roster
전투 후 파티원들의 자원·상태가 갱신된 경우 (2026-07-24 roster 실배선 — GET /party-members 실왕복)
- 각 파티원 HP 바 갱신
- 출혈/정상 등 상태이상 아이콘이 아바타 아래 표시
3 steps
#50 · multiplayer.party-invite-proposal
AI GM이 새 동료를 파티에 초대할지 물어 확인 모달이 뜬 경우 (2026-07-24 interactive_ui.party_invite_proposal 실배선)
- '파티 초대' 확인 모달이 뜨고(캐릭터 이름·소개)
- '초대'를 누르면 실제 서버 왕복(POST party-invite-proposals/confirm) 후 모달이 닫힘
4 steps
#51 · system.connecting
실시간 방에 접속을 시도하는 중
2 steps
#52 · system.disconnected
실시간 연결이 끊긴 경우
3 steps
세션 · 시스템 상태
#53 범용 오류 폴백(알려지지 않은 코드)
LIVE#53 · system.error-recoverable
턴 처리 중 일시적 오류가 발생했지만, handleSocketError가 특별 처리하는 코드가 아닌 경우
- error.message가 그대로 인라인 오류로 표시되고
- 상태가 망가지지 않고 재시도 가능
4 steps
세션 · 시스템 상태
#54 세션 중복 접속
LIVE#54 · system.session-already-open
같은 캐릭터로 다른 창/기기에서 이미 세션이 열려 있는 경우 (2026-07-24 code:SESSION_ALREADY_OPEN 실배선)
- '이미 다른 창에서 같은 세션을 플레이 중입니다' 전용 안내 문구가 표시됨(범용 오류 문구가 아님)
2 steps
세션 · 시스템 상태
#55 크레딧 부족 → 충전 유도 모달
LIVE#55 · system.insufficient-credits
턴을 보낼 크레딧이 부족한 경우 (2026-07-24 code:INSUFFICIENT_CREDITS 실배선 — 이전엔 커버리지 자체가 없었다)
- 잔액/필요량이 표시된 크레딧 충전 유도 모달이 뜸(250ms 뒤)
4 steps
설정
#56 주사위 자동 굴림 OFF → 수동 경로
LIVE#56 · settings.autoroll-off
자동 굴림을 끄면 판정이 수동(주사위 판별 필요 패널) 경로로 바뀌는지
- 자동 굴림 OFF 반영
- 판정 시 오버레이 대신 인라인 패널
5 steps
#57 · settings.narration-fast
나레이션 타이핑 속도를 빠르게 설정한 경우
4 steps
#58 · settings.dice-sound
주사위 사운드를 켠 상태에서 판정이 진행되는 경우
- 주사위 굴림 시 사운드 재생(사운드 프라이밍)
5 steps