127 State controllers (changed)
Rakíel edited this page 2026-09-01 23:50:47 -03:00
This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

The state controllers listed in this page already existed in Mugen, but were adjusted or expanded in Ikemen GO.

Use the sidebar for quick navigation.

AfterImage parameters

palinvertblend

palinvertblend = blend_mode (int)

Inverts current blend mode if enabled so Sub becomes Add and Add becomes Sub.

For PalFx it accepts 4 values:

  • 0 = Disabled (Mugen 1.0 blending behavior)
  • 1 = Enabled (Mugen 1.0 blending behavior)
  • -1 = Disabled (Mugen 1.1 blending behavior)
  • 2 = Enabled (Mugen 1.1 blending behavior)

If character MugenVersion is 1.1 and invertall = 1 and if invertblend param is omitted, it inverts blend by default. For all other MugenVersion invertblend is 0 if omitted.

AllPalFx parameters

invertblend

invertblend = blend_mode (int)

Inverts current blend mode if enabled so Sub becomes Add and Add becomes Sub.

For AllPalFx it accepts 2 values:

  • 0 = Disabled (Mugen 1.0 blending behavior)
  • 1 = Enabled (Mugen 1.1 blending behavior)

Defaults to 0 if omitted. If 1 it inverts blending on chars "layer".

AngleDraw, AngleSet, AngleMul parameters

xangle

xangle = xangle (int)

yangle

xangle = yangle (int)

AppendToClipboard, DisplayToClipboard

Unlike Mugen, Ikemen GO can use unlimited amount of numeric arguments. Also it supports format specifiers, e.g. %0.2f (prints float value truncated to 2 digits), %v (prints the value in a default format and optimal formatting, regardless if it's int, float or string).

AssertSpecial parameters

Enabled

Setting this parameter to 0 will disable the specified flags instead. Defaults to 1.

Flag

AssertSpecial now allows setting up to 8 flags at a time.

Example:

[State Test]
type = AssertSpecial
trigger1 = 1
flag = ...
flag2 = ...
flag3 = ...
flag4 = ...
flag5 = ...
flag6 = ...
flag7 = ...
flag8 = ...

In addition, the following flags were added or changed.

AnimateHitpause

While asserted, this flag makes the player's animation advance normally even during a hitpause.

AnimFreeze

While asserted, the player's animation will be frozen on the current frame.

AutoGuard

While asserted, makes the player guard automatically, without need to press back direction. The player will also switch automatically between standing and crouching guard.

CameraFreeze

While asserted, prevents the camera from updating, effectively freezing it in place.

DrawUnder

While asserted, makes the player sprites be drawn with the same properties of Explod under parameter. That is, if the player is on layer 0, it will always be drawn behind lifebars and character shadows.

GlobalNoKo

While asserted all players won't die from taking damage.

NoAIButtonJam

While asserted, disables the random direction and button jamming of Ikemen's default AI.

NoAICheat

While asserted, makes the player's AI unable to cheat commands, i.e. complete them without performing the respective inputs.

NoAiLevel

While asserted, makes the player AILevel and AILevelF triggers return 0.

NoAirJump

Disables the hard-coded state transitions to State 45 when Ctrl=1 && StateType=A && Command="holdup" and AirJump.Num allows

NoBrake

Disables the hard-coded state transitions to State 0 when StateNo=20 && Command!="holdfwd" && Command!="holdback"

NoComboDisplay

While asserted, disables displaying combo counter by this playerno (the flag has to be asserted on team leader to disable combo counter rendering for the teamside).

NoCornerPush

While asserted, the player won't be affected by HitDef cornerpush.veloff.

NoCrouch

Disables the hard-coded state transitions to State 10 when Ctrl=1 && StateType=S && Command="holddown".

NoDestroySelf

While asserted, disables destroyself sctrl.

NoDizzyPointsDamage

While asserted, player won't be affected by a HitDef's dizzypoints parameter.

NoFaceDisplay

While asserted, disables displaying the face icon for this player.

NoFaceP2

While asserted, StateDef facep2 parameter will have no effect.

NoFastRecoverFromLieDown

Disables the hard-coded faster recover from lie down on key input mashing when StateType=L && GetHitVar(RecoverTime)>0.

NoFallCount

Disables the hard-coded FallCount increment when StateNo=5070 || StateNo=5100.

NoFallDefenceUp

Disables the hard-coded defence increase when StateNo=5070 || StateNo=5100.

NoFallHitflag

While asserted, every HitDef will act as if its HitFlag has no F parameter. In other words, the player becomes unable to hit falling enemies.

NoGetUpFromLieDown

Disables the hard-coded state transitions to State 5120 when StateNo=5110 && GetHitVar(RecoverTime)=0.

NoGuardKo

While asserted player won't die from taking chip damage.

NoGuardBarDisplay

While asserted, disables displaying guardbars by this playerno.

NoGuardDamage

While asserted, player won't be affected by HitDef damage guard_damage.

NoGuardPointsDamage

While asserted, player won't be affected by HitDef guardpoints.

NoHardcodedKeys

Disables the hard-coded state transitions when pressing directional keys (combination of NoJump, NoAirJump, NoCrouch, NoStand, NoWalk, NoBrake, NoStandGuard, NoCrouchGuard, NoAirGuard).

NoHitDamage

While asserted, player won't be affected by HitDef damage hit_damage.

NoInput

While asserted, makes the player ignore any player/CPU inputs.

NoIntroReset

While asserted, prevents a player from being forced to their starting position after the round number announcement.

NoJump

Disables the hard-coded state transitions to State 40 when Ctrl=1 && StateType=S && Command="holdup"

NoKo

While asserted, the player won't die from taking damage.

If ikemenversion is not 0, the NoKO flag affects only the player that called it. Otherwise, the MUGEN behavior is replicated, and all players are affected. The new GlobalNoKo flag can be used to replicate the old MUGEN behavior.

NoKoFall

While asserted, the player won't be forced to fall when receiving a hit that depletes their remaining life. In Mugen this was hardcoded into Training mode.

NoKoVelocity

While asserted, player won't be affected by HitDef velocity adjustments upon KO.

NoLifeBarAction

While asserted, disables displaying lifebar actions by this playerno (the flag has to be asserted on team leader to disable lifebar actions rendering for the teamside).

NoLifeBarDisplay

While asserted, disables displaying lifebars by this playerno.

NoMakeDust

While asserted, the player does not generate hardcoded dust effects. The MakeDust state controller will also have no effect.

NoNameDisplay

While asserted, disables displaying the Name by this playerno.

NoPowerBarDisplay

While asserted, disables displaying powerbars by this playerno (with team power share option enabled and/or lifebar design with only 1 powerbar per side, the flag has to be asserted on team leader to disable powerbar rendering for whole team).

NoRedLifeDamage

While asserted, player won't be affected by HitDef redlife.

NoScore

While asserted, player won't be affected by HitDef score or the ScoreAdd / TargetScoreAdd state controllers.

NoStand

Disables the hard-coded state transitions to State 12 when StateType=C && Command!="holddown".

NoStunBarDisplay

While asserted, disables displaying stunbars by this playerno.

NoTimeDisplay

While asserted, disables displaying the fight screens [Time] elements.

NoTurnTarget

While asserted, keeps the opponent from automatically turning to face the player. This includes the facep2 parameter.

NoWinIconDisplay

While asserted, disables displaying winicons by this playerno (the flag has to be asserted on team leader to disable winicon rendering for the teamside).

PostRoundInput

While asserted, player's inputs are not disabled post-match (RoundState>2 || RoundState=-1).

ProjTypeCollision

While asserted, the player will clash with projectiles (and other players with the same flag) if their Clsn2 boxes overlap. This allows helpers to easily replicate this kind of projectile clashing.

RoundFreeze

While asserted, round related lifebar actions and internal timers are frozen (allows maintaining current roundstate).

RoundNotSkip

Disables intro and victory pose skipping via button press.

RunFirst

While asserted, makes the player code be processed before that of any other players.

RunLast

While asserted, makes the player code be processed after all other players.

SizePushOnly

In Ikemen, like Mugen, characters will push each other when both their size boxes (width * height) and their Clsn2 boxes overlap. Asserting this flag makes it so that only the size boxes are checked, as in most fighting games.

SkipFightDisplay

While asserted, the "fight" announcement on round start will be skipped.

SkipKoDisplay

While asserted, the KO announcement on round end will be skipped.

SkipRoundDisplay

While asserted, the round number announcement on round start will be skipped.

SkipWinDisplay

While asserted, the winner announcement on round end will be skipped.

AttackDist Parameters

Value

The value parameter now takes a second number. This number sets the distance that a player can attack behind the enemy and still allow them to enter proximity guard.

Example:

[State Test]
type = AttackDist
trigger1 = 1
value = 100, 50

Width

Works the same as Value.

Height

Changes the value of the attack.dist.height parameter for the player's current HitDef.

Example:

[State Test]
type = AttackDist
trigger1 = 1
height = 160, 0

Depth

Changes the value of the attack.dist.depth parameter for the player's current HitDef.

Example:

[State Test]
type = AttackDist
trigger1 = 1
depth = 10, 10

AttackMulSet Parameters

Damage

Sets an attack multiplier for regular damage only.

DizzyPoints

Sets an attack multiplier for dizzy points only.

GuardPoints

Sets an attack multiplier for guard points only.

RedLife

Sets an attack multiplier for red life only.

Value

Sets the attack multiplier for all types of damage.

Example:

[State Test]
type = AttackMulSet
trigger1 = 1
Damage = 0.50
RedLife = 2.00
DizzyPoints = 0.75
GuardPoints = 0.00

BGPalFX

BGPalFX now also accepts ID and index parameters. This allows it to apply PalFX to specific BG elements of the stage.

ID

The ID of the stage BG element to affect. Defaults to -1 (any).

Index

The index of the stage BG element to affect. Defaults to -1 (any).

Example:

[State Test]; Invert colors for the sixth BG element with any ID
type = BGPalFX
trigger1 = 1
ID = -1
index = 5
time = 10
invertall = 1

BindToTarget Parameters

PosZ

posz = pos_z (float)

Specify the offset (in the z-axis) to bind to. Can be skipped, so it's backward compatible with lines having only x,y declared.

Index

The index of the target to bind to. Defaults to 0 (first one).

ChangeAnim Parameters

ElemTime

Specifies the exact time of an animation element to change to. Defaults to 0.

Example:

[State 1000, Anim]; Change to animation 1003, element 4, second frame
type = ChangeAnim
trigger1 = Time = 30
value = 1003
elem = 4
elemtime = 1

AnimPlayerNo

This parameter lets a character use the specified animation from another character. Defaults to own playerno.

SpritePlayerNo

This parameter lets a character use the specified sprites from another character. Defaults to own playerno.

ReadPlayerID

This parameter lets a character use the specified animation from another character, including their sprites.

ChangeAnim2 Parameters

ElemTime

See ChangeAnim.

ReadPlayerID

This parameter lets a character use the specified animation from another character, but maintaining their own sprites.

ChangeState parameters

Continue

Due to the way State -1 is normally used to read inputs and change states, Mugen had it so that using a ChangeState in a negative state would stop the execution of the rest of the code in that state. Setting Continue to 1 will disable this behavior.
When a ChangeState is redirected, Continue will default to 1.

DefenceMulSet Parameters

In Mugen, DefenceMulSet changes the player's final defense multiplier. That means it will override any defense buffs such as those gained through the fall.defence_up constant or the SuperPause p2defmul parameter. In Ikemen GO, it is only another multiplier, meaning the other defense buffs will still work correctly.

IkemenVersion

Characters with ikemenversion will have DefenceMulSet work correctly and more intuitively by default. See MulType and OnHit.

MulType

multype = bvalue (boolean int)

Defines how damage taken should be multiplied.

If 0, damage taken is multiplied by value.
If 1, defense is multiplied by value (therefore the damage is divided).

Defaults to 1 for characters with ikemenversion, and to 0 otherwise.

OnHit

onHit = bvalue (boolean int)

Defines if the defense value should also apply outside of moveType = H.

If 0, the defense value works without delay.
If 1, the defense value is only active if the char is already in moveType = H.

Defaults to 0 for characters with ikemenversion, and 1 otherwise.

Example:

[State -2, Evil Ryu Defense]
type = defencemulset
trigger1 = map(evilryu) != 0
value = 0.80
onhit = 0
multype = 1
ignorehitpause = 1

EnvShake parameters

Decay

decay = exponent (float)

Applies an exponential decay to the shake amplitude over time, making it fade out automatically.

  • decay = 0: no fading
  • 0 < decay < 1: fades slow, then fast
  • decay = 1: fades linearly
  • decay > 1: fades fast, then slow

Example:

[State Shake]
type = envshake
trigger1 = !time
time = 30
ampl = 10
freq = 90
decay = 1.5

Dir

dir = angle (int)

Changes the direction in degrees in which the shake is applied. Defaults to 0. For a negative amplitude, 90 will make the screen shake from left to right.

DirAdd

diradd = angle (int)

Increases the shaking angle by the specified value each frame. Allows the effect to appear more exaggerated and erratic.

Mul

mul = factor (float)

For every EnvShake cycle, the amplitude is multiplied by this value. Defaults to 1. Cycle duration is determined by frequency, with a frequency of 180 needing two frames to complete one cycle.

Example:

[State 3051, Shake]
type = envshake
trigger1 = !time
time = 30
ampl = 5
freq = 180
mul = 0.9

In this case, the screen shakes 5 pixels in the first cycle, then 4.50 pixels, then 4.05 and so on.

Note: This parameter has been superseded by the decay parameter.

Explod parameters

AfterImage

Explods now support AfterImage parameters (e.g. afterimage.time, afterimage.length, afterimage.trans). Usage is identical to Projectile's AfterImage.

AnimElem

animelem = elem_no (int)

Sets the element where the explod's animation should start. Defaults to 1.

AnimPlayerNo

animplayerno = playerno (int)

This parameter lets a explod use the specified animation from another character. Defaults to own playerno.

HideWithBars

hidewithbars = bvalue (boolean int)

This parameter hides the explod automatically when the fight screen is hidden. Defaults to 0.

SpritePlayerNo

spriteplayerno = playerno (int)

This parameter lets a explod use the specified sprites from another character. Defaults to own playerno.

AnimElemTime

animelemtime = time (int)

Sets the time at which the explod's animation element should start. Defaults to 0.

AnimFreeze

animfreeze = bvalue (boolean int)

Freezes the explod's animation. Defaults to 0.

Example:

[State 0, Custom Afterimage]
type = Explod
trigger1 = time%5=0
anim = anim
animelem = animelemno(0)
animfreeze = 1
ID = 1000
postype = none
pos = pos x+camerapos x,pos y
facing = 1
vfacing = 1
bindtime = 1
supermovetime = 0
pausemovetime = 0
scale = 1,1
sprpriority = 10
ontop = 0
shadow = 0,0,0
ownpal = 1
trans = add
removetime = 40
palfx.time = 40
palfx.sinmul = -255,-255,-255,160
removeongethit = 0
ignorehitpause = 1

FocalLength

Focal Length of the projection. Does nothing when projection is not perspective or perspective2. This value is fixed in Mugen 1.1, the explods will look differently under different different resolution/loaclcoord/camera zoom. In Ikemen, this value scales internally like xy scales so that the explods will always look the same. Default value is 2048.

Friction

Applies friction to explod on the defined axis (Friction value example: 0.95).

Friction = friction_x, friction_y, friction_z (float, float, float)

Interpolation

Interpolation works just as the .air counterpart, interpolating linearly between 2 values.

The syntax is as follows: Interpolation. Where is one of: time, animElem, scale, alpha, angle, offset, xshear, focallength

Interpolation.Time is required for any of the parameters to work.

Time = duration (int)

Specifies the time period of the animation (if omitted, defaults to 0).

AnimElem = elem_no (int)

Interpolation between AnimElem and Interpolation.AnimElem. if AnimElem is omitted, defaults to 1. AnimFreeze will stop the animation from going further than Interpolation.AnimElem.

Alpha = alpha_source, alpha_dest (int, int)

Interpolation between Alpha values and Interpolation.Alpha. Sub and Add1 are not supported.

Angle = angle, xangle, yangle (float, float, float)

Interpolation between Angle / XAngle / YAngle and Interpolation.Angle.

Offset = offset_x, offset_y (float, float)

Interpolation between Pos and Interpolation.Offset.

Scale= scale_x, scale_y (float, float)

Interpolation between Scale and Interpolation.Scale.

Xshear= xshear (float)

Interpolation between Xshear and Interpolation.Xshear.

FocalLength = value(float)

Interpolation between FocalLength and Interpolation.FocalLength.

Palfx is also compatible with the syntax:

Interpolation.PalFx.(type)

where (type) is one of: mul, add, hue, color

PalFx.Time and OwnPal = 1 is required for any of the parameters to work.

Mul = mul_r, mul_g, mul_b (int, int, int)

Interpolation between PalFx.Mul values and Interpolation.PalFx.Mul. If PalFx.Mul is omitted, defaults to 256, 256, 256.

Add = add_r, add_g, add_b (int, int, int)

Interpolation between PalFx.Add values and Interpolation.PalFx.Add. If PalFx.Add is omitted, defaults to 0, 0, 0.

Hue = value (int)

Interpolation between PalFx.Hue value and Interpolation.PalFx.Hue. If PalFx.Hue is omitted, defaults to 0.

Color = value (int)

Interpolation. between PalFx.Color value and Interpolation.PalFx.Color. If PalFx.Color is omitted, defaults to 256.

These parameters can be used interchangeably.

Examples:

  • Spinning object doing a full circle in a period of 60 ticks:
Angle = 0;
XAngle = 0;
YAngle = 0;
Interpolation.Time = 60;
Interpolation.Angle = 360, 0, 0;
  • Moving object from 0, 0 to 50, 0 in a period of 100 ticks:
Pos = 0, 0;
Interpolation.Time = 100;
Interpolation.OffSet = 50, 0;
  • Object fading out in 30 ticks:
Trans = AddAlpha;
Alpha = 256, 0;
Interpolation.Time = 30;
Interpolation.Alpha = 0, 256;
  • Object Changing from Blue to Red in 50 ticks:
PalFx.Time = 50;
PalFx.Mul = 0, 0, 256;
Interpolation.Time = 50;
Interpolation.PalFx.Mul = 256, 0, 0;

LayerNo

Specify on which layer the explod should be drawn. Valid values are -1, 0 and 1. Defaults to the same layer as the player.
Layer number 1 is effectively the same as the legacy ontop parameter.

PalFx

Apply palette effects on explods. The parameters are the same as in the HitDef controller. Requires ownpal to be a nonzero value.

Projection

Affect how the explod is drawn when xangle or yangle is not zero.

  • orthographic: The default value when Mugen version is not 1.1 or Ikemen version is not 0. The explod is drawn using orthographic projection.
  • perspective: The default value when Mugen version is 1.1 and Ikemen version is 0. The explod is drawn using perspective projection. Distortion is affected by the position of the sprite relative to the center of the screen.
  • perspective2: The explod is drawn using perspective projection. Distortion is affected by the position of the sprite relative to the center of the animation.

Reflection

If 0, disables reflection on the explod regardless of its shadow color. If 1, enables reflection on the explod regardless of its shadow color. Defaults to showing a reflection if the explod's shadow is not 0, 0, 0.

RemoveOnChangeState

If set to 1, the Explod will be removed if the character changes state. Defaults to 0.

Shader

shader = "shader_name" (string)

Specifying the name of the currently loaded custom shader will apply that shader to Explod.

ShaderTime

shadertime = time (int)

Specifying this parameter will remove the custom shader after it has been displayed for the specified number of ticks. The default value is -1.

ShaderParam.pX

shaderparam.pX = value (float)

Specifies the value to send to the custom shader. The value specified here can be used as a variable within the custom shader. X is limited to 0 to 15, and a maximum of 16 values can be sent.

ShaderTexX.spr

shadertexX.spr = group, image (int, int)

ShaderTexX.anim

shadertexX.anim = anim_no (int)

Specifies the texture to send to the custom shader. The sprites specified here can be used as textures within the custom shader. You can specify 1 or 2 for X, and send up to two sprites. Each tex can be assigned either a sprite number (spr) or an anim number. It is not possible to assign both sprite and anim numbers to the same tex number simultaneously. Note that since textures are loaded as raw data, images with palettes may not display correctly as is.

SpritePlayerNo

spriteplayerno = playerno (int)

This parameter lets a explod use the specified sprites from another character. Defaults to own playerno.

syncid

syncid = id (int)

Specifies the ID of a character to synchronize with. The Explod will group with the target in the draw order. If syncparams is 1, it also copies the target's drawing properties (Position, Scale, Angle, Trans, etc.).

synclayer

synclayer = layer (int)

Adjusts the drawing order relative to the character specified in syncid.

  • 0: Same layer as the character (default).
  • > 0: Drawn in front of the character.
  • < 0: Drawn behind the character.

syncparams

syncparams = value (bool)

If set to 1, visual parameters (Scale, Angle, Trans, etc.) are continuously copied from the character specified in syncid. If set to 0, only the draw order is synchronized. Defaults to 1.

under

If set to 1 and the explod is on layer 0, it will always be drawn behind lifebars and character shadows.

window

window = x1, y1, x2, y2 (float)

This parameter takes four numbers (similar to the format of a Clsn box) which forms a rectangle outside of which the pixels will not be rendered.

xshear

xshear = xshear (float)

Specifies the amount of horizontal shearing to apply to the explod. Defaults to 0.

Forcefeedback parameters

Note: The below parameters are considered "new API" and override all freq and ampl parameters of ForceFeedback. ampl is ignored regardless of API used.

lo

lo = lo_value (int)

Sets the frequency for the low frequency (left) rumble motor. Defaults to 0.

hi

hi = hi_value (int)

Sets the frequency for the high frequency (right) rumble motor. Defaults to 0.

Helper parameters

ClsnProxy

If set to 1, any overlap with the helper's clsn boxes will instead affect its parent as if the helper's clsn boxes were part of the parent's anim. Defaults to 0.

ExtendsMap

If set to 1, the parent map is inherited by helper. Defaults to 0.

Immortal

If set to 1, the helper's life can't be reduced to 0. Defaults to 0.

InheritChannels

If set to 1, helper shares parent's sound channels. Setting it to 2 does the same thing but for root instead of parent. Defaults to 0.

InheritJuggle

If set to 1, helper's attacks also update parent's target list and add to the parent's juggle points. Also, the helper will inherit its parent's juggle points against attacked enemy. Setting it to 2 does the same thing but for root instead of parent. Defaults to 0.

keyctrl

In Mugen this parameter accepts a single boolean int value that makes the helper being able to read command input and inherit its root's State -1. In Ikemen GO, on top of this functionality, the parameter optionally accepts more values that enable additional root's negative state inheritance (2 means that helper inherit its root's State -2 and so forth).

keyctrl = 1, 3

KOVelocity

If set to 1, the helper will be affected by increased KO Velocity (defeated character flying across the screen), just like normal player. Defaults to 0.

Map

A helper's maps can be set immediately upon its creation via map.<mapname> syntax.

helper{...; map.speed: 8; map.angle: 45}

OwnClsnScale

A helper with this parameter will have its collision box scale be based on its own size.xscale and size.yscale constants rather than its root's.

OwnProjectile

A helper with this parameter can own its own projectiles instead of the root player.
Note: If a helper is destroyed while a projectile is still active, the orphaned projectile loses its ability to interact with other players.

Preserve

If set to 1, the helper won't be destroyed after skipping round 1 intro and will move over to the next round, just like normal player. Defaults to 0.

Size

New size constants like depth and weight can also be attributed to helpers upon their creation, with the size prefix.

Example:

type = Helper
size.weight = 200
size.depth = 10, 10

Standby

Helpers inherit standby flag from root characters. By using this parameter, a character can force a specific standby for its helper, regardless of the standby value of the character itself.

HitBy parameters

IkemenVersion

In Mugen, the behavior of HitBy (and NotHitBy) is not as documented. The player's invincibility is compared to the enemy's actual statetype instead of their Hitdef's SCA flags. If a character has ikemenversion, it will work as documented.

New syntax

HitBy (and NotHitBy) now also accepts a syntax similar to HitOverride, using attr and slot instead of value. Every player has access to 8 individual slots (numbered 0 to 7).
This new syntax is required to use the new features.

Example of equivalent code in old and new syntax:

[State -3, Old Syntax]
type = hitby
trigger1 = 1
value = SC, AP
time = 1

[State -3, New Syntax]
type = hitby
trigger1 = 1
attr = SC, AP
slot = 0
time = 1

Stack

stack = value (bool)

Using this parameter makes a vulnerability slot stack with other slots. This allows setting vulnerability combinations not previously possible in Mugen.

Example, make a player vulnerable to Standing Attacks and Air Projectiles:

[State -2, Test]
type = hitby
trigger1 = 1
attr = S, AA
time = 1
slot = 0
stack = 1

[State -2, Test]
type = hitby
trigger1 = 1
attr = A, AP
time = 1
slot = 1
stack = 1

PlayerNo

playerno = player_number (int)

Using this parameter limits vulnerability to a specific player number.

PlayerID

playerid = player_id (int)

Using this parameter limits vulnerability to a specific player ID.

HitDef parameters

air.juggle (changed)

In Mugen, the air.juggle parameter is only used by the Projectile state controller. Characters with ikemenversion can now use this parameter in a Hitdef to update their juggle points. This allows a move with multiple hits to have different juggle properties in every hit, for instance.

air.velocity (changed)

This parameter now takes a third value, It specifies the z velocity.

air.velocity = x_vel, y_vel, z_vel (float, float, float)

airguard.velocity (changed)

This parameter now takes a third value, It specifies the z velocity.

airguard.velocity = x_vel, y_vel, z_vel (float, float, float)

attack.depth

attack.depth = z_dist_front, z_dist_back (int, int)

Specifies the range of the attack in the Z plane. An attack with more depth reaches further into or out of the Z plane. Defaults to the character's attack.depth size constant.

dizzypoints

dizzypoints = hit_value (int)

Specifies the amount of dizzy points to give P2 if this HitDef connects successfully. If omitted, it defaults to hit_damage (from "damage" parameter) multiplied by the value of Default.LifeToDizzyPointsMul / Super.LifeToDizzyPointsMul specified in data/common.const, scaled by the targets' defense multipliers if necessary.

down.recover

down.recover = recover_flag (bool)

This parameter controls the enemy's ability to use "fast recovery from lie down" after being hit.

down.recovertime

down.recovertime = recover_time (int)

This parameter determines how long the enemy will stay down (in state 5110) after being knocked down. Defaults to the enemy's data.liedown.time constant. Together with down.recover, this allows one to effectively apply "hard knockdown" states on the enemy.

down.velocity (changed)

down.velocity = x_vel, y_vel, z_vel (float, float, float)

This parameter now takes a third value, It specifies the z velocity.

envshake.mul

envshake.mul = envshake_mul (float)

For every envshake cycle, the envshake.ampl is multiplied by this value. Defaults to 1.

envshake.dir

envshake.dir = angle (int)

Changes the direction in degrees in which the shake is applied. Defaults to 0. For a negative amplitude, 90 will make the screen shake from left to right.

fall.envshake.mul

fall.envshake.mul = fall_envshake_mul (float)

For every fall.envshake cycle, the fall.envshake.ampl is multiplied by this value. Defaults to 1.

fall.envshake.dir

fall.envshake.dir = angle (int)

Changes the direction in degrees in which the shake is applied. Defaults to 0. For a negative amplitude, 90 will make the screen shake from left to right.

fall.zvelocity

fall.zvelocity = fall_zvelocity (float)

This is the z-velocity that P2 gets when bouncing off the ground in the "fall" state. Defaults to no change if omitted.

forcecrouch

forcecrouch = bvalue (boolean int)

Forces a standing opponent to crouch upon hit. Similar to ForceStand. Defaults to 0.

guard.hittime

If the character has ikemenversion, this value now defaults to ground.hittime as documented, as opposed to ground.slidetime.

guardpoints

guardpoints = hit_value (float)

Specifies the amount of guard points to give P2 if this HitDef is guarded. If omitted, it defaults to hit_damage (from "damage" parameter) multiplied by the value of Default.LifeToGuardPointsMul / Super.LifeToGuardPointsMul specified in data/common.const, scaled by the targets' defense multipliers if necessary.

ground.velocity (changed)

This parameter now takes a third value, It specifies the z velocity.

ground.velocity = x_vel, y_vel, z_vel (float, float, float)

guard.dist (changed)

guard.dist = x_dist_front, x_dist_back (int, int)

This parameter now takes a second value. It specifies the distance that a player can attack behind the enemy and still allow them to enter proximity guard. This second value defaults to 0.

guard.dist.width

guard.dist.width = x_dist_front, x_dist_back (int, int)

Alternative syntax for guard.dist, for consistency with guard.dist.height and guard.dist.depth.

guard.dist.height

guard.dist.height = y_dist_top, y_dist_bottom (int, int)

Specifies the vertical distance (height) within which a player's attack can trigger the enemy's proximity guard. The default value is 1000, 1000.

guard.dist.depth = z_dist_top, z_dist_bottom (int, int)

Specifies the depth range (along the Z-axis) within which a player's attack can trigger the enemy's proximity guard. The default value is 4, 4.

guard.velocity (changed)

guard.velocity = x_vel, y_vel, z_vel (float, float, float)

This parameter now takes a second and a third value. It specifies the Y and the Z guard velocities. They default to 0.

guard.sparkangle

guard.sparkangle = angle_value (float)

Specifies the guard spark rotation directly from a Hitdef. Defaults to 0.

guard.sparkscale

guard.sparkscale = x_scale, y_scale (float, float)

Specifies the guard spark's scale directly from a Hitdef. Defaults to 1, 1 (no change).

stand.friction

stand.friction = friction_value (float)

Overrides the opponent's Movement.Stand.Friction constants while they are in the gethit state caused by this HitDef.

crouch.friction

crouch.friction = friction_value (float)

Overrides the opponent's Movement.Crouch.Friction constants while they are in the gethit state caused by this HitDef.

guardsound.channel

guardsound.channel = channel_no (int)

Specifies which of the player's sound channels the guardsound should play on. If omitted, channel_no defaults to -1, meaning the sound will play on any free channel.

hitsound.channel

hitsound.channel = channel_no (int)

Specifies which of the player's sound channels the hitsound should play on. If omitted, channel_no defaults to -1, meaning the sound will play on any free channel.

ignorereversaldef

ignorereversaldef = value (bool)

If set to 1, this HitDef will ignore any active ReversalDef on the opponent, hitting them normally. Defaults to 0.

keepstate

keepstate = value (bool)

If set to 1, the hit will apply effects (damage, hitpause, etc.) but the opponent will not change to a gethit state. Defaults to 0.

maxdist (changed)

This parameter now takes a third value. It specifies the Z maxdist.

mindist (changed)

This parameter now takes a third value. It specifies the Z mindist.

missonoverride

missonoverride = bvalue (boolean int)

This parameter allows you to choose whether or not a HitDef will miss if it would be overridden(HitOverride), by default, it missing only if P1StateNo, P2StateNo, or P2GetP1State is specified. P1StateNo and P2StateNo both do not apply if the hit is overridden.

nochainID (changed)

This parameter now accepts up to 8 values, up from 2.

p1sprpriority

In Mugen, the default value for this parameter was not intuitive and often became a problem. In Ikemen, it defaults to no change.

p2clsncheck

p2clsncheck= clsn_type (string)

This parameter makes a hit be checked against a specific type of collision box. Valid parameters are Clsn1, Clsn2, Size and None.
Traditionally, fighting games check throws with the Size box.

p2clsnrequire

p2clsnrequire= clsn_type (string)

This parameter prevents a hit from happening if the enemy lacks a particular type of collision box, regardless of them overlapping or not with the player.

Note: All Mugen characters were created on the assumption that lacking Clsn2 makes them invulnerable. Therefore, if a character is designed for compatibility with other Mugen characters, this parameter should be used when checking hits against other types of collision boxes.

redlife

redlife = hit_value, guard_value (int)

Specifies the amount of red life to give P2 if this HitDef connects successfully. If omitted, it defaults to hit_damage (from "damage" parameter) multiplied by the value of Default.LifeToRedLifeMul / Super.LifeToRedLifeMul specified in data/common.const, scaled by the targets' defense multipliers if necessary. Additional second value is optional and assigns an amount of guard red life to P2.

score

score = p1_value, p2_value (float)

Specifies the score value added to P1 and P2 score count.

snap

This parameter now actually uses the third value. It specifies the P2 Pos Z. snap takes 4 arguments the 4th one being snaptime.

sparkangle

sparkangle = angle_value (float)

Specifies the hitspark rotation directly from a Hitdef. Defaults to 0.

sparkscale

sparkscale = x_scale, y_scale (float, float)

Specifies the hit spark's scale directly from a Hitdef. Defaults to 1, 1 (no change).

teamside

Makes the HitDef be treated as an attack from the TeamSide you specify (similar to the trigger of TeamSide).

When used with Projectile, setting a teamside different from the player's will allow the projectile to hit its owner and interact with other projectiles from the same player.

unhittabletime

unhittabletime = p1_time, p2_time (int)

Makes the player or the enemy invincible for the specified number of the frames after the hit. Use -1 for no change.
Defaults to p1_pausetime + 1, p1_pausetime + 1 for throw attribute attacks, 0, p1_pausetime + 1 for ReversalDef, or -1, -1 otherwise.

xaccel

xaccel = accel (float)

Specifies the x acceleration to impart to P2 if the hit connects. Defaults to 0.
For backwards compatibility reasons, this acceleration is not used by default, as it is not called by common1.cns.

zaccel

zaccel = accel (float)

Specifies the z acceleration to impart to P2 if the hit connects. Defaults to 0.
For backwards compatibility reasons, this acceleration is not used by default, as it is not called by common1.cns.

HitOverride parameters

forceguard

forceguard = value (bool)

If set to 1, a successful override will be considered a guarded attack.

guardflag

guardflag = hit_flags (string)

Only hits containing the specified flags in their guardflag will be overridden.

guardflag.not

guardflag.not = hit_flags (string)

Hits containing the specified flags in their guardflag will not be overridden.

Example:

[State Test]; Override attacks that can be blocked standing but not crouching (overheads)
type = HitOverride
trigger1 = 1
attr = SCA, AA
guardflag = H
guardflag.not = L

keepstate

keepstate = value (bool)

If set to 1, the character will override a hit without changing states at all.

HitVelSet parameters

Z

z = z_flag (int)

A nonzero flag means to change that z-component of the player's velocity to the gethit velocity.

ModifyExplod parameters

IkemenVersion

In general, characters with ikemenversion are able to to modify their explods more freely.

Additionally, if a character has ikemenversion, modifying an explod timer such as bindtime or removetime will use the current frame as the reference time. For example, if removetime is modified to 10, the explod will be removed 10 frames later, regardless of what the original time was.

anim

Modifies the anim parameter of an existing Explod. Requires ikemenversion.

animelem

Modifies the animelem parameter of an existing Explod.

animelemtime

Modifies the animelemtime parameter of an existing Explod.

ignorehitpause

Modifies the ignorehitpause parameter of an existing Explod. Requires ikemenversion.

index

The index of the explod to be affected. Defaults to -1 (all).

space

Modifies the space parameter of an existing Explod. Requires ikemenversion.

under

Modifies the under parameter of an existing Explod.

NotHitBy parameters

See HitBy.

PalFx parameters

invertblend

invertblend = blend_mode (int)

Inverts current blend mode if enabled so Sub becomes Add and Add becomes Sub.

For PalFx it accepts 4 values:

  • 0 = Disabled (Mugen 1.0 blending behavior)
  • 1 = Enabled (Mugen 1.0 blending behavior)
  • -1 = Disabled (Mugen 1.1 blending behavior)
  • 2 = Enabled (Mugen 1.1 blending behavior)

If character MugenVersion is 1.1 and invertall = 1 and if invertblend param is omitted, it inverts blend by default. For all other MugenVersion invertblend is 0 if omitted.

hue

hue = value (int)

This affects the hue level of the palette. Avaiable range is -256 to 256.

sinmul

sinmul = ampl_r, ampl_g, ampl_b, period (int)

Similliar to "sinadd" parameter but instead it creates effect related to "mul" parameter.

sincolor

sincolor= ampl, period (int)

Similliar to "sinadd" parameter but instead it creates effect related to "color" parameter.

sinhue

sinhue= ampl, period (int)

Similliar to "sinadd" parameter but instead it creates effect related to "hue" parameter.

PlayerPush parameters

Priority

PlayerPush now accepts a priority parameter. A player with a higher priority can't be pushed by a player with a lower priority and will also push them out of a stage corner. Priority is reset to 0 every frame.

AffectTeam

affectteam = team_type (string)

specifies which team's players can be push.

  • F : Allows only allies to be pushed out (enemies will pass through)
  • B : Pushes both allies and enemies
  • E : Pushes only enemies (default)

PlaySnd parameters

Priority

priority = snd_priority (int)

Sets the priority of the sound. Does nothing when channel is not specified. A sound with higher priority will not be interrupted by sounds with lower priority. Defaults to 0.

LoopStart

loopstart = loop_start_sample (int)

Sets the sample to begin looping from.

LoopEnd

loopend = loop_end_sample (int)

Sets the sample to end looping at.

StartPosition

startposition = start_sample (int)

Sets the sample to begin playing from.

LoopCount

loopcount = loop_count

If set, will play the sound loop_count number of times before stopping. Nonzero values take precedence over the loop parameter.

StopOnGetHit

stopongethit = stop (bool)

This parameter makes the sound be interrupted if the player gets hit. Defaults to 1 if channel is set to 0.

StopOnChangeState

stoponchangestate = stop (bool)

This parameter makes the sound be interrupted if the player changes states.

Projectile parameters

IkemenVersion

In MUGEN, contrary to its documentation, projectiles do not support the ChainID and NochainID parameters. This behavior has been replicated by default in Ikemen GO. However, when a character's ikemenversion is not 0, projectiles do take these parameters into account.

ProjAngle

Specifies the angle to rotate the Projectile animation.

ProjXAngle

Specifies the Xangle of the Projectile animation.

ProjYAngle

Specifies the Yangle of the Projectile animation.

ProjClsnAngle

Defines the angle for the projectile's collision boxes. In degrees.

ProjClsnScale

Defines the collision box scale for the projectile.

ProjDepthBound

Like projedgebound but for the Z space. Determines how far out of the Z boundaries the projectile can travel before being removed.

ProjLayerNo

Specify on which layer the projectile should be drawn. Valid values are -1, 0 and 1. Defaults to the same layer as the player.

ProjFocalLength

Focal Length of the projection. Does nothing when projection is not perspective or perspective2.

ProjProjection

Affect how the projectile is drawn when xangle or yangle is not zero.

  • orthographic: The default value, the projectile is drawn using orthographic projection.
  • perspective: The projectile is drawn using perspective projection. Distortion is affected by the position of the sprite relative to the center of the screen.
  • perspective2: The projectile is drawn using perspective projection. Distortion is affected by the position of the sprite relative to the center of the animation.

ProjReflection

If 0, disables reflection on the projectile regardless of its shadow color. If 1, enables reflection on the projectile regardless of its shadow color. Defaults to showing a reflection if the projectile's shadow is not 0, 0, 0.

ProjWindow

This parameter takes four numbers (similar to the format of a Clsn box) which forms a rectangle outside of which the pixels will not be rendered.

ProjXshear

Specifies the amount of horizontal shearing to apply to the projectile. Defaults to 0.

Shader

shader = "shader_name" (string)

Specifying the name of the currently loaded custom shader will apply that shader to Projectile.

ShaderTime

shadertime = time (int)

Specifying this parameter will remove the custom shader after it has been displayed for the specified number of ticks. The default value is -1.

ShaderParam.pX

shaderparam.pX = value (float)

Specifies the value to send to the custom shader. The value specified here can be used as a variable within the custom shader. X is limited to 0 to 15, and a maximum of 16 values can be sent.

ShaderTexX.spr

shadertexX.spr = group, image (int, int)

ShaderTexX.anim

shadertexX.anim = anim_no (int)

Specifies the texture to send to the custom shader. The sprites specified here can be used as textures within the custom shader. You can specify 1 or 2 for X, and send up to two sprites. Each tex can be assigned either a sprite number (spr) or an anim number. It is not possible to assign both sprite and anim numbers to the same tex number simultaneously. Note that since textures are loaded as raw data, images with palettes may not display correctly as is.

RemoveExplod parameters

index

The index of the explod to be affected. Defaults to -1 (all).

ReversalDef parameters

ReversalDef can also use the new HitDef parameters. In addition it has the following exclusive parameters.

reversal.guardflag

reversal.guardflag = hit_flags (string)

Only hits containing the specified flags in their guardflag will be countered.

reversal.guardflag.not

reversal.guardflag.not = hit_flags (string)

Hits containing the specified flags in their guardflag will not be countered.

Example:

[State Test]; Counter attacks that can be blocked crouching but not standing (lows)
type = ReversalDef
trigger1 = 1
reversal.attr = SCA, AA
reversal.guardflag = L
reversal.guardflag.not = H

ScreenBound parameters

StageBound

Lets a character bypass leftbound and rightbound from stage.

SelfState parameters

ReadPlayerID

Change to the state of the character with the specified Player ID. If successful, it would take the character with the specified PlayerID to the selected state.

See also ChangeState.

SprPriority Parameters

LayerNo

layerno = layer_number (int)

Change the layer number on which the player is drawn on. Valid values are -1, 0 and 1. Defaults to 0.
[TODO - Link to explanation on layer drawing order]

Example:

[State Test]
type = SprPriority
trigger1 = Time = 0
value = 5
layerno = -1

StopSnd parameters

Channel

Mugen allowed stopping all sounds for all players with channel = -1, but had no way to stop only the player's own sound channels. Using channel = -2 will now do just that.

SuperPause

Brightness

Determines how much the screen should darken during the pause. Valid values are between 0 (pitch black) and 255 (no change). Defaults to 128 (same as old darken parameter).

TargetBind parameters

Index

The index of the target to be affected. Defaults to -1 (all).

Pos (changed)

pos = x_pos, y_pos, pos_z (float, float, float)

This parameter now takes a third value, Specifies the offset from the player's z-axis to bind the target to.

TargetFacing parameters

Index

The index of the target to be affected. Defaults to -1 (all).

TargetLifeAdd parameters

Dizzy

If set to 1, enables life to dizzy points conversion support using Default.LifeToDizzyPointsMul / Super.LifeToDizzyPointsMul const. Defaults to 1.

Index

The index of the target to be affected. Defaults to -1 (all).

TargetPowerAdd parameters

Index

The index of the target to be affected. Defaults to -1 (all).

TargetState parameters

Index

The index of the target to be affected. Defaults to -1 (all).

TargetVelAdd parameters

Index

The index of the target to be affected. Defaults to -1 (all).

Z

z = z_value (float)

Specifies the value to add to the target's z-velocity.

TargetVelSet parameters

Index

The index of the target to be affected. Defaults to -1 (all).

Z

z = z_value (float)

Specifies the value to set the target's z-velocity to.

Trans parameters

Ikemen GO has some expanded transparency options.
Note: Applies to all trans definitions (e.g. explods, backgrounds, etc).

Sub

The sub transparency now also supports alpha values.

trans{trans: sub; alpha: 192, 64}

SubAdd

The subadd transparency mode was added. It draws the sprite in grayscale subtractive transparency, then draws it again in full color additive transparency. The result is a transparent effect that looks more solid and is easier to see against bright backgrounds.
The alpha source parameter controls the intensity of the additive layer, while destination controls the subtractive layer.
Native implementation of a classic Mugen trick.

trans{trans: subAlpha; alpha: 256, 256}

Zoom parameters

Zoom was a beta feature in Mugen 1.1. It is a fully functional state controller in Ikemen GO.

CameraBound

If set to 1, the zoom position is restricted to the current camera position. Defaults to 1.

EndLag

Like the lag parameter, but it applies after the Zoom effect ends.

Lag

Controls the smoothing effect for camera position and scale transitions during zoom, with smaller values leading to quicker adjustments and larger values causing more gradual changes.
Valid values are between 0 and 1, where 0 snaps the camera instantly and 1 delays the zoom effect indefinitely.
Defaults to 0.

Pos

The position on screen to bind the zoom, relative to the center of the screen. A value of Pos X, Pos Y will zoom in on P1.

Scale

The camera zoom factor as a float. Values greater than 1 zoom in, while values between 0 and 1 zoom out. For example, a value of 2 doubles the size of the sprites.

StageBound

If set to 1, the zoom position is restricted to the stage boundaries. Defaults to 1.

Time

Countdown timer that controls how long zoom effects are applied, decreasing by 1 every frame. Once it reaches 0, the zoom stops, and the camera resets to its default behavior without any smoothing or zoom effects. Defaults to 1.