Next Run · Moduri
Ghid pentru modificările Next Run
Descriere detaliată a funcționării modificărilor, structurii fișierelor și componentelor jocului Next Run. Salvați acest link pentru răspunsuri rapide la întrebări despre crearea și publicarea propriilor moduri.
1. General
Acest document descrie sistemul de moduri din jocul Next Run: cum să le instalezi, să creezi propriile moduri și să le împărtășești cu alți jucători.
- Citiți secțiunea 2 cel puțin o dată pentru a înțelege cum sunt create modurile și cum funcționează.
- Utilizați secțiunile 3 și 4 ca referințe.
- Utilizați exemplele din joc pentru a vedea cum funcționează în practică, în Steam Workshop: https://steamcommunity.com/app/1295870/workshop/.
- Fișierele jocului pentru versiunea 1.1.0 pot fi găsite aici: https://clarusvictoria.com/files/next_run_files_examples_1.1.0.zip.
2. Sistemul de moduri
După lansarea jocului și apăsarea butoanelor «Joacă» și «Creează joc», se efectuează o scanare a folderului Mods din directorul jocului. Fiecare subfolder al acestui director care conține un fișier modinfo.json este considerat un mod.
2.1. Steam Workshop, instalarea și publicarea modurilor
Dacă lansați jocul din clientul Steam, în meniul «Joacă» veți avea acces la panoul «Moduri», care conține următoarele butoane:
- Steam Workshop
- Folderul de moduri
- Publică
- Ghid
2.1.1. Steam Workshop
Deschide Steam Workshop în clientul Steam. Pentru a descărca un mod, trebuie să vă abonați la el. După aceasta, descărcarea va începe automat. Dacă modul are o dimensiune mare, descărcarea poate dura ceva timp. Starea descărcării este afișată în clientul Steam.
2.1.2. Folderul de moduri
Deschide folderul cu modurile jocului dvs.
2.1.3. Publică
Jocul scanează automat folderul Mods și publică toate modurile al căror autor sunteți în Steam Workshop.
- Dacă modul este nou, se generează automat un steam_id.
- Dacă modul există deja, va fi actualizat.
- Butonul de publicare își schimbă aspectul pe durata încărcării.
- Modul va fi publicat doar în prezența modificărilor.
- Modificarea fișierului modinfo.json nu este considerată modificare de conținut.
- Modurile publicate devin disponibile altor jucători din întreaga lume. În același timp, Steam Workshop nu este singura modalitate de distribuție a modurilor - ele pot fi transmise și direct, plasând pur și simplu folderul modului în directorul Mods.
2.1.4. Ghid
Link către acest ghid.
2.2. Fișiere JSON
Toate datele și textele din joc utilizează formatul JSON. Diferența principală față de formatul text obișnuit este că datele trebuie să fie încadrate în acolade {}.
Descrierea sintaxei JSON:
- https://en.wikipedia.org/wiki/JSON
- https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON
Se recomandă să vă orientați după exemplele fișierelor din joc.
2.3. Structura fișierelor
Fiecare mod are o structură de fișiere similară cu structura jocului. Aceste fișiere fie adaugă conținut nou, fie modifică conținutul existent. Fișierele JSON adaugă sau modifică elemente individuale ale jocului. Fișierele de alte formate (png, ogg) sunt înlocuite complet.
Exemplu: dacă creați un fișier data/game.json și modificați în el entitatea «Warrior» (clasă de joc), doar această clasă va fi modificată, iar restul entităților din game.json vor rămâne neschimbate. Dacă adăugați un fișier portrait_warrior_front.png, acesta va înlocui complet imaginea corespunzătoare din joc, deoarece coincide ca nume.
În interiorul modului există fișiere și foldere obligatorii și opționale. Structura standard arată astfel:
- Numele folderului modului (poate fi oricare, nu este numele modului)
- modinfo.json
- preview.png
- data/
- icons/
- sounds/
- texts/
- tiles/
Pentru o înțelegere mai bună se recomandă studierea exemplelor din joc și a modurilor existente. Mai jos este descrierea detaliată a fiecărui folder și fișier.
2.3.1. modinfo.json
Fișier cu metadatele modului. O parte din aceste date este utilizată de Steam Workshop la publicare.
- title - numele modului, afișat în Steam.
- version - versiunea modului.
- description - descrierea modului.
- tags - taguri pentru navigarea în Steam Workshop.
- order - ordinea de încărcare a modurilor. Dacă mai multe moduri modifică aceleași date, modul cu order mai mare va suprascrie modul cu valoare mai mică.
- steam_id - nu trebuie specificat manual, se formează automat la publicare.
- created_time - momentul creării.
- changed_time - momentul modificării.
- Se permite adăugarea altor câmpuri, dar ele vor fi utilizate doar în interiorul fișierului. Autorul modului este determinat automat prin Steam Workshop.
2.3.2. preview.png
Imagine (iconiță) a modului pentru Steam Workshop. Rezoluția recomandată - 256x256 sau 512x512. Raportul de aspect pătrat. Se acceptă PNG transparent sau JPG.
2.3.3. data
Folder cu fișierele JSON de date. Conține fișiere care modifică entitățile existente ale jocului sau adaugă unele noi. Puteți crea doar acele fișiere și câmpuri care trebuie modificate sau adăugate. Descrierea detaliată a datelor modificabile este prezentată în secțiunea 3.
2.3.4. icons
Folder cu iconițele jocului. Conține majoritatea imaginilor, cu excepția GUI și a celulelor. Se utilizează mai multe dimensiuni standard și straturi pentru diferite situații de joc. În joc se utilizează fișiere PNG cu fundal transparent.
2.3.5. sounds
Folder cu sunete și muzică. Pot fi adăugate fișiere noi sau înlocuite cele existente. Formatul utilizat este OGG.
2.3.6. texts
Folder cu textele localizate ale jocului. Fiecare fișier corespunde unei limbi și utilizează standardul IETF BCP-47 / ISO. În prezent sunt suportate 13 limbi: 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
Folder cu imaginile celulelor. Se utilizează fișiere PNG cu fundal transparent. Dimensiunea standard a celulei este 256x384. Celulele sunt formate din mai multe straturi, precum pământ, obiecte, pădure, munți, drumuri.
2.4. Sincronizarea modurilor
După primirea modului, acesta se sincronizează automat cu ultima versiune publicată în Steam Workshop la fiecare lansare a jocului.
Dacă sunteți autorul modului, sincronizarea nu se efectuează și fișierele modului nu sunt suprascrise. Aceasta este făcut pentru ca în timpul lucrului la mod modificările dvs. să nu se piardă după relansarea jocului.
Dacă doriți să creați un mod pe baza modului altcuiva, înainte de relansarea jocului trebuie să efectuați următoarele acțiuni:
- Schimbați numele folderului modului în orice altul, diferit de id-ul său.
- În fișierul modinfo.json ștergeți câmpurile: «author», «created_time», «steam_id», «changed_time».
2.5. Combinarea datelor
Fișierele JSON de date ale modurilor și jocului nu se înlocuiesc, ci se combină.
Ordinea combinării:
- Se iau entitățile originale din fișierele JSON ale jocului ca bază.
- Peste acestea se suprapun datele din moduri. Modurile se suprapun în conformitate cu prioritățile stabilite de câmpul order din fișierul modinfo.json.
La combinare, toate câmpurile tuturor componentelor sunt procesate separat. De exemplu, dacă o entitate are specificat «hideIfZero»:true și se dorește ca valoarea să devină false, nu este suficient să ștergeți acest câmp - trebuie să specificați explicit «hideIfZero»:false.
Listele din fișierul list.json se combină după același principiu. Nu este necesar să duplicați fiecare listă cu toate câmpurile dacă trebuie adăugat doar un singur element. Totuși, listele care conțin doar date simple sunt înlocuite complet, de exemplu RndGoodEvents și RndEvents.
3. Componente
Jocul Next Run este construit pe arhitectura ECS. Întregul joc este format din entități. Entitatea este un container de componente. Entitatea conține doar câmpul id. Toate celelalte date sunt descrise de componente. Toate datele sunt specificate în fișiere JSON.
Exemplu de element într-un fișier JSON:
3.1. Button
Descrie aspectul și comportamentul butonului în joc.
- panel = string, panoul butonului implicit. Toate butoanele din joc se află în interiorul unor panouri și meniuri. Utilizați exemplele pentru a alege în ce panou doriți să plasați butonul dvs.
- icon = string, numele iconiței butonului. Numele iconiței este luat din folderul icons, fișier PNG.
- iconType = string, tipul butonului, influențează dimensiunea și elementele de pe buton. Variante: «btn» - buton simplu, «btnBig» - buton cu valoare dedesubt.
- color = string, culoarea fundalului iconiței, de exemplu green, yellow. Lista culorilor înțelese de joc: 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, valoarea iconiței.
- numTextAdd = string, adăugare la valoarea iconiței, de exemplu simbolul «%».
- numText1Type = string, tipul valorii iconiței, de exemplu level, total, duration.
- numCustom = string, valoarea unică a iconiței, de exemplu «∞».
- numIcon = string, iconița lângă valoare, de exemplu star pentru niveluri, coin pentru mărfuri.
- hotkey = string, tasta rapidă de pe tastatură.
- hide = bool, dacă butonul este ascuns.
- hideIfZero = bool, ascunde butonul dacă componenta Total.now este egală cu 0.
- disabled = bool, dacă butonul este dezactivat sau activat, de exemplu unele meniuri la începutul jocului sunt dezactivate.
- interactable = bool, dacă butonul este interactiv, implicit da. Exemplu de butoane neinteractive - sloturile de inventar.
- cantBeDeselect = bool, interdicția de a deselecta acest buton.
- cantBeSelect = bool, interdicția de a selecta butonul la apăsare.
- draggable = bool, dacă butonul poate fi mutat prin drag'n drop.
- x = double, poziția butonului în interfață pe coordonata X, utilizată pentru butoane fără panouri, de exemplu sloturile din inventar.
- y = double, similar cu X, dar pe coordonata Y.
- upMiniPred = string, numele acțiunii care este verificată pentru această entitate. Dacă acțiunea este disponibilă, apare o mini-iconiță de indiciu de tip Îmbunătățire.
- craftMiniPred = string, indiciu similar pentru acțiunea de Crafting.
- raiseMiniPred = string, indiciu similar pentru acțiunea de Ridicare.
3.2. Tooltip
Descrie conținutul indiciului butonului.
- text = string, numele entității disponibil în joc.
- dontShowDuration = bool, interdicția de a afișa valoarea duratei entității.
- hideSources = bool, interdicția de a afișa entitățile-sursă care influențează valoarea acestei entități.
- hideAsSubjTT = bool, interdicția de a afișa acest obiect ca sursă pentru entitățile asociate.
- desc = string, text descriptiv, apare la începutul indiciului.
- desc2 = string, text descriptiv, apare la sfârșitul indiciului.
- redDesc = string, text descriptiv, evidențiat cu roșu, apare la sfârșit.
- totalTextAs = string, text în loc de «Total».
- ttPos = string, poziția indiciului față de buton, variante «top», «left».
3.3. GameClass
Descrie mecanica clasei de joc.
- text = string, numele clasei în joc.
- portrait_back = string, imagine-fundal la alegerea clasei 391x598.
- portrait_front = string, imaginea clasei la alegerea clasei 411x620, transparentă.
- figurine = string, imaginea avatarului personajului pe hartă 149x243.
- doll = string, imagine alb-negru a clasei în inventar 460x784.
- bonusSkill1 = string, numele abilității 1 care primește bonus.
- bonusSkillVal1 = double, mărimea bonusului abilității 1.
- bonusSkill2 = string, numele abilității 2 care primește bonus.
- bonusSkillVal2 = double, mărimea bonusului 2.
- debuffSkill1 = string, numele abilității 1 care primește penalizare.
- debuffSkillVal1 = double, mărimea penalizării 1.
- debuffSkill2 = string, numele abilității 2 care primește penalizare.
- debuffSkillVal2 = double, mărimea penalizării 2.
- gold = double, cantitatea de aur a clasei la start.
- remains = double, numărul de rămășițe la start.
- equip = List(string), lista obiectelor de echipat la start.
- units = string, numele creaturii care va fi la start.
- itemName = string, numele obiectului din inventar la start.
- itemNum = double, numărul obiectelor din inventar la start.
- learnList = string, lista vrăjilor sau planurilor de învățat, lista se găsește în fișierul list.json.
- learnNum = double, numărul vrăjilor sau planurilor care vor fi învățate din listă.
- lessTime = double, cu cât mai puțin timp între atacurile iadului.
- manaBonus = double, bonus la mana, maxim și total.
- upgradeDexterityBonusMod = double, bonus la obiectele îmbunătățibile de la abilitatea Dexteritate.
- skillPointsPerLevel = double, numărul punctelor de abilitate acordate la creșterea nivelului.
- upgradeManaCostMod = double, bonus la eficiența îmbunătățirii vrăjilor.
- freeRegion = bool, regiune gratuită.
- necroBonus = bool, gameplay și bonusuri de Necromant.
- druidBonus = bool, gameplay și bonusuri de Druid.
- stances = bool, prezența pozițiilor/formelor/ordinelor.
- defStance = string, poziția implicită.
- notDemo = bool, clasa nu este disponibilă în demo.
- notTutorial = bool, dacă clasa este disponibilă în modul Tutorial.
3.4. GameMode
Descrie mecanica modului de joc.
- text = string, numele modului în joc.
- back = string, imagine-fundal la alegerea modului 391x598.
- moreTime = double, cu cât mai mult timp între atacurile iadului.
- lessTime = double, cu cât mai puțin timp între atacurile iadului.
- woundChance = double, șansa de a primi o rană.
- notDemo = bool, modul nu este disponibil în demo.
- scenario = string, numele hărții separate pentru acest mod.
- noHellAttacks = bool, fără atacuri ale iadului în acest mod (ca în sandbox).
- savesOnExitOnly = bool, în acest mod salvarea se face doar la ieșirea din joc.
3.5. Biome
Definește mecanica biomurilor.
- frequency = double, frecvența apariției biomului la generarea hărții, cu cât cifra este mai mare, cu atât mai des. La 0 nu se generează. Biomul Lava se generează întotdeauna ca regiune finală.
- hexBase = string, celula de bază pentru acest biom, se generează ca fundal sub așezări.
- music = string, numele fișierului cu piesa muzicală a biomului.
- hexPatterns = List(string), lista șabloanelor de obiecte din biom. Funcționează după principiul pachetului de cărți: șabloanele se amestecă aleatoriu, apoi se extrag aleatoriu, la atingerea valorii 0 pachetul se recreează. Șablonul are formatul: nume_obiect#nume_obiect, simbolul # este separator între obiecte.
- mobLevel1 .. mobLevel8 = string, numele creaturilor care se generează în biom în funcție de nivelul regiunii.
3.6. TileAsset
Definește aspectul obiectului pe harta de joc.
- tileMap = string, numele stratului LandTilemap - suprafața pământului, ObjectTilemap - obiect obișnuit, RoadTilemap - drum etc., diferența constă doar în ordinea suprapunerii straturilor.
- rawSprite = string, imagine 256x384 pentru adăugarea imaginii pe hartă.
- icon = string, iconița pentru adăugare peste toate TileMap.
- buttonIcon = bool, dacă trebuie preluată iconița din Button.
- delLevel = double, nivelul de ștergere, cât de dificil este de șters obiectul cu ajutorul unei acțiuni.
3.7. Shop
Descrie mecanica magazinului.
- slots = int, numărul de sloturi ale magazinului.
- type = string, numele sortimentului magazinului care există în list.json.
3.8. Item
Descrie mecanica obiectului.
- slot = string, numele slotului pentru echipare.
- stackable = bool, dacă pot fi mai mult de 1 obiect într-o grămadă.
- upgradable = bool, dacă obiectul poate fi îmbunătățit, durata îmbunătățirii depinde de nivel.
- upProgress = double, durata îmbunătățirii.
- order = double, ordinea obiectului în magazin, cu cât mai mic, cu atât mai sus.
3.9. Mob
Descrie mecanica creaturii.
- hell = bool, creatura este infernală. Penalizare la mituire. Participă la atacurile infernale. Bonus de rămășițe.
- undead = bool, creatura este nemoartă. Nu poate fi mituită. Mecanică specială de îmbunătățire.
- type = string, tipul creaturii - «Warriors», «Defenders», «Mages», «Gatherers», «Crafters». Determină culoarea fundalului, șansa de a lovi jucătorul, tipul de damage, tipul de loot.
- upMob = string, în ce se îmbunătățește creatura.
- upCostName = string, obiectul necesar pentru îmbunătățire.
- upCostNum = double, cantitatea de resursă necesară pentru îmbunătățire, implicit 1.
3.10. Dungeon
Descrie mecanica temniței.
- magic = bool, temnița este magică. Influențează tipul de damage, loot și addonuri.
- boss = bool, temnița finală.
3.11. Ruins
Descrie mecanica ruinelor - locuri pentru căutarea obiectelor.
3.12. Addon
Mecanica extensiilor. Extensiile sunt obiecte situate în celula cu temnița sau ruine, care le modifică parametrii și oferă recompense separate.
- skill = string, numele abilității care va fi primită de jucător în cazul curățării temniței sau inspectării ruinelor. Se poate specifica: «Random», «Strength» etc.
- unit = string, numele creaturii bonus după finalizarea acțiunii. Se poate specifica «Random».
- item = string, numele obiectului bonus după finalizarea acțiunii. Se poate specifica «Random».
- phyChanceMulti = double, modificatorul șansei de damage fizic la Curățare. De exemplu cu 50(%).
- magChanceMulti = double, modificatorul șansei de damage magic la Curățare. De exemplu cu 50(%).
- progressMulti = double, cu cât mai mult durează executarea acțiunii de tip Curățare sau Inspectare. De exemplu cu 100(%).
- dmgMulti = double, modificatorul dimensiunii damage-ului la Curățare. De exemplu cu 50(%).
3.13. Build
Definește că acest obiect este o construcție.
3.14. Center
Definiția că acest obiect este o așezare.
- captureProgress = double, efortul necesar pentru cucerirea așezării.
- upProgress = double, efortul necesar pentru îmbunătățirea așezării.
- upCostName1 = string, numele obiectului 1 necesar pentru îmbunătățire.
- upCostNum1 = double, cantitatea obiectului 1 necesară pentru îmbunătățire.
- upCostName2 = string, analog pentru obiectul 2.
- upCostNum2 = double, analog pentru obiectul 2.
- upCostName3 = string, analog pentru obiectul 3.
- upCostNum3 = double, analog pentru obiectul 3.
- upProp = string, în ce așezare se îmbunătățește.
3.15. Gatherable
Definiția că acest obiect poate fi extras și se pot obține resurse.
- gather = string, numele resursei care va fi extrasă.
- deposit = bool, dacă această resursă este un zăcământ, dacă da, înseamnă că aici se poate construi o mină.
3.16. AlliedForest
Definiția mecanicii și valorilor «pădurii aliate» când se joacă ca druid.
- allyBonus = double, mărimea bonusului «Pădure aliată».
3.17. Graveyard
Definiția mecanicii că acest obiect este un cimitir, ceea ce este important când se joacă ca necromant. Aici valoarea se generează aleatoriu, cât de multe rămășițe pot fi extrase.
- now = double, valoarea curentă a rămășițelor.
- rndMin = double, valoarea minimă a numărului de rămășițe.
- rndMax = double, valoarea maximă a numărului de rămășițe.
- rndCeil = bool, rotunjire la valoarea aleatorie superioară.
3.18. Pred
Componenta-acțiune. Deși marea parte a funcționalului componentei este ascunsă în cod, o parte este accesibilă.
- action = string, numele acțiunii care se va declanșa la executarea acțiunii.
- local = bool, dacă trebuie să te afli în aceeași celulă ca obiectul pentru interacțiune.
- attackPred = bool, această acțiune este de atac, va fi aplicată automat dacă se va aplica o vrajă de luptă.
- gatherPred = bool, această acțiune este de extragere, va fi aplicată automat dacă se va aplica o vrajă de extragere a resurselor.
- craftPred = bool, această acțiune este de meșteșug, va fi aplicată automat dacă se va aplica o vrajă la crafting.
- skill = string, abilitatea care este utilizată pentru executarea acțiunii, de exemplu pentru acțiunile de atac se utilizează abilitatea Atac.
- longPred = bool, această acțiune nu este instantanee și necesită timp.
- repeat = bool, acțiunea se va repeta până la oprire.
- noOwner = bool, această acțiune nu necesită selectarea vreunui obiect.
- skipLongTooltip = bool, versiune simplificată a indiciului pentru acțiune.
- onlyClass = string, această acțiune de tip poziție, formă sau ordin este disponibilă doar pentru o anumită clasă.
3.19. Total
Componenta care definește valoarea numerică a entității, de regulă cantitatea a ceva.
- now = double, valoarea curentă.
- inc = double, creșterea pe tură.
- max = double, valoarea maximă.
- min = double, valoarea minimă.
- rndMin = double, valoarea minimă a numărului aleatoriu.
- rndMax = double, valoarea maximă a numărului aleatoriu, înlocuiește now.
- rndCeil = bool, rotunjire în sus la generarea valorii aleatorii.
- overMax = bool, permite depășirea limitei.
- delIfZero = bool, șterge dacă valoarea este 0.
- numPercent = bool, dacă valoarea este un procent.
3.20. Level
Componenta care definește nivelul entității.
- now = double, valoarea curentă.
- max = double, valoarea maximă.
- min = double, valoarea minimă.
- localLevelPlus = int, bonus la nivelul local, funcționează doar pentru obiectele de pe hartă, nivelul lor devine egal cu nivelul regiunii plus valoarea localLevelPlus.
3.21. Duration
Componenta care definește durata entității.
- now = double, valoarea curentă.
- max = double, valoarea maximă.
- min = double, valoarea minimă.
- delIfZero = bool, șterge dacă valoarea este 0.
3.22. Mods
Componenta-listă de modificatori. La crearea acestei componente se formează un set de modificări care influențează alte entități. La ștergerea entității, aceste modificări dispar.
- radius = int, raza pe care influențează modificarea, funcționează doar pe hartă.
- objType = string, tipul entităților asupra cărora se aplică modificarea, de exemplu «Stat», «Skill», «Prop», «Item», «ModableVal», «PropMod».
- objName = string, numele entității, de exemplu «Speed».
- objComp = string, componenta asupra căreia se aplică modificarea, de exemplu «Total», «Level».
- objKey = string, câmpul componentei asupra căruia se aplică modificarea, de exemplu «now», «inc», «max».
- modType = string, modul de influențare a câmpului: «add», «mult», «addPerLevel», «multPerLevel».
- now = double, valoarea modificatorului, cu cât se produce schimbarea.
- subjTooltipText = string, în indiciul dinamic va fi adăugată indicarea subiectului.
- skipPerTooltip = bool, în indiciu se înlocuiește PerLevel cu Plus.
- skipSubjTooltip = bool, se sare indiciul pentru acest subiect.
3.23. ModableVals
Componenta-listă de variabile globale ale jocului. Legătura cu o anumită entitate este condiționată. Marea parte a logicii de lucru cu aceste variabile este ascunsă în codul jocului.
- now = double, valoarea variabilei.
3.24. Slot
Componenta care definește entitatea ca slot în inventar.
- name = string, numele slotului. Pentru a pune un obiect în acest slot, trebuie să coincidă valoarea câmpului slot la componenta Item.
3.25. Container
Definește această entitate ca container cu celule.
- cells = int, numărul de celule din container.
- cellsPanel = string, numele panoului.
3.26. Tom
Definiția că această entitate este un tom de vrăji care poate fi studiat pentru a obține sau îmbunătăți o vrajă.
- cast = string, numele vrăjii.
3.27. Cast
Definiția că entitatea este o vrajă.
- mana = double, costul vrăjii în mana.
- predSkill = string, la activarea acestei vrăji, ce tip de acțiuni trebuie lansat, de exemplu pentru tipul Attack se lansează automat acțiunile de atac.
- notSkills = string, indiciu despre ce acțiune este necesară pentru utilizarea acestei vrăji.
- attack = double, cât accelerează acțiunea de tip Atac aplicarea acestei vrăji, convențional acesta este damage-ul magic.
- gather = double, cât se accelerează acțiunea de tip Extragere resurse.
- craft = double, cât se accelerează acțiunea de tip Crafting.
- heal = double, cât se vindecă eroul jucătorului.
- newEvent = string, numele evenimentului pe care îl provoacă vraja, de regulă acestea sunt evenimente de tip buff-uri.
- teleport = bool, teleportare în locația selectată.
- explore = double, explorează această celulă și cele vecine.
3.28. Blueprint
Mecanica entității-plan.
- item = string, numele obiectului care va fi creat.
- build = string, numele construcției care va fi construită.
- costName1 = string, numele obiectului 1 necesar pentru creare.
- costNum1 = double, cantitatea obiectului 1 necesară pentru creare.
- costName2 = string, analog pentru obiectul 2.
- costNum2 = double, analog pentru obiectul 2.
- costName3 = string, analog pentru obiectul 3.
- costNum3 = double, analog pentru obiectul 3.
3.29. Cost
Componenta-preț, definește că entitatea poate fi cumpărată și vândută.
- raw = double, prețul de bază, fără modificatori. Prețul de cumpărare și vânzare se calculează de la el.
3.30. Event
Componenta pentru evenimente.
- uniq = bool, evenimentul este unic, apariția unui eveniment repetat va șterge pe cel vechi cu același nume.
- rndEvent = bool, evenimentul este aleatoriu.
- nextEvent1 = string, numele primului eveniment care va începe la finalizarea celui curent.
- nextEvent2 = string, numele celui de-al doilea eveniment care va începe la finalizarea celui curent.
- castType = string, tipul efectului de amplificare al vrăjii, suprascrie tipul analog.
3.31. Proc
Componenta de lucru cu procuri (șanse), de exemplu probabilitatea apariției bolii.
- addEvent = string, evenimentul care se va declanșa în cazul în care șansa se activează.
3.32. ProcMod
Componenta care oferă posibilitatea entității de a influența șansa procurilor.
- proc = string, numele procului pe care îl influențează această componentă.
- chance = double, puterea influenței, o parte din funcțional se află în interiorul codului.
- dependsLevel = bool, dependența de nivelul entității.
3.33. Usable
Componente de utilizare unică, care oferă un efect, de exemplu poțiunile. Componenta se activează la utilizarea acțiunii Utilizează.
- stat = string, numele statului asupra căruia influențează efectul.
- skill = string, numele abilității asupra căreia influențează efectul.
- nowBonus = double, bonus care influențează câmpul Total.now al componentei.
- maxBonus = double, bonus care influențează câmpul Total.max al componentei.
- cure = bool, dacă obiectul vindecă de efectul Bolii.
3.34. Drankable
Componenta care permite să bei dintr-un obiect de pe hartă, de exemplu Lac, Oaze și analogii.
3.35. Sphinx
Componenta-quest pe hartă, Sfinxul. Parametrii sunt determinați automat pe baza nivelurilor regiunii.
3.36. Living_tree
Componenta-quest pe hartă, Copacul Viu. Parametrii sunt determinați automat pe baza nivelurilor regiunii.
3.37. Vision
Mecanismul obiectului de pe hartă care deschide raza mărită a hărții la intrarea eroului jucătorului în locația cu entitatea.
- explore = int, raza de explorare. 1 - explorare obișnuită, 2 - extinsă cu o celulă.
3.38. Remains
Descrierea entității ca componentă de rămășițe. Permite transformarea unor astfel de entități în nemorți.
3.39. Audio_comp
Componenta care permite redarea sunetelor pentru o anumită entitate în funcție de tipul ei.
- click = string, sunet la apăsarea pe entitate, utilizat pentru acțiuni și vrăji.
- added = string, sunet redat la crearea entității, utilizat pentru evenimente.
- ambient1 = string, sunet ambiental, pista 1.
- ambient2 = string, sunet ambiental, pista 2.
- ambient3 = string, sunet ambiental, pista 3.
- process = List(string), lista numelor de sunete care sunt redate în timp ce acțiunea se execută.
- waits = List(double), lista pauzelor între redarea sunetelor.
- finish = string, sunetul finalizării executării acțiunii.
- rndProcess = bool, mici efecte aleatorii pentru sunete în timpul redării.
3.40. Childs
Componenta care creează recursiv entități noi.
- list = List(Entity), lista copiilor care sunt creați automat și legați de o anumită entitate.
3.41. Preds
Componenta care creează acțiuni pentru o anumită entitate, deși majoritatea entităților sunt definite în codul jocului.
- list = List(string).
3.42. Equip
Componenta-marcă, însemnând că acest obiect poate fi echipat pe erou.
3.43. Res
Componenta-indicator că această entitate este o resursă. Necesar pentru indicii, animație și rezumatul jocului.
3.44. TurnAct
Componenta înseamnă că entitatea trebuie verificată la fiecare tick de timp de joc, de exemplu pentru componentele Total și Duration.
4. Liste
În fișierul list.json există un set de secțiuni de date care nu sunt entități sau componente. Ele definesc diverse liste pentru generarea conținutului în joc.
4.1. RndGoodEvents
Lista de evenimente aleatorii bune care sunt generate imediat la începutul jocului.
4.2. RndEvents
Lista de evenimente aleatorii bune și rele care vor fi generate pe parcursul jocului.
4.3. Generator_dungeon_addons_physical
Lista extensiilor (addons) care vor fi generate pentru temnițele cu damage fizic.
4.4. Generator_dungeon_addons_magical
Lista extensiilor (addons) care vor fi generate pentru temnițele cu damage magic.
4.5. Generator_ruins_addons
Lista extensiilor (addons) care vor fi generate pentru ruine.
4.6. Generator_settlement_levels
Lista corespondențelor între nivelurile regiunilor și numele entităților-așezări, de exemplu «lvl1»:«Village» înseamnă că în regiunea de nivelul 1 se va genera o așezare de tip Village.
4.7. Generator_rar_metals
Lista corespondențelor între nivelurile regiunilor și numele zăcămintelor, de exemplu «lvl2»:«Deposit_tin» înseamnă că în regiunea de nivelul 2 se va genera un zăcământ de cositor.
4.8. Generator_mages
Lista corespondențelor între nivelurile regiunilor și numele magilor care vor fi generați și vor păzi turnurile magilor, de exemplu «lvl3»:«Priestesses» înseamnă că în regiunea de nivelul 3 vor fi generate preotese.
4.9. LevelMobs_
Liste de creaturi pentru diferite niveluri ale regiunilor, pe care le va primi jucătorul după eliberarea prizonierilor la curățarea temniței sau la inspectarea ruinelor.
4.10. Crafter_start, Lord_start, Mage_start,
Diverse liste de obiecte pe care le primesc diferite clase de joc la start în componenta GameClass, în câmpul learnList. Numărul de obiecte se generează în câmpul learnNum.
- obj = string, numele obiectului.
- min = double, numărul aleatoriu minim.
- max = double, numărul aleatoriu maxim.
- chance = double, șansa de generare a acestui obiect.
- Pot fi create alte liste și legate de diferite clase, dacă trebuie învățate alte planuri sau vrăji.
4.11. Gold_
Această listă determină cantitatea de aur generat în funcție de nivelul regiunii. Aurul apare cu o probabilitate de 50% în toate tipurile de recompense de pe hartă. Vezi punctul 4.10 pentru sintaxă.
4.12. Loot_-
Grup de liste care determină generarea recompensei în funcție de nivelul regiunii. Se aplică pentru creaturi, temnițe și ruine. Pentru creaturi determină probabilitatea de cădere a anumitor obiecte cu șansă de 50%, pentru restul de 50% se utilizează listele din punctul 4.13. Vezi punctul 4.10 pentru sintaxă.
4.13. Warriors_, Defenders_, Mages_, Gatherers_, Crafters_,
Grup de liste care determină generarea recompensei în funcție de nivelul regiunii și clasa creaturilor. Se aplică doar pentru creaturi. Aceste liste sunt extensia listelor de tip Loot_ și se activează în 50% din cazuri pentru generarea recompenselor dependente de clasă, de exemplu când se dorește ca la magi să cadă mai des tomuri de vrăji și toiege. Vezi punctul 4.10 pentru sintaxă.
4.14. Shop_, Books_
Liste pentru diferite niveluri ale regiunilor, de exemplu Books5 sau Shop6. Se utilizează pentru generarea sortimentului magazinelor. Vezi punctul 4.10 pentru sintaxă. Aceste liste sunt definite în componenta Shop, câmpul type, pentru turnuri sunt generate din codul jocului.
