NPCs Especiales
Pokémon Essentials incluye una serie de NPCs con funciones especiales que puedes colocar en tu juego. Estos se implementan mediante llamadas a scripts en los eventos de RPG Maker.
Cambianombres (Name Rater)
El Cambianombres permite al jugador cambiar el mote de uno de sus Pokémon.
# Abrir la pantalla del Cambianombres
pbNameRater
Esta función:
- Muestra la lista de Pokémon del equipo del jugador.
- Permite seleccionar un Pokémon para cambiarle el mote.
- No permite renombrar Pokémon obtenidos por intercambio (diferente OT).
- Abre el teclado en pantalla para escribir el nuevo nombre.
Ejemplo de evento
# ◆ Mensaje: ¡Hola! Soy el Cambianombres.
# ¿Quieres ponerle un mote a alguno
# de tus Pokémon?
# ◆ Script: pbNameRater
# ◆ Mensaje: ¡Espero que te guste el nuevo nombre!
Olvidamovimientos (Move Deleter)
Este NPC permite al jugador eliminar un movimiento de un Pokémon, incluyendo MOs (HMs).
# Abrir la pantalla del Olvidamovimientos
pbMoveDeleter
Funciona así:
- El jugador selecciona un Pokémon de su equipo.
- Muestra la lista de movimientos del Pokémon seleccionado.
- Permite olvidar cualquier movimiento, incluyendo MOs.
- No permite olvidar el último movimiento (el Pokémon debe conservar al menos uno).
Recordamovimientos (Move Relearner)
Permite al jugador enseñar a un Pokémon un movimiento que puede aprender por nivel pero que no conoce actualmente.
# Abrir la pantalla del Recordamovimientos
pbMoveRelearner
Características:
- Muestra todos los movimientos que el Pokémon puede aprender por nivel (hasta su nivel actual).
- Incluye movimientos que el Pokémon ya olvidó.
- Generalmente requiere un objeto como pago (ej: Escama Corazón). Puedes configurar esto en el evento.
Ejemplo con coste de Escama Corazón
# ◆ Mensaje: Puedo ayudar a tu Pokémon a recordar
# movimientos olvidados. Pero necesito una
# Escama Corazón como pago.
# ◆ Conditional Branch: Script: $bag.has?(:HEARTSCALE)
# ◆ Script: pbMoveRelearner
# ◆ Script: $bag.remove(:HEARTSCALE)
# ◆ Mensaje: ¡Gracias por la Escama Corazón!
# ◆ Else
# ◆ Mensaje: Vuelve cuando tengas una Escama Corazón.
# ◆ Branch End
Revivefósiles (Fossil Reviver)
Este NPC revive un Pokémon a partir de un fósil. La relación fósil-Pokémon se define en los datos de los objetos.
# Revivir un fósil (abre la selección de fósiles de la mochila)
pbFossilRevive
Este script:
- Busca en la mochila del jugador objetos marcados como fósiles.
- El jugador elige qué fósil revivir.
- Se retira el fósil de la mochila y se entrega el Pokémon correspondiente.
Ejemplo de evento del científico
# ◆ Mensaje: \bCientífico\b: ¡Puedo revivir Pokémon antiguos
# a partir de fósiles! ¿Tienes alguno?
# ◆ Conditional Branch: Script: pbHasFossil?
# ◆ Mensaje: \bCientífico\b: ¡Oh, veo que tienes un fósil!
# Déjame trabajar en él...
# ◆ Script: pbFossilRevive
# ◆ Mensaje: \bCientífico\b: ¡Tu Pokémon ha sido revivido!
# ◆ Else
# ◆ Mensaje: \bCientífico\b: No tienes ningún fósil.
# ¡Vuelve si encuentras uno!
# ◆ Branch End
$bag.has?(:OLDAMBER), etc.
Juez de IVs (IV Judge)
El Juez de IVs evalúa el potencial de un Pokémon basándose en sus IVs (Individual Values).
# Abrir el juez de IVs
pbIVJudge
El juez evalúa las estadísticas y da un veredicto general sobre el potencial del Pokémon:
| Rango de IVs totales | Mensaje del Juez |
|---|---|
| 0 - 90 | "El potencial de tu Pokémon es decente." |
| 91 - 120 | "Tu Pokémon tiene un buen potencial." |
| 121 - 150 | "¡Tu Pokémon tiene un gran potencial!" |
| 151 - 186 | "¡Tu Pokémon tiene un potencial extraordinario!" |
Implementación manual alternativa
# Script personalizado para evaluar IVs con más detalle
pbChoosePokemon(1, 2)
if pbGet(1) >= 0
pkmn = $player.party[pbGet(1)]
stats = [:HP, :ATTACK, :DEFENSE, :SPEED, :SPECIAL_ATTACK, :SPECIAL_DEFENSE]
best_stat = stats.max_by { |s| pkmn.iv[s] }
best_iv = pkmn.iv[best_stat]
if best_iv == 31
pbMessage("¡La mejor stat tiene un valor perfecto!")
elsif best_iv >= 26
pbMessage("La mejor stat es fantástica.")
elsif best_iv >= 16
pbMessage("La mejor stat es bastante buena.")
else
pbMessage("La mejor stat es decente.")
end
end
Comprobador de Amistad (Friendship Checker)
Este NPC evalúa cuánta amistad tiene el jugador con un Pokémon.
# Seleccionar un Pokémon y mostrar su amistad
pbChoosePokemon(1, 2)
if pbGet(1) >= 0
pkmn = $player.party[pbGet(1)]
felicidad = pkmn.happiness
if felicidad >= 250
pbMessage("¡Tu #{pkmn.name} te adora con todo su corazón!")
elsif felicidad >= 200
pbMessage("Tu #{pkmn.name} es muy feliz contigo.")
elsif felicidad >= 150
pbMessage("Tu #{pkmn.name} parece contento a tu lado.")
elsif felicidad >= 100
pbMessage("Tu #{pkmn.name} se está acostumbrando a ti.")
elsif felicidad >= 50
pbMessage("Tu #{pkmn.name} aún no confía mucho en ti.")
else
pbMessage("Tu #{pkmn.name} no parece cómodo contigo...")
end
end
Pareja de la Guardería (Day Care Couple)
Los NPCs de la guardería permiten dejar Pokémon para que suban de nivel y críen huevos. Consulta la página de Guardería y Crianza para más detalles.
# NPC que recibe Pokémon en la guardería
pbDayCareDeposit
# NPC que devuelve Pokémon de la guardería
pbDayCareWithdraw
# NPC que entrega un huevo (si hay uno disponible)
pbDayCareGetEgg
Entrenador de EVs (EV Trainer)
Puedes crear un NPC que muestre o modifique los EVs de un Pokémon:
# Mostrar los EVs de un Pokémon
pbChoosePokemon(1, 2)
if pbGet(1) >= 0
pkmn = $player.party[pbGet(1)]
pbMessage("EVs de #{pkmn.name}:")
pbMessage("PS: #{pkmn.ev[:HP]}")
pbMessage("Ataque: #{pkmn.ev[:ATTACK]}")
pbMessage("Defensa: #{pkmn.ev[:DEFENSE]}")
pbMessage("Velocidad: #{pkmn.ev[:SPEED]}")
pbMessage("At. Esp: #{pkmn.ev[:SPECIAL_ATTACK]}")
pbMessage("Def. Esp: #{pkmn.ev[:SPECIAL_DEFENSE]}")
total = 0
pkmn.ev.each_value { |v| total += v }
pbMessage("Total: #{total}/510")
end
NPC que resetea EVs
# Resetear todos los EVs de un Pokémon
pbChoosePokemon(1, 2)
if pbGet(1) >= 0
pkmn = $player.party[pbGet(1)]
GameData::Stat.each_main do |s|
pkmn.ev[s.id] = 0
end
pkmn.calc_stats
pbMessage("Los EVs de #{pkmn.name} han sido reseteados a 0.")
end
Otros NPCs útiles
| NPC | Script | Descripción |
|---|---|---|
| Enfermera (curar equipo) | pbFadeOutIn { $player.heal_party } |
Cura a todos los Pokémon del equipo. |
| Vendedor de objetos | pbPokemonMart([: |
Abre una tienda con los objetos indicados. |
| Intercambio en juego | pbPokemon |
Intercambia un Pokémon del jugador por otro predefinido. |
| Peluquero (subir amistad) | pkmn.happiness += 10; pkmn.happiness = [pkmn.happiness, 255].min |
Aumenta la felicidad de un Pokémon. |
| Tutor de movimientos | pbMoveTutor(:FIREPUNCH, pkmn) |
Enseña un movimiento específico si el Pokémon es compatible. |