오메가 톰 행크스 킬러 코드 (OTHK 코드) > 흉악강좌

본문 바로가기

사이트 내 전체검색

뒤로가기 흉악강좌

오메가 톰 행크스 킬러 코드 (OTHK 코드)

페이지 정보

작성자 Aravis 작성일 24-02-06 16:47 조회 2,242 댓글 0

본문

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

 



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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

 

 

 


*** 서론 ***

 

 

흉악 캐릭터들은 NotHitBy 명령어를 사용하거나 Clsn2 (피격판정) 을 없앰으로서

 

아무런 공격도 맞지 않는, 소위 무적 상태에 있게 됩니다.

 

 

하지만 Reversaldef (리버설) 을 사용하면 무적 상태에 있다 할지라도

 

상대방을 자신의 스테이트로 끌고온 뒤, 강제로 자살 명령을 내려서 격파할 수가 있습니다.

 

[statedef 10000]

[state ]

type = Reversaldef

(생략)

p2stateno = 10001

 

[statedef 10001]

[state ]

type = LifeSet

trigger1 = 1

value = 0

 

이런 식으로 리버설을 통해 상대를 자신의 10001 번 스테이트로 끌고온 뒤, 강제로 LifeSet 명령을

 

발동하게 하는 방법을 사용하면 아무리 무적 상태에 있더라도 격파당하게 됩니다.

 

 

그러나 리버설은 상대가 Hitdef 로 공격해 올때만 반응하기 때문에, 상대가 Hitdef 를 사용하지

 

않으면 대응할 수 없다는 단점을 가지고 있습니다.

 

 

몇몇 흉악 캐릭터들은 이를 간파하고 Hitdef 를 전혀 사용하지 않는 방법으로 상대방을 공격했고,

 

무겐 유저들은 이러한 흉악 캐릭터를 "도저히 격파 불가능하기에 논의에서 제외하자"라는 의미로

 

"논외 캐릭터"라고 부르게 되었습니다.

 

 

"오메가 톰 행크스"라는 캐릭터는 이 논외 캐릭터 가운데서도 손꼽힐 정도로 유명한 캐릭터였습니다.

 

사실 제작자는 엔딩 장면을 보고싶은 캐릭터가 있을 때, 이 캐릭터를 파트너로 삼아서 아케이드를

 

쉽게 클리어하라는 취지로 오메가 톰 행크스를 만들었으나, 사람들은 Hitdef 를 사용하긴 하지만

 

자신이 사용하지 않고, Helper (헬퍼) 를 불러내서 Hitdef 로 공격하게 하기 때문에 리버설이 통하지

 

않는 이 캐릭터를 논외 캐릭터로 취급하게 되었습니다.

 

 

그러나 무겐의 흉악 캐릭터의 세계가 발전함에 따라, 오메가 톰 행크스를 격파해낼 수 있는 코드가

 

고안되게 되었고, 사람들은 이 코드를 "오메가 톰 행크스 킬러 코드 (OTHK 코드)" 라고 부르게

 

되었습니다.

 

 

이제 본격적으로 OTHK 코드가 무엇인지에 대해 알아보도록 합시다.

 

 

 

 

*** 목차 ***

 

 

1. OTHK 코드의 적용대상

 

  1.1 Hitdef

 

  1.2 헬퍼 + Hitdef

 

  1.3 Projectile (프로젝타일)

 

  1.4 특수한 Hitdef

 

 

2. 리버설 만들기

 

3. 프로젝타일 만들기

 

4. 작동 원리


5. 주의사항

 

6. 시연 영상


7. Special Thanks

 

 

 

 

*** 1. OTHK 코드의 적용대상 ***

 

 

  1.1 Hitdef

 

OTHK 코드는 리버설의 개량형이라고 보시면 됩니다.

 

따라서 리버설로 잡을 수 있는 것들은 모두 잡을 수 있습니다.

 

 

  1.2 헬퍼 + Hitdef

 

기존의 리버설은 상대를 잡아와서 강제로 자살 명령을 내리는 방식으로 상대를 격파합니다.

 

이때, 상대가 잡히지 않고 상대의 헬퍼가 잡히면 헬퍼만 부술 수 있을 뿐입니다.

 

그러나 OTHK 는 잡아온 것이 상대의 본체가 아니라 상대의 헬퍼일지라도 상대에게

 

강제로 자살 명령을 내릴 수가 있습니다.

 

덕분에 헬퍼를 불러서 Hitdef 를 사용하게 하는 캐릭터를 격파할 수 있게 되었으며, 이러한

 

성질 때문에 사람들은 OTHK 를 "헬퍼 킬러"라고 부르기도 합니다.

 

 

  1.3 Projectile (프로젝타일)

 

앞서 말씀드렸듯이 OTHK 코드는 리버설의 개량형에 불과하기 때문에

 

리버설과 마찬가지로 프로젝타일에는 반응하지 않습니다.

 

따라서 프로젝타일로 공격해 오는 적은 역시나 잡을 수가 없습니다.

 

 

  1.4 특수한 Hitdef

 

Hitdef 에는 attr 이라는 파라미터가 있습니다.

 

우선 쿵푸맨에 사용된 Hitdef 를 하나 살펴보도록 합시다.

 

 

[State 210, 2]

type = HitDef

trigger1 = AnimElem = 3

attr = S, NA

animtype  = Medium

damage    = 57

guardflag = MA

pausetime = 12,12

sparkno = 1

sparkxy = -10,-70

hitsound   = 5,2

guardsound = 6,0

ground.type = High

ground.slidetime = 12

ground.hittime  = 13

ground.velocity = -5.5

air.velocity = -2.5,-4

 

 

흉악 코드 강의 게시판이기에 attr 이 무슨 뜻인지는 따로 설명하지 않겠습니다.


attr 에 대해서는 ihoo1836 님의 매뉴얼을 참고해 주세요.

(http://blog.naver.com/snuphe/40178234994)

 

좌우지간, 위와 같이 attr 에는 세 가지의 문자가 두 갈래로 나뉘어 들어갑니다.

 

 

이때, 맨 앞의 문자를 생략하면 그 Hitdef 는 리버설에 걸리지 않는 특수한 헬퍼가 됩니다.

 

attr = ,NA

 

이런 식으로 말이지요.

 

이러한 Hitdef 는 리버설에 걸리지 않기에 마찬가지로 OTHK 에도 걸리지 않게 됩니다.

 

 

 

 

*** 2. 리버설 만들기 ***

 

 

OTHK 코드는 리버설의 개량형이라고 할 수 있습니다.

 

따라서, OTHK 코드를 만들이 보기 위해, 먼저 리버설을 만들어 봅시다.

 

 

[statedef 10000]

anim = (공격 판정이 있는 애니메이션) ; 리버설을 사용하기 때문입니다.

 

[state ]

type = Reversaldef

trigger1 = 1

 

reversal.attr = SCA,AA,AT,AP

sparkno = -1

hitsound = -1

p2stateno = 10001

 

; 여기서 p2stateno 대신에 TargetState 명령어를 써도 무방합니다.

; 단, TargetState 보다 p2stateno 를 사용하는 방법이 더 쉽습니다.

; TargetState 쪽이 더 유용하긴 합니다만, 여기선 일단 p2stateno 를 사용하겠습니다.

 

 

[statedef 10001]

 

 

[state ]

type = lifeset

trigger1 = 1

value = 0

ignorehitpause = 1

 

 

이렇게 간단한 리버설을 만들어 보았습니다.

 

 

 

 

*** 3. 프로젝타일 만들기 ***

 

 

이번엔 OTHK 코드의 핵심인 프로젝타일을 만들어 보겠습니다.

 

위의 리버설에 사용했던 [statedef 10001] 에 다음과 같은 프로젝타일을 추가해 주시면 됩니다.

 

 

 

[statedef 10001]

 

 

[state ]

type = lifeset

trigger1 = 1

value = 0

ignorehitpause = 1

 

 

[state ]

type = projectile

trigger1 = ishelper ; 헬퍼일 때만 발동

trigger1 = root,stateno != prevstateno ; "5. 주의사항"에서 설명하겠습니다.

attr = S,NP ; (주석 1)

projanim = anim ; (주석 2)

projremove = 0

projremovetime = 10

offset = 0,0

postype = p2 ; (주석 3)

hitflag = MAFD

damage = 0,0

hitsound = s-1

ground.type = none

p1stateno = prevstateno ; (주석 4)

ignorehitpause=1

 

 

(주석 1) 프로젝타일의 attr 은 생략하면 안됩니다. 공격이 맞질 않게 됩니다.

 

 

(주석 2) [statedef 10001] 을 만들 때.

 

[statedef 12345]

anim = 12345

 

이렇게 따로 anim 값을 주었나요? 그렇지 않았습니다.

 

따라서 애니메이션 번호는 원래의 애니메이션의 것을 그대로 가져오게 됩니다.

 

헬퍼가 위의 리버설에 걸렸다는 사실은 그 헬퍼가 Hitdef 를 사용했다는 것을 의미합니다.

 

따라서, 그 헬퍼의 애니메이션에는 Clsn1 (공격 판정) 이 존재하였을 것입니다.

 

그렇기 때문에

 

projanim = anim

 

으로 설정해 주면, 프로젝타일의 애니메이션은 헬퍼의 애니메이션을 따라가게 되기에

 

프로젝타일은 자연스럽게 공격 판정을 가질 수 있게 됩니다.

 

 

(주석 3) 상대의 입장에서 p2 이기 때문에 우리편을 뜻하게 됩니다.

 

이 프로젝타일은 상대의 헬퍼가 강제로 우리편을 공격하게끔 만들기 위한 것이기 때문에

 

프로젝타일 소환 위치는 우리편 바로 앞으로 잡았습니다.

 

 

(주석 4) OTHK 코드에서 가장 중요한 부분입니다.

 

위의 상황에서 상대의 헬퍼는 Hitdef 로 공격을 하다가

 

리버설에 걸려서 [statedef 10001] 로 오게 되었습니다.

 

따라서 이 시점에서 헬퍼의 prevstateno 는 리버설에 걸리기 전, 즉 Hitdef 로 공격을 하는

 

스테이트가 됩니다.

 

 

그리고 중요한 부분이 하나 더 있습니다.

 

무겐에서 모든 프로젝타일은 본체의 소유입니다.

 

헬퍼가 프로젝타일을 발사했다고 해도, 그 프로젝타일은 본체의 소유이기 때문에

 

NumProj 트리거를 사용할 때,

 

Helper(1000),NumProj 과 같은 식으로 사용할 수는 없으며,

 

헬퍼에서 사용할 때에는 Root,NumProj 과 같은 식으로 사용해야 합니다.

 

 

여기서 사용한 프로젝타일 또한 마찬가지로 본체의 소유가 됩니다.

 

이 프로젝타일은 상대의 헬퍼가 발사한 것이므로 주인은 상대 본체라고 할 수 있습니다.

 

따라서 p1stateno 파라미터가 발동되면 프로젝타일을 쏜 헬퍼가 아닌,

 

헬퍼의 주인이 되는 본체가 p1stateno 의 영향을 받게 됩니다.

 

 

 

 

*** 4. 작동 원리 ***

 

 

순서대로 나열해 드리겠습니다.

 

 

상대방이 헬퍼 소환

상대방의 헬퍼가 Hetdef 로 공격

우리쪽에서 깔아둔 리버설 작동

상대방의 헬퍼를 사로잡음

상대방의 헬퍼가 강제로 프로젝타일을 사용하게끔 명령을 내림

상대방의 헬퍼가 발사한 프로젝타일이 우리편을 맞춤

해당 프로젝타일의 p1stateno 발동

상대 본체가 p1stateno 에 의해 Hitdef 로 공격을 하는 스테이트로 이동

(따라서 상대가 강제로 Hitdef 를 내게 되버림)

우리쪽에서 깔아둔 리버설 작동

상대 본체를 사로잡음

LifeSet

격파 성공

 

 

중간에 굵은 글씨로 써둔 부분이 보이시나요?

 

OTHK 코드의 핵심은 p1stateno 입니다.

 

그런데 p1stateno 가 발동하기 위해서는 일단 프로젝타일이 맞아야만 합니다.

 

따라서 OTHK 코드를 가동할 땐, 저 프로젝타일을 맞아주기 위한 헬퍼가 하나 필요합니다.

 

그렇기에, 피격 판정을 가지고 있는 헬퍼를 하나 자신의 본체 주변에 소환함으로서

 

OTHK 코드를 완성할 수 있습니다.

 

 

물론 본체가 맞을 수도 있지만, 본체는 무적 상태에 있고 헬퍼가 대신 맞아주는 쪽이

 

좀더 안전하니까요...

 

 

 

 

*** 5. 주의사항 ***

 

 

OTHK 코드의 핵심이 되는 프로젝타일은 1 프레임마다 발사해서는 안됩니다.

 

만일 1 프레임마다 발사하게 되면, 상대는 p1stateno 에 의해 계속 prevstateno 에 머물게 되고,

 

리버설에 걸리더라도 prevstateno 에서 벗어나지 못하게 됩니다.

 

따라서

 

root,stateno != prevstateno

 

라는 트리거를 추가해서 이를 예방해야 합니다.

 

 

이렇게 하면 OTHK 코드를 완성할 수 있습니다.

 

그러나 이런 방법을 사용하면 상대가 KO 된 직후에 라운드가 끝나지 않고,

 

KO 메시지가 뜨고 시간이 좀 지나야지 라운드가 끝나는 등의 사소한 버그가

 

발생할 수 있습니다.

 

 

이에 대해서는 다음 편에서 알려드리도록 하겠습니다.

 

다음 편에서는 TargetState 와 다른 여러 가지 장치를 이용해서

 

보다 깔끔한 OTHK 코드를 작성할 수 있는 방법에 대해

 

알려 드리도록 하겠습니다.

 

 

 

 

*** 6. 시연 영상 ***

 

 

"오메가 톰 행크스"의 개조 캐릭터인 "오메가 싱하"를 격파하는 영상을 보여드리면서

 

이 글을 마치도록 하겠습니다.

 

 



 

 

*** 7. Special Thanks ***

 

 

본문의 오류를 지적해 주신 TheShin 님께 감사의 말씀을 드립니다.

 

잘못된 부분은 "OTHK 응용편"에서 바로잡을 생각이었지만, 그냥 다시 수정하였습니다.

추천1

댓글목록 0

등록된 댓글이 없습니다.

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

사이트 정보

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