Modo Random (Essentials v16)

MODO RANDOM 
(PARA POKÉMON ESSENTIALS v16)

Versión 1.2.0

DESCARGA

Github con el histórico del script


El modo Random volverá aleatorios los ataques y habilidades de los pokémon tanto de entrenadores como de los salvajes, así como los Pokémon salvajes y de entrenadores que te encuentres. Se puede activar que también se randomice la compatibilidad con las MTs y se podrá restringir las generaciones de los pokémon que apareceran en el modo Random.


RANDOMIZADO DE HABILIDADES

Se puede elegir cómo funciona el randomizado de las habilidades. Existe tanto la opción de no randomizar habilidades como de hacerlo de dos maneras distintas: 

  • Opción 1: Cada especie tenga sus propias habilidades al azar, y no se conservarán al evolucionar. Por ejemplo, si Pikachu tiene Intimidación y Cura Natural, Raichu podría tener otras distintas, como Absorbe agua y levitación.

    Para elegir esta opción hay que poner la constante FULL_RANDOM_ABS que está en el script Random.rb en true (esto sería "FULL_RANDOM_ABS =  true").
  • Opción 2: Intercambiar todas las habilidades por otra (por ejemplo, si un Pokémon como Charmander que tenía antes Mar Llamas ahora tiene llovizna, todos los Pokémon del juego que originalmente tenían Mar Llamas como Emboar ahora tendrán llovizna, haciendo que además muchas líneas evolutivas que conservaban de forma normal las habilidades lo sigan haciendo con el Random). Ten en cuenta que este intercambio de habilidades no implica que ocurra lo mismo en el sentido inverso, lo que significa que los Pokémon que antes tenían Llovizna no tienen por qué tener Mar Llamas.

    Para elegir esta opción hay que poner la constante MAP_RANDOM_ABS, que está en el script Random.rb, en true (esto sería "MAP_RANDOM_ABS =  true").

Si ninguna de las 2 constantes está en true, no se randomizarán las habilidades.

Si ambas constantes están en true se utilizará la opción 1.


ESTADÍSTICAS BASE PROGRESIVAS

El Random es progresivo en base a la cantidad de medallas del jugador, por lo que cuantas más medallas tenga, mayor será el BST de los Pokémon que aparezcan. La fórmula que se aplica es la siguiente, la cual se puede modificar en el método getMaxBSTCap y getMinBSTCap.

  • 0 y 1 medalla BST min 0 y BST max 400
  • 2 medallas BST min 0 y BST max 440
  • 3 medallas BST min 350 y BST max 480
  • 4 medallas BST min 375 y BST max 520
  • 5 medallas BST min 400 y BST max 560
  • 6 medallas BST min 425 y BST max 600
  • Más de 6 medallas BST min 440 y BST max 800

Además, si el jugador tiene menos de 3 medallas, está limitado para que no puedan salir movimientos con más de 70 de poder base.


POKÉMON INICIALES

Se puede elegir que los Pokémon iniciales salgan de un listado definido por el creador. Para ello se debe actualizar la variable ListaStartersRandomizado en el script Random.rb. En él se deben separar los Pokémon por comas, por ejemplo:

 [PBSpecies::BULBASAUR,PBSpecies::CHARMANDER,PBSpecies::SQUIRTLE, PBSpecies::PIDGEY,PBSpecies::NIDORANmA,PBSpecies::NIDORANfE,PBSpecies::ZUBAT,PBSpecies::MANKEY,PBSpecies::POLIWAG, PBSpecies::ABRA] 

Si este listado está vacío, los iniciales serán 100% al azar, respetando las restricciones de generaciones que se hayan definido, BST y la blacklist de Pokémon, que es una lista que el creador puede definir con las especies de Pokémon que nunca van a aparecer en el modo Random.


RANDOMIZADO DE OBJETOS

También se pueden randomizar los objetos que te encuentras en las Poké Ball. Para ello, debes modificar los eventos que dan objetos como se muestra en la siguiente imagen. Se crearía un "Conditional Branch" o rama condicional que compruebe el interruptor que se haya definido para el modo Random. Si lo está, en lugar de llamar al método pbItemBall(), hay que llamar al nuevo método getItemRandomFromPokeball():

Objeto random

En el script ObjetosRandom.rb hay una variable BLACK_LIST que contiene los objetos que no se pueden obtener y que nunca aparecerán en el modo Random. Para poder restringir más de un objeto, se deben separar por comas dentro de esta lista, por ejemplo: [:LOPUNNYTE, :SACREDASH, :BLACKFLUTE]. Los nombres que se ponen son los nombres internos de los objetos, con los dos puntos delante de cada uno.

También hay una variable MTLIST_RANDOM que debe contener las MTs, para que si el objeto que se randomizó es una MT que ya tienes se genere otra MT distinta, las distintas MTs se deben separar por comas, por ejemplo [:TM01, :TM02, :TM03]


IMPLEMENTACIÓN

  1. Descargar el zip "ModoRandom.zip" desde aquí

  2. Añadir los 3 scripts que hay dentro del zip encima del script de Main (los tres archivos que terminan en .rb, copias el interior de cada uno en un nuevo script dentro de la sección de scripts).

  3. Crear el siguiente NPC para activar el modo Random (nota: en lugar de hacerlo a través de un NPC puedes añadir esta lógica al evento de inicio del juego):

    1. Debe activar el Switch que tengan definido en el script, si lo dejan tal cual sería el 409
    2. Agregar una opción de script al evento con el llamado a la función generarInicialesRandom(), que definirá los posibles iniciales que aparecerán. Nota: puedes desactivar en cualquier momento el interruptor del Random para desactivarlo.

    Ejemplo del evento que activa/desactiva el Random:
    NPC Activar Random

  4. Crear un NPC para que el jugador pueda limitar las generaciones de Pokémon que salen en el Random.

    Nota: Saldrán Pokémon de las generaciones elegidas y evoluciones que hayan salido en gens posteriores, eligiendo la gen 1 podría salir por ejemplo un Magnezone.

    NPC Restringir Generaciones

    Código del script del evento:

     ret = Kernel.pbMessage("¿Pokémon de
     qué generaciones deseas?",
     get_random_gens_choice_array());
     # 9 es el numero de la opcion
     # "Terminar" si no es 9 activa el
     # switch, para que vuelvan a mostrar
     # las opciones y puedas
     # seleccionar más
     $game_switches[159] = ret != 9;
     add_or_remove_random_gen(ret+1);


Si quieres activar el randomizado de la compatibilidad con las MTs, en el script Random.rb hay una variable que se llama RANDOM_TM_COMPAT por defecto está en false si la cambias a true se randomizará la compatibilidad con las MTs

  • Se puede restringir qué pokémon salen en el random, para eso se debe modificar el script Random.rb en la variable BlackListedPokemon si se quiere restringir más de un pokémon se debe separar por comas, por ejemplo [PBSpecies::ARTICUNO,PBSpecies::MOLTRES, PBSpecies::ZAPDOS]
  • Se puede restringir qué habilidades salen en el random, para eso se debe modificar el script Random.rb en la variable ABILITYBLACKLIST si se quiere restringir más de una habilidad se debe separar por comas, por ejemplo [PBAbilities::IMPOSTER, PBAbilities::ZENMODE, PBAbilities::WONDERGUARD]
  • Se pueden restringir qué movimientos salen en el random, para eso se debe modificar el script Random.rb en la variable MOVEBLACKLIST si se quiere restringir más de un movimiento se debe separar por comas, por ejemplo [PBMoves::CHATTER, PBMoves::DIG, PBMoves::TELEPORT, PBMoves::SONICBOOM, PBMoves::DRAGONRAGE, PBMoves::STRUGGLE]


EVENTO DE POKÉMON INICIALES

En el evento de los Pokémon iniciales se debe generar una nueva página con la condición de que el switch del random este activo para que estos se randomicen.

  1. En el evento hay que agregar una sentencia de tipo script con esta linea SpeciesIntro.new(pbGet(803)).set_mark_as_seen(false).show 803 es el id de la variable que se usa para guardar el primer inicial random, para el segundo inicial se usa la variable 804 y para el tercero 805
  2. Luego si el jugador confirma que quiere ese inicial
    1. Hay que desactivar el control switch del random

    2. Hay que agregar otra sentencia de tipo script con esta linea pbAddPokemon(pbGet(803),5) para que se le asigne el inicial random que se generó al activar el random y que el jugador no pueda reiniciar hasta que le salga el inicial que quiere

    3. Luego hay que volver a activar el switch del random

      Aquí dejo un ejemplo del evento, las partes importantes están marcadas con un cuadro rojo

      Evento Iniciales

Sin comentarios