Next Run · Mod
Guida alle mod di Next Run
Panoramica dettagliata sul funzionamento delle mod di Next Run, sulla struttura dei file e sui componenti del gioco. Salva questo link per avere risposte rapide quando crei e pubblichi le tue mod.
1. Generale
Questo documento descrive il sistema di mod di Next Run: come installarle, creare le tue mod e condividerle con altri giocatori.
- Leggi la sezione 2 almeno una volta per capire come si creano le mod e come funzionano.
- Usa le sezioni 3 e 4 come riferimento.
- Utilizza gli esempi presenti nel gioco per vedere come funziona nella pratica su Steam Workshop: https://steamcommunity.com/app/1295870/workshop/.
- I file di gioco per la versione 1.1.0 sono disponibili qui: https://clarusvictoria.com/files/next_run_files_examples_1.1.0.zip.
2. Sistema di mod
Dopo aver avviato il gioco e aver cliccato "Gioca" e "Crea partita", viene eseguita la scansione della cartella Mods all'interno della directory del gioco. Ogni sottocartella di questa directory è considerata una mod se contiene il file modinfo.json.
2.1. Steam Workshop, installazione e pubblicazione delle mod
Se avvii il gioco dal client Steam, nel menu "Gioca" troverai il pannello "Mod" con i seguenti pulsanti:
- Steam Workshop
- Cartella delle mod
- Pubblica
- Manuale
2.1.1. Steam Workshop
Apre Steam Workshop all'interno del client Steam. Per scaricare una mod devi iscriverti. Il download parte automaticamente; se la mod è grande può richiedere tempo. Lo stato del download è visibile nel client Steam.
2.1.2. Cartella delle mod
Apre la cartella delle mod del tuo gioco.
2.1.3. Pubblica
Il gioco analizza automaticamente la cartella Mods e pubblica su Steam Workshop tutte le mod di cui sei autore.
- Se la mod è nuova, viene generato automaticamente uno steam_id.
- Se la mod esiste già, viene aggiornata.
- Durante il caricamento l'aspetto del pulsante di pubblicazione cambia.
- La mod viene pubblicata solo se il contenuto è cambiato.
- La modifica del file modinfo.json non è considerata una modifica del contenuto.
- Le mod pubblicate diventano disponibili ai giocatori di tutto il mondo. Steam Workshop non è l'unico modo per distribuire le mod: puoi condividerle direttamente inserendo la cartella della mod nella directory Mods.
2.1.4. Manuale
Link a questo manuale.
2.2. File JSON
Tutti i dati e i testi del gioco utilizzano JSON. A differenza del testo semplice, i dati devono essere racchiusi tra parentesi graffe {}.
Riferimenti alla sintassi JSON:
- https://en.wikipedia.org/wiki/JSON
- https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON
Consigliamo di seguire gli esempi di file presenti nel gioco.
2.3. Struttura dei file
Ogni mod segue la struttura di cartelle del gioco. Questi file aggiungono nuovo contenuto o modificano quello esistente. I file JSON aggiungono o modificano singoli elementi del gioco. I file di altri formati (png, ogg) vengono sostituiti per intero.
Esempio: se crei il file data/game.json e modifichi l'entità "Warrior" (classe di gioco), verrà modificata solo questa classe, mentre le altre entità in game.json resteranno invariate. Se aggiungi il file portrait_warrior_front.png, sostituirà completamente l'immagine corrispondente nel gioco perché ha lo stesso nome.
All'interno di una mod esistono file e cartelle obbligatorie e facoltative. La struttura standard è la seguente:
- Nome della cartella della mod (può essere qualsiasi, non è il nome della mod)
- modinfo.json
- preview.png
- data/
- icons/
- sounds/
- texts/
- tiles/
Per una comprensione migliore, esamina gli esempi del gioco e le mod esistenti. Qui sotto trovi una descrizione dettagliata di ogni cartella e file.
2.3.1. modinfo.json
File di metadati della mod. Alcuni di questi campi sono usati da Steam Workshop durante la pubblicazione.
- title — nome della mod, visualizzato su Steam.
- version — versione della mod.
- description — descrizione della mod.
- tags — tag per la navigazione in Steam Workshop.
- order — ordine di caricamento delle mod. Se più mod modificano gli stessi dati, la mod con un valore di order maggiore sovrascrive quella con valore minore.
- steam_id — non va indicato manualmente, è generato automaticamente durante la pubblicazione.
- created_time — data di creazione.
- changed_time — data di modifica.
- È possibile aggiungere altri campi, ma saranno utilizzati solo all'interno del file. L'autore della mod viene determinato automaticamente tramite Steam Workshop.
2.3.2. preview.png
Immagine (icona) della mod per Steam Workshop. Risoluzione consigliata: 256x256 o 512x512. Il rapporto deve essere quadrato. Sono ammessi PNG trasparenti o JPG.
2.3.3. data
Cartella con i file JSON dei dati. Contiene i file che modificano le entità esistenti del gioco o ne aggiungono di nuove. Puoi creare solo i file e i campi che devi modificare o aggiungere. Una descrizione dettagliata dei dati modificabili è riportata nella sezione 3.
2.3.4. icons
Cartella con le icone del gioco. Contiene la maggior parte delle immagini, esclusi GUI e tile. Si usano diversi formati e livelli standard per varie situazioni di gioco. Il gioco utilizza file PNG con sfondo trasparente.
2.3.5. sounds
Cartella con suoni e musica. Puoi aggiungere nuovi file o sostituire quelli esistenti. Il formato utilizzato è OGG.
2.3.6. texts
Cartella con i testi localizzati del gioco. Ogni file corrisponde a una lingua e utilizza lo standard IETF BCP-47 / ISO. Al momento sono supportate 13 lingue: 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
Cartella con le immagini dei tile. Si usano file PNG con sfondo trasparente. La dimensione standard di un tile è 256x384. I tile sono composti da più livelli, come terreno, oggetti, foreste, montagne, strade.
2.4. Sincronizzazione delle mod
Dopo aver ottenuto una mod, questa viene sincronizzata automaticamente con l'ultima versione pubblicata su Steam Workshop a ogni avvio del gioco.
Se sei l'autore della mod, la sincronizzazione non viene eseguita e i file della mod non vengono sovrascritti. È pensato per evitare di perdere le tue modifiche quando lavori alla mod dopo aver riavviato il gioco.
Se vuoi creare una mod basata su quella di qualcun altro, prima di riavviare il gioco devi:
- Rinominare la cartella della mod con un nome diverso dal suo id.
- Nel file modinfo.json, rimuovere i campi: "author", "created_time", "steam_id", "changed_time".
2.5. Unione dei dati
I file JSON dei dati dei mod e del gioco non vengono sostituiti, ma uniti.
Ordine di unione:
- Le entità originali dai file JSON del gioco vengono prese come base.
- I dati dei mod vengono applicati sopra. I mod vengono applicati in base alle priorità definite dal campo order nel file modinfo.json.
Durante l’unione ogni campo di ogni componente viene elaborato separatamente. Ad esempio, se un’entità ha "hideIfZero":true e deve diventare false, non basta rimuovere il campo: devi impostare esplicitamente "hideIfZero":false.
Le liste nel file list.json vengono unite allo stesso modo. Non è necessario duplicare ogni elenco con tutti i campi se devi aggiungere solo un elemento. Tuttavia gli elenchi che contengono solo dati semplici vengono sostituiti completamente, ad esempio RndGoodEvents e RndEvents.
3. Componenti
Il gioco Next Run è basato su un'architettura ECS. Tutto il gioco è composto da entità. Un'entità è un contenitore di componenti e contiene solo il campo id. Tutti gli altri dati sono descritti dai componenti e definiti nei file JSON.
Esempio di voce in un file JSON:
"Speed": {
"Button": {"panel": "statsPanel","iconType": "btnBig","numText1Type": "total","icon": "arrow2"},
"Tooltip": {"text": "Speed"},
"Total": {"now": 25}
}In questo esempio viene descritta l'entità "Speed" con tre componenti: Button — definisce l'aspetto e il comportamento del pulsante nel gioco; Tooltip — la descrizione del suggerimento; Total — il valore numerico dell'entità, in questo caso la velocità è 25.
Di seguito trovi una descrizione più dettagliata dei componenti e dei loro campi. Alcune proprietà dei componenti sono determinate automaticamente e non sono modificabili nei file JSON. Ad esempio, la difficoltà dello Sgombero dei dungeon dipende dal livello e da altri parametri calcolati dal gioco.
3.2. Tooltip
Descrive il contenuto della descrizione comandi di un pulsante.
- text = string, nome dell'entità mostrato nel gioco.
- dontShowDuration = bool, impedisce di mostrare il valore della durata dell'entità.
- hideSources = bool, impedisce di mostrare le entità sorgenti che influenzano il valore di questa entità.
- hideAsSubjTT = bool, impedisce di mostrare questo oggetto come sorgente per entità collegate.
- desc = string, testo descrittivo, appare all'inizio della descrizione comandi.
- desc2 = string, testo descrittivo, appare alla fine della descrizione comandi.
- redDesc = string, testo descrittivo in rosso, appare alla fine.
- totalTextAs = string, testo al posto di "Totale".
- ttPos = string, posizione della descrizione comandi rispetto al pulsante, opzioni "top", "left".
3.3. GameClass
Descrive la meccanica di una classe di gioco.
- text = string, nome della classe nel gioco.
- portrait_back = string, immagine di sfondo alla selezione della classe 391x598.
- portrait_front = string, immagine della classe alla selezione 411x620, trasparente.
- figurine = string, immagine dell'avatar del personaggio sulla mappa 149x243.
- doll = string, immagine in bianco e nero della classe nell'inventario 460x784.
- bonusSkill1 = string, nome della prima abilità che riceve un bonus.
- bonusSkillVal1 = double, entità del bonus 1.
- bonusSkill2 = string, nome della seconda abilità che riceve un bonus.
- bonusSkillVal2 = double, entità del bonus 2.
- debuffSkill1 = string, nome della prima abilità che riceve una penalità.
- debuffSkillVal1 = double, entità della penalità 1.
- debuffSkill2 = string, nome della seconda abilità che riceve una penalità.
- debuffSkillVal2 = double, entità della penalità 2.
- gold = double, quantità di Oro iniziale della classe.
- remains = double, numero di resti all'inizio.
- equip = List<string>, elenco di oggetti iniziali da equipaggiare.
- units = string, nome della creatura iniziale.
- itemName = string, nome dell'oggetto nell'inventario all'inizio.
- itemNum = double, quantità iniziale dell'oggetto nell'inventario.
- learnList = string, elenco di incantesimi o progetti da apprendere, la lista si trova in list.json.
- learnNum = double, numero di incantesimi o progetti che verranno appresi dalla lista.
- lessTime = double, quanto è più breve il tempo tra le ondate dell'Inferno.
- manaBonus = double, bonus al Mana, massimo e totale.
- upgradeDexterityBonusMod = double, bonus agli oggetti migliorabili dato dall'abilità Destrezza.
- skillPointsPerLevel = double, numero di punti abilità ottenuti a ogni salita di livello.
- upgradeManaCostMod = double, bonus all'efficienza di miglioramento degli incantesimi.
- freeRegion = bool, regione gratuita.
- necroBonus = bool, gameplay e bonus del Negromante.
- druidBonus = bool, gameplay e bonus del Druido.
- stances = bool, presenza di posizioni/forme/ordini.
- defStance = string, posizione predefinita.
- notDemo = bool, classe non disponibile nella Versione demo.
- notTutorial = bool, se la classe è disponibile nella modalità Tutorial.
3.4. GameMode
Descrive la meccanica di una modalità di gioco.
- text = string, nome della modalità nel gioco.
- back = string, immagine di sfondo alla selezione della modalità 391x598.
- moreTime = double, quanto aumenta il tempo tra le ondate dell'Inferno.
- lessTime = double, quanto diminuisce il tempo tra le ondate dell'Inferno.
- woundChance = double, probabilità di ricevere una ferita.
- notDemo = bool, modalità non disponibile nella Versione demo.
- scenario = string, nome di una mappa separata per la modalità.
- noHellAttacks = bool, nessun attacco dell'Inferno in questa modalità (come nella sabbia).
- savesOnExitOnly = bool, in questa modalità si salva solo all'uscita dal gioco.
3.5. Biome
Determina la meccanica dei biomi.
- frequency = double, frequenza con cui il bioma appare durante la generazione della mappa; più alto è il numero, più spesso appare. A 0 non viene generato. Il bioma Lava viene generato sempre come regione finale.
- hexBase = string, tile di base per il bioma, viene generato come base sotto gli insediamenti.
- music = string, nome del file del brano musicale del bioma.
- hexPatterns = List<string>, elenco di schemi di oggetti nel bioma. Funziona come un mazzo di carte: gli schemi vengono mescolati e pescati casualmente; quando il mazzo è vuoto viene ricreato. Uno schema ha il formato nome_oggetto#nome_oggetto, il simbolo # separa gli oggetti.
- mobLevel1 .. mobLevel8 = string, nomi delle creature generate nel bioma a seconda del livello della regione.
3.6. TileAsset
Determina l'aspetto di un oggetto sulla mappa di gioco.
- tileMap = string, nome del livello LandTilemap — superficie terrestre, ObjectTilemap — oggetto comune, RoadTilemap — strada, ecc., la differenza è solo nell'ordine di sovrapposizione dei livelli.
- rawSprite = string, immagine 256x384 per aggiungere l'immagine sulla mappa.
- icon = string, icona da aggiungere sopra tutte le TileMap.
- buttonIcon = bool, se prendere l'icona dal componente Button.
- delLevel = double, livello di rimozione, quanto è difficile eliminare l'oggetto tramite un'azione.
3.7. Shop
Descrive la meccanica di un negozio.
- slots = int, numero di slot del negozio.
- type = string, nome dell'assortimento del negozio presente in list.json.
3.8. Item
Descrive la meccanica di un oggetto.
- slot = string, nome dello slot di equipaggiamento.
- stackable = bool, se l'oggetto può essere impilato in più di 1 per pila.
- upgradable = bool, se l'oggetto può essere migliorato; la durata del miglioramento dipende dal livello.
- upProgress = double, durata del miglioramento.
- order = double, ordine dell'oggetto nel negozio, più piccolo è, più in alto appare.
3.9. Mob
Descrive la meccanica di una creatura.
- hell = bool, creatura infernale. Penalità al Corruzione/induzione. Partecipa agli attacchi dell'Inferno. Bonus ai resti.
- undead = bool, creatura non morta. Non può essere corrotta. Meccanica speciale di miglioramento.
- type = string, tipo di creatura — "Warriors", "Defenders", "Mages", "Gatherers", "Crafters". Determina il colore dello sfondo, la probabilità di colpire il giocatore, il tipo di danno e il tipo di bottino.
- upMob = string, in cosa si migliora la creatura.
- upCostName = string, oggetto necessario per il miglioramento.
- upCostNum = double, quantità di risorsa necessaria per il miglioramento, 1 per impostazione predefinita.
3.10. Dungeon
Descrive la meccanica di un dungeon.
- magic = bool, dungeon magico. Influisce sul tipo di danno, bottino e addon.
- boss = bool, dungeon finale.
3.11. Ruins
Descrive la meccanica delle rovine — luoghi per cercare oggetti.
3.12. Addon
Meccanica delle estensioni. Gli addon sono oggetti collocati in una casella con un dungeon o rovine, modificano i loro parametri e forniscono ricompense separate.
- skill = string, nome dell'abilità che il giocatore riceverà dopo lo Sgombero del dungeon o l'ispezione delle rovine. Puoi indicare: "Random", "Strength", ecc.
- unit = string, nome della creatura bonus al termine dell'azione. Puoi indicare "Random".
- item = string, nome dell'oggetto bonus al termine dell'azione. Puoi indicare "Random".
- phyChanceMulti = double, modificatore della probabilità di danno fisico durante lo Sgombero. Ad esempio del 50(%).
- magChanceMulti = double, modificatore della probabilità di danno magico durante lo Sgombero. Ad esempio del 50(%).
- progressMulti = double, quanto più a lungo richiede l'esecuzione di un'azione di tipo Sgombero o Ispezione. Ad esempio del 100(%).
- dmgMulti = double, modificatore dell'entità del danno durante lo Sgombero. Ad esempio del 50(%).
3.13. Build
Indica che l'oggetto è una costruzione.
3.14. Center
Indicazione che l'oggetto è un insediamento.
- captureProgress = double, sforzo necessario per catturare l'insediamento.
- upProgress = double, sforzo necessario per migliorare l'insediamento.
- upCostName1 = string, nome del primo oggetto necessario per l'upgrade.
- upCostNum1 = double, quantità del primo oggetto necessaria per l'upgrade.
- upCostName2 = string, analogo per il secondo oggetto.
- upCostNum2 = double, analogo per il secondo oggetto.
- upCostName3 = string, analogo per il terzo oggetto.
- upCostNum3 = double, analogo per il terzo oggetto.
- upProp = string, in quale insediamento si migliora.
3.15. Gatherable
Indica che l'oggetto può essere raccolto e fornisce risorse.
- gather = string, nome della risorsa ottenuta.
- deposit = bool, indica se la risorsa è un giacimento; in tal caso è possibile costruire una miniera.
3.16. AlliedForest
Definizione della meccanica e dei valori della Foresta alleata durante il gioco come Druido.
- allyBonus = double, entità del bonus Foresta alleata.
3.17. Graveyard
Definisce la meccanica che rende l'oggetto un cimitero, rilevante quando si gioca come Negromante. Il valore dei resti generato è casuale.
- now = double, valore corrente dei resti.
- rndMin = double, valore minimo casuale dei resti.
- rndMax = double, valore massimo casuale dei resti.
- rndCeil = bool, arrotondamento verso l'alto del valore casuale.
3.18. Pred
Componente-azione. Sebbene gran parte delle funzionalità sia nel codice, alcune parti sono disponibili.
- action = string, nome dell'azione che verrà eseguita quando l'azione viene completata.
- local = bool, se è necessario essere nella stessa cella dell'oggetto per interagire.
- attackPred = bool, azione di attacco, viene applicata automaticamente se viene usato un incantesimo di combattimento.
- gatherPred = bool, azione di raccolta, viene applicata automaticamente se viene usato un incantesimo di Raccolta risorse.
- craftPred = bool, azione di creazione, viene applicata automaticamente se viene usato un incantesimo durante il craft.
- skill = string, abilità usata per eseguire l'azione; ad esempio per le azioni di attacco si usa l'abilità Attacco.
- longPred = bool, l'azione non è immediata e richiede tempo.
- repeat = bool, l'azione viene ripetuta finché non viene fermata.
- noOwner = bool, l'azione non richiede la selezione di oggetti.
- skipLongTooltip = bool, versione semplificata della descrizione comandi per l'azione.
- onlyClass = string, azione di tipo posizione/forma/ordine disponibile solo per una determinata classe.
3.19. Total
Componente che definisce il valore numerico di un'entità, di solito una quantità.
- now = double, valore corrente.
- inc = double, incremento per turno.
- max = double, valore massimo.
- min = double, valore minimo.
- rndMin = double, valore minimo del numero casuale.
- rndMax = double, valore massimo del numero casuale, sostituisce now.
- rndCeil = bool, arrotondamento verso l'alto nella generazione casuale.
- overMax = bool, consente di superare il limite.
- delIfZero = bool, elimina se il valore è pari a 0.
- numPercent = bool, indica se il valore è una percentuale.
3.20. Level
Componente che definisce il Livello di un'entità.
- now = double, valore corrente.
- max = double, valore massimo.
- min = double, valore minimo.
- localLevelPlus = int, bonus al Livello locale, funziona solo per oggetti sulla mappa; il loro livello diventa pari al livello della regione più questo valore.
3.21. Duration
Componente che definisce la durata di un'entità.
- now = double, valore corrente.
- max = double, valore massimo.
- min = double, valore minimo.
- delIfZero = bool, elimina se il valore è pari a 0.
3.22. Mods
Componente-elenco di modificatori. Quando viene creato questo componente, viene generato un insieme di cambiamenti che influenzano altre entità. Quando l'entità viene eliminata, questi cambiamenti scompaiono.
- radius = int, raggio di influenza della modifica, funziona solo sulla mappa.
- objType = string, tipo di entità su cui viene applicata la modifica, per esempio "Stat", "Skill", "Prop", "Item", "ModableVal", "PropMod".
- objName = string, nome dell'entità, per esempio "Speed".
- objComp = string, componente su cui viene applicata la modifica, per esempio "Total", "Level".
- objKey = string, campo del componente su cui viene applicata la modifica, per esempio "now", "inc", "max".
- modType = string, modalità di influenza sul campo: "add", "mult", "addPerLevel", "multPerLevel".
- now = double, valore del modificatore usato per il cambiamento.
- subjTooltipText = string, nella descrizione dinamica verrà aggiunta l'indicazione del soggetto.
- skipPerTooltip = bool, nella descrizione sostituisce PerLevel con Plus.
- skipSubjTooltip = bool, ignora la descrizione per questo soggetto.
3.23. ModableVals
Componente-elenco di variabili globali del gioco. L'associazione a un'entità specifica è condizionale. Gran parte della logica di queste variabili è nel codice del gioco.
- now = double, valore della variabile.
3.24. Slot
Componente che definisce l'entità come slot nell'inventario.
- name = string, nome dello slot. Per inserire un oggetto in questo slot, il campo slot del componente Item deve coincidere.
3.25. Container
Definisce l'entità come contenitore con celle.
- cells = int, numero di celle del contenitore.
- cellsPanel = string, nome del pannello.
3.26. Tom
Definisce che l'entità è un tomo di incantesimi che può essere studiato per ottenere o migliorare un incantesimo.
- cast = string, nome dell'incantesimo.
3.27. Cast
Definisce che l'entità è un incantesimo.
- mana = double, costo in Mana dell'incantesimo.
- predSkill = string, quando l'incantesimo viene attivato, quale tipo di azioni deve avviarsi; ad esempio per il tipo Attacco vengono avviate automaticamente le azioni di attacco.
- notSkills = string, suggerimento su quale azione è necessaria per usare questo incantesimo.
- attack = double, quanto accelera un'azione di tipo Attacco l'uso dell'incantesimo, è in pratica danno magico.
- gather = double, quanto accelera un'azione di tipo Raccolta risorse.
- craft = double, quanto accelera un'azione di tipo Creazione.
- heal = double, quanto cura l'eroe del giocatore.
- newEvent = string, nome dell'evento attivato dall'incantesimo, solitamente eventi di tipo bonus.
- teleport = bool, teletrasporto nella posizione scelta.
- explore = double, esplora questa cella e quelle adiacenti.
3.28. Blueprint
Meccanica dell'entità-progetto.
- item = string, nome dell'oggetto che verrà creato.
- build = string, nome della costruzione che verrà costruita.
- costName1 = string, nome del primo oggetto necessario per la creazione.
- costNum1 = double, quantità del primo oggetto necessaria per la creazione.
- costName2 = string, analogo per il secondo oggetto.
- costNum2 = double, analogo per il secondo oggetto.
- costName3 = string, analogo per il terzo oggetto.
- costNum3 = double, analogo per il terzo oggetto.
3.29. Cost
Componente-prezzo, definisce che l'entità può essere acquistata e venduta.
- raw = double, prezzo base senza modificatori. I prezzi di acquisto e vendita sono calcolati a partire da questo valore.
3.30. Event
Componente per gli eventi.
- uniq = bool, evento unico; la comparsa di un nuovo evento elimina quello precedente con lo stesso nome.
- rndEvent = bool, evento casuale.
- nextEvent1 = string, nome del primo evento che inizierà al termine di quello corrente.
- nextEvent2 = string, nome del secondo evento che inizierà al termine di quello corrente.
- castType = string, tipo di effetto potenziamento dell'incantesimo, sovrascrive lo stesso tipo.
3.31. Proc
Componente per il funzionamento dei proc (probabilità), ad esempio la probabilità di contrarre una malattia.
- addEvent = string, evento che si attiva se il proc va a buon fine.
3.32. ProcMod
Componente che permette a un'entità di influenzare la probabilità dei proc.
- proc = string, nome del proc influenzato da questo componente.
- chance = double, intensità dell'influenza; parte della funzionalità è nel codice.
- dependsLevel = bool, dipendenza dal Livello dell'entità.
3.33. Usable
Componenti monouso che forniscono un effetto, ad esempio le pozioni. Il componente viene attivato tramite l'azione Usa.
- stat = string, nome della statistica influenzata dall'effetto.
- skill = string, nome dell'abilità influenzata dall'effetto.
- nowBonus = double, bonus che influisce sul campo Total.now del componente.
- maxBonus = double, bonus che influisce sul campo Total.max del componente.
- cure = bool, se l'oggetto cura dall'effetto Malattia.
3.34. Drankable
Componente che consente di bere un oggetto sulla mappa, ad esempio Lago, Oasi e simili.
3.35. Sphinx
Componente-quest sulla mappa, la Sfinge. I parametri vengono determinati automaticamente in base ai livelli della regione.
3.36. Living_tree
Componente-quest sulla mappa, l'Albero vivente. I parametri vengono determinati automaticamente in base ai livelli della regione.
3.37. Vision
Meccanismo di un oggetto sulla mappa che aumenta il raggio della mappa quando l'eroe del giocatore entra nella cella con l'entità.
- explore = int, raggio di esplorazione. 1 — esplorazione normale, 2 — aumentata di una cella.
3.38. Remains
Descrizione di un'entità come componente dei resti. Permette di trasformare tali entità in non morti.
3.39. Audio_comp
Componente che consente di riprodurre suoni per una specifica entità a seconda del suo tipo.
- click = string, suono alla pressione dell'entità, usato per azioni e incantesimi.
- added = string, suono riprodotto alla creazione dell'entità, usato per gli eventi.
- ambient1 = string, suono ambientale, traccia 1.
- ambient2 = string, suono ambientale, traccia 2.
- ambient3 = string, suono ambientale, traccia 3.
- process = List<string>, elenco di nomi di suoni riprodotti mentre l'azione è in corso.
- waits = List<double>, elenco di pause tra la riproduzione dei suoni.
- finish = string, suono di fine azione.
- rndProcess = bool, piccoli effetti casuali per i suoni durante la riproduzione.
3.40. Childs
Componente che crea ricorsivamente nuove entità.
- list = List<Entity>, elenco di figli creati automaticamente e collegati all'entità specifica.
3.41. Preds
Componente che crea azioni per una specifica entità, anche se la maggior parte delle entità è definita nel codice del gioco.
- list = List<string>.
3.42. Equip
Componente-flag che indica che l'oggetto può essere equipaggiato dall'eroe.
3.43. Res
Componente-indicatore che questa entità è una risorsa. Serve per descrizioni comandi, animazioni e riepiloghi di gioco.
3.44. TurnAct
Il componente indica che l'entità deve essere controllata a ogni tick del tempo di gioco, ad esempio per i componenti Total e Duration.
4. Liste
Il file list.json contiene una serie di sezioni di dati che non sono entità o componenti. Definiscono diverse liste per la generazione del contenuto di gioco.
4.1. RndGoodEvents
Elenco di buoni eventi casuali generati all'avvio del gioco.
4.2. RndEvents
Elenco di buoni e cattivi eventi casuali generati durante la partita.
4.3. Generator_dungeon_addons_physical
Elenco di addon generati per i dungeon con danno fisico.
4.4. Generator_dungeon_addons_magical
Elenco di addon generati per i dungeon con danno magico.
4.5. Generator_ruins_addons
Elenco di addon generati per le rovine.
4.6. Generator_settlement_levels
Elenco delle corrispondenze tra livelli di regione e nomi delle entità-insediamenti, ad esempio "lvl1":"Village" indica che in una regione di livello 1 viene generato un insediamento di tipo Village.
4.7. Generator_rar_metals
Elenco delle corrispondenze tra livelli di regione e nomi dei giacimenti, ad esempio "lvl2":"Deposit_tin" indica che in una regione di livello 2 viene generato un giacimento di stagno.
4.8. Generator_mages
Elenco delle corrispondenze tra livelli di regione e nomi dei maghi generati e che difendono le torri dei maghi, ad esempio "lvl3":"Priestesses" significa che in una regione di livello 3 vengono generate le Sacerdotesse.
4.9. LevelMobs_
Elenchi di creature per diversi livelli di regione che il giocatore riceve dopo aver liberato prigionieri durante lo Sgombero di un dungeon o l'ispezione delle rovine.
4.10. Crafter_start, Lord_start, Mage_start,
Varie liste di oggetti che diverse classi ottengono all'inizio nella componente GameClass, nel campo learnList. Il numero di oggetti generati è nel campo learnNum.
- obj = string, nome dell'oggetto.
- min = double, numero casuale minimo.
- max = double, numero casuale massimo.
- chance = double, probabilità di generare proprio questo oggetto.
- Puoi creare altre liste e collegarle a diverse classi se servono altri progetti o incantesimi da apprendere.
4.11. Gold_
Questa lista definisce la quantità di Oro generata a seconda del livello della regione. L'Oro appare con probabilità del 50% in tutti i tipi di ricompense sulla mappa. Vedi il punto 4.10 per la sintassi.
4.12. Loot_-
Gruppo di liste che definisce la generazione delle ricompense in base al livello della regione. Si applica a creature, dungeon e rovine. Per le creature determina la probabilità di ottenere oggetti specifici con chance del 50%; per il restante 50% vengono usate le liste del punto 4.13. Vedi il punto 4.10 per la sintassi.
4.13. Warriors_, Defenders_, Mages_, Gatherers_, Crafters_
Gruppo di liste che definisce la generazione di ricompense in base al livello della regione e alla classe delle creature. Si applica solo alle creature. Queste liste sono un'estensione delle liste di tipo Loot_- e vengono usate nel 50% dei casi per generare ricompense dipendenti dalla classe, ad esempio per far trovare più spesso tomi e bastoni ai Maghi. Vedi il punto 4.10 per la sintassi.
4.14. Shop_, Books_
Liste per diversi livelli di regione, ad esempio Books5 o Shop6. Sono utilizzate per generare l'assortimento dei negozi. Vedi il punto 4.10 per la sintassi. Queste liste sono definite nel componente Shop, campo type, e per le torri vengono generate dal codice del gioco.
