[大魔王辛珉其][MS] 255업 공격력 조작하기. (255의 배수가 아닌 수도 가능)

이 글은.... 읽어보시면 아시겠지만 원글은 맵사이드의 금태자 갓슈!!! 님께서 올리셨던 글이고
이를 인투더맵의 大魔王辛珉其님이 기억만으로(?) 재구성하신 글입니다.

※첨부파일 다운로드
1. 255up.xls




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

검색키워드 : 데미지, 장갑, 방어력, 255업, 공격력, 업글


이 팁은 구 맵사의 금태자 갓슈!!!님께서 올린 팁이며, 이대로 묻히기 아까워서
제가 다시 찾아 올립니다. 지금 제 컴퓨터로 소스 보기가 열리지 않는데다, 모든 스크린샷도
다 날아가 버려서 원래 내용과 많이 다릅니다. 게다가 예제 맵도 날려버렸고, 제가 가지고
있는건 금태자 갓슈!!!님께서 만들었던 엑셀 파일 입니다. 사실 이 내용을 읽지 않고
엑셀 파일만 가지고 가셔도 무방합니다. 또, 아래 글은 제가 쓴게 아니므로
'~식이 ~~다', '~가 어떻게 ~~~가 되는가?' 라는 질문은 하지 말아주십시오.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
S4-1
제가 말하고자 하는 건 이겁니다.
255로 나누어 떨어지지 않는 숫자가
255업시 나오게 하는 법.
x=666으로 잡고 아래 글 따라하세요.
(예제로 넣어 놨습니다.)
이제 헷갈리시는 분이 없으셨으면 합니다.




-계산과정-


목표 공격력을 x라 합시다.                
x=666

물론 x는 0≤x<65536인 정수죠.
설마 100000 이런 걸 하려 드시면 대략 OTL 되는 겁니다.
x를 살포시 255로 나눠 줍시다.
그러면 어쩌고저쩌고...
소수점 뒤로 복잡한 뭔가가 뜰 겁니다.           
x÷255=2.6117...

안 뜨면 그냥 그걸로 하면 되는 거고-_-;;;
그러면 그 숫자를 (소수점 자리를)올림합시다!
이 숫자를 a라 하지요.                  
a=3

그리고 x-255a를 계산합니다.               
x-255a=666-765=-99

그러면 정수값이 음수로 나오죠-_-
여기서 -만 빼 버린 양의 정수를 b라고 합니다.        
b=99

이 때
x=255a-b가 되죠?                    
666=765-99

그러면 단계당 공격력 y는 257b+a가 됩니다!!!        
y=257×99+3=25446





<증명>

y=257b+a
255y=65535b+255a
  =(65536-1)b+255a
  =65536b-b+255a  ←분배법칙((a±b)c=ac±bc)
이므로,
(외관상 공격력)=255y≡255a-b=x(mod 65536)




-계산기로 구하기-

위에서 복잡하게 써 있으므로...
전자사전의 경우는 M값이 보이니 좀 더 편하게 할 수 있지만, 일반적인 계산기로 가정합니다.
[]은 한 개의 키고, ()은 해당 숫자를 연속으로 입력. 출력 part의 ()는 그 숫자를 해당하는
입력 part에 넣으시면 됩니다.
x는 외관상 255업 공격력 상승 수치. y는 단계당 업그레이드 공격력으로 설정해야 할 수치.
물론 x가 255의 배수가 아닌 경우죠.   
[]누르고 → 감상하시면 됩니다.

<입력part>              
파란 부분은 666 말고 다른 수로 하면 변합니다.

(x)[M+][÷][2][5][5][=]        
[6][6][6]
[M+][÷][2][5][5][=]

<출력part>
(m).~~~                
2.6117...
에서 m=
2

<입력part>
[2][5][5][×](m+1)[=]         
[2][5][5][×]
[3]
[=]→
765

[M-][RM]               
[M-][RM]→
-99

[+/-]                 
[+/-]

<출력part>
(n)                  
99
에서 n=
99

<입력part>
[2][5][7][×](n)[+](m+1)[=]      
[2][5][7][×]
[9][9]
[+]
[3]
[=]

<출력part>
(y)                  
25446
에서 y=
25446

이 y값을 스타포지로 때려박으시면 됩니다.


검산과정도 같이 적어 놓습니다.
<입력part>
(y)[×][2][5][5][=][M+]        
[2][5][4][4][6]
[×][2][5][5][=]→
6488730
[M+]

[÷][6][5][5][3][6][=]        
[÷][6][5][5][3][6][=]

<출력part>
(k).~~~                
99.0101...
에서 k=
99

<입력part>
[6][5][5][3][6][×](k)[=]       
[6][5][5][3][6][×]
[9][9]
[=]→
6488064

[M-][RM]               
[M-][RM]

<출력part>
(x)가 나오면 성공           
666
이 정확히 나왔습니다.

아니면 대실패

참고.
x=255a-b
y=257b+a에서
a,b의 범위는
0≤a≤257(a=0은 b=0일 때만 성립. 하지만 b=0이고 a≠0일 수 있음)
0≤b<255
입니다.




헷갈리시지 말라는 의미에서
주의 부분 흐리게 처리했습니다.
윗부분을 완벽히 이해하지 못하셨다면
그냥 읽지 마세요.
뽀대용으로 쓰시는 데는 지장 없습니다.
그리고 이게 줄거리가 아니라
저 위가 줄거립니다.
이 주의부분을 줄거리로 착각하신
분들이 꽤 많으시더군요.


<주의>

1) 외관상 공격력이 저 꼴이 나는 건 확실한데, 문제는 실제 공격력입니다.
 예를 들어 벌처의 공격력을 1+1로 만들었습니다.
 이 경우 단계당 업 공격력은 65279가 되어서 실제 공격력은
 1+(65279×255)=1+1+(65536×254)가 됩니다. (못 믿으면 직접 계산해 보시길.)
 다만 데미지는 16진수로 4자리만 처리하므로 65536 이상은 그 데미지에서 65536의 배수
 만큼 줄여서 데미지를 받습니다.
 그래서 일단 소형 유닛(100%)을 공격할 때는 그냥 2밖에 못 때립니다.
 하지만 대형 유닛 등장!(25%)
 계산하기 편하게 방어력이 2(1업)울트라리스크를 데려옵시다.
 {(65536×254)+2-2}×25%=????!?!
 대략...
 (65536×63)+32768 이 나옵니다.
 즉, 공격력이 2인 벌처가 방어력 2에 체력 400(아닌가? 하지만 9999이하면 상관없음-_-)
 울트라를 한 방에 보내는 일이
 일어나는 거죠.
 이 때 b값이 중요한 역할을 합니다.
 실제 공격력은 65535b+255a=(65536b)+255a-b였죠?
 이 때 255a-b는 어차피 65536으로 나눈 몫은 0이므로 몫은 고스란히 b가 됩니다.
 그리고 원래 공격력을 더해서 255a-b+(기본공격력)이 65536 이상(최대=65535×2)이면
 당연히 합의 몫은 b+1이 되죠.
 이 b(또는 b+1)이
 (1)4의 배수:보이는 그대로의 공격력이다.
 (2)4의 배수는 아닌 짝수:50%와 100%에게는 보이는 그대로. 25%나 75%는 한 방에 보낸다.
 (3)홀수:제일 무섭다. 100%가 아니면 다 한 방이다. 이게 바로 이순신 장군님의...
 "죽고자 하는 자(당당하게 100%데미지) 살고, 살고자 하는 자(데미지보정) 죽으리라"
 의 진의란 말인가...

2)예전에 제가 실험한 바에 의하면 이 몫이 128 이상이면 (체력과 마찬가지로) 마이너스가 되어 버려서
 죽도록 때려도 안 죽었습니다. (저그의 경우. 거의 8대에 데미지 1. 맞는대로 찬다)
 그래서 딱 128×65536을 맞추면 어떻게 될까 실험해보려고 한 달 전쯤 해 봤는데, 제대로 들어가더군요-_-
 하지만 프리서버에는 여전히 마이너스 공격력이 나올 수 있습니다.
 대력 1.11인가 1.10때 마이너스가 나왔던 것으로 기억합니다만 이건 패치 내용에 언제 고쳤다는 게 없으니
 언제부터 고쳤는지는 모릅니다.
 (원래 2번은 틀린 내용으로 판명되어 지우고 3번을 2번으로 옮겼습니다.)





-대략 많이 쓰일 듯한 수들
(이 아니라 그냥 구해 놓은 수를 적음)-


외관상 255업→단계당 공격력입니다
옛날에 적어놓은 거라 b값은... 직접 구하세요(퍽)

9999→51697
55555→11783
666(최종보스.)→25446 (이 경우에, 다른 건 기억 안 나지만, b는 4의 배수가 아닌 짝수입니다)
2760(16진수로 바꿔보시길...)→11576
1818(위의 직접표현 버전)→57062
31201(제 작년 학번)→42271
10724(제 올해 학번)→61980

☆1(......)→65279 (이 경우 위에 썼듯이 b=254가 됩니다. 만약에 예전 버전에서 사용하면
대략 허접캐릭을 표현할 수 있습니다. 255업을 했는데 공격력이 1밖에 올라가지 않았고
거기다 공격을 해도 제 공격력을 발휘하지 못한다... 라는 패턴. 하지만 지금에 와서는,
공격력 +1 벌처가 시즈랑 골리앗 참 잘 잡습니다.)

2005→9003 (예를 들어 제작일이 10월 27일이라고 하면 기본 공격력 1027, 업 공격력
9003으로 제작일자를 표시하는 것도 가능하겠죠. 10~12월 한정이지만.)
12345→38599
8998→46810




<내용요약>
x가 나오게 만들려면
x=255a-b가 나오는 정수 a,b를 찾아서
SCMDraft 2 같은 데서 Bonus를
y=257b+a로 설정하면 된다는 뜻입니다.
a,b의 범위는
0<a≤257
0≤b<255
이고요.
a=b=0은 그냥 생각하지 마세요.
그렇게 해 봐야 0이니까요.