Clarus Victoria

Next Run · Mods

Guide des mods Next Run

Présentation détaillée du fonctionnement des mods de Next Run, de la structure des fichiers et des composants du jeu. Gardez ce lien sous la main pour obtenir des réponses rapides lors de la création et de la publication de vos propres mods.

1. Général

Ce document décrit le système de mods de Next Run : comment les installer, créer vos propres mods et les partager avec d’autres joueurs.

2. Système de mods

Après le lancement du jeu et les clics sur « Jouer » et « Créer une partie », le dossier Mods situé dans le répertoire du jeu est analysé. Chaque sous-dossier de ce répertoire est considéré comme un mod si un fichier modinfo.json est présent.

2.1. Steam Workshop, installation et publication des mods

Si vous lancez le jeu via le client Steam, le menu « Jouer » vous donnera accès au panneau « Mods » avec les boutons suivants :

  • Steam Workshop
  • Dossier des mods
  • Publier
  • Guide

2.1.1. Steam Workshop

Ouvre le Steam Workshop dans le client Steam. Pour télécharger un mod, il suffit de s’y abonner. Le téléchargement démarre alors automatiquement. Si le mod est volumineux, cette étape peut prendre du temps. L’état du téléchargement est affiché dans le client Steam.

2.1.2. Dossier des mods

Ouvre le dossier des mods de votre jeu.

2.1.3. Publier

Le jeu analyse automatiquement le dossier Mods et publie dans le Steam Workshop tous les mods dont vous êtes l’auteur.

  • Si le mod est nouveau, un steam_id est généré automatiquement.
  • Si le mod existe déjà, il sera mis à jour.
  • Pendant la mise en ligne, l’apparence du bouton de publication change temporairement.
  • Un mod n’est publié qu’en cas de modifications.
  • La modification du fichier modinfo.json n’est pas considérée comme un changement de contenu.
  • Les mods publiés deviennent accessibles aux joueurs du monde entier. Steam Workshop n’est pas l’unique moyen de diffusion : vous pouvez aussi partager un mod en plaçant directement son dossier dans le répertoire Mods.

2.2. Fichiers JSON

Toutes les données et tous les textes du jeu utilisent le format JSON. La principale différence avec un format texte classique est que les données doivent être placées entre accolades {}.

Description de la syntaxe JSON :

Nous recommandons de vous appuyer sur les exemples de fichiers fournis avec le jeu.

2.3. Structure des fichiers

Chaque mod possède une structure de fichiers analogue à celle du jeu. Ces fichiers ajoutent un nouveau contenu ou modifient un contenu existant. Les fichiers JSON ajoutent ou modifient des éléments de jeu précis. Les fichiers d’autres formats (png, ogg) sont remplacés intégralement.

Exemple : si vous créez le fichier data/game.json et modifiez l’entité "Warrior" (classe du jeu), seule cette classe sera modifiée, le reste des entités de game.json restera inchangé. Si vous ajoutez le fichier portrait_warrior_front.png, il remplacera complètement l’image correspondante dans le jeu car le nom coïncide.

Un mod comprend des fichiers et dossiers obligatoires et facultatifs. La structure standard est la suivante :

  • Nom du dossier du mod (libre, il ne correspond pas au nom du mod)
  • modinfo.json
  • preview.png
  • data/
  • icons/
  • sounds/
  • texts/
  • tiles/

Pour mieux comprendre, nous vous conseillons d’étudier les exemples fournis dans le jeu ainsi que les mods existants. La description détaillée de chaque dossier et fichier figure ci-dessous.

2.3.1. modinfo.json

Fichier contenant les métadonnées du mod. Une partie de ces données est utilisée par le Steam Workshop lors de la publication.

  • title — nom du mod affiché dans Steam.
  • version — version du mod.
  • description — description du mod.
  • tags — étiquettes pour la navigation dans Steam Workshop.
  • order — ordre de chargement des mods. Si plusieurs mods modifient les mêmes données, celui dont l’ordre est le plus élevé écrasera celui dont la valeur est inférieure.
  • steam_id — inutile de le renseigner manuellement, il est généré automatiquement lors de la publication.
  • created_time — date de création.
  • changed_time — date de modification.
  • Il est possible d’ajouter d’autres champs, mais ils ne seront utilisés qu’au sein du fichier. L’auteur du mod est déterminé automatiquement via Steam Workshop.

2.3.2. preview.png

Image (icône) du mod pour Steam Workshop. Résolution recommandée : 256x256 ou 512x512. Format carré. PNG transparent ou JPG acceptés.

2.3.3. data

Dossier contenant les fichiers JSON de données. Il comprend les fichiers qui modifient des entités existantes du jeu ou en ajoutent de nouvelles. Vous pouvez créer uniquement les fichiers et champs que vous souhaitez modifier ou ajouter. La description détaillée des données modifiables se trouve dans la section 3.

2.3.4. icons

Dossier des icônes du jeu. Il contient la majorité des images, à l’exception de l’interface et des tuiles. Plusieurs tailles et calques standards sont utilisés selon les situations de jeu. Le jeu exploite des fichiers PNG avec fond transparent.

2.3.5. sounds

Dossier des sons et musiques. Vous pouvez y ajouter de nouveaux fichiers ou remplacer ceux existants. Format utilisé : OGG.

2.3.6. texts

Dossier des textes localisés du jeu. Chaque fichier correspond à une langue et suit le standard IETF BCP-47 / ISO. À ce jour, 13 langues sont prises en charge : 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

Dossier des images de tuiles. Fichiers PNG avec fond transparent. Taille standard d’une tuile : 256x384. Les tuiles sont composées de plusieurs calques tels que sol, objets, forêt, montagnes, routes.

2.4. Synchronisation des mods

Après avoir obtenu un mod, il est automatiquement synchronisé avec la dernière version publiée sur le Steam Workshop à chaque lancement du jeu.

Si vous êtes l'auteur du mod, la synchronisation n'est pas effectuée et les fichiers du mod ne sont pas écrasés. Cela permet de ne pas perdre vos modifications en travaillant sur le mod après un redémarrage du jeu.

Si vous voulez créer un mod à partir de celui de quelqu’un d’autre, avant de redémarrer le jeu vous devez :

  • Renommer le dossier du mod avec un nom différent de son id.
  • Dans le fichier modinfo.json, supprimer les champs : "author", "created_time", "steam_id", "changed_time".

2.5. Fusion des données

Les fichiers JSON des mods et du jeu ne sont pas remplacés mais fusionnés.

Ordre de fusion :

  • Les entités originales des fichiers JSON du jeu sont prises comme base.
  • Les données des mods sont appliquées par-dessus. Les mods sont appliqués selon les priorités définies par le champ order dans modinfo.json.

Lors de la fusion, chaque champ de chaque composant est traité séparément. Par exemple, si une entité possède "hideIfZero":true et que vous voulez que la valeur devienne false, il ne suffit pas de supprimer ce champ : vous devez définir explicitement "hideIfZero":false.

Les listes du fichier list.json sont fusionnées de la même manière. Il n’est pas nécessaire de dupliquer chaque liste avec tous ses champs si vous ajoutez seulement un élément. En revanche, les listes contenant uniquement des données simples sont entièrement remplacées, comme RndGoodEvents et RndEvents.

3. Composants

Le jeu Next Run est construit sur une architecture ECS. Tout le jeu est composé d’entités. Une entité est un conteneur de composants et ne possède qu’un champ id. Toutes les autres données sont décrites par des composants. Toutes les données sont définies dans des fichiers JSON.

Exemple d’élément dans un fichier JSON :

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

Cet exemple décrit l’entité "Speed" avec trois composants : Button — définit l’apparence et le comportement du bouton dans le jeu ; Tooltip — description de l’infobulle ; Total — valeur numérique de l’entité, ici la vitesse est égale à 25.

Vous trouverez ci-dessous une description plus détaillée des composants et de leurs champs. Certaines propriétés des composants sont définies automatiquement et ne peuvent pas être modifiées dans les fichiers JSON. Par exemple, la difficulté du Nettoyage des donjons dépend du Niveau et d’autres paramètres calculés par le jeu.

3.1. Button

Décrit l’apparence et le comportement d’un bouton dans le jeu.

  • panel = string, panneau du bouton par défaut. Tous les boutons du jeu se trouvent dans des panneaux et menus. Utilisez les exemples pour choisir le panneau où placer votre bouton.
  • icon = string, nom de l’icône du bouton. Le nom de l’icône est issu du dossier icons, fichier PNG.
  • iconType = string, type de bouton, influence la taille et les éléments du bouton. Variantes : "btn" — bouton simple, "btnBig" — bouton avec valeur en bas.
  • color = string, couleur du fond de l’icône, par exemple green, yellow. Liste des couleurs reconnues par le jeu : 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, valeur de l’icône.
  • numTextAdd = string, suffixe de la valeur de l’icône, par exemple le symbole "%".
  • numText1Type = string, type de valeur de l’icône, par exemple level, total, duration.
  • numCustom = string, valeur personnalisée de l’icône, par exemple "∞".
  • numIcon = string, icône placée à côté de la valeur, par exemple star pour les niveaux, coin pour les objets.
  • hotkey = string, raccourci clavier.
  • hide = bool, si le bouton est masqué.
  • hideIfZero = bool, masque le bouton si le champ Total.now du composant Total est égal à 0.
  • disabled = bool, bouton désactivé ou activé, par exemple certains menus sont désactivés au début de la partie.
  • interactable = bool, si le bouton est interactif, par défaut oui. Exemple de boutons non interactifs : emplacements de l’inventaire.
  • cantBeDeselect = bool, interdit de retirer la sélection de ce bouton.
  • cantBeSelect = bool, interdit la sélection du bouton lors du clic.
  • draggable = bool, possibilité de déplacer le bouton en glisser-déposer.
  • x = double, position du bouton dans l’interface sur l’axe X, utilisée pour les boutons sans panneaux, par exemple les emplacements dans l’inventaire.
  • y = double, analogue de X sur l’axe Y.
  • upMiniPred = string, nom de l’action vérifiée pour cette entité. Si l’action est disponible, une mini-icône d’info de type Amélioration apparaît.
  • craftMiniPred = string, info-bulle similaire pour l’action Artisanat.
  • raiseMiniPred = string, info-bulle similaire pour l’action Invocation.

3.2. Tooltip

Décrit le contenu de l’infobulle du bouton.

  • text = string, nom de l’entité affiché dans le jeu.
  • dontShowDuration = bool, interdit l’affichage de la valeur de durée de l’entité.
  • hideSources = bool, interdit d’afficher les entités sources influençant la valeur de cette entité.
  • hideAsSubjTT = bool, interdit d’afficher cet objet comme source pour les entités liées.
  • desc = string, texte descriptif, placé au début de l’infobulle.
  • desc2 = string, second texte descriptif, placé à la fin de l’infobulle.
  • redDesc = string, texte descriptif en rouge, placé à la fin.
  • totalTextAs = string, texte remplaçant "Total".
  • ttPos = string, position de l’infobulle par rapport au bouton, options "top", "left".

3.3. GameClass

Décrit la mécanique d’une classe de jeu.

  • text = string, nom de la classe dans le jeu.
  • portrait_back = string, image de fond lors du choix de la classe 391x598.
  • portrait_front = string, image transparente de la classe lors du choix 411x620.
  • figurine = string, image de l’avatar du personnage sur la carte 149x243.
  • doll = string, image monochrome de la classe dans l’inventaire 460x784.
  • bonusSkill1 = string, nom du premier Skill obtenu en bonus.
  • bonusSkillVal1 = double, valeur du bonus du Skill 1.
  • bonusSkill2 = string, nom du deuxième Skill obtenu en bonus.
  • bonusSkillVal2 = double, valeur du bonus 2.
  • debuffSkill1 = string, nom du premier Skill subissant un malus.
  • debuffSkillVal1 = double, valeur du malus 1.
  • debuffSkill2 = string, nom du deuxième Skill subissant un malus.
  • debuffSkillVal2 = double, valeur du malus 2.
  • gold = double, quantité d’Or au départ pour la classe.
  • remains = double, nombre d’ossements au départ.
  • equip = List<string>, liste des objets à équiper au départ.
  • units = string, nom de la créature présente au départ.
  • itemName = string, nom de l’objet dans l’inventaire au départ.
  • itemNum = double, quantité de l’objet de départ.
  • learnList = string, liste des sorts ou plans à étudier, la liste se trouve dans le fichier list.json.
  • learnNum = double, nombre de sorts ou plans qui seront appris depuis la liste.
  • lessTime = double, réduction du temps entre les attaques de l’enfer.
  • manaBonus = double, bonus de mana, maximum et total.
  • upgradeDexterityBonusMod = double, bonus aux objets améliorables lié au Skill Dextérité.
  • skillPointsPerLevel = double, nombre de points de Skill accordés à chaque montée de Niveau.
  • upgradeManaCostMod = double, bonus d’efficacité pour l’amélioration des sorts.
  • freeRegion = bool, région gratuite.
  • necroBonus = bool, gameplay et bonus du Nécromancien.
  • druidBonus = bool, gameplay et bonus du Druide.
  • stances = bool, présence de postures/formes/ordres.
  • defStance = string, posture par défaut.
  • notDemo = bool, classe indisponible dans la Version démo.
  • notTutorial = bool, classe disponible dans le mode Tutoriel.

3.4. GameMode

Décrit la mécanique d’un mode de jeu.

  • text = string, nom du mode dans le jeu.
  • back = string, image de fond lors du choix du mode 391x598.
  • moreTime = double, augmentation du temps entre les attaques de l’enfer.
  • lessTime = double, réduction du temps entre les attaques de l’enfer.
  • woundChance = double, Chance de recevoir une blessure.
  • notDemo = bool, mode indisponible dans la Version démo.
  • scenario = string, nom d’une carte distincte pour ce mode.
  • noHellAttacks = bool, aucune attaque de l’enfer dans ce mode (comme dans le bac à sable).
  • savesOnExitOnly = bool, dans ce mode, sauvegarde uniquement à la fermeture du jeu.

3.5. Biome

Détermine la mécanique des biomes.

  • frequency = double, fréquence d’apparition du biome lors de la génération de la carte : plus la valeur est élevée, plus il apparaît souvent. À 0, il n’est pas généré. Le biome Lava est toujours généré comme région finale.
  • hexBase = string, tuile de base pour ce biome, générée comme fond sous les colonies.
  • music = string, nom du fichier de piste musicale du biome.
  • hexPatterns = List<string>, liste de modèles d’objets du biome. Fonctionne comme un paquet de cartes : les modèles sont mélangés puis tirés aléatoirement, quand le paquet atteint 0 il est recréé. Un modèle est au format : nom_objet#nom_objet, le symbole # est le séparateur entre objets.
  • mobLevel1 .. mobLevel8 = string, nom des créatures générées dans le biome selon le Niveau de la région.

3.6. TileAsset

Détermine l’apparence d’un objet sur la carte du jeu.

  • tileMap = string, nom du calque LandTilemap — surface terrestre, ObjectTilemap — objet normal, RoadTilemap — route, etc., seule l’ordre de superposition diffère.
  • rawSprite = string, image 256x384 à placer sur la carte.
  • icon = string, icône à ajouter par-dessus toutes les TileMap.
  • buttonIcon = bool, faut-il reprendre l’icône depuis Button.
  • delLevel = double, Niveau de suppression, indique la difficulté de retirer l’objet via une action.

3.7. Shop

Décrit la mécanique d’une boutique.

  • slots = int, nombre d’emplacements de la boutique.
  • type = string, nom de l’assortiment de boutique présent dans list.json.

3.8. Item

Décrit la mécanique d’un objet.

  • slot = string, nom du slot d’équipement.
  • stackable = bool, possibilité d’empiler plusieurs exemplaires dans une seule pile.
  • upgradable = bool, l’objet peut-il être amélioré, la durée d’amélioration dépend du Niveau.
  • upProgress = double, durée d’amélioration.
  • order = double, ordre de l’objet dans la boutique, plus la valeur est faible plus l’objet est haut.

3.9. Mob

Décrit la mécanique d’une créature.

  • hell = bool, créature infernale. Malus lors du pot-de-vin. Participe aux attaques de l’enfer. Bonus d’ossements.
  • undead = bool, créature mort-vivante. Ne peut pas être soudoyée. Mécanique spéciale d’amélioration.
  • type = string, type de créature — "Warriors", "Defenders", "Mages", "Gatherers", "Crafters". Détermine la couleur du fond, la chance de toucher le joueur, le type de dégâts, le type de butin.
  • upMob = string, en quoi la créature est améliorée.
  • upCostName = string, objet requis pour l’amélioration.
  • upCostNum = double, quantité de ressource requise pour l’amélioration, par défaut 1.

3.10. Dungeon

Décrit la mécanique d’un donjon.

  • magic = bool, donjon magique. Influence le type de dégâts, le butin et les Addons.
  • boss = bool, donjon final.

3.11. Ruins

Décrit la mécanique des ruines — lieux où chercher des objets.

3.12. Addon

Mécanique des extensions. Les extensions sont des objets situés sur une case avec un donjon ou des ruines, qui en modifient les paramètres et offrent des récompenses distinctes.

  • skill = string, nom du Skill que recevra le joueur en cas de Nettoyage du donjon ou d’Inspection des ruines. Possibilité d’indiquer : "Random", "Strength", etc.
  • unit = string, nom de la créature bonus après la fin de l’action. Peut être "Random".
  • item = string, nom de l’objet bonus après la fin de l’action. Peut être "Random".
  • phyChanceMulti = double, modificateur de Chance de dégâts physiques lors du Nettoyage. Par exemple +50(%).
  • magChanceMulti = double, modificateur de Chance de dégâts magiques lors du Nettoyage. Par exemple +50(%).
  • progressMulti = double, durée allongée de l’action Nettoyage ou Inspection. Par exemple +100(%).
  • dmgMulti = double, modificateur de la taille des dégâts lors du Nettoyage. Par exemple +50(%).

3.13. Build

Indique que cet objet est une construction.

3.14. Center

Indique que cet objet est une colonie.

  • captureProgress = double, effort nécessaire pour capturer la colonie.
  • upProgress = double, effort nécessaire pour améliorer la colonie.
  • upCostName1 = string, nom du premier objet requis pour l’amélioration.
  • upCostNum1 = double, quantité du premier objet requis.
  • upCostName2 = string, similaire pour le deuxième objet.
  • upCostNum2 = double, similaire pour le deuxième objet.
  • upCostName3 = string, similaire pour le troisième objet.
  • upCostNum3 = double, similaire pour le troisième objet.
  • upProp = string, dans quelle colonie l’objet est amélioré.

3.15. Gatherable

Indique que cet objet peut être collecté pour obtenir des ressources.

  • gather = string, nom de la ressource obtenue.
  • deposit = bool, s’il s’agit d’un gisement : dans ce cas, une mine peut être construite ici.

3.16. AlliedForest

Définit la mécanique et les valeurs de la « Forêt alliée » quand on joue Druide.

  • allyBonus = double, valeur du bonus "Forêt alliée".

3.17. Graveyard

Indique que cet objet est un cimetière, important en jouant Nécromancien. La valeur des ossements disponibles y est générée aléatoirement.

  • now = double, valeur actuelle des ossements.
  • rndMin = double, valeur minimale de l’aléatoire.
  • rndMax = double, valeur maximale de l’aléatoire.
  • rndCeil = bool, arrondi supérieur pour la valeur aléatoire.

3.18. Pred

Composant-action. Bien que la majeure partie de sa fonctionnalité soit masquée dans le code, une partie est accessible.

  • action = string, nom de l’action qui se déclenche lors de l’exécution.
  • local = bool, faut-il se trouver sur la même case que l’objet pour interagir.
  • attackPred = bool, cette action est de type Attaque, elle sera appliquée automatiquement si un sort de combat est lancé.
  • gatherPred = bool, cette action est de type Collecte de ressources, elle sera appliquée automatiquement si un sort de collecte est lancé.
  • craftPred = bool, cette action est de type Artisanat, elle sera appliquée automatiquement si un sort d’artisanat est lancé.
  • skill = string, Skill utilisé pour réaliser l’action, par exemple le Skill Attaque pour les actions offensives.
  • longPred = bool, cette action n’est pas instantanée et demande du temps.
  • repeat = bool, l’action se répétera jusqu’à l’arrêt.
  • noOwner = bool, cette action ne nécessite pas de sélectionner d’objets.
  • skipLongTooltip = bool, version simplifiée de l’infobulle pour l’action.
  • onlyClass = string, cette action de type posture, forme ou ordre est disponible uniquement pour une classe donnée.

3.19. Total

Composant définissant la valeur numérique d’une entité, généralement une quantité de quelque chose.

  • now = double, valeur actuelle.
  • inc = double, gain par tour.
  • max = double, valeur maximale.
  • min = double, valeur minimale.
  • rndMin = double, valeur minimale du nombre aléatoire.
  • rndMax = double, valeur maximale du nombre aléatoire, remplace now.
  • rndCeil = bool, arrondi supérieur lors de la génération d’une valeur aléatoire.
  • overMax = bool, autorise le dépassement de la limite.
  • delIfZero = bool, supprime si la valeur est égale à 0.
  • numPercent = bool, indique si la valeur est un pourcentage.

3.20. Level

Composant définissant le Niveau d’une entité.

  • now = double, valeur actuelle.
  • max = double, valeur maximale.
  • min = double, valeur minimale.
  • localLevelPlus = int, bonus au Niveau local, fonctionne uniquement pour les objets sur la carte : leur Niveau devient égal au Niveau de la région plus localLevelPlus.

3.21. Duration

Composant définissant la durée d’une entité.

  • now = double, valeur actuelle.
  • max = double, valeur maximale.
  • min = double, valeur minimale.
  • delIfZero = bool, supprime si la valeur est égale à 0.

3.22. Mods

Composant-liste de modificateurs. Lors de sa création, un ensemble de changements affectant d’autres entités est généré. Lors de la suppression de l’entité, ces changements disparaissent.

  • radius = int, rayon d’effet du modificateur, fonctionne uniquement sur la carte.
  • objType = string, type d’entités auxquelles s’applique la modification, par exemple "Stat", "Skill", "Prop", "Item", "ModableVal", "PropMod".
  • objName = string, nom de l’entité, par exemple "Speed".
  • objComp = string, composant auquel la modification s’applique, par exemple "Total", "Level".
  • objKey = string, champ du composant modifié, par exemple "now", "inc", "max".
  • modType = string, manière d’influer sur le champ : "add", "mult", "addPerLevel", "multPerLevel".
  • now = double, valeur du modificateur appliquée au changement.
  • subjTooltipText = string, ajoute une mention du sujet dans l’infobulle dynamique.
  • skipPerTooltip = bool, dans l’infobulle, remplace PerLevel par Plus.
  • skipSubjTooltip = bool, ignorer l’infobulle pour ce sujet.

3.23. ModableVals

Composant-liste de variables globales du jeu. L’association à une entité précise est conventionnelle. La majeure partie de la logique de ces variables est cachée dans le code du jeu.

  • now = double, valeur de la variable.

3.24. Slot

Composant qui définit l’entité comme slot dans l’inventaire.

  • name = string, nom du slot. Pour placer un objet dans ce slot, la valeur du champ slot du composant Item doit correspondre.

3.25. Container

Définit cette entité comme un conteneur avec des cases.

  • cells = int, nombre de cases dans le conteneur.
  • cellsPanel = string, nom du panneau.

3.26. Tom

Indique que l’entité est un tome de sorts pouvant être étudié pour obtenir ou améliorer un sort.

  • cast = string, nom du sort.

3.27. Cast

Indique que l’entité est un sort.

  • mana = double, coût en mana du sort.
  • predSkill = string, lors de l’activation de ce sort, quel type d’actions doit être lancé, par exemple pour le type Attaque les actions offensives se déclenchent automatiquement.
  • notSkills = string, info-bulle indiquant l’action nécessaire pour utiliser ce sort.
  • attack = double, accélère de combien une action de type Attaque lors de l’utilisation du sort, assimilé à des dégâts magiques.
  • gather = double, accélère de combien une action de type Collecte de ressources.
  • craft = double, accélère de combien une action de type Artisanat.
  • heal = double, quantité de soin appliquée au héros du joueur.
  • newEvent = string, nom de l’événement déclenché par le sort, généralement un événement de type buff.
  • teleport = bool, téléportation vers l’emplacement choisi.
  • explore = double, explore cette case et les voisines.

3.28. Blueprint

Mécanique d’une entité-plan.

  • item = string, nom de l’objet qui sera créé.
  • build = string, nom de la construction qui sera bâtie.
  • costName1 = string, nom du premier objet requis pour la création.
  • costNum1 = double, quantité du premier objet requis.
  • costName2 = string, idem pour le deuxième objet.
  • costNum2 = double, idem pour le deuxième objet.
  • costName3 = string, idem pour le troisième objet.
  • costNum3 = double, idem pour le troisième objet.

3.29. Cost

Composant-prix, indique que l’entité peut être achetée et vendue.

  • raw = double, prix de base sans modificateurs. Le Coût d’achat et de vente est calculé à partir de cette valeur.

3.30. Event

Composant pour les événements.

  • uniq = bool, événement unique : l’apparition d’un événement identique supprime l’ancien portant le même nom.
  • rndEvent = bool, l’événement est aléatoire.
  • nextEvent1 = string, nom du premier événement qui démarre à la fin de l’actuel.
  • nextEvent2 = string, nom du deuxième événement qui démarre à la fin de l’actuel.
  • castType = string, type d’effet d’amélioration du sort, remplace le type similaire.

3.31. Proc

Composant de fonctionnement des procs (chances), par exemple la probabilité d’attraper une maladie.

  • addEvent = string, événement déclenché si la Chance réussit.

3.32. ProcMod

Composant permettant à une entité d’influencer la Chance des procs.

  • proc = string, nom du proc affecté par ce composant.
  • chance = double, intensité de l’influence, une partie de la fonctionnalité est dans le code.
  • dependsLevel = bool, dépendance au Niveau de l’entité.

3.33. Usable

Composants à usage unique qui procurent un effet, par exemple les potions. Le composant est activé via l’action Utiliser.

  • stat = string, nom du Stat affecté par l’effet.
  • skill = string, nom du Skill affecté par l’effet.
  • nowBonus = double, bonus appliqué au champ Total.now du composant.
  • maxBonus = double, bonus appliqué au champ Total.max du composant.
  • cure = bool, l’objet guérit-il de l’effet Maladie.

3.34. Drankable

Composant permettant de boire un objet sur la carte, par exemple un Lac, des Oases et analogues.

3.35. Sphinx

Composant-quête sur la carte, Sphinx. Les paramètres sont définis automatiquement en fonction des Niveaux de région.

3.36. Living_tree

Composant-quête sur la carte, Arbre vivant. Les paramètres sont définis automatiquement en fonction des Niveaux de région.

3.37. Vision

Mécanique d’un objet sur la carte qui révèle un rayon de carte élargi lorsque le héros du joueur entre dans la localisation contenant l’entité.

  • explore = int, rayon d’exploration. 1 — exploration normale, 2 — augmentée d’une case.

3.38. Remains

Description d’une entité en tant que composant d’ossements. Permet de transformer ces entités en mort-vivants.

3.39. Audio_comp

Composant qui permet de lire des sons pour une entité selon son type.

  • click = string, son lors du clic sur l’entité, utilisé pour les actions et sorts.
  • added = string, son joué lors de la création de l’entité, utilisé pour les événements.
  • ambient1 = string, son d’ambiance, piste 1.
  • ambient2 = string, son d’ambiance, piste 2.
  • ambient3 = string, son d’ambiance, piste 3.
  • process = List<string>, liste de noms de sons joués pendant l’exécution de l’action.
  • waits = List<double>, liste des pauses entre les sons.
  • finish = string, son de fin d’exécution de l’action.
  • rndProcess = bool, petits effets aléatoires pour les sons pendant la lecture.

3.40. Childs

Composant qui crée récursivement de nouvelles entités.

  • list = List<Entity>, liste des enfants créés automatiquement et associés à une entité donnée.

3.41. Preds

Composant qui crée des actions pour une entité donnée, même si la plupart des entités sont définies dans le code du jeu.

  • list = List<string>.

3.42. Equip

Composant-marqueur signifiant que cet objet peut être équipé par le héros.

3.43. Res

Composant-indicateur montrant que cette entité est une ressource. Nécessaire pour les infobulles, l’animation et le récapitulatif de la partie.

3.44. TurnAct

Composant indiquant que l’entité doit être vérifiée à chaque tick de temps de jeu, par exemple pour les composants Total et Duration.

4. Listes

Le fichier list.json contient un ensemble de sections de données qui ne sont ni des entités ni des composants. Elles définissent différentes listes pour la génération de contenu du jeu.

4.1. RndGoodEvents

Liste des événements aléatoires positifs générés dès le début de la partie.

4.2. RndEvents

Liste des événements aléatoires positifs et négatifs générés au fil de la partie.

4.3. Generator_dungeon_addons_physical

Liste des extensions (Addons) générées pour les donjons à dégâts physiques.

4.4. Generator_dungeon_addons_magical

Liste des extensions (Addons) générées pour les donjons à dégâts magiques.

4.5. Generator_ruins_addons

Liste des extensions (Addons) générées pour les ruines.

4.6. Generator_settlement_levels

Liste des correspondances entre les Niveaux des régions et les noms des entités-colonies, par exemple "lvl1":"Village" signifie qu’une colonie de type Village sera générée dans une région de Niveau 1.

4.7. Generator_rar_metals

Liste des correspondances entre les Niveaux des régions et les noms des gisements, par exemple "lvl2":"Deposit_tin" signifie qu’un gisement d’étain sera généré dans une région de Niveau 2.

4.8. Generator_mages

Liste des correspondances entre les Niveaux des régions et les noms des Mages générés pour garder les tours de mages, par exemple "lvl3":"Priestesses" signifie que des prêtresses seront générées dans une région de Niveau 3.

4.9. LevelMobs_

Listes des créatures pour différents Niveaux de régions, que le joueur reçoit après avoir libéré des prisonniers lors du Nettoyage d’un donjon ou de l’Inspection de ruines.

4.10. Crafter_start, Lord_start, Mage_start,

Différentes listes d’objets que reçoivent les différentes classes de jeu au départ dans le composant GameClass, champ learnList. Le nombre d’objets est généré par le champ learnNum.

  • obj = string, nom de l’objet.
  • min = double, nombre aléatoire minimal.
  • max = double, nombre aléatoire maximal.
  • chance = double, Chance de génération de cet objet précis.
  • Vous pouvez créer d’autres listes et les lier à différentes classes si vous souhaitez apprendre d’autres plans ou sorts.

4.11. Gold_

Cette liste définit le montant d’Or généré en fonction du Niveau de la région. L’Or apparaît avec une probabilité de 50 % dans toutes les récompenses sur la carte. Voir le point 4.10 pour la syntaxe.

4.12. Loot_-

Groupe de listes qui définissent la génération des récompenses selon le Niveau de la région. S’applique aux créatures, aux donjons et aux ruines. Pour les créatures, il définit la probabilité d’apparition d’objets précis avec une Chance de 50 %, les autres 50 % utilisent les listes du point 4.13. Voir le point 4.10 pour la syntaxe.

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

Groupe de listes qui définissent la génération des récompenses selon le Niveau de la région et la classe des créatures. S’applique uniquement aux créatures. Ces listes étendent les listes du type Loot_- et s’appliquent dans 50 % des cas pour générer des récompenses dépendant de la classe, par exemple pour que les Mages obtiennent plus souvent des tomes de sorts et des bâtons. Voir le point 4.10 pour la syntaxe.

4.14. Shop_, Books_

Listes pour différents Niveaux de régions, par exemple Books5 ou Shop6. Utilisées pour générer l’assortiment des boutiques. Voir le point 4.10 pour la syntaxe. Ces listes sont définies dans le composant Shop, champ type ; pour les tours elles sont générées dans le code du jeu.

Next Run — guide des mods