(턴이 지났음에도 미래예지가 그대로 남아있는 모습)
희망사항은 쓴 다음 턴 자리에 있는 아군을 회복시킨다.
미래예지와 파멸의소원은 사용 후 2턴 종료시에 데미지가 들어가는 기술이다.
포켓몬 스칼렛 & 바이올렛에서는 이렇게 턴 계산을 해야 하는 기술들을 사용할 때, 발동 시점을 결정하기 위해 흐르고 있는 턴 카운터를 참조한다.
그런데 이 카운터는 최대 255까지만 세기 때문에 실제로 254턴에 미래예지를 사용하거나, 255턴에 희망사항을 사용하면 해당 효과가 절대 발동되지 않는 문제가 발생한다고 한다.
무슨 메커니즘으로 작동하는 걸까?
1. 턴 카운터
실제로 턴 카운터의 상한선은 255가 아닌 9999다.
1-1 희망사항
희망사항은 사용된 턴을 unsigned byte, 0부터 255까지의 값을 저장하는 1바이트(자료형 정수)로 저장한다.
이후 턴마다 현재 턴 카운트를 unsigned byte로 변환한 값이 저장된 턴 값보다 큰지 확인합니다. 조건이 충족되면 희망사항 효과가 발동된다.
예시1) 턴 7에 희망사항을 사용했다면, 턴 8에 7 < 8인지 확인 후 희망사항이 발동됨
예시2) 턴 9999에서 희망사항 사용, 턴 카운터가 늘어날 수 없으므로 발동하지 않음
예시3) 턴 255에 희망사항 사용, 턴 256은 unsigned byte의 최대값이 초과되었으므로 결과적으로 턴 카운트는 0이 됨. 게임은 255 < 0을 체크한 뒤 값이 true가 아니라서 발동시키지 않음. 그래서 255턴에 희망사항을 쓰면 발동되지도 않고 기술 사용도 할 수 없는 상태가 됨(짤처럼)
1-2. 미래예지(파멸의소원)
미래예지는 공격이 들어가는 턴이 현재 턴 값(unsigned byte 변환)보다 작거나 같으면 발동되는 메커니즘을 갖고 있다.
미래예지/파멸의소원은 발동될 예정인 턴 자체는 정수(integer)로 저장한다. 하지만 현재의 턴 카운트를 가져올 때는 unsigned byte로 변환된 값을 사용한다.
예시1) 턴 7에 미레예지를 사용하면, 턴 9에 발동되도록 저장된다. 턴 8에서는 9 <= 8 조건이 충족되지 않아 발동되지 않지만, 턴 9에서는 9 <= 9 조건이 만족되어 발동된다.
예시2) 턴 255에 미레예지를 사용하면 턴 257에 발동되도록 저장된다. 그러나 턴 256에서는 257 <= 0 조건이 충족되지 않으며, 턴 257에서는 257 <= 1 조건도 충족되지 않아 발동되지 않는다. 때문에, 턴 254 이상에서 미래예지를 사용하면 발동 턴이 256 이상이 되어 도달할 수 없으므로 희망사항과 똑같이 버그가 발생한다(짤처럼)
--여기서부터는 번외--
1-3. 에코보이스
일단 에코보이스는 기술을 쓸 때마다 위력이 올라가는 특징을 갖고 있다.
그래서 좀 복잡한데 배경 설명을 하고 들어가야 이해 가능함
게임은 전투 중 사용된 기술에 대해 기록을 저장하는데, 총 400개의 기록 블록을 저장할 수 있다.
아래 기록 블록의 첫 번째 행(00000000)은 주소와 엔트리 수(0x37)를 포함한 헤더고, 그 이후의 각 행의 담긴 정보는 다음과 같다.
2. 턴 카운트 (0x00 위치)
3. 기술을 사용한 포켓몬 (0x04 위치)
4. 사용된 기술 (0x08 위치)
5. 기술 성공 여부 (0x0A 위치)
예를 들어:
0x00위치의 00 00 / 01 01 / 02 02 는 각각의 턴수
0x04 위치의 01 07 / 01 07 / 01 07 각 포켓몬의 위치값(대충 내포켓몬 상대포켓몬)
0x08 위치는 기술값
0x0A는 성공 여부(대충 00은 불발 01이 적중) 정도 의미함을 알 수 있다
이 블록 데이터에서 기술을 사용할 때마다 하나의 기록이 추가되는 식이다. 하지만 턴을 그냥 넘기거나 아이템을 사용하는 경우에는 기록이 추가되지 않는다.
만약 400개의 기록이 모두 채워지면, 게임은 0xC 위치부터(2번째줄) 가장 오래된 기록을 덮어쓰기 시작한다.
에코보이스는 동일한 포켓몬이 연속적으로 사용한 기록을 역순으로 확인하며 작동한다.
예를 들어, 턴 2, 3, 4, 5에서 에코보이스를 사용한 뒤, 턴 6에 다시 사용하면, 게임은 기록 블록에서 해당 포켓몬이 턴 5, 4, 3, 2에 사용한 기록을 차례로 확인한다.
턴 1에서는 사용 기록을 찾지 못하므로, 연속 사용 횟수를 5회로 계산한다.
그리고 에코보이스도 마찬가지로 턴 카운트를 가져올 때 unsigned byte로 변환한다. 256 = 턴 0, 257 = 턴 1, 턴 258 = 턴 2 같은 식으로.
따라서 턴 258에서 게임은 현재 턴을 턴 2로 간주하고, 기록 블록에서 턴 1에 사용된 에코보이스를 찾으려 한다.
이로 인해 다음과 같은 결과를 알 수 있다:
255턴 미만인 경우(기록이 완전히 덮어쓰이지 않은 경우), 에코보이스의 위력은 0-255턴 동안 사용한 기술에 따라 달라진다. 현재 턴은 unsigned byte로 변환된 값에 대응하기 때문에, 첫 255턴 동안 어떤 기술이 기록되었고 얼마나 덮어쓰였는지에 따라 위력이 결정된다.
그래서 이후 256턴에는 턴이 덮어쓰여지고 에코보이스는 기술이 연속적으로 사용된 다른 턴을 찾을 수 없기에 위력은 40이 된다.
1-3. 크로스썬더/크로스플레임
이 기술들도 동일한 턴에 사용된 마지막 기술이 다른 퓨전 기술인지 확인하기 위해 위에서 언급한 기록 블록을 참조한다.
이 과정에서도 턴 카운트는 unsigned byte로 변환됩니다.
이 특성을 활용하면 싱글 배틀에서 퓨전 플레어와 퓨전 볼트를 연속으로 연결하는 흥미로운 트릭을 사용할 수 있다.
1. 첫 턴(턴 0)에 크로스썬더나 크로스플레임 중 하나를 마지막으로 사용한다.
2. 턴 256에서, 첫 턴(턴 0)에서 사용하지 않은 다른 퓨전 기술을 먼저 사용한다.
3. 이렇게 하면, 턴 256은 unsigned byte로 변환되어 턴 0으로 간주된다.
4. 결과적으로, 배틀 시작 시 사용한 기술과 연결되어 한 턴에 쓴 크로스썬더, 크로스플레임 모두 위력이 200이 된다.
1-4. 그 외 날씨 기술이나 멸망의노래
- 관련 없음. 다른 메커니즘으로 작동하기에 256턴에 쓴다고 고장나진 않음
1-5. 결론
- 상대가 희망사항이나 에코보이스, 미래예지를 쓴다면 256턴 까지 끌고가보자
출처 :
https://www.smogon.com/forums/threads/scarlet-violet-battle-mechanics-research.3709545/page-55#post-10350377
https://x.com/DaWoblefet/status/1860503393250213945
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.