Updated - Aug 31, 2022
Here's an example that you need to adjust, or fixes on your own; which I like to call it, baby grab
Code: Select all
created by me: https://hentaicharmugen-forum.com/viewtopic.php?p=2574#p2574
► Show Spoiler
Note: The commands are CASE-SENSITIVE, and so are the command names.
a, b, c, x, y, z
By default, the key configures:
state entry, as well as in the CNS file (Which is the StateDef Number).
The command section should look like:
Special Symbol used in "the_command"
The - time (optional) method
Time allowed to do the command, given in game-ticks. The default
value for this is set in the [Defaults] section below. A typical
value is 15.
The - buffer.time (optional) method
Time that the command will be buffered for. If the command is done
successfully, then it will be valid for this time. The simplest
case is to set this to 1. That means that the command is valid
only in the same tick it is performed. With a higher value, such
as 3 or 4, you can get a "looser" feel to the command.
- The eight directions are All Caps
- B = Back
- F = Forward
- U = Up
- D = Down
- DF = Down Forward
- DB = Down Back
- Etc...
a, b, c, x, y, z
By default, the key configures:
abc are the bottom,
&
xyz are on the top row.
Each [Command] section defines a command that you can use for&
xyz are on the top row.
state entry, as well as in the CNS file (Which is the StateDef Number).
The command section should look like:
Code: Select all
[Command]
name = some_name
command = the_command
time = time (optional)
buffer.time = time (optional)
► Show Spoiler
- Slash (/) - means the key must be held down
command = /D ;hold the down direction
command = /DB, a ;hold down-back while you press a - Tilde (~) - to detect key releases
command = ~a ;release the a button
command = ~D, F, a ;release down, press fwd, then a
command = ~30a ;hold a for at least 30 ticks, then release - Dollar ($) - Direction-only: detect as 4-way
command = $D ;will detect if D, DB or DF is held
command = $B ;will detect if B, DB or UB is held - Plus (+) - Buttons only: Joints / press together
command = a+b ;press a and b at the same time
command = x+y+z ;press x, y and z at the same time - Greater-than (>) - means there must be no other keys pressed or released
between the previous and the current symbol.command = a, >~a ;press a and release it without having to hit
;or released any other keys in between - You can combine the symbols:
command = ~30$D, a+b ;hold D, DB or DF for 30 ticks, release,
;then press a and b together
Time allowed to do the command, given in game-ticks. The default
value for this is set in the [Defaults] section below. A typical
value is 15.
The - buffer.time (optional) method
Time that the command will be buffered for. If the command is done
successfully, then it will be valid for this time. The simplest
case is to set this to 1. That means that the command is valid
only in the same tick it is performed. With a higher value, such
as 3 or 4, you can get a "looser" feel to the command.
► Show Spoiler
Code: Select all
[Command]
Name = "T bagging"
Command = D, D, D ;Look at those D's! Press down 3 times fast to trigger "T bagging"
Time = 15
We are still inside the "Commands file"(.cmd) in case you lost yourself. If your only editing someone else
worked... then simply search for "[Statedef -1]" if its not created inside Commands, it might be placed
somewhere else, but for now... I'm creating my own [Statedef -1] inside Command file.
Construction of Command State
► Show Spoiler
The Command State should look something like this:
or
Code: Select all
[State -1, NameGoesHere]
type = Type Name
value = The Value
TriggerAll = Condition Must have on
Trigger1 = What condition must trigger it
or
Code: Select all
[State -1, NameGoesHere]
type = Type Name
TriggerAll = Condition Must have on
Trigger1 = What condition must trigger it
value = The Value
► Show Spoiler
So, The T bagging I'm using as an example has this state and condition. The value I have placed
won't conflict with any other state if you wished to copy and paste it. Yes, you can call the same "StateDef"
value for an Alternative Attack / skill or have many copies of it with different command calls.
won't conflict with any other state if you wished to copy and paste it. Yes, you can call the same "StateDef"
value for an Alternative Attack / skill or have many copies of it with different command calls.
Code: Select all
[State -1, T Bagging]
Type = ChangeState
Value = 10000
TriggerAll = StateType = S ;I must be in Standing pose
Trigger1 = Command = "T bagging" ;I must perform T bagging
Trigger1 = Ctrl ;I'm in control
► Show Spoiler
Now, run the game, if no Error pops up. Then you did a great job! if an error pops?
You made have added "t bagging", and "t bagging" is not the same as "T bagging".
Yes, the code we added did nothing, because we haven't created the "StateDef 10000".
Now... everyone is different, and the creation of "StateDef 10000" all depends on you.
Yes you! the one reading this message.
Moving on to State's, known as ".CNS" files
You made have added "t bagging", and "t bagging" is not the same as "T bagging".
Yes, the code we added did nothing, because we haven't created the "StateDef 10000".
Now... everyone is different, and the creation of "StateDef 10000" all depends on you.
Yes you! the one reading this message.
Moving on to State's, known as ".CNS" files
► Show Spoiler
It does not matter where you place [StateDef 10000], but please make sure
it does not overlap the other StateDef.
it does not overlap the other StateDef.
- Error messages will be created,
- You might be overriding StateDef 10000 or the one you created
- Your game will Crash
StateDef mainly used HitDef, if it involves an Attack, a Grab, or a Special / Hyper.
Here's the information about "Type = HitDef". I can't really go through all of it,
because it depends on what you are attempting to do with your character.
How to use Type = HitDefWill fix that big list later (HitDef)► Show SpoilerType: HitDef
Defines a single hit of the player's attack. If the player's Clsn1 box (red) comes in contact with his opponent's Clsn2 box (blue), and the HitDef was define on or before that particular point in time, then the specified effect will be applied. This is one of the more complex, but most commonly-used controllers. A single HitDef is valid only for a single hit. To make a move hit several times, you must trigger more than one HitDef during the attack.
Required parameters:
attr = hit_attribute (string)
This is the attribute of the attack. It is used to determine if the attack can hit P2. It has the format:
attr = arg1, arg2
Where: arg1 is either "S", "C" or "A". Similar to "statetype" for the StateDef, this says whether the attack is a standing, crouching, or aerial attack.
arg2 is a 2-character string. The first character is either "N" for "normal", "S" for "special", or "H" for "hyper" (or "super", as it is commonly known). The second character must be either "A" for "attack" (a normal hit attack), "T" for "throw", or "P" for projectile.
Optional parameters:
hitflag = hit_flags (string)
This determines what type of state P2 must be in for P1 to hit. hit_flags is a string containing a combination of the following characters:
"H" for "high", "L" for "low" or "A" for air. "M" (mid) is equivalent to saying "HL". "F" is for fall, and if included will allow P1 to juggle falling opponents in the air. "D" is for "lying Down", and if included allows P1 to hit opponents lying down on the ground. "H", "L" or "A" (or "M") must be present in the hitflag string.
Two optional characters are "+" and "-". If "+" is added, then the hit only affects people in a gethit state. This may be useful for chain-moves that should not affect opponents who were not hit by the first move in the chain attack. If "-" is added, then the hit only affects players that are NOT in a gethit state. You should use "-" for throws and other moves you do not want P1 to be able to combo into. "+" and "-" are mutually exclusive, ie. cannot be used at the same time.
If omitted, this defaults to "MAF".
guardflag = hit_flags (string)
This determines how P2 may guard the attack. hit_flags is a string containing a combination of the following characters:
"H" for "high", "L" for "low" or "A" for air. "M" (mid) is equivalent to saying "HL". If omitted, defaults to an empty string, meaning P2 cannot guard the attack.
affectteam = team_type (string)team_type specifies which team's players can be hit by this HitDef. Use B for both teams (all players), E for enemy team (opponents), or F for friendly team (your own team). The default is E.animtype = anim_type (string)This refers to the type of animation that P2 will go into when hit by the attack. Choose from "light", "medium", "hard", "back", "up", or "diagup". The first three are self-explanatory. "Back" is the animation where P2 is knocked off her feet. "Up" should be used when the character is knocked straight up in the air (for instance, by an uppercut), and "DiagUp" should be used when the character is knocked up and backwards in the air, eventually landing on his head. The default is "Light".air.animtype = anim_type (string)
Similar to the "animtype" parameter, this is the animtype to set P2 to if P2 is in the air, instead of on the ground. Defaults to the same value as the "animtype" parameter if omitted.
fall.animtype = anim_type (string)
Similar to the "animtype" parameter, this is the animtype to set P2 to if P2 is hit while falling. Defaults to Up if air.animtype is Up, or Back otherwise.
priority = hit_prior (int), hit_type (string)
Specifies the priority for this hit. Hits with higher priorities take precedence over hits with lower priorities. Valid values for hit_prior are 1-7. Defaults to 4.
hit_type, if specified, gives the priority class of the hit. Valid priority classes are Dodge, Hit, and Miss. The priority class determines the tiebreaking behavior when P1 and P2 hit each other simultaneously with equal priorities. The behavior for P1 vs. P2 is as follows:
Hit vs. Hit: both P1 and P2 are hit
Hit vs. Miss: P1 hits, P2 misses
Hit vs. Dodge: Both miss
Dodge vs. Dodge: Both miss
Dodge vs. Miss: Both miss
Miss vs. Miss: Both miss
In the case of a no-hit tie, the respective HitDefs stay enabled. "Miss" or "Dodge" are typically used for throws, where P1 and P2 should not be able to simultaneously hit each other. The default for hit_type is "Hit".
damage = hit_damage, guard_damage (int, int)
hit_damage is the damage that P2 takes when hit by P2. The optional guard_damage parameter is the damage taken by P2 if the hit is guarded. Both default to zero if omitted.
pausetime = p1_pausetime, p2_shaketime (int, int)
This is the time that each player will pause on the hit. p1_pausetime is the time to freeze P1, measured in game-ticks. p2_pausetime is the time to make P2 shake before recoiling from the hit. Defaults to 0,0 if omitted.
guard.pausetime = p1_pausetime, p2_shaketime (int, int)
Similar to the "pausetime" parameter, these are the times to pause each player if the hit was guarded. Defaults to the same values as the "pausetime" parameter if omitted.
sparkno = action_no (int)
This is the action number of the spark to display if the hit is successful. To play a spark out of the player's .AIR file, precede the action number with an S, e.g. "sparkno = S10". Defaults to the value set in the player variables if omitted.
guard.sparkno = action_no (int)
This is the action number of the spark to display if the hit was guarded. To play a spark out of the player's .AIR file, precede the action number with an S. Defaults to the value set in the player variables if omitted.
sparkxy = spark_x, spark_y (int, int)
This is where to make the hit/guard spark. spark_x is a coordinate relative to the front of P2. A negative value makes the spark deeper inside P2. "Front" refers to the x- position at P2's axis offset towards P1 by the corresponding width value in the [Size] group in P2's player variables. spark_y is relative to P1. A negative value makes a spark higher up. You can use a tool like AirView to determine this value by positioning the cursor at the "attack spot" and reading off the value of the y-position. Defaults to 0,0 if omitted.
hitsound = snd_grp, snd_item (int, int)
This is the sound to play on hit (from common.snd). The included fight.snd lets you choose from 5,0 (light hit sound) through to 5,4 (painful whack). To play a sound from the player's own SND file, precede the first number with an "S". For example, "hitsound = S1,0". Defaults to the value set in the player variables if omitted.
guardsound = snd_grp, snd_item (int, int)
This is the sound to play on guard (from common.snd). Only 6,0 is available at this time. To play a sound from the player's own SND file, precede the first number with an "S". There is no facility to play a sound from the opponent's SND file. Defaults to the value set in the player variables if omitted.
ground.type = attack_type (string)
This is the kind of attack if P2 is on the ground. Choose from: - "High": for attacks that make P2's head snap backwards. - "Low": for attacks that hit P2 in the stomach. - "Trip": for low sweep attacks. If you use "Trip" type, the ground.velocity parameter should have a non-zero y-velocity, and the fall parameter should be set to 1. A tripped opponent does not bounce upon falling on the ground. - "None": for attacks that do nothing besides pause P1 and P2 for the duration in the pausetime parameter.
If P2 is hit from behind, "High" will be displayed as "Low" and vice-versa. P2's animation for "High" and "Low" types will be superseded if the AnimType parameter is "Back". Defaults to "High" if omitted.
air.type = attack_type (string)
This is the kind of attack if P2 is in the air. Defaults to the same value as "ground.type" if omitted.
ground.slidetime = slide_time (int)
This is the time in game-ticks that P2 will slide back for after being hit (this time does not include the pausetime for P2). Applicable only to hits that keep P2 on the ground. Defaults to 0 if omitted.
guard.slidetime = slide_time (int)
Same as "ground.slidetime", but this is the value if P2 guards the hit. Defaults to same value as "guard.hittime".
ground.hittime = hit_time (int)
Time that P2 stays in the hit state after being hit. Adjust this value carefully, to make combos possible. Applicable only to hits that keep P2 on the ground. Defaults to 0 if omitted.
guard.hittime = hit_time (int)
Same as "ground.hittime", but this is the value if P2 guards the hit. Defaults to same value as "ground.hittime".
air.hittime = hit_time (int)
Time that p2 stays in the hit state after being hit in or into the air, before being able to guard again. This parameter has no effect if the "fall" parameter is set to 1. Defaults to 20 if omitted.
guard.ctrltime = ctrl_time (int)This is the time before p2 regains control in the ground guard state. Defaults to the same value as "guard.slidetime" if omitted.guard.dist = x_dist (int)This is the x-distance from P1 in which P2 will go into a guard state if P2 is holding the direction away from P1. Defaults to the value in the player variables if omitted. You normally do not need to use this parameter.yaccel = accel (float)Specifies the y acceleration to impart to P2 if the hit connects. Defaults to .35 in 240p, .7 in 480p, 1.4 in 720p.
ground.velocity = x_velocity, y_velocity (float, float)Initial velocity to give P2 after being hit, if P2 is on the ground. If y_velocity is not zero, P2 will be knocked into the air. Both values default to 0 if omitted. You can leave out the y_velocity if you want P2 to remain on the ground.guard.velocity = x_velocity (float)Velocity to give P2 if P2 guards the hit on the ground. Defaults to the x_velocity value of the "ground.velocity" parameter if omitted.air.velocity = x_velocity, y_velocity (float, float)Initial velocity to give P2 if P2 is hit in the air. Defaults to 0,0 if omitted.airguard.velocity = x_velocity, y_velocity (float float)Velocity to give P2 if P2 guards the hit in the air. Defaults to x_velocity * 1.5, y_velocity / 2, where x_velocity and y_velocity are values of the "air.velocity" parameter.ground.cornerpush.veloff = x_velocity (float)Determines the additional velocity (velocity offset) to impart to the player if he lands a ground hit in the corner. Setting this to a higher value will cause the player to be "pushed back" farther out of the corner. If omitted, default value depends on the attr parameter. If arg1 of attr is "A", default value is 0. Otherwise, defaults to 1.3 * guard.velocity.air.cornerpush.veloff = x_velocity (float)Determines the additional velocity (velocity offset) to impart to the player if he lands a hit to an aerial opponent in the corner. Setting this to a higher value will cause the player to be "pushed back" farther out of the corner. Defaults to ground.cornerpush.veloff if omitted.down.cornerpush.veloff = x_velocity (float)Determines the additional velocity (velocity offset) to impart to the player if he lands a hit on a downed opponent in the corner. Setting this to a higher value will cause the player to be "pushed back" farther out of the corner. Defaults to ground.cornerpush.veloff if omitted.guard.cornerpush.veloff = x_velocity (float)Determines the additional velocity (velocity offset) to impart to the player if his hit is guarded in the corner. Setting this to a higher value will cause the player to be "pushed back" farther out of the corner. Defaults to ground.cornerpush.veloff if omitted.airguard.cornerpush.veloff = x_velocity (float)Determines the additional velocity (velocity offset) to impart to the player if his hit is guarded in the corner. Setting this to a higher value will cause the player to be "pushed back" farther out of the corner. Defaults to guard.cornerpush.veloff if omitted.airguard.ctrltime = ctrl_time (int)This is the time before p2 regains control in the air guard state. Defaults to the same value as "guard.ctrltime" if omitted.air.juggle = juggle_points (int)The amount of additional juggle points the hit requires. Not to be confused with the "juggle" parameter in the StateDef. You typically do not need this parameter, except for HitDefs of projectiles. Defaults to 0 if omitted.mindist = x_pos, y_pos (int, int)
See below.
maxdist = x_pos, y_pos (int, int)These let you control the minimum and maximum distance of P2 relative to P1, after P2 has been hit. These parameters are not commonly used. Defaults to no change in P2's position if omitted.snap = x_pos, y_pos (int, int)This moves P2 to the specified position relative to P1 if hit. This parameter is not normally used. If you want to snap P2 to a particular position for a throw, it is recommended you use a "TargetBind" controller in P1's throwing state instead. Defaults to no change in P2's position if omitted.
p1sprpriority = drawing_priority (int)This is the drawing priority of P1's sprite if the move hits or is guarded by P2. Together with the p2sprpriority parameter, it controls whether or not P1 is drawn in front of or behind P2. The default value is 1.p2sprpriority = drawing_priority (int)This is the drawing priority of P2's sprite if the move hits or is guarded by P2. The default value is 0.p1facing = facing (int)Set to -1 to make P1 turn around if the hit is successful. The default value is no change in where P1 is facing.p1getp2facing = facing (int)Set to 1 to have P1 face in the same direction as P2 is facing after the hit connects, and -1 to have P1 face the opposite direction from P2. Defaults to 0 (no change). If nonzero, this parameter takes precedence over p1facing.p2facing = facing (int)Set to 1 to make P2 face the same direction as P1 if the hit is successful, -1 to make P2 face away. The default value is 0, no change in where P2 is facing.p1stateno = state_no (int)This is the number of the state to set P1 to if the hit is successful. The state must be an attack state (movetype = A) for at least 1 tick. Used mainly for throws. Defaults to -1, no change.p2stateno = state_no (int)This is the number of the state to set P2 to if the hit is successful. P2 will get P1's state and animation data. P2 will retain P1's states and animation data until P2 is hit, or a SelfState controller is used to return P2 to his own states. The state must be a get-hit state (movetype = H) for at least 1 tick. Used mainly for throws; can also be used for custom hit reactions. Defaults to -1, no change.p2getp1state = bvalue (boolean)Set to 0 to prevent P2 from getting P1's state and animation data, in case you do not want that default behaviour of the "p2stateno" parameter. Defaults to 1 if the "p2stateno" parameter is used. Ignored otherwise.forcestand = bvalue (boolean)Set to 1 to force P2 to a standing state-type if the hit is successful, and P2 is in a crouching state. Has no effect if P2 is in an air state. Normally defaults to 0, but if the y_velocity of the "ground.velocity" parameter is non-zero, it defaults to 1.fall = bvalue (boolean)Set to 1 if you want P2 to go into a "fall" state (where P2 hits the ground without regaining control in the air). Use if you want a move to "knock down" P2. Defaults to 0.fall.xvelocity = x_velocity (float)This is the x-velocity that P2 gets when bouncing off the ground in the "fall" state. Defaults to no change if omitted.fall.yvelocity = y_velocity (float)This is the y-velocity that P2 gets when bouncing off the ground in the "fall" state. Defaults to -4.5 in 240p, -9 in 480p, -18 in 720p.fall.recover = bvalue (boolean)Set to 0 if you do not want P2 to be able to recover from the "fall" state. Defaults to 1 if omitted (can recover).fall.recovertime = recover_time (int)This is the time that must pass before P2 is able to recover from the "fall" state by inputting his recovery command. Does not include the time that P2 is paused for while shaking from the hit. Defaults to 4 if omitted.fall.damage = damage_amt (int)Indicates the amount of damage to deal when P2 hits the ground out of a falling state. Defaults to 0 if omitted.air.fall = bvalue (boolean)Set to 1 if you want P2 to go into a "fall" state (where P2 hits the ground without regaining control in the air) if hit while P2 is in the air. Defaults to the same value as fall.forcenofall = bvalue (boolean)Set to 1 to force P2 out of a "fall" state, if he is in one. This parameter has no effect on P2 if he is not in a "fall" state. This parameter is ignored if the "fall" parameter is set to 1. Defaults to 0 if omitted.down.velocity = x_velocity, y_velocity (float, float)This is the velocity to assign P2 if P2 is hit while lying down. If the y_velocity is non-zero, P2 will be hit into the air. If it is zero, then P2 will slide back on the ground. Defaults to the same values as the "air.velocity" parameter if omitted.down.hittime = hit_time (int)This is the time that P2 will slide back for if P2 is hit while lying down. This parameter is ignored if the y_velocity is non- zero for the "down.velocity" parameter.down.bounce = bvalue (boolean)Set to 1 if you want P2 to bounce off the ground one time (using the fall.xvelocity and fall.yvelocity values) after hitting the ground from the hit. This parameter is ignored if the y_velocity is zero for the "down.velocity" parameter. Defaults to 0 if omitted (P2 hits the ground and stays there).id = id_number (int)Idetifier for the hit. Used for chain moves. You can use this number to later detect if a player was last hit by this particular HitDef. This number is called the targetID. It is used in controllers such as TargetBind, or in the target(ID) redirection keyword. Valid values are all values >= 1. If omitted, defaults to 0 (no ID). TargetID is not to be confused with PlayerID.chainID = id_number (int)Main use of this is for chain moves. If P2 was last hit by a move by P1 with this ID, only then can he be hit by the HitDef with this chainID. You can use this in the following parts of a chain move. Note that chain moves are still possible even without the use of the "id" and "chainid" parameters. Valid values are all values >= 1. If omitted, defaults to -1 (chain from any hit).nochainID = nochain_1, nochain_2 (int)nochainID specifies up to 2 ID numbers of hits which cannot be chained into this hit. If these are -1 (the default), then chaining is not explicitly disabled for any hit ID numbers. nochain_2 can be omitted. Except for -1, the values specified must not coincide with the value for chainID. This parameter has no effect if P2 is hit by a third party between P1's previous HitDef and the current HitDef.hitonce = hitonce_flag (boolean)If set to 1, the HitDef only affects one opponent. If the hit is successful, all other targets will be dropped. Normally defaults to 0. The exception is if the "attr" parameter is a throw type, which makes it default to 1.kill = bvalue (boolean)Set to 0 if this hit should not be able to KO the opponent when the hit is successful. Defaults to 1.guard.kill = bvalue (boolean)Set to 0 if this hit should not be able to KO the opponent when the hit is guarded. Defaults to 1.fall.kill = bvalue (boolean)Set to 0 to prevent this attack from KO'ing the opponent when he falls on the ground (see fall.damage). Defaults to 1.numhits = hit_count (int)hit_count indicates how many hits this hitdef should add to the combo counter. Must be 0 or greater. Defaults to 1.getpower = p1power, p1gpower (int, int)p1power specifies the amount of power to give P1 if this HitDef connects successfully. p1gpower specifies the amount of power to give P1 if this HitDef is guarded. If omitted, p1power defaults to hit_damage (from "damage" parameter) multiplied by the value of Default.Attack.LifeToPowerMul specified in data/mugen.cfg. If p1gpower is omitted, it defaults to the value specified for p1power divided by 2.givepower = p2power, p2gpower (int, int)p2power specifies the amount of power to give P2 if this HitDef connects successfully. p2gpower specifies the amount of power to give P2 if this HitDef is guarded. If omitted, p1power defaults to hit_damage (from "damage" parameter) multiplied by the value of Default.GetHit.LifeToPowerMul specified in data/mugen.cfg. If p1gpower is omitted, it defaults to the value specified for p1power divided by 2.palfx.time = palfx_time (int)
See below.
palfx.mul = r1, g1, b1 (int, int, int)
See below.
palfx.add = r2, g2, b2 (int, int, int)If included, this allows for palette effects on P2 if the hit is successful. palfx_time is the time in game-ticks to apply palette effects on P2. palfx_time is 0 by default (no effect). The rest of the parameters are the same as in the PalFX controller.envshake.time = envshake_time (int)
See below.
envshake.freq = envshake_freq (float)
See below.
envshake.ampl = envshake_ampl (int)
See below.
envshake.phase = envshake_phase (float)If included, this shakes the screen if the hit is successful. envshake_time is the time in game-ticks to shake the screen. The rest of the parameters are the same as in the EnvShake controller.fall.envshake.time = envshake_time (int)
See below.
fall.envshake.freq = envshake_freq (float)
See below.
fall.envshake.ampl = envshake_ampl (int)
See below.
fall.envshake.phase = envshake_phase (float)Similar to the envshake.* parameters, except the effects are applied only when P2 hits the ground
Constructor Example► Show SpoilerFor our basic T bagging we are only going to use thisYes, you can also write it as:Code: Select all
[State 0, HitDef] Type = HitDef Trigger1 = P2StateType = L ;Your opponent must be laying on the floor Trigger1 = MoveHit = 0 ;If your Tbag is a taunt, remove this line Attr = SC, SA, ST, HA, HT HitFlag = MAFD Priority = 7, miss Hitonce = 1 P1StateNo = 2000 ;Set custom StateDef for yourself P2StateNo = 2001 ;Set custom StateDef for your opponent
Code: Select all
[State 0, HitDef] Type = HitDef Trigger1 = P2StateType = L ;Your opponent must be laying on the floor Trigger1 = MoveHit = 0 ;If your Tbag is a taunt, remove this line Attr = SC, SA, ST, HA, HT HitFlag = MAFD Priority = 7, miss Hitonce = 1 ID = 10000 ;The Idetifier of the Attack [State 0, CustomStateP2] Type = TargetState Trigger1 = MoveHit Value = 2000 ID = 10000 [State 0, CustomStateP1] Type = ChangeState Trigger1 = MoveHit Trigger1 = Target, StateNo = 2000 Value = 11000
► Show Spoiler
Code: Select all
[Statedef 10000]
Type = S
MoveType= A
Physics = S
Ctrl = 0 ;I don't control it temporarily
Anim = 440 ;Depends on your animation
Sprpriority = 2
[State 0, PlayerPush]
Type = PlayerPush
Trigger1 = 1
Value = 0
[State 0, Height]
Type = VelAdd
Trigger1 = Facing = -1
Trigger1 = (AnimElemTime (1) >= 0) && (AnimElemTime (4) < 0)
Trigger1 = !MoveHit
X = 0
Y = -1
[State 0, Speed]
Type = VelSet
Trigger1 =(AnimElemTime (6) >= 0) && (AnimElemTime (11) < 0)
Trigger1 = !MoveHit
Y = 10
[State 0, Speed]
Type = VelSet
Trigger1 = AnimElemTime (12) >= 0
Trigger1 = !MoveHit
Y = 0
[State 0, HitDef]
Type = HitDef
Trigger1 = P2StateType = L ;Your opponent must be laying on the floor
Trigger1 = MoveHit = 0 ;If your Tbag is a taunt, remove this line
Attr = SC, SA, ST, HA, HT
HitFlag = MAFD
Priority = 7, miss
Hitonce = 1
P1StateNo = 2000 ;Set custom StateDef for yourself
P2StateNo = 2001 ;Set custom StateDef for your opponent
[State 201, Missed] ;Return to Standing pose
Type = ChangeState
Trigger1 = AnimTime = 0
Value = 0
Ctrl = 1