Categories
Article

How to use Orochi Kyo’s Tag

News for the Ikemen Go Tag!!

New Patch launched!! 19/06/2024


Version for Nightly Build of Ikemen Go as June 2024.
Download it here.

Version for Ikemen Go 0.99 stable.
Download it here.

Patch notes
Added support to Ikemen Go 0.99 and Ikemen Go Nightly Build.
Tag files are contained inside a folder and it is not necessary to overwrite files.
Many bug fixes.
New files to manage sounds, graphic effects and animations added.


fighting game with debug info on screen

How to install and use Orochi Kyo’s tag.

First, use the links shared above this section to download the right TAG version. If you are using Nightly you will have access to some fixes that are not stable. Remember that Nightly is “unstable” and only for enthusiasts who want to test the new features sooner.
Next, unzip the file and copy the folder “tag” to your Ikemen Go’s “data” folder. Go back to the main folder and open the “Save” folder. Open the config.json and edit to look it this way.

“CommonCmd”: [
“data/common.cmd”,
“data/tag/orochi_kyo_tag_commands.cmd”
],
“CommonConst”: [
“data/common.const”,
“data/tag/orochi_kyo_tag_constants.const”
],
“CommonFx”: [
“data/tag/orochi_kyo_tag_system.def”
],
“CommonLua”: [
“loop()”
],
“CommonStates”: [
“data/functions.zss”,
“data/action.zss”,
“data/dizzy.zss”,
“data/guardbreak.zss”,
“data/score.zss”,
“data/tag/orochi_kyo_tag_main_wire_attack.zss”,
“data/tag/orochi_kyo_tag_main_file.zss”,
“data/tag/orochi_kyo_tag_sfx.zss”,
“data/training.zss”
],

After the TAG installation

If you see this text box in the training mode, it means the tag was installed correctly. These are the default commands to use the tag in a match.
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.

For those people always asking if you can change these commands, check the orochi_kyo_tag_commands.cmd, but maybe you would need to disable some features to not override other commands.

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 Tag 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!!!

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!

Hide partner’s custom health and power bars

Maybe you’ll run into this situation where you have many chars with custom health and power bars, and these are stacked one over another.
There is an option that is turned off by default in the constants configuration file

HidePartnerHelpersExplods = 0;

Setting this option to 1 will hide most of these bars but some of them will remain on stage due to poor coding or other reasons.
So what to do? In this case, you need to have some experience in Mugen CNS coding, locate the explodes used to show these bars on screen, and add this trigger

triggerall = root, playerno = root,team leader

This will help the “HidePartnerHelpersExplods” to hide those bars while the character that owns them is offscreen.

Conclusion

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!!