Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[RMXP] Ratio de estados como probabilidad de aplicarlo

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] Ratio de estados como probabilidad de aplicarlo

Mensaje por silvanash el 2014-07-01, 02:12

El sistema de batalla default de RMXP tiene muchas cosas horribles (para empezar, una fórmula de daño horrible y no puedes editar a menos que sepas algo de scripts). Una de esas cosas horribles es el ratio de los estados. Me refiero al número que aparece en la base de datos del Maker, en el apartado de "estados". Todos los estados tienen un ratio. "Muerte" tiene un ratio de 10. Veneno, ceguera y sueño me parecen que tienen un ratio de 4 por default. Lo lógido sería pensar que ese ratio es la probabilidad de que ese estado sea aplicado a un personaje, ¿verdad?

Pues no. El ratio sólo sirve para determinar cuál es el estado que será dibujado en la caja de estados de batalla. El "[Normal]". Nada más que eso. Si tienes demasiados estados, el Maker sólo te dibujará el nombre del estado con más ratio, aunque te aplicará los efectos de todos los estados que tengas encima.

¿Qué implica esto? Que, por ejemplo, un ataque que añada el estado de veneno lo aplicará siempre al enemigo, a menos que su resistencia a ese estado en concreto sea diferente a la normal (y la resistencia normal a un estado es de 0). Sin importar que el veneno haga un 10% de su vida máxima por turno, sin importar que el estado de veneno tenga un ratio de 4.

Y por eso hice este cutri-script (en serio, es un cutri script. Lo único que hice fue escribir una línea más).

Código:
class Game_Battler
  def states_plus(plus_state_set)
    # Clear effective flag
    effective = false
    # Loop (added state)
    for i in plus_state_set
      # If this state is not guarded
      unless self.state_guard?(i)
        # Set effective flag if this state is not full
        effective |= self.state_full?(i) == false
        # If states offer [no resistance]
        if $data_states[i].nonresistance
          # Set state change flag
          @state_changed = true
          # Add a state
          add_state(i)
        # If this state is not full
        elsif self.state_full?(i) == false
          # Convert state effectiveness to probability,
          # compare to random numbers
          # Además de comprobar la resistencia a cada estado,
          # tiene en cuenta el ratio del propio estado como probabilidad
          if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
            if rand(10) <= $data_states[i].rating
              # Set state change flag
              @state_changed = true
              # Add a state
              add_state(i)
            end
          end
        end
      end
    end
    # End Method
    return effective
  end
end

Edita el Wecoc original: Limpié el post de spam. Solo recordaros que el script debe pegarse encima de main y que es incompatible con cualquier otro script que modifique la forma de aplicar estados.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1666

Gracias : 239

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.