E ai, blz? Lá pra meados de 2006 (caralho, como faz tempo) eu estava tentando implantar a Série de Fibonacci no Mugen, e com a ajuda do SmS o código funcionou que foi uma blz... mas nunca postei (na verdade, eu achei que tinha postado... mas descobri hoje que nunca postei :P) a real utilização para esse código.
Para quem não conhece o que é a Série de Fibonacci, aqui vai uma breve explicação copiada da Wikipedia
Quote
Consiste em uma sequência de crescimento natural,numérica por exemplo: 1, 1, 2, 3 ... A sequência de Fibonacci define como 1,1,2,3,5,8,13,21,34,55,89,144,233,... ou seja, o número seguinte é a soma de seus dois antecessores.
Depois de quebrar a cabeça, o SmS desenvolveu esse código que faz a soma (correta :P) da Série de Fibonacci.
Quote
[State 200, 1]
type = VarSet
triggerall = time = 1
trigger1 = var(23)=1
trigger1 = var(22):=Var(20)+Var(21)
trigger1 = var(24):=Var(22)
trigger2 = var(23)=2
trigger2 = var(20):=Var(21)+Var(22)
trigger2 = var(24):=Var(20)
trigger3 = var(23)=3
trigger3 = var(21):=Var(22)+Var(20)
trigger3 = var(24):=Var(21)
trigger4 = var(23)=0
trigger4 = var(20):=1
V= 23
value = ifelse(Var(23) = 3,1,Var(23)+1)
e para controle, fiz esse pequeno DisplayToClipBoard
Quote
[State -2, DisplayToClipBoard]
type = DisplayToClipBoard
trigger1 = 1
text = "var(20) %d, var(21) %d, var(22) %d, var(23) %d, var(24) %d"
params = var(20),var(21),var(22),var(23),var(24)
Mas depois de tudo isso, pra que serve essa porra de código maluco?
Esse código tem 1001 utilidades como: randomização, sistema de experiência, sistema de danos, seleção de golpes, advanced guard e até uma ativação de AI mais elaborada, assim como a programação da própria AI.
E como fazer isso?
No Rock, eu comecei a utilizar o VarRandom bem simples e sem vínculo com o Fibonacci.
Quote
[State -3, VarRandom]
type = VarRandom
triggerall = Var(2) = 1
trigger1 = 1
v = 4
range = 7
Dessa maneira a var(4) fica randomizando de 1 a 7 sem parar, mas isso depois que a var(2) for ativada. Aplicando o código Fibonacci conforme escrevemos acima, teremos:
Quote
[State -3, VarRandom]
type = VarRandom
triggerall = Var(2) = 1
trigger1 = 1
v = 4
range = var(20),var(24)
O valor da randomização ficará entre essas duas variáveis. Mas em certos pontos os valores podem passar de 121393,196418... portanto é bom zerar as variáveis depois de certo valor. Além desse tipo de randomização, poderemos fazer a escolha de um golpe "secreto"... aqueles golpes mais fodões que só podem ser ativados em situações extremas :P
Ainda com base no VarRandom acima, podemos fazer vários tipos de randomização na escolha do golpe:
Quote
[State xxx, ChangeState]
type = ChangeState
triggerall = Var(24) = Var(21)
trigger1 = 1
value = yyy
Quote
[State xxx, ChangeState]
type = ChangeState
trigger1 = 1
value = ifelse(Var(20)-Var(22)=Var(21),yyy,zzz)
Quote
[State xxx, ChangeState]
type = ChangeState
triggerall = Var(24) = Var(22)
trigger1 = 1
value = yyy
Além dessa, podemos fazer muitas outras randomizações utilizando os valores que são passados pela Série de Fibonacci. Também podemos fazer um sistema de danos utilizando a var(23), apesar desse sistema de danos ser bem simples é possível adicionar mais elementos a ele.
O valor da var(23) sempre fica como 1, 2 e 3. Mas adicionando um simples contador a ela, podemos ter algo assim (continuando com a base da var(23) feito lá pra cima):
Quote
[State xxx,VarSet]
type = VarSet
triggerall = (Var(23) = 2&&MoveType = A)
value = 1
Assim, seu personagem teria certas condições para ter um ganho de danos e até daria para fazer um outro tipo de randomização. Por enquanto é isso, de 2006 até agora dei uma boa enferrujada com o Mugen... mas aos poucos vou voltando. Assim que der, vou postar as outras coisas que consegui fazer com esse código.