오니와루드식 회피법 > 흉악강좌

본문 바로가기

사이트 내 전체검색

뒤로가기 흉악강좌

오니와루드식 회피법

페이지 정보

작성자 Aravis 작성일 24-02-06 16:53 조회 1,272 댓글 0

본문

*** 시작하기에 앞서 드리는 말씀 ***


 


무겐의 거의 모든 흉악 캐릭터는 윈무겐 (WinMugen) 에서만 작동합니다.

 

저 또한 윈무겐에 대해서만 다룹니다. 무겐 1.0은 다루지 않습니다.

 

하지만 무겐 1.0에서 흉악 캐릭터가 작동하지 않는 건 전혀 아닙니다.

 

기존의 캐릭터는 윈무겐 전용 흉악 캐릭터이기 때문에 무겐 1.0에서 작동하지 않는 것이고,

 

무겐 1.0 전용으로 만들어진 흉악 캐릭터는 무겐 1.0에서도 잘 작동합니다.

 

단, 윈무겐과 달리 무겐 1.0은 역사가 깊지 않기에 무겐 1.0 전용 흉악 캐릭터는

 

만들어진 것이 거의 없습니다.

 

따라서 무겐에 존재하는 거의 모든 흉악 캐릭터는 윈무겐 전용 캐릭터라고 할 수 있습니다.

 

 

 

 

*** 서론 ***

 

 

오니와루드식 회피법은 "SelfState 회피법"의 응용 코드입니다.

 

우선 SelfState 회피법에 대한 글부터 읽어주시기 바랍니다.

http://blog.naver.com/snuphe/40180521220 

 

 

 

 

*** 본론 ***

 

 

SelfState 회피법에서는 [statedef -3]을 사용합니다.

 

하지만 오니와루드식 회피법은 조금 다릅니다.

 

 

무겐에는 재미있는 버그가 하나 있습니다.

 

바로 [statedef -1], [statedef -2], [statedef -3] 에서 time = 0 트리거가 동작하지 않는다는 것입니다.

 

 

쉽게 말씀드리면,

 

[statedef -2]

 

[state ]

type = LifeAdd

trigger1 = !time

; time = 0 과 같은 뜻입니다.

value = -100

ignorehitpause = 1

 

이것은 절대 동작하지 않습니다.

 

 

만일,

 

[statedef 200]

 

 

[state ]

type = LifeAdd

trigger1 = !time

value = -100

ignorehitpause = 1

 

이렇게 200 번 스테이트에 넣는다면 어떻게 될까요?

 

당연히 동작합니다.

 

time = 0 인 상황에서 발동하는 명령어인데 동작하지 않을 리가 없지요.

 

그러나 [statedef -?]에다 이를 넣는다면 동작하지 않게 됩니다.

 

 

이는 무겐의 연산 순서 때문입니다.

 

 

무겐의 연산 순서는 1P가 먼저이고 2P가 나중이며,

 

-3, -2, -1, 일반 state 순서로 실행됩니다.

 

그러나, 커맨드를 입력한 경우, 커맨드가 감지되는 순서는 아래와 같습니다.

 

-3 → -2 → [command] → -1 → 일반 스테이트

 

순서로 실행이 됩니다.

 

(흉악 위키를 참조했고, [command]의 경우 제가 실험해서 낸 결과입니다.

 반론은 언제든지 받습니다.)

 

(커맨드 리스트의 위치를 바꿔도 이 순서는 변하지 않습니다.)

 

 

일단 특정한 커맨드를 입력했다고 가정해 봅시다.

 

하나의 턴이 시작되었을 때, 커맨드가 입력되었다고 해도

 

-3 과 -2 에서는 그것을 감지하지 못합니다. ([command] 부분은 그 뒤에 있기 때문입니다.)

 

-1 에 와서야 커맨드를 감지하게 되고, 그제서야 특정 스테이트로 이동하게 됩니다.

 

이 타이밍에 time = 0 이 적용되므로, -3, -2, -1 에서는 time = 0 이 작용하지 않습니다.

 

 

물론

 

[statedef -3]

 

[state ]

type = changestate

trigger1 = stateno=0

trigger1 = time=1

value = 200

 

이런 식으로 커맨드 입력 없이 -3 에서 changestate 를 사용하면

 

-2 에서 time = 0 트리거를 쓰더라도 적용이 됩니다.

 

 

 

그렇다면, p2stateno 를 통해 상대의 스테이트로 이동했을 때의 연산 순서는 어떨까요?

 

바로 아래와 같은 순서를 가집니다.

 

상대 스테이트 → -3 → -2 → -1

 

(이는 다른 자료를 참조한 것이 아니고, 제가 실험해서 낸 결과입니다. 반론은 언제든지 받습니다.)

 

따라서, 상대 스테이트에 가 있는 경우 [statedef -?]에서도 time = 0 을 감지할 수 있게 됩니다.

 

 

따라서,

 

 

[statedef -2]

 

[state ]

type = LifeAdd

trigger1 = !time

value = -100

ignorehitpause = 1

 

이런 코드는 평범항 상황에서는 절대 발동하지 않습니다.

 

단, 상대 스테이트로 끌려갔을 때 발동하게 됩니다.

 

 

이를 응용하면 아래와 같은 코드를 작성할 수 있습니다.

 

[statedef -2]

 

[state ]

type = SelfState

trigger1 = !time

value = 0

ctrl = 1

ignorehitpause = 1

 

!time 트리거를 사용하였기 때문에 상대 스테이트에 있을 때만 SelfState 가 발동하게 되고,

 

SelfState 회피법과 동일한 효과를 낼 수 있게 됩니다.

 

 

단, 상대 스테이트로 가지 않더라도 !time 트리거가 발동되는 경우가 있기 때문에

 

강력한 방어력을 가진 흉악 캐릭터들은 보통 SelfState 회피법과 오니와루드식 회피법을 함께

 

사용합니다.

 

 

 

(참고로, 죽는 스테이트에 갈 때도 !time 의 적용을 받는 것 같습니다.

 

 이에 대해선 자세한 실험을 안 해봤지만, 아마도 state 5150 은 !time 을 받는 게 아닐까 합니다.)

추천0

댓글목록 0

등록된 댓글이 없습니다.

개인정보처리방침 이용약관

사이트 정보

Copyright © 무겐 어소시에이션 All rights reserved.
PC 버전으로 보기