Var explanations: var(15) = fireball 1 counter var(16) = fireball 2 counter var(17) = fireball 3 counter var(18) = fireball 4 counter var(19) = amount of fireballs during this move. Majin Buu from Super Super Butouden 3 has a move where 3 fireballs come at once Same as Hyper Buu's 3-Way (3). Usually set to 1 though unless more than one fireball is fired simultaneously. var(20) = variable 'marker' used to set if condition is true. Because of the way variables need to be set up an 'outside' marker variable needs to be set. Since both var(15 through 18) and var(19) need to retain their values, var(20) is the marker variable that gets set when the condition needed is true. This way var(15 through 18) and var(19) can be changed to initiate fireball 1,2,3, and/or 4 and also keep the integrity of the number of fireballs remaining before being tired var(19). Var(15 through 18) and var(19) need to keep both their values simultaneously; therefore, var(20) is the marker for the condition being true so that var(19) and var(15...18) can be adjusted as needed and then var(20) gets reset. Question: How does this code work? Answer: Very carefully! A walkthrough of the process. [State 280, add1] clears var(20) in case of a previous get hit that didn't clear var(20) before First, this move will have 2 fireballs at once so var(19) would need to be set to 2: ;set var(19) to greater than 1 to say a fireball has been used [state 280, add2] type = varset trigger1 = time = 0 var(19) = 2 ;set to whatever number of fireballs used Now let's say that there are no other fireballs within the last 8 seconds so all vars are equal to zero. Now since there are two fireballs at once then that means that var(15) and var(16) will both become non-zero and start counters that go up to 482 game ticks (roughly 8 seconds). The counters are var(15) and var(16) themselves and get reset by the -2 states that set the values back to zero when the counter reaches 482: [State -2] type = varset trigger1 = var(15) > 482 v = 15 value = 0 Each game tick that the counters are greater than zero, one gets added to the var(15,16,17,and/or18 depending). This is done through the first set of -2 states: ;time accumulator [State -2] type = varadd trigger1 = var(15) > 0 v = 15 value = 1 After var(15) and var(16) become non-zero, two will have been subtracted from var(19) making var(19) equal to zero so that var(17) nor var(18) will get checked since var(19) = 0 now. Two of these {var(19) = var(19) - 1 roughly}: ;Fireball 1 subtract [State 280, add5] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 19 value = -1 Let's now say that after 200 game ticks the same move is used again. Var(19) becomes 2 again. Var(15) and var(16) are both non-zero so they will get skipped even though var(19) > 0 (trigger1). Now, this time, the last two vars (17 and 18) will also become non-zero thus filling up ALL the var slots (15 through 18). A secret also is that when the var first gets set to non-zero it is set to one; on the same game tick the -2 state will also add one to this var making it really start out at 2 (hence 482 ticks not 480). Now var(15) and var(16) equal 202 and var(17) and var(18) both equal 2. Now, the story branches out... Part 1 Now someone uses another single fireball this time within 200 more game ticks. var(15) and var(16) have 402 in them and var(17) and var(18) have 202 in them. var(19) also stays greater than zero by still equalling one because all vars are already used. Hence: ;send to tired state if the 5th or more fireball [state 280, add19] type = changestate trigger1 = time = 0 trigger1 = var(19) > 0 trigger1 = var(15) > 0 trigger1 = var(16) > 0 trigger1 = var(17) > 0 trigger1 = var(18) > 0 value = 5300 ctrl = 0 ctrl = 0 keeps the player from gaining control. In state 5300 all vars get reset to zero but there's a 5 second waiting period where the opponent can bash you once without you being able to hit back (only one time in those 5 seconds however and after they hit you you regain control again). Now, the story branches out... Part 2 This time the player waits until after 300 ticks after the last move (the one that set var(17) and var(18). Because 300 ticks have elapsed, var(15) and var(16) have reached 482 and been reset to zero again but var(17) and var(18) are still greater than zero. Let us say this move is just one fireball so var(19) = 1. Now, var(15), var(17), and var(18) are all non-zero and var(16) is still available yet. And so it goes on until all four are greater than zero and var(19) is greater than zero as well and you get sent to your favorite dead state 5300... >>>>>> in the .air file ;Tired/Exhausted [Begin Action 5305] Clsn2Default: 2 Clsn2[0] = 20, 2,-18,-49 Clsn2[1] = -7,-49, 8,-61 720,0, 0,0, 25 720,1, 0,0, 25 720,0, 0,0, 25 720,1, 0,0, 25 There are no cmd entries hehehe. >>>>>>> in the .cns file ;Exhausted/Tired [Statedef 5300] type = S ctrl = 0 velset = 0,0,0 anim = 5305 ;Fireball counter 1 reset [State 5300, add1] type = varset trigger1 = time = 0 var(15) = 0 ;Fireball counter 2 reset [State 5300, add2] type = varset trigger1 = time = 0 var(16) = 0 ;Fireball counter 3 reset [State 5300, add3] type = varset trigger1 = time = 0 var(17) = 0 ;Fireball counter 4 reset [State 5300, add4] type = varset trigger1 = time = 0 var(18) = 0 ;fireball number reset [State 5300, add5] type = varset trigger1 = time = 0 var(19) = 0 ;marker reset [State 5300, add6] type = varset trigger1 = time = 0 var(20) = 0 ;changestate after 5 seconds [State 5300, 1] type = Changestate trigger1 = Time >= 300 value = 0 ctrl = 1 Place the following codes in ALL normal projectile moves that you wish to be eligible for the tired out codes. Don't forget to set the var(19) in add2 to however many fireballs. >>>>> in the .cns file into multiple states possibly >>>>> (wherever a projectile state is). ;Clear Fireball marker {set var(20) to zero} [State 280, add1] type = varset trigger1 = time = 0 trigger1 = var(20) = 1 v = 20 value = 0 ;set var(19) to greater than 1 to say a fireball has been used [state 280, add2] type = varset trigger1 = time = 0 var(19) = 1 ;set to whatever number of fireballs used ;Fireball 1 marker (set to mark if condition is true) [State 280, add3] type = varset trigger1 = time = 0 trigger1 = var(19) > 0 trigger1 = var(15) = 0 v = 20 value = 1 ;Fireball 1 timer (set fireball 1 to start counting) [State 280, add4] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 15 value = 1 ;Fireball 1 subtract [State 280, add5] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 19 value = -1 ;Fireball 1 marker reset [State 280, add6] type = varset trigger1 = time = 0 trigger1 = var(20) = 1 v = 20 value = 0 ;Fireball 2 marker (set to mark if condition is true) [State 280, add7] type = varset trigger1 = time = 0 trigger1 = var(19) > 0 trigger1 = var(16) = 0 v = 20 value = 1 ;Fireball 2 timer (set fireball 1 to start counting) [State 280, add8] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 16 value = 1 ;Fireball 2 subtract [State 280, add9] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 19 value = -1 ;Fireball 2 marker reset [State 280, add10] type = varset trigger1 = time = 0 trigger1 = var(20) = 1 v = 20 value = 0 ;Fireball 3 marker (set to mark if condition is true) [State 280, add11] type = varset trigger1 = time = 0 trigger1 = var(19) > 0 trigger1 = var(17) = 0 v = 20 value = 1 ;Fireball 3 timer (set fireball 1 to start counting) [State 280, add12] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 17 value = 1 ;Fireball 3 subtract [State 280, add13] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 19 value = -1 ;Fireball 3 marker reset [State 280, add14] type = varset trigger1 = time = 0 trigger1 = var(20) = 1 v = 20 value = 0 ;Fireball 4 marker (set to mark if condition is true) [State 280, add15] type = varset trigger1 = time = 0 trigger1 = var(19) > 0 trigger1 = var(18) = 0 v = 20 value = 1 ;Fireball 4 timer (set fireball 1 to start counting) [State 280, add16] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 18 value = 1 ;Fireball 4 subtract [State 280, add17] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 19 value = -1 ;Fireball 4 marker reset [State 280, add18] type = varset trigger1 = time = 0 trigger1 = var(20) = 1 v = 20 value = 0 ;send to tired state if the 5th or more fireball [state 280, add19] type = changestate trigger1 = time = 0 trigger1 = var(19) > 0 trigger1 = var(15) > 0 trigger1 = var(16) > 0 trigger1 = var(17) > 0 trigger1 = var(18) > 0 value = 5300 ctrl = 0 The final section needs to be just copied to the bottom of the .cns file under a statedef -2. If there is no [statedef -2] in your .cns then just add the line: [statedef -2] ^^before you copy this code in. This part is just the accumulator for the amount of time used. This needs to be in a -2 state because -2 states run constantly every game tick regardless of which state you are in otherwise. -2 states run when you walk, jump, shoot fireballs, taunt, etc. Without a constantly running state you wouldn't be able to keep track of time effectively and this code wouldn't work right. 480 = 8 seconds time 60 game ticks or 480. for 10 seconds use 10 X 60 or 600 game ticks. >>>>>>> at the end of the .cns file ;time accumulator [State -2] type = varadd trigger1 = var(15) > 0 v = 15 value = 1 [State -2] type = varadd trigger1 = var(16) > 0 v = 16 value = 1 [State -2] type = varadd trigger1 = var(17) > 0 v = 17 value = 1 [State -2] type = varadd trigger1 = var(18) > 0 v = 18 value = 1 [State -2] type = varset trigger1 = var(15) >= 482 v = 15 value = 0 [State -2] type = varset trigger1 = var(16) >= 482 v = 16 value = 0 [State -2] type = varset trigger1 = var(17) >= 482 v = 17 value = 0 [State -2] type = varset trigger1 = var(18) >= 482 v = 18 value = 0 Now, if you want to really condense this code. Instead of having the var(15 to 18) timers count up to 482, have them start at 482 and subtract a value of -1. When the vars reach zero they will not need to be reset anymore which eliminates 4 -2 states {the var(#) >= 482 / value = 0 states}. This is optimizing code to work faster if you can do this. Hint1: [State -2] type = varadd trigger1 = var(15) > 0 v = 15 value = 1 becomes (for 15 through 18): [State -2] type = varadd trigger1 = var(15) > 0 v = 15 value = -1 ;just change this Hint2: ;Fireball 1 timer (set fireball 1 to start counting) [State 280, add4] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 15 value = 1 becomes (for 15 through 18): ;Fireball 1 timer (set fireball 1 to start counting) [State 280, add4] type = varadd trigger1 = time = 0 trigger1 = var(20) = 1 v = 15 value = 482 Hint3: Delete all these (15 through 18): [State -2] type = varset trigger1 = var(18) >= 482 v = 18 value = 0