-
열두번째 포켓몬, 따라큐 구현 (특성 탈)포켓몬 배틀 구현 2022. 3. 23. 03:56
어느덧 12번째 포켓몬, 따라큐 차례이다.
포켓몬에 흔치않은 직접너프를 먹어도 아직도 픽률 11위라니, 무서운 포켓몬이다.
https://pikalytics.com/pokedex/homebss/mimikyu
Mimikyu Series 12 Battle Stadium Singles Stats Pokédex | Pokémon | Pikalytics
Life Orb 19.100% Custap Berry 18.500% Bright Powder 16.000% Choice Scarf 10.100% Figy Berry 3.600% Expert Belt 3.600% Rocky Helmet 3.300% Spell Tag 3.100% Salac Berry 2.000% Lum Berry 1.900%
pikalytics.com
따라큐의 추천 스킬은 야습, 치근거리기, 저주, 고스트다이브이다.
다만 내가 구현할 따라큐는 스킬 배치가 좀 다르다.
그 이유는 방금 말한 "직접너프" 때문이다.
지금까지 포켓몬은 사기포켓몬보다 더 사기인 포켓몬을 출시하는것으로 밸런스를 맞춰왔기에(...)
사기인 포켓몬을 직접 너프하는 경우는 흔치 않다.
다만 그럼에도 불구하고 직접 너프를 당한, 개사기 포켓몬이 있었고
그중 하나가 따라큐이다.
따라큐의 특성은 탈로, 상대방의 공격을 한번 막아준다.
별거 아닌것같은 특성이지만, 한턴 한턴이 큰 포켓몬에서
상대방의 공격을 확정으로 한턴 낭비시킨다는것은 정말 정말로 개사기 특성이다.
그렇기에 기존의 따라큐는 특성 탈에
아이템으로 기합의 띠(풀피 상태로 기절할 데미지를 받으면 1의 체력으로 버팀)를 들고
최소한 2번의 공격을 버틴뒤,
해당 2턴동안 칼춤을 2번 써서 공격을 4랭크 = 3배로 올린뒤
우선도 +1의 선공기 야습으로 적을 휩쓰는 랭크업 스위퍼로서 사용되었다.
다만 이건 너무 사기라 판단했는지,
드물게 따라큐의 특성 "탈"이 직접 너프를 먹었다.
첫번째 공격을 확정으로 버티지만 체력의 1/8 피해를 받으므로
기띠로 2번 버티는것이 불가능해졌다. (기띠는 풀피에만 발동)
그렇기에 칼춤은 한번밖에 사용할수 없게 되었고,
2랭업 따라큐로 상대팀을 전멸시키기에는 화력이 모자랐다.
다만 아직도 픽률이 높은것이,
특성 탈과 스킬 고스트 다이브 (첫턴에 숨어 2번쨰 턴에 공격한다), 버티기(피 1로 한번 버틴다)로
상대의 다맥을 낭비시키고,
아니면 여기에 저주(자신의 체력을 절반 깎고, 상대방의 체력을 매턴 1/4 깎는다)를 섞어
상대방 한명을 확정적으로 데려가는 등
변칙적으로 사용하기 때문이다.
뭐 중요한것은 나는 다맥을 구현할 생각이 없고
무엇보다 내가 원하는 대로 구현할 수 있는 프로그램인만큼,
너프 먹기 전의 더 강력한 따라큐를 구현하고싶었다.
말이 길어졌는데
결국 너프먹기 전 옛날에 쓰던 기술,아이템 배치를 쓰겠다는것이다.
스킬은 야습, 칼춤은 필수
치근거리기는 덤으로 채용해주고
마지막 스킬은 그때 당시 주로 썼던 섀도크루를 채용했다.
그래서 스킬을 보자면...
치근거리기 - 자시안때 구현 완료
칼춤 - 랜드로스때 구현 완료
야습 - 선공기. 이미 구현 완료
섀도크루만 구현하면 끝(...)
섀도크루는 급소 확률이 2배라는 심플한 효과를 지니고있다.
이 급소 명중 여부는 "데미지" 함수에서 체크하는데,
int gs = rand() % 16; //급소 카운터. gs는 0부터 15이며 gs가 0일경우 (=1/16 확률) 데미지 2배 if (a[aa][number][0] == "섀도크루" && (gs == 0 || gs == 1)) { gs = 2; } //섀도크루는 급소 확률이 2배 else if (gs == 0) { gs = 2; } else gs = 1;
gs에 0부터 15중 임의의 값을 뽑고
해당 값이 0일때만 급소로 판정한다.
이때 스킬 이름이 섀도크루면, 0과 1 두 숫자를 급소로 판정한다.
그러면 따라큐 스킬 구현 끝! 신난다!
아이템은 아까 말했듯 기띠이니 옛날에 구현했었고...
마지막으로 따라큐의 사기 특성, "탈"만 구현하면 된다.
if (b[bb][0][12] == "탈" && a[aa][number][6] != "틀깨기") { cout << "[특성 탈]\n"; if (s == 1) printf("상대 "); cout << b[bb][0][11]<<"의 탈이 대타가 되었다!\n"; b[bb][0][12] = "탈까임"; //탈은 1회용 특성이므로 발동되면 사라진다. } else { if (s == 1) printf("상대 "); //s가 1이면 플레이어가 공격하여 상대에게 맞은것이므로 이름 앞에 "상대"를 출력 cout << b[bb][0][11] << s1(b, bb) << damage << "의 데미지를 입었다! (" << blife[bb]; blife[bb] -= damage;
다만 사기적인 성능에 비해 구현은 쉽다.
데미지를 계산하기 직전에,
맞는쪽의 특성이 "탈"이면
"따라큐의 탈이 대타가 되었다"
라는 텍스트와 함께 공격을 스킵한다.
탈은 1회용 특성이므로, 이때 특성 이름을 탈까임(...)으로 바꿔준다.
설명 순서가 반대로 되긴 했는데,
저번 글에서 "탈"과 같은 방어적 특성을 무시하는
틀깨기 부가효과를 구현했으므로 이도 조건문에 넣어준다.
구현 끝!
은 아니고
무언가를 구현할때에는 이 새끼를 꼭 한번씩 생각하고 가야한다.
메타몽이 따라큐의 특성 탈을 배낀다면? 똑같이 작동한다.
그런데 이미 특성을 사용한 따라큐의 특성을 배낀다면? 이 역시 작동해야한다.
p[pp][0][11] = "메타몽"; if (p[pp][0][12] == "탈까임") { p[pp][0][12] = "탈"; //탈은 소모되는 특성이므로 이미 발동된 탈은 복구하여 배낀다 }
메타몽이 상대방의 능력치를 복사하는 과정에서,
상대방의 특성이 "탈까임"이면 이를 "탈"로 복구하여 복사한다.
사용된 특성을 null이 아닌 탈까임(...)으로 한데에는 이런 이유가 있었다.
그렇게 옛날에 개사기 시절로 복귀한 따라큐 구현 완료!
구현 완료된 모습.
'포켓몬 배틀 구현' 카테고리의 다른 글
열네번째 포켓몬, 폴리곤2 구현 (속임수, 스피드 비교) (0) 2022.03.23 열세번째 포켓몬, 칠색조 구현 (반동기) (0) 2022.03.23 열한번째 포켓몬, 솔가레오 구현 (틀깨기, 약점보험) (0) 2022.03.23 열번째 포켓몬, 누오 구현 (방어) (0) 2022.03.23 여덟, 아홉번째 포켓몬 이벨타르 & 흑마렉스 구현 (흡혈) (0) 2022.03.23