디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[💬] 정리)기본적인 스텟 및 대미지 계산 과정(19/12/29수정)

에무1918갤로그로 이동합니다. 2019.01.27 19:59:01
조회 6637 추천 35 댓글 29
														


viewimage.php?id=20b4d327f1d739ab&no=24b0d769e1d32ca73cee84fa11d02831cd949b6924735c7cb75a680f5c9d0fc8fb5b9e0d0a3d5d8865729e37c1d8656fbba574f9d63ddb89822ca74c1c3e

예전에 관련 내용 정리가 필요하다는 요청이 있어서 정리해야지~하고 생각했던게 벌써 반년이 지나부렷는데


이번 190117패치로 파쇄 적용 등 여러 변경점이 생겨서 이 기회에 정리를 함.


코드의 진행 순서를 베이스로 정리를 하였으며 그러다보니 불필요한 내용을 길게 쓴 곳도 있고, 글의 순서가 다소 이상하게 느껴지는 곳도 있는데


추후에 간략화시킨 글도 쓸 예정


여기서는 주로 인형을 기준으로 정리하였으나 화력소대와 적 등에게도 동일하게 적용된다고 보면 됨.


본문 계속해서 수정하고 추가하고 보완할 것이기에 따로 퍼가기보다 수정하는걸 봤으면 좋겠다.


아 글고 위키 가져갈거면 리퍼런스 좀 남겨라 아니 지난번에 쓴 글 진짜 고대로 복붙해놧드마


최종 수정일 : 2019년 12월 29일 23시 40분

버전 : 운영사 2.0300_686 버전(190118)


문의 및 요청사항 : dpan1918@gmail.com


--목차--


0편. 용어


1편. 스텟의 계산


A. 편성창 스텟의 계산

B. 실제 스텟(실시간 스텟)의 계산


(1.5편. 적용 대상)


2편. 대미지의 계산


C. 역장-파쇄 차감

)c-1. 파쇄 대미지 계산

)c-2. 역장-파쇄 계산 및 초과파쇄 추가 대미지의 계산

D. 치명타 여부 판정(치명타가 발생하는 피해 유형의 경우)

E. 기본 대미지의 계산

F. 명중여부 판정(필중이 아닌 피해 유형의 경우)

G. 랜덤 대미지 계산

H. 장갑 적용 대미지 계산(장갑에 영향을 받는 피해 유형의 경우)

I. 치명타(및 고정) 대미지의 계산

J. 역장 대미지 감소 배율 계산

K. 초과파쇄 추가 대미지 및 역장 대미지 감소 적용


3편. 대미지의 적용

L. 대상의 받는 피해 배율 적용

M. 대미지 면역 상태 확인

N. 피격 시 발동 계통 스킬 트리거 확인

O. 실드 연산

P. 텍스트 출력

Q. AOE 대미지의 적용

R. 현재 체력에 실제 피해량 적용(중파무적 계산)


4편. 기타

S. 피해 유형에 설정된 버프의 발동 확인

T. 넉백의 처리

V. 발생하는 오차에 대해


----------------------------


0편. 용어


-최종 대미지와 최종 피해량에 대해

사실상 같은 단어겠지만 이 글에서는 최종 대미지와 최종 피해량을 다른 개념으로 구분해 놓았는데, 이는 코드 진행 방시에 따라 작성해서 그럼.

코드 진행상으로는


1) 공격을 하는 유닛의 화력, 명중, 파쇄, 관통 등과 대상의 역장, 장갑, 회피를 적용시켜서 1차적으로 대미지를 구함

2) 그 대미지에 적의 실드, 댐감댐증 배율, AOE 여부 등을 반영하여 값을 구함

2-a) 그 값을 적의 체력에서 실제로 차감을 함

3) 기타 피해 유형에 설정된 버프, 넉백 등 확인


이런 방식으로 되어있는데 중간에 한 번 끊으려니까 용어를 어떻게 정해야할지 애매하더라고.


이 부분은 오해의 소지가 있으니 계속 생각해서 좀 더 다듬도록 하겠음.


-Round(A) : A를 소수점 첫 째 자리에서 반올림

-Roundup(A) : A를 소수점 첫 째 자리에서 올림

-Rounddown(A) : A를 소수점 첫 째 자리에서 내림

-Max(A, B) : A와 B 값 중 더 큰 값을 반환
-Min(A, B) : A와 B 값 중 더 작은 값을 반환
-Clamp(X, A, B) : X값이 A보다 작으면 A를, B보다 크면 B를, 구간에 포함되면 X를 반환 (그냥 X를 A~B사이로 제한시킨다 보면 됨)

-Random(A, B) : A~B사이 랜덤의 수를 반환

-편성창 스텟 : 편성 화면에서 확인 가능한 스텟
-실제 스텟(실시간 스텟) : 전투 중 실제 계산에 쓰이는 값. 실시간으로 버프나 스킬 등을 반영
-요정 추가 스텟 : 흔히들 말하는 요정의 토템수치를 뜻 함. 요정의 특성이나 스킬은 제외됨.

-대미지 배율 : 해당 공격(피해 유형)이 지닌 배율을 의미. 엠포 개조를 예로 들자면 엠포의 화력은 동일하지만 주 타격은 600의 대미지 배율, 범위 피해는 100의 대미지 배율을 보유하고 있어 상이한 피해를 입힌다. 단순히 이런 화력과 연관된 대미지 배율 외에도 파쇄와 연관된 파쇄 대미지 배율, 치명상과 연관된 치명상 대미지 배율 등이 존재한다.




1편. 스텟의 계산


아주 기초적인 스텟의 계산부터 들어가자.


스텟은 크게 편성창 스텟실제 스텟(혹은 실시간 스텟)으로 나뉜다,


편성창 스텟(혹은 전투 기본 스텟) : 인형들의 경우 편성창에서 확인할 수 있는 스텟으로 전투 시작 시 해당 유닛들의 기본 스텟으로 적용이 된다.


실제 스텟(혹은 실시간 스텟) : 전투 중 실시간으로 적용이 되는 스텟으로 실제 대미지, 명중률, 치명률 계산 등에 사용된다.


이러한 스텟의 종류로는 화력, 명중, 회피, 사속, 장갑, 관통, 치명률, 치명상, 파쇄, 이동속도 등이 있다.


번외. 스텟 랭크와 실제 스텟(추가예정)


A. 편성창 스텟의 계산


순수한 인형의 스텟을 "인형 기본 스텟"이라고 부르도록 하자.


편성창 스텟이라함은 우리가 편성창에서 확인 가능한 인형들의 스텟이다.


여기에는 오직 인형의 기본 스텟, 호감도 배율, 장비 수치, 요정 기본 버프가 적용이 되며,


전투에 들어갈 시 이 값을 해당 유닛의 기본 값으로 두고 거기에 실제 스텟 연산을 실행한다.


이 편성창 스텟은 크게 다음과 같은 순서로 계산을 한다.


1. 인형 기본 스텟


치명상 : 150 = (표기상 50%)

관통 : 15


2. 호감도 배율 적용(호감도 배율이 적용되는 스킬의 경우 = 화력/명중/회피)


호감도 배율 적용 스텟 = 인형 기본 스텟 + Roundup(인형 기본 스텟 * 호감도 배율)


호감도

호감도 배율

호감도

-0.05

10≤호감도

0

90호감도

0.05

140호감도

0.1

190≤ 호감도

0.15


3. 장비 적용


장비 적용 스텟 = 호감도 배율 적용 스텟 + 장비 수치


4. 요정 추가 버프 적용(요정 추가 버프가 적용되는 스텟의 경우 = 화력/명중/회피/장갑/치명상)


요정 추가 버프 적용 스텟 = Roundup(장비 적용 스텟 * 요정 추가 버프 배율) = 편성창 스텟


여기서 화력, 명중, 회피만 스텟은 2번의 호감도 계산을 적용하며,


화력, 명중, 회피, 장갑, 치명상만 4번 요정 추가 버프 계산을 적용한다.


스텟별로 다시 정리하자면


case1) 화력, 명중, 회피

Roundup((인형 기본 스텟 * Roundup(인형 기본 스텟 * 호감도 배율) + 장비 수치) * 요정 추가 버프 배율)


case2) 치명상

Roundup((Roundup(인형 기본 스텟) + 장비 수치) * 요정 추가 버프 배율)


case3) 장갑, 관통, 사속, 이속

Roundup(Roundup(인형 기본 스텟) + 장비 수치)


결과적으로 편성창 스텟은 모두 정수값으로 나타나게 된다.



B. 실제 스텟(실시간 스텟)의 계산


실제 스텟은 전투 중 실시간으로 대미지, 이속 등의 계산에 쓰이는 값이다.


여기서는 위에서 언급하지 않은 진형버프, 스킬, 특성, 우세인형 버프 등의 모든 내용이 적용이 된다.


기본적인 계산 방법은 아래와 같다.


실제 스텟 = 편성창 스텟 * 적용중인 스텟 버프 최종 배율


적용중인 스텟 버프 최종 배율 = (해당 스텟의 진형버프 합) * 해당 스텟 버프 스킬 * 해당 스텟 버프 스킬 * 해당 스텟 버프 스킬 * ....


※여기서 해당 스텟 버프 스킬이라 함은 요정의 스킬, 요정의 특성, 인형들의 스킬, 적군의 스킬 등을 모두 포함하는 개념.


조금 더 이해하기 쉽게 바꾸자면


실제 스텟 = 편성창 스텟 * (진형버프의 합) * 요정 특성 * 요정 스킬 * 버프 * 버프 * 버프 * .... * 디버프 * 디버프* 디버프 * .....



하지만 스텟마다 약간의 차이가 존재하고, 최소값이나 최대값 설정도 존재한다.


이를 정리하면


case1) 실수 값이 남는 경우

실제 화력 스텟 = Max(0, 편성창 화력 * 적용중인 화력 버프 최종 배율)

실제 치명률 스텟 = Max(0, 편성창 치명률 * 적용중인 치명률 버프 최종 배율)

실제 파쇄 스텟 = Max(0, 편성창 파쇄 * 적용중인 파쇄 버프 최종 배율)


case2) 내림처리 하는 경우

실제 회피 = Max(0, Rounddown(편성창 회피 * 적용중인 회피 버프 최종 배율))

실제 장갑 = Max(0, Rounddown(편성창 장갑 * 적용중인 장갑 버프 최종 배율))

실제 관통 = Max(0, Rounddown(편성창 관통 * 적용중인 관통 버프 최종 배율))

실제 치명상 = Max(0, Rounddown(편성창 치명상 * 적용중인 치명상 버프 최종 배율))

실제 이속 = Max(0, Rounddown(편성창 이속 * 적용중인 이속 버프 최종 배율))


case2-1) 명중의 경우(내림처리)

실제 명중 스텟(주간) = Max(1, Rounddown(편성창 명중 * 적용중인 명중 버프 최종 배율))

실제 명중 스텟(야간) = Max(1, Rounddown(편성창 명중 * (1 + (-0.9) * (1 - 야시능력)) * 적용중인 명중 버프 최종 배율))


case2-2) 사속의 경우(내림처리)


실제 사속 = Clamp(Rounddown(편성창 사속 * 적용중인 화력 버프 최종 배율), 1, 사속제한)


구분

사속제한

MG

1000

SG

60

그 외

120


※번외. 공격 간격(프레임)


공격 간격(프레임)은 실제 사속을 이용해서 구하며 계산식은 아래와 같다.


공격 간격(프레임) = Rounddown(1500 / Clamp(실제 사속, 최소 사속, 최대 사속))


구분

최소사속

최대사속

일반

15

120

화력소대

5

50


case3) 쿨타임 감소의 경우(올림처리)

실제 쿨타임 = Roundup(스킬 프레임 * 쿨타임 감소 배율)


패시브 계통의 스킬 역시 쿨타임 감소의 영향을 받을 수 있으나, 설정마다 상이하다.


※치명률, 치명상, 야시능력의 표기와 식에서의 입력

- 편성창에서 치명률이 80%인 경우, 위 식에 그대로 80이라 입력

- 편성창에서 치명상이 70%인 경우, 100을 더해서 170이라 입력

- 편성창에서 야시능력이 40%인 경우, 0.4로 입력


이와 같다.


요약하자면


case1) 화력/치명률/파쇄의 경우 - 실수 값이 유지됨

실제 스텟 = 편성창 스텟 * 적용중인 스텟 버프 최종 배율


case2) 사속/회피/장갑/관통/치명상/이속/명중의 경우 - 내림처리해서 정수값이 나옴

실제 스텟 = Rounddown(편성창 스텟 * 적용중인 스텟 버프 최종 배율)

※사속의 경우 한계 사속 고려


case2-1) 명중(야전)의 경우 - 내림처리해서 정수값이 나옴

실제 명중 = Rounddown(편성창 명중 * (1 - 0.9 * (1 - 야시능력)) * 적용중인 명중 버프 최종 배율)


case3) 쿨타임 감소의 경우

실제 쿨타임 = Roundup(스킬 프레임 * 쿨타임 감소 배율)


결과적으로


화력, 치명률, 파쇄만 실수 값이 유지된 상태로 실제 전투에 적용이 되며


그외에 스텟은 정수 값으로 실제 전투에 적용이 된다.



1.5편. 적용 대상


총을 쏘건, 수류탄을 던지건, 연막을 던지건 누군가에게 영향(피해, 버프, 디버프 등)을 줄 때에는 대상이 필요하다.


여기에는 많은 방법이 있지만 크게는 "대상 지정형"과 "범위형"으로 나뉜다.


"대상 지정형"이라고 함은 조건에 맞는 특정 대상을 직접 지정하여 스킬(혹은 피해, 버프 등)을 적용하는 방식을 뜻한다.


핸드건의 아군 전체 화력 증가 버프, 사거리 내 가장 먼 대상을 공격하는 라이플의 평타, 동시에 두 대상을 공격하는 법관의 평타, JS9mm의 적 유닛 카운트 버프, 에이전트의 피통이 일정 이하가되면 사용하는 후열 철혈 전멸기 등이 여기에 포함된다.


이중에서 사거리에 영향을 받는 유형의 경우, 대상의 실제 중심이 현재 공격 범위 내에 있느냐 아니냐에 따라 스킬을 적용 가능한가 불가능한가가 정해진다.

ex)평타의 경우, 대상의 실제 중심이 현재 공격 범위 내에 들어와야 공격이 가능해진다.(메인 더미를 뜻하는 것이 아님)



"범위형"이라고 함은 원형, 혹은 직사각형의 범위 내에 특정 효과를 부여하거나 그러한 지역을 만드는 방식을 뜻한다.


수류탄의 범위 대미지, MDR의 전방 실드, LWMMG개조의 스킬2, 연막탄, 법관킥, K5의 스킬 등이 여기에 포함된다.


이 경우에는 효과가 적용되는 시점에 하나의 더미라도 범위에 걸쳐져 있으면 대상에게 효과가 적용이 된다.



그리고 "대상 지정형"이나 "범위형"이나 두 경우 모두 대상이 되는 유닛 각각에 대해 따로따로 대미지 계산을 실행한다.


-예1) 대상 지정형 : 5링 Wa-2000의 일반 평타(대상 지정형)의 경우, 각각의 더미들이 쏘는 총알들의 명중, 치명 여부, 대미지 값을 따로따로 계산

-예2) 범위형 : 수류탄의 범위 내에 2링 리퍼 셋이 있을 경우, 수류탄의 대미지를 계산하고 리퍼들에게 적용하는 것이 아니라, 리퍼 셋에 대해 따로따로 계산


이쪽 부분은 어차피 본문에서 다루고자 하는 바가 아니기에 간단하게만 짚고 넘어가지만


여기서 언급한 적용 대상의 판별에 쓰이는 "범위형"이라는 개념과


3편 대미지의 적용에서 나올 대미지 적용 방식인 "AOE"의 개념을 헷갈리지 않도록 하자.



2편. 대미지의 계산


이제 대미지 계산으로 넘어가자.


대미지 계산의 목표는 최종 대미지를 구하는 것이며,


여기서 구한 최종 대미지는 3편. 대미지의 적용에서 나올 적의 피해 배율, 실드, AOE 대미지 계산 등을 거쳐 최종 피해로 적에게 적용이 되게 된다.


최종 대미지를 구하기까지의 과정은 간략히 아래와 같다.


...(실제 스텟 연산)

역장-파쇄 계산

→크리 및 명중 여부 판정

→실제 화력 및 대미지 배율의 적용

→랜덤 대미지 적용

→장갑-관통 계산

→크리티컬 계산

→추가 대미지 적용

→초과파쇄 추가 대미지 적용

→역장 대미지 감소 적용



C. 역장-파쇄 차감


c-1. 파쇄 대미지 계산


파쇄 대미지는 대상의 역장 수치에 직접적인 영향을 미치는 값이다.


파쇄 대미지의 계산에는 실제 파쇄, 파쇄 대미지 배율, 추가파쇄 이렇게 세 가지 값이 사용된다.


파쇄 대미지 = Roundup(실제 파쇄 * 파쇄 대미지 배율 + 추가 파쇄)


파쇄 대미지 배율이라 함은 파쇄 대미지 계산시에 해당 피해 유형이 실제 파쇄를 얼마나 반영하는가를 설정한 배율을 뜻한다.


쉬운 예시로는 동일한 200의 파쇄수치를 지닌 BGM-71과 AGS-30이 있다고 할 때,


BGM-71의 기본 공격 파쇄 대미지 배율은 100이기에 주 타격이 대상에게 200의 파쇄 대미지를 입히며


AGS-30의 기본 공격 파쇄 대미지 배율은 33이기에 주 타격이 대상에게 66의 파쇄 대미지를 입힌다.



추가 파쇄라고 함은 위 식에서 확인할 수 있듯 스텟에 상관 없이 추가적으로 붙는 파쇄 수치를 뜻한다.


예시로는 고정적으로 자신의 역장 수치를 100씩 깎던 m870의 스킬이 있다.


c-2. 역장-파쇄 계산 및 초과파쇄 추가 대미지의 계산


위에서 계산 된 파쇄 대미지는 적의 역장에 피해를 입히며, 역장 수치를 초과한 파쇄 대미지는 초과파쇄 추가 대미지로 전환되어 나중에 적용된다.


case1) 파쇄 대미지가 역장 수치보다 낮을 경우

최종 역장 = 현재 역장 - 파쇄 대미지


case2) 파쇄 대미지가 역장 수치보다 같거나 클 경우(혹은 대상에게 역장이 없는 경우)

초과파쇄 수치 = 파쇄 대미지 - 현재 역장


초과파쇄 추가 대미지 = Roundup(초과파쇄 수치 * 10 / 100)


※초과된 파쇄 대미지의 초과파쇄 추가 대미지 전환율은 10%이다.


D. 치명타 여부 판정(치명타가 발생하는 피해 유형의 경우)


다음으로 치명타가 터지는지 아닌지를 판정한다.


* 치명률 = 실제 치명률

* Random(0, 1) <= 치명률 인 경우 해당 공격은 치명타로 적용


E. 기본 대미지의 계산


다음으로 기본 대미지를 계산한다.


기본 대미지 = 실제 화력 * 대미지 배율 * 0.01


기본 대미지 계산을 위해서는 실제 화력과 대미지 배율에 대한 개념이 필요하다.


실제 화력이란 맨 처음 배웠듯 전투중에 실제로 적용되는 해당 유닛의 실시간 화력을 뜻 한다.


대미지 배율이라 함은 해당 유닛이 사용한 스킬, 정확히는 그 스킬의 피해 유형이 실제 화력을 얼마나 반영하는가를 설정한 배율을 뜻한다.


viewimage.php?id=20b4d327f1d739ab&no=24b0d769e1d32ca73cee84fa11d02831cd949b6924735c7cb75a680f5c9e0fc821e4e37884cc4dd0f40ee26a161d4b935a457144b787347e5b0d71eefc9e98


화력이 100에 스킬이 만랩인 엠포 개조를 예로 들자면


스킬 1은 화력 버프계통의 스킬로 실제 화력 계산에 적용되어서 엠포의 실제 화력을 175로 올리는 역할을 한다.


스킬 2(시나몬포 발동)는 주타격이 600의 대미지 배율은 가지고 있고, 근처에 2.5범위에 100의 대미지 배율을 가지고 있다.


이런 방식으로 고정된 175의 화력에 600%의 주타격과 100%의 범위타격과 같이 서로 다른 대미지를 구현할 수 있다.


일반적인 평타 대미지 계산의 경우, 대부분의 평타 대미지 배율은 100으로 설정 되어있기에 신경을 쓸 필요가 없다.



F. 명중여부 판정(필중이 아닌 피해 유형의 경우)


* 명중률의 계산

Case1) 명중 유형이 화력소대인 경우

명중률 = Max(최소 명중률, 실제 명중 / (실제 명중 + 대상의 실제 회피 * 정밀보정))

    = Max(0.4, 실제 명중 / (실제 명중 + 대상의 실제 회피 * 8))


Case2)그 외 (일반 인형, 적 등)

명중률 = 실제 명중 / (실제 명중 + 대상의 실제 회피)


* 현재 유닛이 실명 상태가 아니며, Random(0, 1) <= 명중률 인 경우, 해당 공격은 명중으로 판정


추가로 실명 상태라는 것은 디버프의 한 종류이지만 현재는 존재하지 않는 더미 데이터.


P-90의 패시브 스킬의 발동 조건인 "현재 체력의 X%이상의 피해를 입을 시 발동" 역시 더미 데이터 였다가 실제로 적용 되기도 했으니 일단 그대로 기재했다.


만약 여기서 명중 판정이 뜨지 않는 경우 대미지를 0으로 반환하며, 명중 판정이 뜬 경우에는 아래 순서를 진행한다.


G. 랜덤 대미지 계산


이제 드디어 제대로 된 대미지 계산쪽으로 넘어왔다.


여기서는 기본대미지에 피해 유형별로 설정된 랜덤 대미지 범위를 적용시킨다.


기본 대미지 = 실제 화력 * 대미지 배율 * 0.01


랜덤 대미지 = Random(1 - 랜덤 값, 1 + 랜덤 값) * 기본 대미지


※일반적인 랜덤 값 = 0.15


이 랜덤 값은 대부분의 경우 0.15로 설정되어 있으며, 법관의 평타와 같이 일부 0으로 설정된 경우도 있다.


H. 장갑 적용 대미지 계산(장갑에 영향을 받는 피해 유형의 경우)


해당 공격의 피해 유형이 장갑의 영향을 받는 경우 아래의 계산을 거치고, 아니면 다음으로 넘어간다.


랜덤 대미지 = Random(1 - 랜덤 값, 1 + 랜덤 값) * 기본 대미지


장갑 적용 대미지 = Max(기본 대미지 + Min(실제 관통 - 대상 실제 장갑, 과관통 상수), 1)

        = Max(기본 대미지 + Min(실제 관통 - 대상 실제 장갑, 2), 1)


※과관통 상수 = 2


간단하게 요약하자면


관통 수치가 장갑보다 낮을 경우, 랜덤 대미지에서 "관통-장갑"의 값만큼의 수치를 빼며, 아무리 장갑이 높더라도 최소 대미지 1을 보장한다.


관통 수치가 장갑보다 높을 경우, 최대 2만큼의 추가 대미지를 랜덤 대미지에 추가한다.



이렇듯 과관통 추가 대미지의 경우 여기에서 계산이 되며,


만약 해당 피해 유형이 장갑의 영향을 받지 않는 경우라면 이 과정 전체를 넘어가기 때문에 과관통 대미지가 합산되지 않는다.



I. 치명타(및 고정) 대미지의 계산


다음으로 치명타 및 고정 대미지의 계산으로 넘어가자.


여기서는 이름을 줄여서 치명타 대미지라 부르도록 한다.


장갑 적용 대미지 = Max(기본 대미지 + Min(실제 관통 - 대상 실제 장갑, 2), 1)


case1)치명타 판정을 받은 경우


치명타 대미지 = 장갑 적용 대미지 * 실제 치명상 * 치명상 대미지 배율 + 고정 대미지


case2)치명타 판정을 못 받은 경우


치명타 대미지 = 장갑 적용 대미지 + 고정 대미지


여기서 실제 치명상이라고 함은 위에서 구했던 전투 중 실제 치명상 배율을 뜻한다.


치명상 대미지 배율이라 함은 해당 피해 유형이 실제 치명상을 얼마나 반영하는가를 설정한 배율을 뜻한다.


대부분의 경우 이 값은 100으로 설정되어 있으나, 유일하게 테레사의 경우 150으로 설정되어 있다.


고정 대미지의 경우는 여기에서 적용이 되며, 티폰의 레이저, 45의 안개탄, M1887의 종결 어택 등의 공격의 경우 여기에서 합산을 한다.


J. 역장 대미지 감소 배율 계산


역장의 대미지 감소 배율은 이 시점에서 계산을 한다.


역장 대미지 감소 배율 = 1 - 대상 현재 역장 / 대상 최대 역장 * (1 - 역장 무시 여부/100)


※역장을 무시하는 공격의 경우, 역장 무시 여부 = 100

역장에 영향을 받는 공격의 경우, 역장 무시 여부 = 0


따라서 역장을 무시하는 공격의 경우, 역장 대미지 감소 배율 값은 1이 된다.


이전에 있던 100% 역장에 짤딜이 들어가던 버그는 위 역장 무시 여부 값을 각각 100, 0 이 아니라 0, 1로 설정했던 것이 원인.


K. 초과파쇄 추가 대미지 및 역장 대미지 감소 적용


이제 I에서 계산한 치명타 대미지, c-2에서 계산한 초과파쇄 추가 대미지, J에서 계산한 역장 대미지 감소 배율을 적용시킨다.


최종 대미지 = Max(Roundup((Roundup(치명타 대미지) + 초과파쇄 추가 대미지) * 역장 대미지 감소 배율), 0)


이렇게 최종 대미지 계산이 끝이 났다.


이제 3편에서 최종 대미지를 실제로 적에게 적용하는 방법에 대해 알아보자.



4편. 대미지의 적용


여기에서는 3번의 결과 값을 가지고와서 실제 대상에게 적용을 시킨다.


L. 대상의 받는 피해 배율 적용


대미지 증가 및 감소 버프 적용은 대상의 현재 받는 피해 배율을 뜻하는 것이다.


여기에는 컨텐더의 받는 피해량 증가 스킬, 법관의 받는 피해량 감소 스킬 등이 해당되며, 다른 스텟과 마찬가지로 곱연산으로 계산이 된다


기본 피해량 = Max(Rounddown(최종 대미지 * 대상의 받는 피해 배율) , 1)


M. 대미지 면역 상태 확인


다음으로 현재 대상의 상태에 따라 대미지 면역 여부를 확인하고, 만약 대미지 면역 판정을 받을 경우 계산을 중단하고 대미지를 무효 처리한다.


대미지 면역으로 판정이 되는 경우는 세 가지 경우가 있다.


대미지 면역으로 판정이 되는 세 가지 경우

1. 현재 상태가 "퇴각"인 경우

2. 현재 상태가 "무적"인 경우

3. 현재 상태가 "중파 무적"인 경우


여기서 2번의 경우 역장과는 다른 개념이며, 일부 보스들 스킬시전 모션 중에 볼 수 있는 무적을 생각하면 된다.(ex> 8지 드리머)


만약 해당 사항이 있다면 여기에서 과정을 종료하고


해당 사항이 없으면 다음으로 넘어간다.


N. 피격 시 발동 계통 스킬 트리거 확인


대미지가 0보다 크다 or 공격이 빗나갔다 or 역장 대미지 감소가 100%다 그러면 N이하의 과정을 실시한다.


여러가지 스킬 트리거 타입 중 피격을 조건으로 스킬을 발동하도록 하는 트리거 방식은


1. 회피 성공 시 발동하는 방식


2. 기준 체력에서 일정 비율의 피해를 입을 시 발동하는 방식


이렇게 두 가지뿐이며, 이중에서 실제 스킬에서도 쓰이고 있는 것은 2의 "기준 체력~" 스킬뿐이다.


2에 해당하는 스킬의 예로는 피구공의 패시브 스킬과 이성질체 금색 니토의 컷인 스킬 등이 있다.


case1)회피 성공 시 발동하는 방식의 스킬을 가진 경우


조건 : 공격이 miss 처리가 났을 경우


위 조건을 만족 시킬 경우 스킬을 발동 시킨다.


case2)기준 체력에서 일정 비율의 피해를 입을 시 발동하는 방식의 스킬을 가진 경우


조건 1 : 공격이 miss 처리가 안 났을 경우

조건 2 : 대미자가 0보다 클 경우

조건 3 : (기준 체력 - (현재 체력 - 기본 피해량)) / 최대 체력 * 100 > 설정된 비율 값


위 세 조건을 만족시킬 경우 스킬을 발동시키며, 현재 체력이 기준 체력으로 재설정된다.


※현재 실제 피해량을 유닛에게 적용한 상태가 아니기 때문에 현재 체력이라 함은 사실상 그 피해를 입기 전의 체력이라고 보면 된다.


이후 M으로 넘어간다.


O. 실드 연산


대상에게 실드가 없을 경우 이 과정을 뛰어넘고 다음 과정으로 넘어간다.


실드에 대해.


1. 실드 스텟은 체력과 마찬가지로 "현재 총 실드량 / 최대 실드량"으로 나타내며 체력바 아래에 그 비율이 표시된다. (기본적으로는 두 값 모두 0)


2. 실드 스킬을 사용할 경우, 대상에게 실드 버프가 걸리게 되며 해당 버프는 설정된 만큼의 "개별 실드량"을 가진다.

예> 수호 10렙 : 150, MDR 10렙 : 40, S.A.T-8 10렙 : 35


3. 실드 버프는 중첩이 가능하며, "현재 총 실드량"은 현재 적용중인 실드 버프 각각의 "개별 실드량" 총합으로 나타낸다.

예>수호 10렙, MDR 10렙, S.A.T-8 10렙의 실드 버프가 모두 적용중이고 어떤 피해도 입지 않았을 경우, "현재 총 실드량"은 150 + 40 + 35 = 225.


4. "현재 총 실드량"의 값이 "최대 실드량"의 값보다 클 경우, "최대 실드량"의 값을 "현재 총 실드량"의 값으로 재설정한다. 변경된 값은 모든 실드 버프가 사라질 때 까지 유지된다.

예1> 실드 스텟이 0/0인 SMG에게 수호 요정 레벨 10의 실드 버프를 적용할 경우, "현재 총 실드량"이 150이 되며 이에 따라 "최대 실드량"이 150이 된다.(150/150)

예2> 예1의 상황에서 30의 피해를 입은 경우(120/150), MDR 레벨 10의 실드 버프를 적용한다면 "현재 총 실드량"이 160이 되며 이에 맞게 "최대 실드량"이 160으로 늘어난다.


5. 피해를 입을 경우 먼저 걸린 실드 버프의 "개별 실드량"을 우선 차감하고, 남는 대미지는 다음으로 걸린 실드의 "개별 실드량"에서 차감한다.


6. "개별 실드량"이 0이 되거나 지속시간이 끝난 실드 버프의 경우, 해당 실드 버프가 제거되며 "남은 개별 실드량"만큼의 값을 "현재 총 실드량"에서 제한다.


5,6의 좋은 예시 : 뻘실험) 100식 벚꽃 실드와 일반 실드의 중첩에 대한 실험


※이전에는 실드의 충전이 가능했으나, 현재는 위와 같은 시스템으로 인해 실드의 충전은 불가능 함.


복잡하게 생각할 것 없고 밑에 계산이나 보자.


case1) 실드 값 > 기본 피해량


대상의 남은 현재 총 실드량 = 현재 총 실드량 - 기본 피해량


case2) 실드 값 ≤ 기본 피해량


실드 적용 피해량 = 기본 피해량 - 현재 총 실드량



이후 텍스트 출력으로 넘어간다. 이 때 실드 적용 피해량과 기본 피해량이 다를 경우, 해당 공격은 흡수로 구분하고 넘긴다.


P. 텍스트 출력


대상 캐릭터의 대미지 표기 여부 설정에 따라 대미지 텍스트를 띄운다.


대미지 표기로 설정된 캐릭터의 경우 여기까지 계산된 대미지와 흡수, 역장, 장갑 등의 적용 상태에 맞게 텍스트를 출력한다.


그게 아니라면 텍스트 표기를 하지않고 다음으로 넘어간다.

ex> P-90의 액티브 사용 시 생성되는 소환물 더미의 경우, 대미지 표기 여부가 X기에 피해를 입어도 대미지가 뜨지가 않는다.


중요하지 않은 부분이니 짧게만 정리하자면


피해 유형이 AOE인 경우, 계산된 대미지를 적 더미 수에 맞게 출력한다.


그렇지 않을 경우, 계산된 대미지를 단 하나만 출력한다.


이는 아래의 실제 대미지 적용 이전에 표기되는 것이기에 AOE인 경우와 같이 실제로 받은 대미지와는 차이가 있는 경우가 있다.


텍스트 출력의 경우 최대 99999까지의 대미지만 출력을 한다.


Q. AOE 대미지의 적용


일반형 : 대상에게 최종 피해량만큼의 대미지를 입히며, 더미 보호가 적용이 되는 피해 유형

ex>인형들의 평타, NTW-20의 확인 사살 등

AOE : 대상의 더미 수에 비례해서 대미지를 입히며, 현재 더미를 제외하고는 더미 보호가 적용이 되지 않는 피해 유형

ex>수류탄, 살상유탄, 도펠죌트너의 기본 공격, 드리머의 레이저 스킬 등


* 일반형

case1) 현재 더미 수 > Roundup((현재 체력 - 실드 적용 피해량) / 최대 체력 * 최대 더미 수)


최종 피해량 = 현재 체력 - 최대 체력 / 최대 더미 수 * (현재 더미 수 - 1)


case2) case1이 아닌 경우


최종 피해량 = 실드 적용 피해량


* AOE형

case1) 현재 더미 수 > Roundup((대상 현재 체력 - 실드 적용 피해량) / 최대 체력 * 최대 더미 수)

최종 피해량 = 실드 적용 피해량 * (현재 더미 수 - 1) + 현재 체력 - 최대 체력 / 최대 더미 수 * (현재 더미 수 - 1)


case2) case1이 아닌 경우

최종 피해량 = 실드 적용 피해량 * 현재 더미 수


※길게 썼지만 간단히 일반형 대미지는 더미 링크가 적용이 되며 하나의 대미지를 주고,

AOE형 대미지는 현재 더미에만 더미 링크가 적용이 되며, 적의 현재 더미 수에 비례해서 대미지를 준다.


※말을 현재 더미라고 썼는데 그러니까 가장 최근의? 그런 더미. 이거 용어를 뭐라 해야할지 모르겠네 현재 피가 깎이고 있는 더미? 마지막 더미? 좀 더 생각하고 수정해야겠다.


이로써 최종 피해량에 대한 계산은 사실상 끝났다.


R. 현재 체력에 실제 피해량 적용(중파무적 계산)


이제 대상의 현재 체력에서 산출한 최종 피해량을 아래와 같은 순서로 뺀다.


1. 전투 종료 여부 확인

전투가 종료된 상황이면 받은 최종 대미지를 무효로 처리


2. 대상의 소속 확인 및 중파보호 적용 여부 체크


Case1. 대상의 소속이 아군이 아님 & 소환물이 아님 & 중파 상태가 아님 & (현재 체력 - 최종 피해량) < 최대 체력 * 0.3인 경우


2-1. 남은 체력의 계산(중파 보호 적용)


남은 체력 = Rounddown(최대 체력 * 0.3) - 1


2-2. 누적 대미지 값


누적 대미지 값 = 현재 체력 - 중파보호 적용 현재 체력


2-3. 45프레임(1.5초)간 중파 무적 버프 적용


이후 3으로 진행



Case2. Case1에 해당하지 않을 경우.


2-1. 남은 체력의 계산


남은 체력 = 현재 체력 - 최종 피해량


2-1. 누적 대미지 값 계산


누적 대미지 값 = Min(최종 피해량, 현재 체력)


3. 총 누적 대미지에 추가(딜 그래프, 대미지 순 버프 등에 사용)


총 누적 대미지 += 누적 대미지 값


4. 체력에 맞게 더미 숫자를 변경


남은 더미 수 = Roundup(남은 체력 / 최대 체력 * 최대 더미 수)


※오류 방지용

-남은 더미 수가 음수가 나올 경우 0 더미로 처리

-남은 더미 수가 최대 더미 수 보다 클 경우 남은 더미수를 최대 더미수로 재설정


5. 사망 여부 판정


끝.


다음은 번외.


4편. 기타


2편, 3편 이후 진행되는 내용. 번외니 읽을 필요는 없다.


S. 피해 유형에 설정된 버프의 발동 확인


카르카노 자매의 평타 스택 스킬, PKP의 패시브 스킬 등과 같은 피해 유형에 확률형 버프가 설정 된 경우,


이 순서에서 확인을 한다.


그런데 이쪽 자체가 구성 방식이 조금씩 다 다르기도하고, 구분이 몇 있으나 사실상 "명중 시 발동"하는 계통 밖에 쓰이지를 않으므로 넘어가도록 함.


카르카노 자매와 pkp에 대해서만 간단히 짚고 넘어가보자면


이 둘은 피해 유형에 확률형 버프가 설정 되어있는 것은 동일하나


pkp의 경우에는 일반 평타 스킬 의 피해 유형에 이 버프가 설정되어 있고, 당연히 일반 평타의 피해 유형은 명중에 영향을 받도록 설정을 해놓았기 때문에


공격이 빗나간다면 패시브 스킬이 터지지 않는다.


카르카노 자매의 경우 일반 평타 스킬과 패시브 스킬을 둘로 분리를 해놓았으며, 일반 평타의 피해 유형은 명중에 영향을 받지만, 패시브 스킬의 피해 유형에는 필중 설정을 해놓았기에 일반 평타의 명중 여부와 관계 없이 패시브가 터지게 된다.


또한 pkp는 일반 평타 스킬은 모든 더미가 사용하기 때문에 더미 수에 따라 스킬 발동 확률에 영향을 받게되고

카르카노 자매의 경우에는 일반 평타 스킬은 모든 더미가 사용하지만, 스택을 쌓는 역할을 하는 패시브 스킬자체는 메인 더미만 사용하도록 설정을 해놓았기에 더미 수에 관계 없이 패시브의 발동 확률이 일정한 차이점이 생긴다.


T. 넉백의 처리


2, 3편의 과정에서 명중 판정을 받은 경우, 이 순서에서 넉백 스킬의 확인을 진행한다.


피해 유형에 넉백 확률이 존재하고, 대상이 넉백 가능한 상태라면 확률에 맞게 넉백을 발생시킨다.


상세한 내용은 추후 추가


V. 발생하는 오차에 대해


계산을 하다보면 1정도의 오차가 나는 현상을 종종 만날 수 있을 것이다.

흔한 예로는 화력이 100인 M1918 mod3의 호감도가 200일 때, 호감도 추가 화력이 15가 아니라 16이 붙는 현상이 있다.

이는 실수 자료형과 올림 내림의 문제로 그냥 코딩상 문제임 계산 결과와 1정도 차이 나는 건 그냥 넘기자

-----------------------------------------------------------------------------------


추후 수정 및 추가 예정

-기본 스텟 계산쪽 보완, 화력소대 및 소환물 기본 스텟 등 추가

-배율 관련 통일

-용어 통일 및 재정리

-넉백 관련

-etc


190928수정) 호감도 배율 관련 계산식 일부 수정.

191229수정) 공격 간격(프레임) Clamp 누락 추가.

추천 비추천

35

고정닉 16

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2858 설문 SNS로 싸우면 절대 안 질 것 같은 고집 있는 스타는? 운영자 24/05/06 - -
1577927 공지 뉴비&복귀 가이드 및 유용한 정보 [68] ㅇㅇ갤로그로 이동합니다. 20.08.21 395896 83
1717348 공지 개념글 시트 공지 [14] ㅇㅇ갤로그로 이동합니다. 21.10.01 18059 2
1640860 공지 갤 규칙 및 신고글 ㅇㅇ(223.39) 21.02.01 28899 15
1828009 질문 스킬칩 수급은 어케함?? [1] 악시움갤로그로 이동합니다. 05:16 27 0
1828008 💬 80등까지 차올랐네 45돌침대갤로그로 이동합니다. 04:32 37 0
1828007 💬 이번주 탐색 우세 ~5/13 03:59 [1] WDFaith갤로그로 이동합니다. 04:03 28 1
1828006 💬 만점 공략 수오미 노바 대체할거 있음? [11] 엑스트라1갤로그로 이동합니다. 03:53 68 0
1828004 💬 복귀하니까 자원이 너무 후달림 마미≠아미갤로그로 이동합니다. 03:26 21 0
1828002 💬 의외로 공유코드 사용하는 사람이 없네 [5] 엑스트라1갤로그로 이동합니다. 02:32 104 0
1828001 💬 만점 공략 완료하긴 했는데... ㅇㅇ갤로그로 이동합니다. 01:26 70 0
1828000 💬 파밍맵 일단은 졸업 772195갤로그로 이동합니다. 01:25 65 0
1827999 💬 6공수 공략에서 tps 대체할만한 샷건 없나 [2] ㅇㅇ(210.84) 01:02 91 0
1827998 💬 이번주 혼합훈련 [2] ㅇㅇ갤로그로 이동합니다. 00:36 184 9
1827997 💬 5턴에 시작하자마자 버프 켜도 됨? [2] ㅇㅇ갤로그로 이동합니다. 00:24 49 0
1827996 정보 복커뉴비 혼돈폐막+ 80만 히드라 잡아왔어 [6] ㅇㅇ(121.164) 05.05 86 0
1827995 💬 연쇄분열 하면서 너무 기력 많이 쓴 듯 [4] 늅늅(218.49) 05.05 85 0
1827994 💬 안개거리두기+ 만점 후기 ㅇㅇ(211.201) 05.05 101 0
1827993 💬 찐샤나는 지금 상대해도 거지같네 45돌침대갤로그로 이동합니다. 05.05 100 0
1827992 💬 와 연쇄분열 잘있어라 탈린2 깨면 kord 주네ㅋㅋㅋㅋ [2] 늅늅(218.49) 05.05 145 0
1827991 💬 안개거두기 일단3턴까진 끝냈다 ㅇㅇ갤로그로 이동합니다. 05.05 29 0
1827990 질문 유료 4, 5성 선택권 뭐 먹는게 좋음? [1] 커여운모모짱갤로그로 이동합니다. 05.05 71 0
1827989 히든 난류연속 히든 137만점 땄다 끼얏호아주좋소갤로그로 이동합니다. 05.05 53 0
1827988 💬 안개거두기 이새기 피 안닳는데 어케 잡음? [11] ㅇㅇ갤로그로 이동합니다. 05.05 139 0
1827987 💬 정규군에 화력버프 넣는놈이 있나 [10] CoDECyaN갤로그로 이동합니다. 05.05 94 0
1827986 💬 아직 다호기는 하나도 안키워봤는데 ㅇㅇ갤로그로 이동합니다. 05.05 53 0
1827985 질문 쫄몹 잡다가 애들 중파or죽었을때 [3] ㅇㅇ(121.164) 05.05 87 0
1827984 💬 잘 있어라 탈린 1 EX 1더미 친구제대 사용 클리어 [6] ㅇㅇ갤로그로 이동합니다. 05.05 233 7
1827983 💬 65만은 했당 ㅇㅇ갤로그로 이동합니다. 05.05 37 0
1827483 정보 [제15장 프롤로그] 오귀인의 샘물 공략 및 정보 모음 [14] 스텡갤로그로 이동합니다. 04.26 5942 35
1827982 질문 상시이벤트에서도 전용장비 얻을수있나 ? [3] ㅇㅇ(117.55) 05.05 81 0
1827981 💬 체스 컴까기 추첨권 100제한 풀렸나? [1] ㅇㅇ갤로그로 이동합니다. 05.05 87 0
1827980 💬 나르시스 숫자패턴 안보고 못 잡겠는데 어케하냐.. [8] ㅇㅇ갤로그로 이동합니다. 05.05 106 0
1827979 질문 이건 뭔 버그여 [1] ㅇㅇ(211.179) 05.05 85 0
1827977 💬 친구제대 이렇게 설정해주실 분 구합니다 [11] ㅇㅇ갤로그로 이동합니다. 05.05 188 0
1827976 질문 응원요정 환호계는 무슨 능력이냐? [3] ㅇㅇ(222.119) 05.05 106 0
1827975 💬 2차 숙제끝 [1] 조수석아재갤로그로 이동합니다. 05.05 136 4
1827974 💬 복음중추? 의식의 호수?가 [1] ㅇㅇ(39.7) 05.05 59 0
1827973 💬 거미 통과하는거 너무 좆같은데 딴제대 없나? [2] ㅇㅇ(222.107) 05.05 119 0
1827972 💬 스토리 존나 이해안됨 [10] ㅇㅇ(220.120) 05.05 220 0
1827971 💬 뭐야 이거 왜 이래 [4] ㅇㅇ갤로그로 이동합니다. 05.05 161 0
1827970 🐛 공수 패널티 제거하는 방법 [7] 산매갤로그로 이동합니다. 05.05 252 3
1827969 💬 240L이 왜 비슈누 안때리지?? [4] ㄴㄱㅇㅇ갤로그로 이동합니다. 05.05 134 0
1827968 💬 잘 있어라 탈린1 도저히 못 깨겠다... [2] 늅늅(218.49) 05.05 122 0
1827967 💬 3공수 1호기 공략 어디있는거임? [1] ㅇㅇ(211.234) 05.05 100 0
1827965 💬 65만 채웠으니 튀어야지 Evan.갤로그로 이동합니다. 05.05 52 0
1827964 💬 나도 티폰 타는건가 [4] ㅇㅇ(106.101) 05.05 146 0
1827963 💬 기갑 역장 안까이는거 이유가 뭐임? [3] SoundCosmos갤로그로 이동합니다. 05.05 131 4
1827962 💬 아니 우중씹새 돌풍구출 뭔데이거 [3] SoundCosmos갤로그로 이동합니다. 05.05 167 4
1827961 💬 파밍 500트 결산 [2] 악시움갤로그로 이동합니다. 05.05 109 0
1827960 질문 뉴비 안개 궁금한거 있음.... [2] ㅇㅇ(182.216) 05.05 84 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2