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. Además, también está la opción de randomizar los objetos que te encuentres.
RANDOMIZADO DE HABILIDADES
El randomizado de habilidades es un script público de relic castle que se puede encontrar aquí. Consiste en hacer que los Pokémon de tu juego tengan habilidades que normalmente nunca podrían tener. 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 "RANDOM_ABILITIES_FULL_RANDOM = 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 RANDOM_ABILITIES_MAPPING, que está en el
script Random.rb, en true (esto sería "RANDOM_ABILITIES_MAPPING = true").
- Opción 3: Que toda la línea evolutiva tenga la misma habilidad random. Para elegir esta opción hay que poner la constante RANDOM_ABILITIES_SEMI_RANDOM, que está en el script Random.rb, en true (esto sería "RANDOM_ABILITIES_SEMI_RANDOM = true").
Si ninguna de las 3 constantes está en true, no se randomizarán las habilidades. Si más de una de las 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.
RANDOMIZAR 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:
[:BULBASAUR,:CHARMANDER,:SQUIRTLE,:PIDGEY,:NIDORANmA,:NIDORANfE,:ZUBAT,:MANKEY,:POLIWAG, :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():
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 de este post.
2. Extraer el contenido del zip en la carpeta principal de tu proyecto, para añadir el script como Plugin (tienes más información sobre el sistema de Plugins al final de este post).
3. Hacer los eventos de activación y configuración del random, en la BASE DE SKY en el mapa “Mapa de Scripts” pueden ver ejemplos.
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 [:ARTICUNO,:MOLTRES, :ZAPDOS].
Se puede restringir qué habilidades salen en el random, para eso se debe modificar el script Ability_Randomizer.rb en la variable ABILITY_EXCLUSIONS si se quiere restringir más de una habilidad se debe separar por comas, por ejemplo [:IMPOSTER, :ZENMODE, :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 [:CHATTER, :DIG, :TELEPORT, :SONICBOOM, :DRAGONRAGE, :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 línea 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, 804 para el segundo inicial y 805 para el tercero. Si por lo que sea quieres usar otras variables, deberás cambiar estos números por otros.
2. Si el jugador confirma que quiere ese inicial.
- Hay que desactivar el control switch del random. Si no hacemos esto, cuando entreguemos el Pokémon se entregará uno que no tendrá nada que ver con el que se le dice al jugador que hay (y no cumpliendo las restricciones de los Pokémon que pueden salir de iniciales).
- Hay que agregar otra sentencia de tipo script con esta
línea: pbAddPokemon(pbGet(803),5) para que al aceptar a ese Pokémon se le entregue al jugador el inicial random que se
generó al activar el modo random.
- Después de entregar el Pokémon con el pbAddPokemon, se enciende el switch del modo random de nuevo.
Puedes encontrar tres eventos de ejemplo en el "Mapa de Scripts" de LA BASE DE SKY (a partir de la versión 1.0.1 de la base) para copiar directamente de ahí esta funcionalidad.