# DPS 계산기에 반영할 모델

> 2026.10.16 갱신: 10/15 리소스 패치로 무기5종 기본 공격 1타격 PvE70.20%·PvP50.6231% 반영. 기존 설명의 모형은 유지하며, 정확도↔도술 막기 서버 공식은 미확인이다. 직접 감쇠 보정은 무기 기본 공격을 제외한 도술 피해에만 적용한다.


이 문서는 확보한 클라이언트 설정을 쓰는 **계산기 설계안**이다. 서버 공식의 복원 결과와 구분한다. DPS는 관찰 구간의 총 피해를 시간으로 나눈 값이다.

## 데이터 입력

`skill-data.json`에는 스킬123개와 연결된 피해 행276개를 저장했다. 이름111개를 연결했고 이름을 확보하지 못한12개는 null로 남겼다. 각 수치에 원본 번들 해시, TextAsset ID, 추출 파일·바이트 오프셋, 메타데이터 접근자 근거가 있다. 원시 float를 보존했으며 null을 임의의0/false로 바꾸지 않았다.

| 기본 행 | 낙뢰 | 화염 분출 |
|---|---:|---:|
| SkillId / DamageId | 1070012 / 1 | 1070014 / 1 |
| FactorValue | 1.533182978630066 | 1.4959640502929688 |
| PvpFactorValue | 0.6688839793205261 | 0.6753990054130554 |
| 설명의 타격 수 | 1회 | 1회 |
| 설정 쿨타임 후보 | 약14.7초 | 약14.7초 |

FactorValue×100을 백분율로 표시하면 각각 약153.3183%, 149.5964%이다. 이는 변수명·설명 템플릿 기반 표시 해석이며 성장·각성·장비·전투 속성 적용 후 최종 피해 계수가 아니다. PvP는 별도 원시값을 유지한다. 이를 PvE 값에 추가로 곱하는지 또는 대체하는지는 본문을 확인하지 못했다.

## 사건 단위 계산

각 타격을 독립 사건으로 계산한다.

```text
DPS(T) = 구간 [0,T)의 적중 피해 합 / T
타격 i의 피해 후보 = 유효 공격 기준값 × 적용 계수 × 치명타/방어/피해보정 함수
```

공격 기준값과 보정 함수는 사용자 입력 또는 실측으로 보정해야 한다. 방어 환산식, 치명타 확률·배율, 반올림, 최소 피해, 서버 상한을 이번 파일 분석만으로 확정하지 않았다. 기본 계수/쿨타임 비율은 제한된 참고값이며 실제 DPS가 아니다.

시뮬레이터 상태는 다음을 분리한다.

- 스킬별 준비 시각·충전 수·쿨타임 시작 기준.
- 사용자 우선순위와 대상·거리·상태 조건.
- 시전/이동 잠금, 피해 발생 지연, 효과 적용 사건.
- 대상별 파쇄·관통 표시, 받는 피해 증가, 방어력 감소.
- 버프 그룹·중복 정책·스택·만료 시각.
- 파멸 게이지와 fullgauge 효과.

## 연계 사건 처리

그래프와 일치하는 후보 정책은 다음과 같다. 서버·엔진 구현이 미확인인 부분은 교체 가능한 시나리오 옵션으로 둔다.

1. 타격 직전 기존 효과를 기준으로 피해를 계산한다.
2. 화염 분출이 파쇄 조건을 만족하면 120009102를 적용하고 120009203의 파쇄 감소/소비 처리를 예약한다.
3. 낙뢰가 관통 조건을 만족하면 120009100을 적용하고 120009207의 관통 감소/소비 처리를 예약한다.
4. 새 효과는 이후 타격부터 참조한다. 같은 틱·같은 시각의 적용 경계는 실측으로 결정한다.
5. LifeMillis10000과 MaxStack1, Replace를 같은 버프의 중첩 정책 후보로 사용한다. 다른 그룹의 가산·곱산 결합은 별도 입력이다.

파쇄→화염 분출→후속 낙뢰는 받는 피해 증가를 후속 타격에 활용하는 후보 순서다. 낙뢰의 자체 방어 감소 연계에는 **관통 조건이 별도로 필요**하다. 효과가 다른 대상에 부여되었거나 표시가 만료되었으면 연계를 적용하지 않는다.

5% 받는 피해 증가의 원시 근거는 DamageDown=-500, CorrValue≈0.0001이다. 해석 후보를 구분해 비교할 수 있다.

```text
후보 A: 기존 피해 감소 속성에 -0.05를 가산한 뒤 게임의 미확인 보정 함수 적용
후보 B: 별도 받는 피해 배율 1.05 적용
```

두 후보 중 어느 것이 서버와 일치하는지 확인 전에는 고정하지 않는다. 방어력5% 감소는 현재 방어력 및 방어 환산 함수에 적용해야 하며 피해×1.05로 치환하지 않는다.

## 게이지·성장 처리

파멸 계열에는 GaugeMax200, SkillCast당 GaugeValue25, fullgauge의 쿨타임 감소 설정 `[9990, all]`이 존재한다. 매 시전의 게이지 획득·재발동·초기화 여부를 이벤트로 계산한다. 고정 쿨타임 공식 `타격당피해/14.7`로는 이 경로를 반영할 수 없다. 9990을 완전 초기화로 자동 치환하지 않는다.

스킬 성장·소유·각성·스타일 효과의 데이터도 패키지에 있으나 완전한 계수 결합식을 확보하지 못했다. `fbdataskillenhance`의 LvCombatPointPer는 전투력 관련 필드이므로 공격 피해 성장 배율로 사용하지 않는다. 현재 캐릭터 계수는 UI/일반 플레이 실측 등 별도 입력을 받는다.

## 우선 실측 항목

| 항목 | 비교 방법 | 결정할 모델 값 |
|---|---|---|
| 타격과 효과 적용 순서 | 같은 타격/다음 타격의 피해 비교 | 신규 효과가 이번 타격에도 적용되는지 |
| 받는 피해 증가 결합 | 기존 피해 감소가 다른 조건에서 비교 | 속성 가산/별도 곱산·상한 |
| 방어 감소 | 서로 다른 방어 대상 비교 | 방어 환산 함수 |
| 우선순위 | A→B와 B→A 설정 반복 | 정렬 방향·실패 시 다음 선택 |
| 시간 제약 | 영상의 시전 시작/피해/다음 시전 기록 | 500ms·330값의 기준과 공통 잠금 |
| 만료·재부여 | 종료 직전 적중/동일 효과 재부여 | 같은 틱 경계·갱신/교체 처리 |
| 게이지 | fullgauge 전후 쿨타임·버프 관찰 | 초기화·감소 비율·재발동 |
| 성장/PvP | 성장 단계·전투 모드별 비교 | 최종 계수 및 대체/곱산 여부 |

이번 범위에서는 일반 플레이 실측을 수행하지 않았다. 계산기에 넣을 수 있는 원시 수치와 조건 구조는 확보했고, 미확인 공식은 명시적 입력으로 남기는 것이 현재 근거에 맞다.


## 2026-10-14 추가 재검토

기존에 누락된 도술별 성장 계수5550행, 사거리·조준 도형,12계열 궁극기 연결을 추가로 복원했다. 성장값의 결합식과 조준 영역의 실제 피해 판정 일치는 미확인이다. 일반8칸/궁극기9번칸 및1~5칸3개조건은 사용자가 알려준 인게임 규칙을 적용했다. 상세 내용은 review-report-20261014.md. 기존 계산기 예시는 새 칸 배치 규칙으로 갱신했다.
