Clarus Victoria

Next Run · Mods

Guía de modificaciones de Next Run

Descripción detallada de cómo funcionan los mods de Next Run, la estructura de archivos y los componentes del juego. Guarda este enlace para obtener respuestas rápidas al crear y publicar tus propios mods.

1. General

Este documento describe el sistema de mods de Next Run: cómo instalarlos, crear tus propios mods y compartirlos con otros jugadores.

2. Sistema de mods

Después de iniciar el juego y pulsar los botones "Jugar" y "Crear partida", se analiza la carpeta Mods dentro del directorio del juego. Cada subcarpeta de esa carpeta se considera un mod si contiene el archivo modinfo.json.

2.1. Steam Workshop, instalación y publicación de mods

Si inicias el juego desde el cliente de Steam, en el menú "Jugar" verás el panel "Mods" con los siguientes botones:

  • Steam Workshop
  • Carpeta de mods
  • Publicar
  • Manual

2.1.1. Steam Workshop

Abre Steam Workshop dentro del cliente de Steam. Para descargar un mod, debes suscribirte a él. La descarga empezará automáticamente. Si el mod es grande, la descarga puede tardar algún tiempo. El estado de la descarga se muestra en el cliente de Steam.

2.1.2. Carpeta de mods

Abre la carpeta con los mods de tu juego.

2.1.3. Publicar

El juego analiza automáticamente la carpeta Mods y publica en Steam Workshop todos los mods de los que eres autor.

  • Si el mod es nuevo, se genera automáticamente un steam_id.
  • Si el mod ya existe, se actualizará.
  • El botón de publicación cambia su aspecto mientras dura la subida.
  • El mod solo se publicará si hay cambios.
  • Modificar el archivo modinfo.json no se considera un cambio de contenido.
  • Los mods publicados quedan disponibles para jugadores de todo el mundo. Steam Workshop no es la única forma de distribuir mods: también puedes compartirlos directamente colocando la carpeta del mod en el directorio Mods.

2.2. Archivos JSON

Todos los datos y textos del juego usan formato JSON. A diferencia de un texto plano, los datos deben ir entre llaves {}.

Descripción de la sintaxis JSON:

Se recomienda guiarse por los ejemplos de archivos del juego.

2.3. Estructura de archivos

Cada mod tiene una estructura de archivos similar a la del juego. Estos archivos agregan nuevo contenido o modifican el existente. Los archivos JSON agregan o modifican elementos individuales del juego. Los archivos de otros formatos (png, ogg) se reemplazan por completo.

Ejemplo: si creas el archivo data/game.json y modificas en él la entidad "Warrior" (clase de juego), solo cambiará esa clase y el resto de entidades en game.json quedarán sin cambios. Si añades el archivo portrait_warrior_front.png, reemplazará por completo la imagen correspondiente en el juego porque coincide en nombre.

Dentro de un mod hay archivos y carpetas obligatorios y opcionales. La estructura estándar es la siguiente:

  • Nombre de la carpeta del mod (puede ser cualquiera; no es el nombre del mod)
  • modinfo.json
  • preview.png
  • data/
  • icons/
  • sounds/
  • texts/
  • tiles/

Para entenderlo mejor, estudia los ejemplos del juego y los mods existentes. A continuación se describe cada carpeta y archivo.

2.3.1. modinfo.json

Archivo con los metadatos del mod. Parte de estos datos los usa Steam Workshop al publicar.

  • title — nombre del mod que se muestra en Steam.
  • version — versión del mod.
  • description — descripción del mod.
  • tags — etiquetas para navegar en Steam Workshop.
  • order — orden de carga de los mods. Si varios mods modifican los mismos datos, el mod con mayor order sobrescribirá al de menor valor.
  • steam_id — no es necesario indicarlo manualmente; se genera automáticamente al publicar.
  • created_time — fecha de creación.
  • changed_time — fecha de modificación.
  • Se pueden añadir otros campos, pero solo se usarán dentro del archivo. El autor del mod se determina automáticamente a través de Steam Workshop.

2.3.2. preview.png

Imagen (icono) del mod para Steam Workshop. Resolución recomendada: 256x256 o 512x512. Relación de aspecto cuadrada. Se permite PNG transparente o JPG.

2.3.3. data

Carpeta con archivos de datos JSON. Contiene los archivos que modifican entidades existentes del juego o añaden nuevas. Solo necesitas crear los archivos y campos que vayas a modificar o añadir. La descripción detallada de los datos modificables está en la sección 3.

2.3.4. icons

Carpeta con los iconos del juego. Incluye la mayoría de las imágenes excepto la GUI y los tiles. Se usan varios tamaños y capas estándar para distintas situaciones del juego. El juego utiliza archivos PNG con fondo transparente.

2.3.5. sounds

Carpeta con sonidos y música. Puedes añadir archivos nuevos o reemplazar los existentes. El formato usado es OGG.

2.3.6. texts

Carpeta con los textos localizados del juego. Cada archivo corresponde a un idioma y usa el estándar IETF BCP-47 / ISO. Actualmente se admiten 13 idiomas: ruRU.json, trTR.json, jaJP.json, koKR.json, zhTW.json, zhCN.json, plPL.json, ptBR.json, itIT.json, esES.json, frFR.json, deDE.json, enUS.json.

2.3.7. tiles

Carpeta con las imágenes de los tiles. Se usan archivos PNG con fondo transparente. El tamaño estándar del tile es 256x384. Los tiles constan de varias capas, como suelo, objetos, bosque, montañas y caminos.

2.4. Sincronización de mods

Después de obtener un mod, se sincroniza automáticamente con la última versión publicada en Steam Workshop cada vez que inicias el juego.

Si eres el autor del mod, no se realiza la sincronización y los archivos del mod no se sobrescriben. Esto evita que se pierdan tus cambios al reiniciar el juego.

Si quieres crear un mod basándote en el mod de otra persona, antes de reiniciar el juego debes:

  • Cambiar el nombre de la carpeta del mod a cualquier otro diferente de su id.
  • En el archivo modinfo.json, eliminar los campos: "author", "created_time", "steam_id", "changed_time".

2.5. Combinación de datos

Los archivos JSON de datos de los mods y del juego no se sustituyen, sino que se combinan.

Orden de combinación:

  • Se toman como base las entidades originales de los archivos JSON del juego.
  • Encima se aplican los datos de los mods. Los mods se aplican según las prioridades definidas por el campo order en modinfo.json.

Al combinar, todos los campos de todos los componentes se procesan por separado. Por ejemplo, si una entidad tiene "hideIfZero":true y necesitas que sea false, no basta con eliminar el campo: debes especificar explícitamente "hideIfZero":false.

Las listas del archivo list.json se combinan del mismo modo. No hace falta duplicar cada lista con todos sus campos si solo quieres añadir un elemento. Sin embargo, las listas que contienen solo datos simples se reemplazan por completo, como RndGoodEvents y RndEvents.

3. Componentes

Next Run está construido con arquitectura ECS. Todo el juego se compone de entidades. Una entidad es un contenedor de componentes y solo tiene el campo id. El resto de los datos se describen mediante componentes. Todos los datos se definen en archivos JSON.

Ejemplo de elemento en un archivo JSON:

"Speed": {
    "Button": {"panel": "statsPanel","iconType": "btnBig","numText1Type": "total","icon": "arrow2"}
    "Tooltip": {"text": "Speed"}
    "Total": {"now": 25}
}

En este ejemplo se describe la entidad "Speed" con tres componentes: Button: define el aspecto y comportamiento del botón en el juego; Tooltip: el contenido del aviso emergente; Total: el valor numérico de la entidad, en este caso la velocidad es 25.

A continuación encontrarás una descripción más detallada de los componentes y sus campos. Parte de las propiedades de los componentes se determinan automáticamente y no son editables en los archivos JSON. Por ejemplo, la dificultad de despejar mazmorras depende del nivel y otros parámetros que calcula el juego.

3.1. Button

Describe el aspecto y comportamiento de un botón en el juego.

  • panel = string, panel predeterminado del botón. Todos los botones están en algún panel o menú. Usa los ejemplos para elegir en qué panel colocar tu botón.
  • icon = string, nombre del icono del botón. El nombre corresponde a un archivo PNG en la carpeta icons.
  • iconType = string, tipo de botón; afecta al tamaño y elementos. Opciones: "btn" — botón simple, "btnBig" — botón con valor inferior.
  • color = string, color del fondo del icono, por ejemplo green, yellow. Colores aceptados por el juego: green, superGreen, lightGreen, darkGreen, red, superRed, darkRed, gray, lightGray, darkGray, lightBlue, blue, darkBlue, darkDarkBlue, grayYellow, yellow, pink, cyan, darkCyan, almostBlack, black, orange, darkOrange, lightViolet, purple, chartreuse, num, gameBack, blank, halfTrans, white, base.
  • numText1 = double, valor que muestra el icono.
  • numTextAdd = string, complemento del valor del icono, por ejemplo el símbolo "%".
  • numText1Type = string, tipo del valor del icono, por ejemplo level, total, duration.
  • numCustom = string, valor personalizado del icono, por ejemplo "∞".
  • numIcon = string, icono junto al valor, por ejemplo star para niveles, coin para objetos.
  • hotkey = string, atajo de teclado.
  • hide = bool, si el botón está oculto.
  • hideIfZero = bool, oculta el botón si el campo Total.now es 0.
  • disabled = bool, botón deshabilitado o habilitado; algunos menús al inicio del juego están deshabilitados.
  • interactable = bool, si el botón es interactivo (por defecto sí). Ejemplo de botones no interactivos: ranuras de inventario.
  • cantBeDeselect = bool, impide quitar la selección de este botón.
  • cantBeSelect = bool, impide seleccionar el botón al hacer clic.
  • draggable = bool, si se puede arrastrar con drag and drop.
  • x = double, posición X de la interfaz para botones sin paneles, como ranuras de inventario.
  • y = double, análogo a X pero en Y.
  • upMiniPred = string, nombre de la acción que se comprueba para la entidad. Si la acción está disponible, aparece un miniicono de aviso tipo Mejora.
  • craftMiniPred = string, aviso similar para la acción de Fabricación.
  • raiseMiniPred = string, aviso similar para la acción de Levantar.

3.2. Tooltip

Describe el contenido del aviso del botón.

  • text = string, nombre de la entidad visible en el juego.
  • dontShowDuration = bool, oculta el valor de duración de la entidad.
  • hideSources = bool, oculta las entidades fuente que afectan a este valor.
  • hideAsSubjTT = bool, impide mostrar este objeto como fuente para entidades relacionadas.
  • desc = string, texto descriptivo al inicio del aviso.
  • desc2 = string, texto descriptivo al final del aviso.
  • redDesc = string, texto descriptivo en rojo al final.
  • totalTextAs = string, texto que sustituye a "Total".
  • ttPos = string, posición del aviso respecto al botón; opciones "top", "left".

3.3. GameClass

Describe la mecánica de una clase de juego.

  • text = string, nombre de la clase en el juego.
  • portrait_back = string, imagen de fondo al elegir clase 391x598.
  • portrait_front = string, imagen transparente de la clase al elegirla 411x620.
  • figurine = string, avatar del personaje en el mapa 149x243.
  • doll = string, imagen en blanco y negro de la clase en el inventario 460x784.
  • bonusSkill1 = string, nombre de la habilidad 1 que recibe bonificación.
  • bonusSkillVal1 = double, tamaño de la bonificación de la habilidad 1.
  • bonusSkill2 = string, nombre de la habilidad 2 con bonificación.
  • bonusSkillVal2 = double, tamaño de la bonificación 2.
  • debuffSkill1 = string, nombre de la habilidad 1 con penalización.
  • debuffSkillVal1 = double, tamaño de la penalización 1.
  • debuffSkill2 = string, nombre de la habilidad 2 con penalización.
  • debuffSkillVal2 = double, tamaño de la penalización 2.
  • gold = double, cantidad de oro al inicio.
  • remains = double, número de restos al inicio.
  • equip = List<string>, lista de objetos equipados al inicio.
  • units = string, nombre de la criatura inicial.
  • itemName = string, nombre del objeto en el inventario al inicio.
  • itemNum = double, cantidad inicial de ese objeto.
  • learnList = string, lista de hechizos o planos para aprender; la lista está en list.json.
  • learnNum = double, número de hechizos o planos que se aprenderán de la lista.
  • lessTime = double, cuánto se reduce el tiempo entre ataques del Infierno.
  • manaBonus = double, bonificación de maná, máximo y total.
  • upgradeDexterityBonusMod = double, bonificación a mejoras por la habilidad Destreza.
  • skillPointsPerLevel = double, puntos de habilidad obtenidos por nivel.
  • upgradeManaCostMod = double, bonificación de eficiencia al mejorar hechizos.
  • freeRegion = bool, región gratuita.
  • necroBonus = bool, jugabilidad y bonificaciones del Nigromante.
  • druidBonus = bool, jugabilidad y bonificaciones del Druida.
  • stances = bool, disponibilidad de posturas/formas/órdenes.
  • defStance = string, postura predeterminada.
  • notDemo = bool, clase no disponible en la versión demo.
  • notTutorial = bool, si la clase está disponible en el modo Tutorial.

3.4. GameMode

Describe la mecánica de un modo de juego.

  • text = string, nombre del modo en el juego.
  • back = string, imagen de fondo al elegir modo 391x598.
  • moreTime = double, cuánto aumenta el tiempo entre ataques del Infierno.
  • lessTime = double, cuánto disminuye ese tiempo.
  • woundChance = double, probabilidad de recibir una herida.
  • notDemo = bool, modo no disponible en la versión demo.
  • scenario = string, nombre del mapa específico para este modo.
  • noHellAttacks = bool, sin ataques del Infierno en este modo (como en el modo sandbox).
  • savesOnExitOnly = bool, en este modo solo se puede guardar al salir del juego.

3.5. Biome

Define la mecánica de los biomas.

  • frequency = double, frecuencia de aparición del bioma al generar el mapa; cuanto mayor, más frecuente. Con 0 no se genera. El bioma Lava siempre se genera como región final.
  • hexBase = string, tile base del bioma; se genera como fondo bajo los asentamientos.
  • music = string, nombre del archivo de música del bioma.
  • hexPatterns = List<string>, lista de patrones de objetos en el bioma. Funciona como una baraja: los patrones se barajan y se extraen aleatoriamente; al llegar a 0 se vuelve a crear. El patrón tiene formato nombre_objeto#nombre_objeto, el símbolo # separa los objetos.
  • mobLevel1 .. mobLevel8 = string, nombre de las criaturas que se generan en el bioma según el nivel de la región.

3.6. TileAsset

Define el aspecto de un objeto en el mapa del juego.

  • tileMap = string, nombre de la capa: LandTilemap — superficie de tierra, ObjectTilemap — objeto normal, RoadTilemap — camino, etc.; la diferencia es el orden de superposición de las capas.
  • rawSprite = string, imagen 256x384 para colocar en el mapa.
  • icon = string, icono para colocar sobre todas las TileMap.
  • buttonIcon = bool, si se debe tomar el icono desde Button.
  • delLevel = double, nivel de eliminación; qué tan difícil es borrar el objeto mediante una acción.

3.7. Shop

Describe la mecánica de la tienda.

  • slots = int, número de ranuras de la tienda.
  • type = string, nombre del surtido de la tienda presente en list.json.

3.8. Item

Describe la mecánica de un objeto.

  • slot = string, nombre de la ranura de equipamiento.
  • stackable = bool, si puede haber más de 1 en un mismo montón.
  • upgradable = bool, si se puede mejorar; la duración de la mejora depende del nivel.
  • upProgress = double, duración de la mejora.
  • order = double, orden del objeto en la tienda; cuanto menor, más arriba.

3.9. Mob

Describe la mecánica de una criatura.

  • hell = bool, criatura infernal. Penalización al soborno. Participa en ataques del Infierno. Bonificación de restos.
  • undead = bool, criatura no-muerta. No puede sobornarse. Mecánica especial de mejora.
  • type = string, tipo de criatura — "Warriors", "Defenders", "Mages", "Gatherers", "Crafters". Determina el color del fondo, probabilidad de impacto al jugador, tipo de daño y botín.
  • upMob = string, en qué criatura se mejora.
  • upCostName = string, objeto necesario para la mejora.
  • upCostNum = double, cantidad del recurso para mejorar (por defecto 1).

3.10. Dungeon

Describe la mecánica de una mazmorra.

  • magic = bool, mazmorra mágica. Afecta al tipo de daño, botín y addons.
  • boss = bool, mazmorra final.

3.11. Ruins

Describe la mecánica de las ruinas: lugares para buscar objetos.

3.12. Addon

Mecánica de los addons. Los addons son objetos situados en la celda con una mazmorra o ruinas que modifican sus parámetros y otorgan recompensas adicionales.

  • skill = string, nombre de la habilidad que recibirá el jugador al limpiar la mazmorra o inspeccionar las ruinas. Se puede indicar "Random", "Strength", etc.
  • unit = string, nombre de la criatura de bonificación tras completar la acción. Se puede indicar "Random".
  • item = string, nombre del objeto de bonificación tras completar la acción. Se puede indicar "Random".
  • phyChanceMulti = double, modificador de la probabilidad de daño físico durante el Despeje. Por ejemplo, un 50(%).
  • magChanceMulti = double, modificador de la probabilidad de daño mágico durante el Despeje. Por ejemplo, un 50(%).
  • progressMulti = double, cuánto más tarda realizar acciones tipo Despeje o Inspección. Por ejemplo, un 100(%).
  • dmgMulti = double, modificador del tamaño del daño durante el Despeje. Por ejemplo, un 50(%).

3.13. Build

Define que el objeto es una construcción.

3.14. Center

Define que este objeto es un asentamiento.

  • captureProgress = double, esfuerzo necesario para capturar el asentamiento.
  • upProgress = double, esfuerzo necesario para mejorar el asentamiento.
  • upCostName1 = string, nombre del objeto 1 necesario para la mejora.
  • upCostNum1 = double, cantidad del objeto 1 necesaria para la mejora.
  • upCostName2 = string, análogo para el objeto 2.
  • upCostNum2 = double, análogo para la cantidad del objeto 2.
  • upCostName3 = string, análogo para el objeto 3.
  • upCostNum3 = double, análogo para la cantidad del objeto 3.
  • upProp = string, en qué asentamiento se mejora.

3.15. Gatherable

Define que este objeto se puede recolectar y que produce recursos.

  • gather = string, nombre del recurso que se obtendrá.
  • deposit = bool, si el recurso es un yacimiento; de ser así, se puede construir una mina aquí.

3.16. AlliedForest

Define la mecánica y valores del "Bosque aliado" al jugar como Druida.

  • allyBonus = double, tamaño del bono de "Bosque aliado".

3.17. Graveyard

Define la mecánica de que este objeto es un cementerio, relevante al jugar como Nigromante. Aquí se genera aleatoriamente la cantidad de restos que se puede obtener.

  • now = double, valor actual de restos.
  • rndMin = double, valor mínimo del número de restos.
  • rndMax = double, valor máximo del número de restos.
  • rndCeil = bool, redondeo al valor aleatorio superior.

3.18. Pred

Componente-acción. Aunque la mayor parte de su funcionalidad está en el código, parte es editable.

  • action = string, nombre de la acción que se ejecutará al realizar la acción.
  • local = bool, si es necesario estar en la misma celda que el objeto para interactuar.
  • attackPred = bool, esta acción es ofensiva y se aplicará automáticamente si se lanza un hechizo de combate.
  • gatherPred = bool, esta acción es de recolección y se aplicará automáticamente si se lanza un hechizo de recolección de recursos.
  • craftPred = bool, esta acción es de fabricación y se aplicará automáticamente si se lanza un hechizo al fabricar.
  • skill = string, habilidad usada para realizar la acción; por ejemplo, las acciones ofensivas usan la habilidad Ataque.
  • longPred = bool, la acción no es instantánea y requiere tiempo.
  • repeat = bool, la acción se repetirá hasta detenerla.
  • noOwner = bool, la acción no requiere seleccionar objetos.
  • skipLongTooltip = bool, versión simplificada del aviso para la acción.
  • onlyClass = string, acción de tipo postura, forma u orden disponible solo para una clase concreta.

3.19. Total

Componente que define el valor numérico de una entidad; normalmente es la cantidad de algo.

  • now = double, valor actual.
  • inc = double, aumento por turno.
  • max = double, valor máximo.
  • min = double, valor mínimo.
  • rndMin = double, valor mínimo de un número aleatorio.
  • rndMax = double, valor máximo de un número aleatorio; sustituye a now.
  • rndCeil = bool, redondeo hacia arriba al generar el valor aleatorio.
  • overMax = bool, permite superar el límite.
  • delIfZero = bool, eliminar si el valor es 0.
  • numPercent = bool, indica si el valor es un porcentaje.

3.20. Level

Componente que define el nivel de una entidad.

  • now = double, valor actual.
  • max = double, valor máximo.
  • min = double, valor mínimo.
  • localLevelPlus = int, bonificación al nivel local; solo funciona para objetos en el mapa; su nivel será el nivel de la región más este valor.

3.21. Duration

Componente que define la duración de una entidad.

  • now = double, valor actual.
  • max = double, valor máximo.
  • min = double, valor mínimo.
  • delIfZero = bool, eliminar si el valor es 0.

3.22. Mods

Componente-lista de modificadores. Al crear este componente se generan cambios que afectan a otras entidades. Al eliminar la entidad, los cambios desaparecen.

  • radius = int, radio de alcance de la modificación; solo funciona en el mapa.
  • objType = string, tipo de entidades a las que se aplica la modificación, por ejemplo "Stat", "Skill", "Prop", "Item", "ModableVal", "PropMod".
  • objName = string, nombre de la entidad, por ejemplo "Speed".
  • objComp = string, componente al que se aplica la modificación, por ejemplo "Total", "Level".
  • objKey = string, campo del componente al que se aplica la modificación, por ejemplo "now", "inc", "max".
  • modType = string, forma de influir en el campo: "add", "mult", "addPerLevel", "multPerLevel".
  • now = double, valor del modificador aplicado al cambio.
  • subjTooltipText = string, en la ayuda dinámica se añadirá la indicación del sujeto.
  • skipPerTooltip = bool, en el aviso se sustituirá PerLevel por Plus.
  • skipSubjTooltip = bool, omite el aviso para este sujeto.

3.23. ModableVals

Componente-lista de variables globales del juego. La vinculación a una entidad concreta es nominal. La mayor parte de la lógica de estas variables está en el código del juego.

  • now = double, valor de la variable.

3.24. Slot

Componente que define una entidad como ranura en el inventario.

  • name = string, nombre de la ranura. Para colocar un objeto en esta ranura, debe coincidir con el valor del campo slot del componente Item.

3.25. Container

Define la entidad como un contenedor con casillas.

  • cells = int, número de casillas del contenedor.
  • cellsPanel = string, nombre del panel.

3.26. Tom

Define que la entidad es un tomo de hechizos que se puede estudiar para obtener o mejorar un hechizo.

  • cast = string, nombre del hechizo.

3.27. Cast

Define que la entidad es un hechizo.

  • mana = double, coste de maná del hechizo.
  • predSkill = string, al activar este hechizo, qué tipo de acciones debe iniciarse; por ejemplo, para acciones de Ataque se lanzan automáticamente acciones ofensivas.
  • notSkills = string, aviso de qué acción se necesita para usar este hechizo.
  • attack = double, cuánto acelera el hechizo la acción tipo Ataque; es daño mágico de forma conceptual.
  • gather = double, cuánto acelera la acción tipo Recolección de recursos.
  • craft = double, cuánto acelera la acción tipo Fabricación.
  • heal = double, cuánto cura al héroe del jugador.
  • newEvent = string, nombre del evento que provoca el hechizo; normalmente eventos tipo buff.
  • teleport = bool, teletransporte a la ubicación elegida.
  • explore = double, explora esta celda y las adyacentes.

3.28. Blueprint

Mecánica de la entidad-plano.

  • item = string, nombre del objeto que se creará.
  • build = string, nombre de la construcción que se edificará.
  • costName1 = string, nombre del objeto 1 necesario para crear.
  • costNum1 = double, cantidad del objeto 1 necesaria.
  • costName2 = string, análogo para el objeto 2.
  • costNum2 = double, análogo para la cantidad del objeto 2.
  • costName3 = string, análogo para el objeto 3.
  • costNum3 = double, análogo para la cantidad del objeto 3.

3.29. Cost

Componente-precio; define que la entidad se puede comprar y vender.

  • raw = double, precio base sin modificadores. El precio de compra y venta se calcula a partir de él.

3.30. Event

Componente para eventos.

  • uniq = bool, evento único; la aparición de un evento repetido elimina el anterior con el mismo nombre.
  • rndEvent = bool, el evento es aleatorio.
  • nextEvent1 = string, nombre del primer evento que empezará al finalizar el actual.
  • nextEvent2 = string, nombre del segundo evento que empezará al finalizar el actual.
  • castType = string, tipo de efecto potenciador de hechizo; sobrescribe el mismo tipo.

3.31. Proc

Componente para el funcionamiento de los procs (probabilidades), por ejemplo la probabilidad de contraer una enfermedad.

  • addEvent = string, evento que se activará si la probabilidad se cumple.

3.32. ProcMod

Componente que permite a la entidad influir en la probabilidad de procs.

  • proc = string, nombre del proc sobre el que influye este componente.
  • chance = double, intensidad de la influencia; parte de la funcionalidad está en el código.
  • dependsLevel = bool, dependencia del nivel de la entidad.

3.33. Usable

Componentes de uso único que otorgan un efecto, por ejemplo pociones. El componente se activa al ejecutar la acción Usar.

  • stat = string, nombre del atributo afectado.
  • skill = string, nombre de la habilidad afectada.
  • nowBonus = double, bonificación que afecta al campo Total.now del componente.
  • maxBonus = double, bonificación que afecta al campo Total.max del componente.
  • cure = bool, si el objeto cura del efecto Enfermedad.

3.34. Drankable

Componente que permite beber de un objeto del mapa, por ejemplo Lago, Oasis y similares.

3.35. Sphinx

Componente-misión en el mapa, Esfinge. Los parámetros se definen automáticamente según los niveles de la región.

3.36. Living_tree

Componente-misión en el mapa, Árbol viviente. Los parámetros se definen automáticamente según los niveles de la región.

3.37. Vision

Mecanismo de un objeto del mapa que amplía el radio visible al entrar el héroe del jugador en la ubicación con esta entidad.

  • explore = int, radio de exploración. 1 — exploración normal, 2 — aumentada en una casilla.

3.38. Remains

Descripción de la entidad como componente de restos. Permite convertir estas entidades en no-muertos.

3.39. Audio_comp

Componente que permite reproducir sonidos para una entidad concreta según su tipo.

  • click = string, sonido al pulsar la entidad; se usa para acciones y hechizos.
  • added = string, sonido al crearse la entidad; se usa para eventos.
  • ambient1 = string, sonido ambiental pista 1.
  • ambient2 = string, sonido ambiental pista 2.
  • ambient3 = string, sonido ambiental pista 3.
  • process = List<string>, lista de sonidos que se reproducen mientras se ejecuta la acción.
  • waits = List<double>, lista de pausas entre sonidos.
  • finish = string, sonido al terminar la acción.
  • rndProcess = bool, pequeños efectos aleatorios para los sonidos durante la reproducción.

3.40. Childs

Componente que crea nuevas entidades de forma recursiva.

  • list = List<Entity>, lista de hijos que se crean automáticamente y se vinculan a la entidad concreta.

3.41. Preds

Componente que crea acciones para una entidad concreta, aunque la mayor parte de las entidades se definen en el código del juego.

  • list = List<string>.

3.42. Equip

Componente-marca que indica que este objeto se puede equipar en el héroe.

3.43. Res

Componente-indicador de que esta entidad es un recurso. Necesario para avisos, animaciones y resumen del juego.

3.44. TurnAct

El componente indica que la entidad debe comprobarse cada tick del tiempo de juego, por ejemplo para los componentes Total y Duration.

4. Listas

El archivo list.json contiene secciones de datos que no son entidades ni componentes. Definen diversas listas para generar contenido del juego.

4.1. RndGoodEvents

Lista de eventos aleatorios buenos que se generan justo al inicio de la partida.

4.2. RndEvents

Lista de eventos aleatorios buenos y malos que se generarán durante la partida.

4.3. Generator_dungeon_addons_physical

Lista de addons que se generarán para mazmorras con daño físico.

4.4. Generator_dungeon_addons_magical

Lista de addons que se generarán para mazmorras con daño mágico.

4.5. Generator_ruins_addons

Lista de addons que se generarán para ruinas.

4.6. Generator_settlement_levels

Lista de correspondencias entre niveles de región y nombres de entidades-asentamientos; por ejemplo, "lvl1":"Village" significa que en una región de nivel 1 se generará un asentamiento tipo Village.

4.7. Generator_rar_metals

Lista de correspondencias entre niveles de región y nombres de yacimientos; por ejemplo, "lvl2":"Deposit_tin" significa que en una región de nivel 2 se generará un yacimiento de estaño.

4.8. Generator_mages

Lista de correspondencias entre niveles de región y nombres de magos que se generarán y custodiarán las torres de magos; por ejemplo, "lvl3":"Priestesses" significa que en una región de nivel 3 se generarán sacerdotisas.

4.9. LevelMobs_

Listas de criaturas para distintos niveles de región que recibirá el jugador después de liberar prisioneros al despejar una mazmorra o inspeccionar ruinas.

4.10. Crafter_start, Lord_start, Mage_start,

Diferentes listas de objetos que reciben las distintas clases de juego al inicio en el componente GameClass, en el campo learnList. El número de objetos se genera en el campo learnNum.

  • obj = string, nombre del objeto.
  • min = double, número aleatorio mínimo.
  • max = double, número aleatorio máximo.
  • chance = double, probabilidad de generar este objeto.
  • Puedes crear otras listas y vincularlas a diferentes clases si necesitas aprender otros planos o hechizos.

4.11. Gold_

Esta lista define la cantidad de oro que se genera según el nivel de la región. El oro aparece con un 50% de probabilidad en todos los tipos de recompensas del mapa. Consulta el punto 4.10 para la sintaxis.

4.12. Loot_-

Grupo de listas que define la generación de recompensas según el nivel de la región. Se aplica a criaturas, mazmorras y ruinas. Para criaturas, determina la probabilidad de soltar objetos concretos con un 50% de probabilidad; el otro 50% usa las listas del punto 4.13. Consulta el punto 4.10 para la sintaxis.

4.13. Warriors_, Defenders_, Mages_, Gatherers_, Crafters_,

Grupo de listas que define la generación de recompensas según el nivel de la región y la clase de las criaturas. Se aplica solo a criaturas. Estas listas amplían las listas del tipo Loot_- y se activan en el 50% de los casos para generar recompensas dependientes de la clase, por ejemplo cuando se necesita que los magos obtengan tomos de hechizos y bastones con mayor frecuencia. Consulta el punto 4.10 para la sintaxis.

4.14. Shop_, Books_

Listas para distintos niveles de región, por ejemplo Books5 o Shop6. Se utilizan para generar el surtido de las tiendas. Consulta el punto 4.10 para la sintaxis. Estas listas se definen en el componente Shop, campo type; para torres se generan desde el código del juego.

Next Run — guía de mods