Okay
Found it and here's how the code looks like
; HITA_FALL (knocked up, falling)
[Statedef 5055]
type = A
movetype= H
physics = N
[State 5050, 1] ;Change anim when done with transition
type = ChangeAnim
trigger1 = AnimTime = 0
trigger1 = Anim = 5035
trigger2 = Time = 0 ;If no transition anim
trigger2 = Anim != 5035
trigger2 = (Anim != [5051, 5059]) && (Anim != [5061, 5069])
trigger2 = Anim != 5090 ;Not if hit off ground anim
value = 5050
[State 5050, 2] ;Coming down anim
type = ChangeAnim
trigger1 = anim = [5050,5059]
trigger1 = Vel Y >= ifelse(anim = 5050, 1, -2)
trigger1 = SelfAnimExist(anim+10)
value = anim+10
persistent = 0
[State 5050, 3] ;Gravity
type = VelAdd
trigger1 = 1
y = GetHitVar(yaccel)
[State 5050, recovery]
type = SelfState
triggerall = command = "recovery"
triggerall = alive = 1
trigger1 = pos y > 0
trigger1 = vel y > 0
value = 5201 ;HITFALL_RECOVER
[State 5050, 6]
type = SelfState
trigger1 = Vel Y > 0
trigger1 = Pos Y >= ifelse((anim = [5051,5059]) || (anim = [5061,5069]), 0, 25)
value = 5105 ;HIT_BOUNCE
And I checked other kof characters made by other authors like Ikaruga and Koopakoot and they have the code regarding recovery. I tried to use the code from their characters and replace the recovery code displayed above and it still allow forward roll recovery.
I'm not sure in which way should I modify it this time. Is there something else that I might be missing?
EDIT: Never mind. I found this code hiding somewhere in the main constants (where life, power, attack, defense, etc are at) instead;
Spoiler, click to toggle visibilty
; HIT_FALLRECOVER (on the ground)
[Statedef 5201]
type = S
movetype= H
physics = S
anim = 5200
velset = 0,0
[State 5200]
type = Posset
trigger1 = time = 0
y = 0
[State 2110, 無敵]
type = NotHitBy
trigger1 = 1
value = SCA
[State 5201, Turn]
type = Turn
triggerall = time = 0
trigger1 = command != "holdback"
trigger1 = command != "holdfwd"
trigger1 = P2Dist X < 0
[State 2110, ]
type = Varset
trigger1 = command = "holdfwd"
trigger1 = time = 0
var(6) = 1
[State 2110, ]
type = ChangeAnim
triggerall = var(6) = 1
trigger1 = time = 0
value = 700
[State 1000, VelSet]
type = VelSet
trigger1 = anim = 5200 && AnimElemtime(1) >= 0 && AnimElemtime(5) <= 0
trigger2 = anim != 5200 && AnimElemtime(2) >= 0 && AnimElemtime(7) <= 0
x = cond(var(6)= 1,6.5,-5.0)
[State 2100, 移動終了]
type = VelSet
trigger1 = var(6) = 0
trigger1 = AnimElem = 5
x = 0
[State 2100, 移動終了]
type = VelSet
trigger1 = var(6) = 1
trigger1 = AnimElem = 5
x = 0
[State 2110, ]
type = PlayerPush
trigger1 = AnimElemTime(1) > 0
value = 0
[State 5201, PalFX]
type = PalFX
trigger1 = time = 0
time = 1
[State 2110, ]
type = Varset
trigger1 = Animtime = 0
var(6) = 0
[State 200, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 1
value = s10,0
[State 2110, 終了]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
The code in bold is the one that's responsible for it :/
Got it solved by disabling the bolded code
Anyway, thanks for the help guys