Nota do Orakio: Há alguns anos, o amigo René “Killgama” Daré anunciou na Lista de Algol um ambicioso projeto de desconstrução do primeiro Phantasy Star. Seu intuito era o de descobrir como o jogo funcionava através da análise detalhada do código.
O René foi postando suas descobertas na lista, e a gente foi ficando cada vez mais maravilhado. A ideia de compilar todo aquele conhecimento foi sendo adiada, até que finalmente o René teve a paciência de organizar tudo de uma forma que todos pudessem entender. Com a palavra, nosso amigo René!
Toda batalha no Phantasy Star funciona através de ataques e defesas sorteadas a cada turno da batalha. Quando aparece um inimigo, parte do código de inicialização cuida de desativar coisas da luta anterior (ex: parede mágica, força extra nos personagens e inimigo) e outras coisas. Nesse momento, o código de inicialização jogo calcula a ordem de ataque, tanto de inimigos quanto de personagens. Lembrando que são 4 personagens (Alis, Myau, Odin e Lutz) e no máximo 8 HPs inimigos, como algumas aparições do SWORM.
Em todos os turnos, uma das primeiras coisas que o jogo faz é definir (de forma totalmente aleatória) a sequencia de ataque de inimigos e personagens do time. Assim pode ser que o inimigo comece primeiro ou que um personagem comece primeiro.
Durante os ataques de um dos personagens do time, os valores são processados assim:
A lógica é a mesma quando o inimigo está atacando, e em caso de defesa maior que ataque (passos 7 e 8) é utilizado o nível do personagem para calcular o dano do inimigo, já que os inimigos não possuem níveis.
Essa redução aleatória nos valores de ataque e defesa provavelmente foram colocados pelo programador do jogo para dar um efeito mais realista. Algumas vezes o ataque não vai ser tão bom quanto outras e a defesa também pode vacilar deixando o oponente aplicar um golpe mais certeiro.
Você deve estar pensando porque alguém criaria uma regra pra verificar se a diferença entre ataque ou defesa é par ou ímpar. Realmente a descrição que fiz está muito técnica, então vou explicar melhor.
A regra de verificar se a diferença (DEF-ATK) é par ou ímpar apenas faz com que o jogo não permita que defesas sejam 100% garantidas em caso de DEF maior que ATK. Na prática isso significa que teoricamente as defesas falham em 50% das vezes. Isso acontece porque o valor final de ATK e DEF é ajustado por um gerador de números aleatórios, aplicado aos valores base do personagem ou inimigo.
Indo um pouco mais a fundo, um bom gerador de números aleatórios precisa ter uma boa distribuição dos números produzidos. Imagine uma faixa de 1 a 254 para a geração dos números, um bom gerador precisa produzir todos os números dessa faixa, aproximadamente o mesmo número de vezes. Por exemplo, em cerca de 1.000.000 de rodadas, esse gerador precisa produzir todos os números dessa faixa aproximadamente 3.937 vezes.
Metade dos números dessa faixa são pares e a outra metade são ímpares, então se eles são gerados com uma boa distribuição, podemos dizer que aproximadamente 50% dos números gerados serão pares e os outros 50% ímpares. Se o gerador apresentar uma tendência de produzir mais números pares do que ímpares por exemplo, esse percentual não será 50%.
Para exemplificar tudo isso, considere esta batalha do grupo contra um WT.DRAGON.
Ataque | Quem Ataca | ATK Base | ATK Efetivo | DEF Base | DEF Efetivo | Diferença | Dano Efetivo |
---|---|---|---|---|---|---|---|
1 | WT.DRAGN | 180 | 155 | 193 | 189 | 34 | 0 |
2 | NOAH | 85 | 75 | 104 | 92 | 17 | -22 |
3 | ODIN | 93 | 81 | 104 | 92 | 11 | -17 |
4 | ALIS | 116 | 106 | 104 | 103 | -3 | -3 |
5 | MYAU | 116 | 115 | 104 | 81 | -34 | -34 |
6 | WT.DRAGN | 180 | 139 | 188 | 171 | 32 | 0 |
7 | ALIS | 116 | 114 | 104 | 102 | -12 | -12 |
8 | NOAH | 85 | 77 | 104 | 95 | 18 | 0 |
9 | WT.DRAGN | 180 | 143 | 188 | 184 | 41 | -1 |
10 | MYAU | 116 | 90 | 104 | 90 | 0 | -18 |
11 | ODIN | 93 | 74 | 104 | 89 | 15 | -18 |
12 | ALIS | 116 | 87 | 104 | 96 | 9 | -22 |
13 | NOAH | 85 | 66 | 104 | 82 | 16 | 0 |
14 | MYAU | 116 | 106 | 104 | 92 | -14 | -14 |
15 | ODIN | 93 | 90 | 104 | 101 | 11 | -9 |
16 | WT.DRAGN | 180 | 144 | 188 | 183 | 39 | -4 |
17 | ALIS | 116 | 89 | 104 | 84 | -5 | -5 |
18 | ODIN | 93 | 69 | 104 | 95 | 26 | 0 |
19 | MYAU | 116 | 105 | 104 | 82 | -23 | -23 |
20 | WT.DRAGN | 180 | 157 | 188 | 173 | 16 | 0 |
21 | NOAH | 85 | 74 | 104 | 99 | 25 | -10 |
Alguns pontos importantes:
Quando a mágica HELP (MYAU) é utilizada, o valor efetivo de ATK do personagem que recebeu a magia é cerca de 50% mais elevado que o valor base. De maneira semelhante, quando a mágica TERR (MYAU) é utilizada, o inimigo passa a ter um valor de ATK efetivo cerca de 25% inferior ao valor base.
O WERE BAT quando está com muita raiva também fica com seu ATK elevado em cerca de 50% do valor base, como se ele tivesse utilizado a mágica HELP nele mesmo.
Veja o exemplo de parte da batalha contra o DARKFALZ, onde Myau usou a mágica HELP em ALIS, fazendo seu valor de ATK efetivo ficar mais elevado que o valor base. A mágica só foi utilizada a patrir do ataque número 15, cujos valores estão marcados em negrito.
Número | Quem Ataca | ATK Base | ATK Efetivo | DEF Base | DEF Efetivo | Diferença | Dano Efetivo |
---|---|---|---|---|---|---|---|
1 | DARKFALZ | 255 | 197 | 188 | 157 | -40 | -40 |
2 | NOAH | 85 | 79 | 150 | 138 | 59 | -29 |
3 | DARKFALZ | 255 | 226 | 230 | 205 | -21 | -21 |
4 | MYAU | 116 | 108 | 150 | 143 | 35 | -13 |
5 | ALIS | 116 | 102 | 150 | 144 | 42 | 0 |
6 | DARKFALZ | 255 | 226 | 188 | 161 | -65 | -65 |
7 | NOAH | 85 | 65 | 150 | 121 | 56 | 0 |
8 | ALIS | 116 | 105 | 150 | 118 | 13 | -8 |
9 | DARKFALZ | 255 | 204 | 193 | 173 | -31 | -31 |
10 | ALIS | 116 | 94 | 150 | 126 | 32 | 0 |
11 | DARKFALZ | 255 | 214 | 188 | 169 | -45 | -45 |
12 | DARKFALZ | 255 | 213 | 193 | 173 | -40 | -40 |
13 | NOAH | 85 | 68 | 150 | 127 | 59 | -23 |
14 | DARKFALZ | 255 | 247 | 230 | 223 | -24 | -24 |
15 | ALIS | 116 | 147 | 150 | 148 | 1 | -17 |
16 | DARKFALZ | 255 | 244 | 194 | 152 | -92 | -92 |
17 | NOAH | 85 | 67 | 150 | 147 | 80 | 0 |
18 | MYAU | 116 | 97 | 150 | 122 | 25 | -28 |
19 | DARKFALZ | 255 | 237 | 194 | 175 | -62 | -62 |
20 | ALIS | 116 | 145 | 150 | 112 | -33 | -33 |
21 | DARKFALZ | 255 | 221 | 193 | 144 | -77 | -77 |
Alguns pontos importantes:
Por fim, essa lógica de recálculo do dano efetivo explica o porque de inimigos muito fracos tipo SWORM e SCORPION conseguirem causar um dano significativo quando os personagens estão em níveis muito altos e com armas muito fortes. Nestes casos, como o valor de ataque desses inimigos é muito menor que o valor de defesa dos personagens, o jogo recalcula o dano efetivo do inimigo utilizando o nível dos personagens, frequentemente causando danos acima de 10 pontos.