# 전투 입력과 궁극기 사용 순서 재검토

검토일: 2026-10-14. 클라이언트 분석 기준: v26.102.018.

## 수정한 계산과 화면

- 전투 목적·적 수·전투 시간은 ①에서만 입력한다. 같은 설정의 두 입력창을 제거했다. 기존 계산도 단일 보스·단일 PvP에서는 적 1명을 사용했으나 상세 화면은 저장된 다수 적 값 3을 보여 혼란이 있었다. 이제 입력과 설명이 일치한다.
- 새 계열 레벨은 0이다. 기존 저장 레벨을 임의로 내리지 않는다. 모든 계열을 0으로 설정하는 버튼을 제공한다. 같은 계열의 일반 도술과 궁극기에 공유 레벨을 적용한다.
- 과거 실측 보정 등급을 돌파와 혼동해 계산을 차단하던 조건을 제거했다. 과거 입력·직접 보정은 보존한다. 돌파는 별도 추출 보정표를 사용한다.
- 궁극기 장착칸은 9번이지만 사용 우선순위는 일반 도술과 함께 이동할 수 있다. 계산 가능한 궁극기가 있는 선택 덱은 9! = 362,880개 순서를 비교한다. 궁극기 미복원 또는 미활성 덱은 일반 8! = 40,320개만 비교한다. 모든 도술 조합을 전수 탐색한 결과는 아니다.
- 궁극기 순서와 검 대기 조건을 덱별로 보관한다. 덱 비교에서도 해당 순서를 보존한다.
- 개별 피해·재사용 시간을 비워 두면 자동 추출값과 성장·돌파 보정을 사용한다. 직접 입력이 있으면 해당 항목은 직접 값으로 대체한다. 직접 총 계수에는 성장·돌파 피해를 중복하지 않는다. 직접 입력을 비우면 자동 계산으로 복귀한다.
- 미복원 도술 경고는 붉은 배경·글자와 구체적인 이유를 표시하고, 해당 도술의 수치 수정 버튼으로 연결한다. 복원된 도술에는 불필요한 계수 입력을 요구하지 않는다.
- 상세·빌드의 본문과 입력 설명을 대체로 4~6px 확대했다. 도술 카드는 추출된 계열 태그 색을 사용한다. 모바일 파일 선택 메뉴의 가로 넘침도 수정했다.

## 계열 0과 1의 차이

확인한 사실: `fbdataskillfactor`에는 111개 도술의 레벨 1~50 성장값 5,550행이 있다. 0레벨 행은 없으며, 0과 1이 같은 수치라는 근거도 없다.

명시 가정: 0레벨은 성장값을 0으로 두어 기본 피해 계수를 사용한다. 추출된 서버의 0레벨 공식으로 취급하지 않는다. 1레벨부터는 대응하는 추출 성장값을 사용한다.

찌르기 기본 PvE 타격 계수는 1.0237410068511963, 직접 경로 후보는 2타격이다. 곱산 후보에서:

| 계열 레벨 | 적용 성장값 | PvE 1회 합계 후보 · 돌파 0 |
| --- | --- | --- |
| 0 | 0 · 기본값 가정 | 약 204.7482% |
| 1 | 0.011254999786615372 | 약 207.0526% |
| 13 | 0.15661799907684326 | 약 236.815% |

절명 13·찌르기 돌파 1은 위 합계에 1.03을 곱해 약 243.9%, 쿨타임은 기본 8초에서 0.09초를 빼 7.91초가 된다. 직접 총 계수나 직접 쿨타임이 있을 때는 해당 보정을 중복하지 않는다. 장비·방어·치명타 등 서버 최종 피해를 뜻하지 않는다.

출처: `fbdataskilldamage.bytes` 찌르기 행 13988 / 필드 14004. `fbdataskillfactor.bytes` 레벨 1 행 134688 / 필드 134704, 레벨 13 행 134436 / 필드 134452. 직접 그래프 `assassinate_skill_thrust.graph` 피해 노드 3·7, 지연 후보 40·80ms. 돌파 1 `IncreaseDamage` 행 90772 / 필드 90804, `CoolTime` 행 15808 / 필드 15840. 필드 해석은 접근자 선언 순서 기반 복원이며 실제 실행 결합식은 미검증이다.

곱산과 가산 예: 기본 계수 2(200%), 성장값 0.2면 곱산은 `2 × 1.2 = 2.4`(240%), 가산은 `2 + 0.2 = 2.2`(220%)다. 직접 입력한 총 계수는 두 방식 모두 적용하지 않는다. 기존 저장 설정이 성장 미적용이면 이를 눈에 보이게 안내하고 곱산 후보로 전환하는 버튼을 제공한다.

## 암습 검 누적의 근거와 선택형 가정

확인한 설정:

- `fbdatamechanic` 절명 행 2920: 최대 게이지 5, 표시도 검 5칸 후보.
- `fbdatamechanicgaugeevent` 행 1004: `SkillFirstHit`, 증가값 1. 시전당 또는 모든 타격당 증가로 단정하지 않는다.
- `fbdataskillstylemechanicaffect`: 암습 시전, 같은 그룹 1의 선택 조건 `or`. 5검 행 8896은 추가 계수 1.25 / PvP 0.15, 4검 행 8660은 0.75 / PvP 0.10, 3검 행 8452는 0.55 / PvP 0.05. 각각 해당 검 수를 소비하는 설정이다.
- 행 8268: 5검 상태의 일반 도술 시전, `SkillCoolTimeReduceRemain`, 매개값 `[6000, assassinate, 1010070]`, 소비 없음. 6000을 6초로 해석하는 것은 후보다.
- 암습 직접 경로 후보는 `assassinate_skill_assultofdark.graph` 노드 12·13·10·27, 누적 지연 300·330·360·390ms, 타격별 기본 PvE 2.4872848987579346 / PvP 1.1208809614181519.

검 누적 계산은 기본 OFF다. 사용자가 절명 일반 도술 또는 모든 일반 도술의 첫 적중을 수급 대상으로 선택할 수 있다. 처음 검은 0이며 최대 5에서 멈춘다. 다단히트와 다수 적이어도 한 사용분의 첫 적중에서 한 번만 증가하는 모형이다. 다음 궁극기에서 가장 높은 충족 조건 하나를 사용하고 해당 검을 소비한다.

추가 계수가 암습 1회 합계에 더해지는지 각 타격에 더해지는지는 미확인이다. 두 가정을 구분해 선택하고, 해당 추가값에는 레벨 성장을 다시 곱하지 않는다. 암습 총 계수를 직접 입력했으면 검 추가 피해를 다시 더하지 않는다. 검 수급 범위·개방 단계별 변화·추가 계수 성장·동일 시점 처리·6000의 단위 및 실제 쿨타임 감소 구현은 별도 실측이 필요하다.

최소 검 수 0·3·4·5를 지정할 수 있다. 필요한 검이 없으면 다른 준비된 도술을 사용한다. 사용 우선순위와 실제 첫 적중 시각, 동작 잠금, 쿨타임을 함께 반영한다. 단순히 일반 도술을 4번 시전했다고 4검으로 취급하지 않는다. 결과의 검 대기 비교는 같은 덱·같은 순서에서 대기 조건만 바꾼 값이다. 순서 탐색은 선택한 대기 조건을 고정한 범위의 결과다.

다른 계열의 신식 효과는 계속 미반영이다. 이 모형을 켰다는 이유로 모든 신식과 서버 공식이 복원된 것은 아니다. 서버 틱은 여전히 확인하지 못했으며 시간은 사건 발생 시각을 따라 계산한다.

## 검증과 복원

성장·PvE/PvP·돌파·기존 입력 복원·직접 보정 해제·충전·시간 경계·대상별 연계 검사에 통과했다. 궁극기 9! 탐색, 한 사용분당 첫 적중 1검, 4/5검 차이, 소비, PvP 분리, 최소 검 대기, 선택형 6초 감소, 직접 궁극기 입력의 중복 방지 검사를 추가했다.

로컬 브라우저에서 새 방문자 12계열 모두 0, 절명 13·찌르기 돌파 1의 243.9% / 7.91초 자동 계산, 필수 찌르기를 유지한 추천 완료, 궁극기 순서 이동·탐색 완료, 미복원 은신의 붉은 경고와 수정 버튼을 확인했다. 특정 예시 점수는 게임 최고 DPS를 뜻하지 않는다.

변경 전 웹 파일은 작업 폴더의 `backup/web-v10-before-combat-input-fix`에 보관했다. 소스의 이전 커밋은 공개 버전 10의 `c52f0a87e7189d245c0f23a2e8e87ea6e5663674`다. 브라우저 형식 5로 이동하기 전 형식 4 입력은 `dokkaebi-build-before-combat-input-v5` 키에 한 번 보관한다. 해당 문자열을 덱 설정 JSON 파일로 저장해 불러오면 이전 입력을 복원할 수 있다. 기존 형식 1~4 가져오기도 지원한다.

PC·Codex 설정, 설치된 실행 환경, 원본 게임 파일, baseline, 게임·런처 프로세스는 이번 작업에서 읽거나 변경하지 않았다. 재검토는 기존 추출 결과와 웹 코드만 사용했다. 공개 범위는 웹 코드·선별 수치·작성 문서이며 게임 바이너리·인증 정보·방문자 입력을 포함하지 않는다.
