O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Modificando a formula do Active-Time Battle

Iniciado por Ellye, 21/08/2020 às 08:45

21/08/2020 às 08:45 Última edição: 21/08/2020 às 09:37 por Gabriel
Primeiro, uma explicação de como o ATB foi implementado no RPG Maker MZ:

  • Para cada participante da batalha, é calculado um valor de Speed.
  • A Speed do participante mais rápido é separada como sendo um valor de referencia para esta batalha.
  • Este valor de referencia é usado no cálculo de efeitos que dependem de passagem de rodadas.
  • A velocidade que a barra de ATB enche depende da proporção da velocidade entre o personagem e a velocidade de referencia da batalha.

A formula para Speed é:


  • Math.sqrt(this.agi) + 1

Isso significa que, por exemplo, um personagem com 121 de AGI (12 speed) irá agir no dobro da velocidade que um personagem com 25 de AGI (6 speed).

É uma formula boa em geral, dá uma almofadada no efeito de AGI com esse sqrt e tem uma prevenção contra valores zero. Pessoalmente, eu prefiro adicionar também um valor constante a ser somado a outras agis (tipo um +25) para evitar que efeitos de "Slow" ou que personagens com AGI extremamente baixa causem uma disparidade muito grande.

Enfim, para mudar a formula de Speed, basta um plugin assim dando override nessas duas funções:

(() => {
    Game_Battler.prototype.tpbSpeed = function() {
        return Math.sqrt(this.agi) + 1;
    };
    Game_Battler.prototype.tpbBaseSpeed = function() {
        const baseAgility = this.paramBasePlus(6);
        return Math.sqrt(baseAgility) + 1;
    };
})();


Aqui elas ainda estão com o valor padrão, é só mudar o return delas para a formula desejada (usando "this.agi" na primeira e "baseAgility" na segunda).