How to use Orochi Kyo’s Tag


New Patch launched!! 16/11/2022
New constant: onlyOneAssistPerTurn
Bug fixing related to AI switch on air, chars with different cooldown times, and hitting with “snapback” to “Team Leaders” while their partners are assisting.

New Patch launched!! 11/12/2022
New Feature: Active Switch.
Bug fixing with different cooldown times between characters.

fighting game with debug info on screen

This is a brief tutorial about how to use my Tag system for Ikemen Go.

First, download the latest tag version from here. Please visit my Youtube channel. If you want to sub, I won’t complain. If you don’t have downloaded Ikemen Go, do it here!

Place the file in your Ikemen Go data folder and extract all the files inside the zip in there. If asked to replace, do it!
These files will replace the originals: common.const, common.cmd.
These files are going to be added to your data folder: tagwithsuperpause.zss, wireattack.zss.
Be sure these files are inside the data folder, not a folder inside the data folder!!

Data folder should look like this!! Tag files should not be inside a subfolder!!
Now, let’s add the tag to Ikemen Go

Go back to the Ikemen Go root folder, open the save folder, use your favorite editor to open the config.json file, and change the “commonstates” to look like this. Please do not copy this section, just use it as an example of how your commonStates should look like.

“CommonStates”: [

If you customized this section before, just replace “tag.zss” with “tagwithsuperpause.zss” and add a new line to add “data/wireattack.zss”. Remember the last line of the “commonstate” list SHOULD NOT include a comma. Save the file and open the engine.
Go to training mode, select TAG and select your fav char.

If you see this text box, it means the tag was installed correctly. If your char use the standard numeric notation(the same Kung Fu Man uses) you should able to see the tag in action.
Press Forward + Tag Button: Normal Assist.
Press Back + Tag Button: Super Assist. Needs 1000 of power.
Holdown half-second then presses the “Tag” button: Normal Switch.
Press the “Tag” button while performing an air combo: Air Switch. Needs 1000 of power.
Press the “Tag” button while doing ground combo: Combo switch. Needs 1000 of power.
Press down twice then the “Tag” button: Call partner, then you can control both chars on screen. Needs 3000 of power.
Press the Tag button while performing a super/hyper movement: Hyper Switch!! Needs 1000 of power.
Hold back then press the two Tag buttons: Triple Menace!! Needs 3000 of power.

Standard notation for State numbers is like this
200-499: Ground attacks, including stand and crouch.
600-699: Air attacks.
1000-2999: Special Attacks.
3000-4999: Super and Hyper attacks.
Mugen creators did not pay much attention to the importance of this “standardization” so they use whatever state number they had available, not caring about any future implementation of their chars into modules.
Also, maybe you don’t like state 1000 or 3000 to be used as an assist, because state 1000 could be a counter and 3000 could be a grab, not useful as a tag assist.

How to use constants to customize your experience!!

Ikemen Go is amazing. A lot of new features and stuff for players plus cool stuff for coders. Constants are great to customize easily any module. I implemented many constants in my TAG system so you can override any setting per character!!
First, let’s learn how to declare constant. Open your char in Fighter Factory and go to the main CNS file of the char.

The main CNS char file is easy to identify because it is the only file that contains the data constants!

Below the [Movement] parameters create a new section called [Constants]

Declare constants in Ikemen Go
This is how the constant declaring should look like.

Let me explain the most important constants in the Orochi_Kyo’s TAG system (Yes, I am speaking in third person, like that evil guy in Superman 2). As a base I will use some Samurai Shodown 4 Cham Cham character which uses the most weird stateno numeric notation I ever see: 200-229 for normal ground attacks, 230-250 for air attacks, 400-499 for special attacks, 500-599 for super/hyper attacks.

These are the most important constants, these are mandatory to use the Tag System!.

switchAttack = 233 ; Expecting an animation number.

In my Tag system, you can choose between your char entering the screen after switch running or performing an attack(Check the OFF/ON section in the common.const file). The “switchattack” constant defines which animation should be used for the attack if mvc1switch in the common.const is set to “1”.
Air attack animation is preferred.

switchAirAttack = 233; Expecting an animation number.

The animation used in the Air Switch on combo, is a feature that is loosely based on Ultimate Marvel Vs Capcom 3 Air Switch.

snapBackAttack = 209; Expecting an animation number.

The animation used for the snapback attack. Snapback is a feature that forces the enemy player to switch for a partner if got hit. Please, do not use animations that have loops or have -1 as a time in the last frame. It will cause the player to get stuck.

snapBackHit = 5030; Expecting an animation number.

The animation will be used if the player gets hit by a Snapback attack. 5000-5070 states often contain animations fit for this feature.

StateTagAssistSuper = 411; Expecting a state number.

The state number that contains or starts the special attack for normal assist. Sorry for the confusing name. Use a special(not super or hyper) attack for this.

StateTagAssistHyper = 500; Expecting a state number.

The state number containing or starts the super or hyper attack for the “Hyper Assist” and the “Triple Menace” feature.

tauntWhileWaitingForPartners = 195; Expecting an animation number.

The animation used if the “tauntAfterMVC1Switch” constant is set to 1 in the common.const. Also it is used when the team leader calls for a “Triple Menace attack”.

It seems Cham Cham is ready to use the tag. She now can perform normal assist, super assist and Triple Menace. But wait!!
Many features of the Tag system still rely on combo detection.
Air combo switch expects char’s air attacks to be between 600-699.
Switch on Combo expects normal ground attacks to be between 200-499.
Switch on Hyper expects super/hypers states to be between 3000-3999. This is a feature that allows you to switch while on Hyper, the entering partner will automatically execute a hyper attack.
I got you covered there!!

Constants for combo detection

Disclaimer: Only use these if your character is having issues using “while on combo” features like the ones previously mentioned.

normalAttacksStartStateno = 200 ; the stateno that starts ground attacks
normalAttacksEndStateno = 239 ; the stateno that ends ground attacks
airAttacksStartStateno = 230 ; the stateno that starts air attacks
airAttacksEndStateno = 250 ; the stateno that ends air attacks

For stand, crouch and air attacks

specialAttacksStartStateno = 400 ; the stateno that starts special attacks
specialAttacksEndStateno = 499; the stateno that ends special attacks
superAttacksStartStateno = 500 ; the stateno that starts super attacks
superAttacksEndStateno = 599 ; the stateno that ends super attacks

For Super, Hyper and Special Attacks.
With these constants, we are setting a range. The range will include any state number including the “StarStateno” and the “EndStateno. So any state between these values could be used by the TAG system to properly detect combos.

Using the TAG debug mode

Ikemen Go Tag training mode by Orochi Kyo

I created a debug mode that only shows if you enter the Training Mode and select TAG as the Team Mode. You can turn it off just pressing the start button. With this debug mode you can check many values needed to config the Tag system properly.

Team Leader Stateno

Check the current State number of the team leader

Team Leader Anim and time

Check the current animation and the animation time of the team leader

Partner Stateno

Check the current state number of your current first partner. This is useful if your partner get stuck while assisting, you can more info to debug the issue properly.

Partners Ready

Shows how many partners’ cooldown time is over and ready to assist or switch

Enemynear stateno

Shows the current state number of the enemy team leader, using enemynear,stateno. Since it is using “teamleader = playerno” as a trigger, enemy team partners could not affect the value of this item.

Enemynear Partnerstateno

Shows the current state number of the enemy team’s first partner.

Use this debug mode to get the info necessary for the character constants.


Helpers are the devil. Most of them are used in Mugen as a workaround for the variable limitation. But Mugen developers never thought we would need to detect when the helper hits the opponent or other helpers. So literally, projectile helpers just break “projhit”, “projhittime”, “projcancel”, etc. To be honest, it is not all Elecbyte fault. Some creators used helpers for projectiles just because they wanted to do so.
There is a way to detect when a helper is hit or is being hit, but you need the exact helper number. This is almost impossible to get when you are facing dozens of different characters ported to Mugen by many creators.
So if your char is not switching on combo while using a “projectile”, it is highly probable because we are dealing with a helper.

This could be useful too for movements that put the opponent in a custom state
Dealing with a helper

I created some code that would allow you to use the TAG combo features with helpers. Using the current state number and a custom time set by you, you can personalize a chain that uses a helper.

StateTagAssistSpecialCustom1 = 1000

This is the current state number the character(not the helper) must be.

specialTimeStartCustom1 = 20

This is the time from which the “switch in combo” can be activated.

specialTimeEndCustom1 = 40

This is the time from which the “switch in combo” can NOT be activated anymore.

StateTagAssistHyperCustom1 = 3000

This is the current state number the character(not the helper) must be.

hyperTimeStartCustom1 = 20

This is the time from which the “Hyper Switch” can be activated

hyperTimeEndCustom1 = 40

This is the time from which the “Hyper Switch” can NOT be activated anymore.

To put in “CNS words” this is like declaring a trigger to create combos in command.cmd file.

trigger1 = stateno = 1000 && time = [20,40]

You can declare up to five of these for each “Switch on Combo” and “Hyper Switch”. For example:

Does this really work or I just bluffing?

Take Rugal Bernstein by Vans for example. Vans didn’t use the normal projective sctrl because he made his character compatible with his own projectile mirroring. So Rugal’s Repukken fireball is a helper. None of the TAG combo features will work with that helper, because projhittime, the trigger I am using for projectile detection, doesn’t works with it.

StateTagAssistSpecialCustom1 = 1000
specialTimeStartCustom1 = 20
specialTimeEndCustom1 = 50

I inserted these inside Rugal’s [Constants] block.

Now Rugal can use his Repukken fireball(helper) on combo and activate “switch on combo” feature!!

Why you should stop being lazy and use constants

Constants works this way. If the constant is not declared anywhere in the char files, Ikemen Go will use the one declared in the common.const. This way you can create a common value between all the characters in your Ikemen build or full game.
But if the same constant is declared in the char files, Ikemen Go will completely ignore the constant value declared in common.const. and use the one inside its own files.
This is very useful for my tag system! Let’s say you have a Marvel vs Capcom Ryu and Kyo Kusanagi from KOF 2002. You can copy some of the TAG constants and use them to personalize the tag for each of them.

MVC Ryu constants to make him like MVC

mvc1switch = 1;
airSwitch = 1;
switchOnNormalOrSpecial = 0;
variableCross = 1;
tripleMenace = 1;
partnerAssistOn = 1;
partnerSuperAssistOn = 0;
superpauseForAirSwitch = 1;
superpauseForComboSwitch = 1;
tauntAfterMVC1Switch = 1;
reverseSnapBack = 0;
superSwitch = 1;
fallOnMVC1Switch = 1;
tauntAfterMVC1Switch = 1;
superSwitch = 0;
showPartnersAtIntro = 1;
assistCallWhileGuarding = 1;
instaSwitch = 0;

KOF Kyo Kusanagi constants to make him like KOF 2003/XI

mvc1switch = 1;
airSwitch = 0;
switchOnNormalOrSpecial = 1; KOF XI
variableCross = 0;
tripleMenace = 0;
partnerAssistOn = 0;
partnerSuperAssistOn = 0;
superpauseForAirSwitch = 0;
superpauseForComboSwitch = 0;
tauntAfterMVC1Switch = 0;
reverseSnapBack = 1; KOF 2003
superSwitch = 0;
fallOnMVC1Switch = 0;
tauntAfterMVC1Switch = 0;
superSwitch = 0;
showPartnersAtIntro = 0;
assistCallWhileGuarding = 0;
instaSwitch = 0;

This way you can have two characters using the same TAG system in completely different ways!!
Another example is to imagine you have a character and you consider its assist be very powerful. So you want this char to have a higher cooldown time for balance purposes.

TagAssistCooldown = 500; the default time is 200 ticks

Declare this inside the character [Constants] block and this char will have a higher cooldown time than the rest of the cast!


I have put sweat, blood, and a lot of time and effort into making this TAG system totally configurable. Mostly for full game creators but also for casual players. What do you need to make it work properly? Just some little time and effort so your roster can communicate properly with my code.
Check the common.const file for more constants, recently I added some constants that would allow you to add different sounds and animations for every TAG feature. Use them to “spruce” Snapback, Switch on Combo, Air Switch, and Variable Cross.

Thanks to…

Lasombra Demon: For having patience and listening to me when someone got on my nerves.
K4thos: The original creator of the Tag system for Ikemen Go, Its been a long way since then.
Gacel: For working on the Ikemen Go code and keeping the flame alive.
Beta Testers in Spanish Ikemen discord server: Jefinho, Splash, Lasombra, Raito, etc. I’m very sure I forgot some people who have been helping, SORRY GUYS!!

No thanks to…

People who do not read the README files. If you reached this part of the post, you are not one of those!!
People who vaguely report “Your fucking TAG does not work bruh” without adding any more evidence or details than their word. 😛

God bless you and good luck!!