esse tutorial é pra fazer um Counter Hit tipo oq tem no SFA3, sei lá se vai ser util pra alguem mas o código tá ai coloque isso no Statedef -3
Quote
[State -3, VarSet]
type = VarSet
trigger1 = (EnemyNear,MoveType = A && EnemyNear,HitDefAttr = SCA,NA,SA,HA)
var(7) = 2
Explicando:
VarSet vai setar uma var, no caso Var(7), quando o inimigo estiver atacando. O 2 na var (var(7) = 2) vai ser o "contador" enquanto o inimigo está num estado de ataque e tambem é quantos ticks (tempo) vc vai ter pra contra atacar.
EnemyNear,MoveType = A vai verificar se o inimigo mais proximo está atacando.
EnemyNear,HitDefAttr vai ver se o ataque do inimigo é um ataque fisico, SCA - em pé (S), abaixado ©, aéreo (A), NA - ataque normal, SA - super ataque, HA - hiper ataque. É melhor não colocar pra contra atacar projeteis e throws, pode causar alguns erros dependendo do inimigo (throws) e contra atacar projeteis é meio estranho. :P
Quote
[State -3, VarAdd]
type = VarAdd
triggerall = Var(7) > 0
trigger1 = (EnemyNear,MoveType != A || Win || Lose)
var(7) = -1
Explicando:
VarAdd no caso vai diminuir o valor da var (var(7) = -1) até chegar a zero.
Var(7) > 0 o VarAdd só vai começar a subtrair se a var ser maior que zero (var(7) > 0).
EnemyNear,MoveType != A o VarAdd só vai começar a subtrair se o inimigo não estiver em um estado de ataque.
Opcional
Quote
[State -3, EnvColor]
type = EnvColor
trigger1 = (MoveHit && Var(7) > 0)
add = 255,255,255
time = 1
under = 1
ignorehitpause = 1
Explicando:
EnvColor vai fazer a tela piscar
MoveHit && Var(7) > 0 vai fazer a tela piscar apenas se vc acertar o inimigo e a var for maior que zero
add = 255,255,255 vai fazer piscar a tela na cor branca
time = 1 vai fazer piscar a tela por 1 tick
under = 1 faz a tela vai piscar atras dos personagens
ignorehitpause = 1 vai fazer ignorar o hitpause dos golpes
agora no HitDef do seu char faça isso (linhas com negrito, opcional)
Quote
[State 200, HitDef]
type = HitDef
trigger1 = Time = 0
attr = S,NA
animtype = Light
damage = ifelse(Var(7) > 0,30,20)
getpower = ifelse(Var(7) > 0,24,12)
givepower = ifelse(Var(7) > 0,0,10)
guardflag = MA
hitflag = MAFD
ID = 200
sparkno = S10000+Var(16)
sparkxy = 0,-85
hitsound = Sifelse(Random%2,1,2),0
pausetime = 10,17
guard.sparkno = -1
ground.type = High
ground.slidetime = 20
ground.hittime = 20
ground.velocity =-3,0
air.velocity = -2,0
air.animtype = Back
Explicando:
damage = ifelse(Var(7) > 0,30,20), se quando vc acertar o inimigo e a var for maior que zero, vc vai utilizar counter que vai tirar mais vida do inimigo.
getpower = ifelse(Var(7) > 0,24,12), vc vai receber mais power quando acertar o counter.
givepower = ifelse(Var(7) > 0,0,10) vai fazer o inimigo não receber power quando apanha no counter.
o código acaba ai, se alguem tiver sugestões ou achar algum erro no código pode falar