; Constants and state file. ; There are comments scattered through this file, so you may like to ; take a look if would like to learn more about the cns. [Data] life = 1000 ;Amount of life to start with power = 3000 ;Amount of maximum power attack = 100 ;attack power (more is stronger) defence = 100 ;defensive power (more is stronger) fall.defence_up = 50 ;Percentage to increase defense everytime player is knocked down liedown.time = 60 ;Time which player lies down for, before getting up airjuggle = 15 ;Number of points for juggling sparkno = 2 ;Default hit spark number for HitDefs guard.sparkno = 40 ;Default guard spark number KO.echo = 0 ;1 to enable echo on KO volume = 0 ;Volume offset (negative for softer) IntPersistIndex = 60 ;Variables with this index and above will not have their values FloatPersistIndex = 40 ;reset to 0 between rounds or matches. There are 60 int variables, ;indexed from 0 to 59, and 40 float variables, indexed from 0 to 39. ;If omitted, then it defaults to 60 and 40 for integer and float ;variables repectively, meaning that none are persistent, i.e. all ;are reset. If you want your variables to persist between matches, ;you need to override state 5900 from common1.cns. [Size] xscale = 1 ;Horizontal scaling factor. yscale = 1 ;Vertical scaling factor. ground.back = 15 ;Player width (back, ground) ground.front = 16 ;Player width (front, ground) air.back = 12 ;Player width (back, air) air.front = 12 ;Player width (front, air) height = 60 ;Height of player (for opponent to jump over) attack.dist = 160 ;Default attack distance proj.attack.dist = 90 ;Default attack distance for projectiles proj.doscale = 0 ;Set to 1 to scale projectiles too head.pos = -5, -90 ;Approximate position of head mid.pos = -5, -60 ;Approximate position of midsection shadowoffset = 0 ;Number of pixels to vertically offset the shadow draw.offset = 0,0 ;Player drawing offset in pixels (x, y) [Velocity] walk.fwd = 2.4 ;Walk forward walk.back = -2.2 ;Walk backward run.fwd = 4.6, 0 ;Run forward (x, y) run.back = -4.5,-3.8 ;Hop backward (x, y) jump.neu = 0,-8.4 ;Neutral jumping velocity (x, y) jump.back = -2.55 ;Jump back Speed (x, y) jump.fwd = 2.5 ;Jump forward Speed (x, y) runjump.back = -2.55,-8.1;Running jump speeds (opt) runjump.fwd = 4,-8.1 ;. airjump.neu = 0,-8.1 ;. airjump.back = -2.55 ;Air jump speeds (opt) airjump.fwd = 2.5 ;. [Movement] airjump.num = 1 ;Number of air jumps allowed (opt) airjump.height = 35 ;Minimum distance from ground before you can air jump (opt) yaccel = .44 ;Vertical acceleration stand.friction = .85 ;Friction coefficient when standing crouch.friction = .82 ;Friction coefficient when crouching ;--------------------------------------------------------------------------- ; Format: ; [Statedef STATENO] ; type = ? S/C/A/L stand/crouch/air/liedown ; movetype = ? I/A/H idle/attack/gethit ; physics = ? S/C/A/N stand/crouch/air/none ; juggle = ? air juggle points move requires ; ; [State STATENO, ?] ? - any number you choose ; type = ? ; ... ;--------------------------------------------------------------------------- ; Lose by Time Over ; CNS difficulty: basic [Statedef 170] type = S ctrl = 0 anim = 170 velset = 0,0 [State 170, 1] type = NotHitBy trigger1 = 1 value = SCA time = 1 ;--------------------------------------------------------------------------- ; Win state decider ; CNS difficulty: basic [Statedef 180] type = S [State 180, 1] type = ChangeState trigger1 = Time = 0 value = 181 ;--------------------------------------------------------------------------- ; Win pose 1 ; CNS difficulty: basic [Statedef 181] type = S ctrl = 0 anim = 180 velset = 0,0 [State 181, 1] type = NotHitBy trigger1 = 1 value = SCA time = 1 ;--------------------------------------------------------------------------- ; Introduction ; CNS difficulty: basic [Statedef 190] type = S ctrl = 0 anim = 190 velset = 0,0 [State 190, 1] ;Freeze animation until PreIntro is over type = ChangeAnim trigger1 = RoundState = 0 value = 190 [State 190, 2] ;Assert this until you want "round 1, fight" to begin type = AssertSpecial trigger1 = 1 flag = Intro [State 190, 4] ;Change to stand state type = ChangeState trigger1 = AnimTime = 0 value = 0 ;--------------------------------------------------------------------------- ; Taunt ; CNS difficulty: easy [Statedef 195] type = S ctrl = 0 anim = 195 velset = 0,0 movetype = I physics = S sprpriority = 2 [State 195, 2] type = ChangeState trigger1 = AnimTime = 0 value = 0 ctrl = 1 ;--------------------------------------------------------------------------- ; Standing Light Punch ; CNS difficulty: easy [Statedef 200] type = S ;State-type: S-stand, C-crouch, A-air, L-liedown movetype= A ;Move-type: A-attack, I-idle, H-gethit physics = S ;Physics: S-stand, C-crouch, A-air juggle = 1 ;Number of air juggle points move takes ;Commonly-used controllers: velset = 0,0 ;Set velocity (x,y) (Def: no change) ctrl = 0 ;Set ctrl (Def: no change) anim = 200 ;Change animation (Def: no change) poweradd = 20 ;Power to add (Def: 0) sprpriority = 2 ;Set layering priority to 2 (in front) [State 200, 1] type = HitDef trigger1 = Time = 0 attr = S, NA ;Attribute: Standing, Normal Attack damage = 23, 0 ;Damage that move inflicts, guard damage animtype = Light ;Animation type: Light, Medium, Heavy, Back (def: Light) guardflag = MA ;Flags on how move is to be guarded against hitflag = MAF ;Flags of conditions that move can hit priority = 3, Hit ;Attack priority: 0 (least) to 7 (most), 4 default ;Hit/Miss/Dodge type (Def: Hit) pausetime = 8, 8 ;Time attacker pauses, time opponent shakes sparkno = 0 ;Spark anim no (Def: set above) sparkxy = -10, -76 ;X-offset for the "hit spark" rel. to p2, ;Y-offset for the spark rel. to p1 hitsound = 5, 0 ;Sound to play on hit guardsound = 6, 0 ;Sound to play on guard ground.type = High ;Type: High, Low, Trip (def: Normal) ground.slidetime = 5 ;Time that the opponent slides back ground.hittime = 12 ;Time opponent is in hit state ground.velocity = -4 ;Velocity at which opponent is pushed airguard.velocity = -1.9,-.8 ;Guard velocity in air (def: (air.xvel*1.5, air.yvel/2)) air.type = High ;Type: High, Low, Trip (def: same as ground.type) air.velocity = -1.4,-3 ;X-velocity at which opponent is pushed, ;Y-velocity at which opponent is pushed air.hittime = 12 ;Time before opponent regains control in air [State 200, 5] type = ChangeState trigger1 = AnimTime = 0 value = 0 ctrl = 1 ;--------------------------------------------------------------------------- ; Standing Medium Punch ; CNS difficulty: easy [Statedef 210] type = S movetype= A physics = S juggle = 4 poweradd= 65 ctrl = 0 velset = 0,0 anim = 210 [State 210, 5] type = ChangeState trigger1 = AnimTime = 0 value = 0 ctrl = 1 ;--------------------------------------------------------------------------- ; Standing Strong Punch ; CNS difficulty: easy [Statedef 220] type = S movetype= A physics = S juggle = 4 poweradd= 65 ctrl = 0 velset = 0,0 anim = 220 [State 220, 5] type = ChangeState trigger1 = AnimTime = 0 value = 0 ctrl = 1 ;--------------------------------------------------------------------------- ; Standing Light Kick ; CNS difficulty: easy [Statedef 230] type = S movetype= A physics = S juggle = 4 poweradd= 22 ctrl = 0 velset = 0,0 anim = 230 [State 230, 5] type = ChangeState trigger1 = AnimTime = 0 value = 0 ctrl = 1 ;--------------------------------------------------------------------------- ; Standing Medium Kick ; CNS difficulty: easy [Statedef 240] type = S movetype= A physics = S juggle = 5 poweradd= 65 ctrl = 0 velset = 0,0 anim = 240 [State 240, 5] type = ChangeState trigger1 = AnimTime = 0 value = 0 ctrl = 1 ;--------------------------------------------------------------------------- ; Standing Strong Kick ; CNS difficulty: easy [Statedef 250] type = S movetype= A physics = S juggle = 5 poweradd= 65 ctrl = 0 velset = 0,0 anim = 250 [State 250, 5] type = ChangeState trigger1 = AnimTime = 0 value = 0 ctrl = 1 ;--------------------------------------------------------------------------- ; Crouching Light Punch ; CNS difficulty: easy ; Description: Simple crouching attack. The HitDef's guardflag parameter ; is set to "L", meaning that the move can only be guarded low ; (crouching), and not by standing or jumping opponents. ; Like for all light attacks, it's a good idea to keep the slidetime ; and hittime parameters at a smaller number, so the opponent isn't ; stunned for too long. For all crouching attacks you have to ; remember to set the attr parameter to indicate that it is crouching ; attack. In this case, "C, NA" stands for "crouching, normal attack". ; The HitDef's priority is set at 3, instead of the default of 4, ; so this attack has a lower priority than most others, meaning the ; player will get hit instead of trading hits with the opponent if ; their attack collision boxes (Clsn1) intersect each other's Clsn2 ; boxes at the same time. [Statedef 400] type = C movetype= A physics = C juggle = 5 poweradd= 15 ctrl = 0 anim = 400 [State 400, 5] type = ChangeState trigger1 = AnimTime = 0 value = 11 ctrl = 1 ;--------------------------------------------------------------------------- ; Crouching Medium Punch [Statedef 410] type = C movetype= A physics = C juggle = 6 poweradd= 50 ctrl = 0 anim = 410 [State 410, 5] type = ChangeState trigger1 = AnimTime = 0 value = 11 ctrl = 1 ;--------------------------------------------------------------------------- ; Crouching Strong Punch [Statedef 420] type = C movetype= A physics = C juggle = 6 poweradd= 50 ctrl = 0 anim = 420 [State 420, 5] type = ChangeState trigger1 = AnimTime = 0 value = 11 ctrl = 1 ;--------------------------------------------------------------------------- ; Crouching Light Kick ; CNS difficulty: easy [Statedef 430] type = C movetype= A physics = C juggle = 5 poweradd= 22 ctrl = 0 anim = 430 [State 430, 5] type = ChangeState trigger1 = AnimTime = 0 value = 11 ctrl = 1 ;--------------------------------------------------------------------------- ; Crouching Medium Kick ; CNS difficulty: easy [Statedef 440] type = C movetype= A physics = C juggle = 5 poweradd= 22 ctrl = 0 anim = 440 [State 440, 5] type = ChangeState trigger1 = AnimTime = 0 value = 11 ctrl = 1 ;--------------------------------------------------------------------------- ; Crouch Strong Kick ; CNS difficulty: easy ; Description: This move uses "Trip" for the "ground.type" parameter in ; its HitDef. It's a special type that puts the opponent in a tripped ; animation as he falls. Also, the hitflag parameter in the HitDef ; is set to "MAFD". The "D" indicates that a downed opponent can be ; hit by the attack. [Statedef 450] type = C movetype= A physics = C juggle = 7 poweradd= 70 ctrl = 0 anim = 450 [State 450, 5] type = ChangeState trigger1 = AnimTime = 0 value = 11 ctrl = 1 ;--------------------------------------------------------------------------- ; Jump Light Punch ; CNS difficulty: easy [Statedef 600] type = A movetype= A physics = A juggle = 2 poweradd= 11 ctrl = 0 anim = 600 [State 600, 5] type = CtrlSet trigger1 = Time = 20 value = 1 ;--------------------------------------------------------------------------- ; Jump Medium Punch ; CNS difficulty: easy [Statedef 610] type = A movetype= A physics = A juggle = 4 poweradd= 65 ctrl = 0 anim = 610 [State 610, 5] type = CtrlSet trigger1 = Time = 20 value = 1 ;--------------------------------------------------------------------------- ; Jump Strong Punch ; CNS difficulty: easy [Statedef 620] type = A movetype= A physics = A juggle = 4 poweradd= 70 ctrl = 0 anim = 620 [State 620, 5] type = CtrlSet trigger1 = Time = 20 value = 1 ;--------------------------------------------------------------------------- ; Jump Light Kick ; CNS difficulty: easy [Statedef 630] type = A movetype= A physics = A juggle = 3 poweradd= 20 ctrl = 0 anim = 630 [State 630, 5] type = CtrlSet trigger1 = Time = 20 value = 1 ;--------------------------------------------------------------------------- ; Jump Medium Kick ; CNS difficulty: easy [Statedef 640] type = A movetype= A physics = A juggle = 4 poweradd= 65 ctrl = 0 anim = 640 [State 640, 5] type = CtrlSet trigger1 = Time = 20 value = 1 ;--------------------------------------------------------------------------- ; Jump Strong Kick ; CNS difficulty: easy [Statedef 650] type = A movetype= A physics = A juggle = 4 poweradd= 70 ctrl = 0 anim = 650 [State 650, 5] type = CtrlSet trigger1 = Time = 20 value = 1 ;--------------------------------------------------------------------------- ; Throw - Attempt ; CNS difficulty: medium-advanced ; Description: Throws are not difficult to make, although then can be ; tedious at times. Throw attempt states have a HitDef of a ; special format. The key parameters in a throw are p1stateno ; and p2stateno. If the HitDef successfully connects, then ; the attacker will change to the state number specified by ; p1stateno, and the opponent will be change to the state ; number assigned to p2stateno. The special thing about p2stateno ; is that the opponent will be temporarily brought into the ; attacker's state file. In this case, no matter who the ; opponent is, he will be taken to state 820 of this file (kfm.cns) ; and remain here until the end of the throw (look at his debug ; information when he is being thrown; the text changes to yellow ; to mean that he is in another player's state file). [Statedef 800] type = S movetype= A physics = S juggle = 0 velset = 0,0 ctrl = 0 anim = 800 ; Notes: The '-' symbol in the hitflag field means that it only affects ; players who are not in a hit state. This prevents the player from combo-ing ; into the throw. The priority should be set to a low number, such as ; 1 or 2, so that the throw does not take precedence over normal attacks. ; The type of priority must always be set to "Miss" or "Dodge" for throws, ; otherwise strange behavior can result. [State 800, 1] type = HitDef Trigger1 = Time = 0 attr = S, NT ;Attributes: Standing, Normal Throw hitflag = M- ;Affect only ground people who are not being hit priority = 1, Miss ;Throw has low priority, must be miss or dodge type. sparkno = -1 ;No spark sprpriority = 1 ;Draw in front of p2 p1facing = ifelse (command = "holdfwd", -1, 1) ;Turn if holding forwards p2facing = 1 ;Force p2 to face player p1stateno = 810 ;On success, player changes to state 810 p2stateno = 820 ;If hit, p2 changes to state 820 in player's cns fall = 1 ;Force p2 into falling down [State 800, 2] type = ChangeState Trigger1 = AnimTime = 0 value = 0 ctrl = 1 ;--------------------------------------------------------------------------- ; Throwing the opponent ; Description: In this state, the player throws the opponent by binding him to ; various offsets based on his current frame of animation. For ; example, [State 810, Bind 1] binds the opponent to an offset of ; 28 pixels in front of the player. That puts him around where the hand ; is at. Is is important to keep the opponent bound using a ; TargetBind controller at all times, until you let him go. This ; is especially important if your player has a Clsn2 box that ; allows him to get hit while throwing someone. Each time a player ; gets hit, all his bound targets will be set to a fall state. If ; the opponent is not bound, then he might get stuck in his thrown ; state when his attacker is knocked out of the throw halfway. ; Notes: There is a TargetLifeAdd controller to decrease the opponent's ; life, and a TargetState controller to change his state to a ; falling state when KFM lets go of him. [Statedef 810] type = S movetype= A physics = N anim = 810 poweradd = 60 [State 810, Bind 1] type = TargetBind trigger1 = AnimElemTime(2) < 0 pos = 28, 0 [State 810, Width 2-11] type = Width trigger1 = AnimElemTime(2) >= 0 && AnimElemTime(12) < 0 edge = 60,0 [State 810, Bind 2-4] type = TargetBind trigger1 = AnimElemTime(2) >= 0 && AnimElemTime(5) < 0 pos = 58, 0 [State 810, Bind 5] type = TargetBind trigger1 = AnimElemTime(5) >= 0 && AnimElemTime(6) < 0 pos = 47, 0 [State 810, Bind 6] type = TargetBind trigger1 = AnimElemTime(6) >= 0 && AnimElemTime(7) < 0 pos = 41, -60 [State 810, Bind 7] type = TargetBind trigger1 = AnimElemTime(7) >= 0 && AnimElemTime(8) < 0 pos = 25, -75 [State 810, Bind 8] type = TargetBind trigger1 = AnimElemTime(8) >= 0 && AnimElemTime(9) < 0 pos = 15, -90 [State 810, Bind 9] type = TargetBind trigger1 = AnimElemTime(9) >= 0 && AnimElemTime(10) < 0 pos = -5, -96 [State 810, Bind 10] type = TargetBind trigger1 = AnimElemTime(10) >= 0 && AnimElemTime(11) < 0 pos = -14, -90 [State 810, Bind 11] type = TargetBind trigger1 = AnimElem = 11 pos = -50, -50 [State 810, Hurt 11] type = TargetLifeAdd trigger1 = AnimElem = 11 value = -78 [State 810, Throw 11] type = TargetState trigger1 = AnimElem = 11 value = 821 [State 810, Turn 12] type = Turn trigger1 = AnimElem = 12 [State 810, Pos 15] type = PosAdd trigger1 = AnimElem = 15 x = -10 [State 810, State End] type = ChangeState trigger1 = AnimTime = 0 value = 0 ctrl = 1 ;--------------------------------------------------------------------------- ; Opponent Thrown ; (a custom gethit state) ; Description: This is the state that the opponent changes to after being ; hit by the throw HitDef. The important thing here is to use a ; ChangeAnim2 controller. The difference between ChangeAnim2 and ; ChangeAnim is that ChangeAnim2 changes the player's animation to ; an action in the AIR file of the attacker (in this case, kfm.air), ; whereas ChangeAnim always changes the player to an action in his ; own AIR file. Look at Action 820 in kfm.air for some extra ; comments. [Statedef 820] type = A movetype= H physics = N velset = 0,0 [State 820, 1] type = ChangeAnim2 Trigger1 = Time = 0 value = 820 ;--------------------------------------------------------------------------- ; Opponent thrown into the air ; (a custom gethit state) ; Description: This state has the opponent flying through the air and ; falling down onto the ground. The SelfState controller sets the ; opponent back using to his own state file when he his the ground. ; Controllers 821,2 and 821,3 allow the opponent to recover by ; hitting his recovery command when he is falling. [Statedef 821] type = A movetype= H physics = N velset = 2.8,-7 poweradd = 40 [State 821, 1] ;Gravity type = VelAdd Trigger1 = 1 y = .4 [State 821, 2] ; Recover near ground (use ChangeState) type = ChangeState triggerall = Vel Y > 0 triggerall = Pos Y >= -20 triggerall = alive triggerall = CanRecover trigger1 = Command = "recovery" value = 5200 ;HITFALL_RECOVER [State 821, 3] ; Recover in mid air (use SelfState) type = SelfState triggerall = Vel Y > 0 triggerall = alive triggerall = CanRecover trigger1 = Command = "recovery" value = 5210 ;HITFALL_AIRRECOVER [State 821, 4] ;Hit ground type = SelfState trigger1 = Vel Y > 0 trigger1 = Pos Y >= 0 value = 5100 ;Hit ground ;--------------------------------------------------------------------------- ; Override common states (use same number to override) : ;--------------------------------------------------------------------------- ;--------------------------------------------------------------------------- ; States that are always executed (use statedef -2) ;--------------------------------------------------------------------------- ;--------------------------------------------------------------------------- ; States that are executed when in self's state file (use statedef -3) ;--------------------------------------------------------------------------- [Statedef -3] ;This controller plays a sound everytime the player lands from a jump, or ;from a back-dash. [State -3, Landing Sound] type = PlaySnd triggerall = Time = 1 trigger1 = stateno = 52 ;Jump land trigger2 = stateno = 106 ;Run-back land value = 40, 0