Mods

Idioma

Los mods realizan distintos cambios en el juego: pueden modificar la interfaz, añadir trajes o personajes y cambiar escenas existentes.

Los mods oficiales se encuentran dentro del propio juego. En la parte superior del menú principal abre la pestaña Mods.

Fuentes#

De forma predeterminada hay tres fuentes: Local Mods, Patron Mods y Official.

  • Local Mods: mods ya instalados.
  • Patron Mods: fuente oficial de mods disponible para patrons.
  • Official: fuente oficial disponible para todo el mundo.

Lista de fuentes#

Cómo crear tu propia fuente

Instalación y administración#

Cómo instalar un mod oficial#

  1. Inicia el juego.
  2. Abre la pestaña Mods.
  3. Selecciona una fuente, por ejemplo Official.
  4. Selecciona el mod.
  5. Pulsa Install.
  6. Reinicia el juego.

Cómo instalar un mod de terceros#

Descomprime el archivo del mod dentro de la carpeta de mods.

Dónde se guardan los mods#

De forma predeterminada se encuentran en Kunoichi Trainer/mods. Si la carpeta mods no existe, créala manualmente.

También puedes indicar otra ruta en los ajustes del juego, al final de la página de configuración.

Cómo desactivar un mod#

  1. Abre el menú principal.
  2. Abre la pestaña Mods.
  3. Selecciona Local Mods.
  4. Selecciona el mod.
  5. Pulsa Disable.

Estructura de un mod#

Cada mod debe estar en una carpeta independiente cuyo nombre coincida con el id del mod.

La carpeta debe contener un archivo manifest.json. Debe incluir la misma información que la fuente del mod, salvo el campo file_name.

Ejemplo#

{
  "id": "mod-id",
  "name": "Nombre del mod",
  "version": "1.0",
  "description": "Descripción del mod",
  "game_version": "0.16"
}

Scripts#

Los archivos de código deben usar .rpym o .rpymc. Son equivalentes a .rpy y .rpyc. Consulta la documentación de Ren’Py para más información.

El código se escribe en archivos .rpym; al iniciar el juego se compila a .rpymc.

Los archivos pueden estar directamente en la carpeta del mod o dentro de un archivo .rpa.

Cómo reemplazar una imagen del juego#

Añade a manifest.json el parámetro merge_folders, que es una lista de carpetas. Los archivos de esas carpetas serán tratados como si formaran parte de los archivos originales del juego.

Para reemplazar una imagen debes conocer su ruta original y colocar la nueva imagen en la misma ruta dentro de una de las carpetas indicadas en merge_folders.

Ejemplo#

La imagen original está en:

images/bg/beginning_room.webp

Estructura del mod:

mods
└───mod-id
│   │   manifest.json
│   └───my_folder
│       └───images
│           └───bg
│               └───beginning_room.webp

mod-id/my_folder/images/bg/beginning_room.webp será la nueva imagen.

manifest.json:

{
  "id": "mod-id",
  "name": "Nombre del mod",
  "version": "1.0",
  "description": "Descripción del mod",
  "game_version": "0.16",
  "merge_folders": ["my_folder"]
}

Cómo reaccionar a eventos del juego#

Crea una clase en un archivo .rpym que herede de Module y suscríbela a los eventos necesarios. Consulta la lista de eventos.

init python:
  class DemoModule(Module):
      id="demo"
      subscribe_on_events=["time_update", "change_location"]
      def on_event(self, event):
          if event.type == "time_update":
              if event.is_morning:
                  renpy.notify("Morning has come")
              elif event.is_evening:
                  renpy.notify("Evening came")
          elif event.type == "change_location":
              renpy.notify("New location: " + event.new_location.id)

Cómo añadir un objeto a una tienda#

Crea una variable de la clase Item para un objeto normal o de Outfit para ropa.

  • Se recomienda que el nombre de la variable empiece por item_.
  • El nombre del objeto debe ser único.

Objeto normal#

init python:
item_pen = Item(
  name=__("Bolígrafo"),
  cost=5,
  icon="my_mod_folder/pen.webp",
  descr=__("Bolígrafo con tinta."),
  shop="tenten",
)

Ropa#

init python:
item_ino_my_new_costume = Outfit(
  name=__("Nuevo traje para Ino"),
  cost=100,
  descr=__("Descripción del objeto"),
  char="Ino",
  lust=10,
  layer="costume",
  val="my_new_costume",
  shop="tenten",
  ptr=False,
  icon=KTCharInventoryPreview(
    char_name="ino",
    layers=ino_preview_layers + [("costume", "my_new_costume")],
    crop=ino_costume_inv_preview
  ),
)

Estructura de ejemplo:

mods
└───mod-id
│   │   manifest.json
│   │   item.rpym
│   └───merge_folder
│       └───images
│           └───characters
│               └───ino
│                   └───costume
│                       └───my_new_costume.webp

Con este método el objeto aparece en la tienda al iniciar una partida nueva. Para añadirlo al cargar una partida existente, usa Module y el evento game_loaded.

def on_event(self, event):
    if event.type == "game_loaded" and not inv_shop.has_item(item_my_item):
        inv_shop.add(item_my_item)

Variables del juego#

Momento del día#

if game.time.is_morning:
  "Ahora es de día"
elif game.time.is_evening:
  "Ahora es de noche"
$ game.time.set_morning()
"Ahora es de día"
$ game.time.set_evening()
"Ahora es de noche"
$ game.time.next_cycle()
"Cambia al siguiente periodo del día."
$ game.time.next_day()
"Avanza al día siguiente."
$ game.time.skip_days(10)
"Avanza 10 días."
Actualizado: Kunoichi Trainer Wiki