Next Run · Mody

Průvodce modifikacemi Next Run

Podrobný popis fungování modifikací, struktury souborů a komponent hry Next Run. Uložte si tento odkaz pro rychlé odpovědi při tvorbě a publikování vlastních modů.

1. Obecné

Tento dokument popisuje systém modů ve hře Next Run: jak je instalovat, vytvářet vlastní mody a sdílet je s ostatními hráči.

2. Systém modů

Po spuštění hry a stisknutí tlačítek „Hrát“ a „Vytvořit hru“ se provede skenování složky Mods uvnitř adresáře hry. Každá podsložka této složky s přítomností souboru modinfo.json je považována za mod.

2.1. Steam Workshop, instalace a publikování modů

Pokud spouštíte hru z klienta Steam, v menu „Hrát“ bude dostupný panel „Mody“ s následujícími tlačítky:

  • Steam Workshop
  • Složka modů
  • Publikovat
  • Průvodce

2.1.1. Steam Workshop

Otevře Steam Workshop uvnitř klienta Steam. Pro stažení modu je nutné se k němu přihlásit k odběru. Poté začne stahování automaticky. Pokud má mod velkou velikost, stahování může trvat déle. Stav stahování se zobrazuje v klientu Steam.

2.1.2. Složka modů

Otevře složku s mody vaší hry.

2.1.3. Publikovat

Hra automaticky skenuje složku Mods a publikuje všechny mody, jejichž jste autorem, ve Steam Workshop.

  • Pokud je mod nový, automaticky se pro něj vygeneruje steam_id.
  • Pokud mod již existuje, bude aktualizován.
  • Tlačítko publikace během nahrávání změní svůj vzhled.
  • Mod bude publikován pouze při existenci změn.
  • Změna souboru modinfo.json se nepovažuje za změnu obsahu.
  • Publikované mody jsou dostupné ostatním hráčům po celém světě. Steam Workshop přitom není jediným způsobem distribuce modů - lze je také předávat přímo prostým umístěním složky modu do adresáře Mods.

2.1.4. Průvodce

Odkaz na tohoto průvodce.

2.2. JSON soubory

Všechna data a texty ve hře používají formát JSON. Hlavní rozdíl od běžného textového formátu spočívá v tom, že data musí být uzavřena ve složených závorkách {}.

Popis syntaxe JSON:

  • https://en.wikipedia.org/wiki/JSON
  • https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON

Doporučujeme řídit se příklady souborů ze hry.

2.3. Struktura souborů

Každý mod má souborovou strukturu analogickou struktuře hry. Tyto soubory buď přidávají nový obsah, nebo mění stávající. JSON soubory přidávají nebo mění jednotlivé prvky hry. Soubory jiných formátů (png, ogg) se nahrazují celé.

Příklad: pokud vytvoříte soubor data/game.json a změníte v něm entitu „Warrior“ (herní třída), změní se pouze tato třída, zatímco ostatní entity v game.json zůstanou beze změn. Pokud přidáte soubor portrait_warrior_front.png, zcela nahradí odpovídající obrázek ve hře, protože se shoduje názvem.

Uvnitř modu existují povinné a nepovinné soubory a složky. Standardní struktura vypadá následovně:

  • Název složky modu (může být jakýkoli, není názvem modu)
  • modinfo.json
  • preview.png
  • data/
  • icons/
  • sounds/
  • texts/
  • tiles/

Pro lepší pochopení doporučujeme prostudovat příklady ze hry a existující mody. Níže je uveden podrobný popis každé složky a souboru.

2.3.1. modinfo.json

Soubor s metadaty modu. Část těchto dat používá Steam Workshop při publikaci.

  • title — název modu, zobrazuje se na Steamu.
  • version — verze modu.
  • description — popis modu.
  • tags — štítky pro navigaci ve Steam Workshop.
  • order — pořadí načítání modů. Pokud více modů mění stejná data, mod s vyšší hodnotou order přepíše mod s nižší hodnotou.
  • steam_id — není třeba zadávat ručně, generuje se automaticky při publikaci.
  • created_time — čas vytvoření.
  • changed_time — čas změny.
  • Je povoleno přidávat další pole, budou však použita pouze uvnitř souboru. Autor modu je určen automaticky přes Steam Workshop.

2.3.2. preview.png

Obrázek (ikona) modu pro Steam Workshop. Doporučené rozlišení — 256x256 nebo 512x512. Poměr stran čtvercový. Povolen průhledný PNG nebo JPG.

2.3.3. data

Složka s JSON soubory dat. Obsahuje soubory, které mění stávající entity hry nebo přidávají nové. Můžete vytvářet pouze ty soubory a pole, které je třeba změnit nebo přidat. Podrobný popis upravitelných dat je v kapitole 3.

2.3.4. icons

Složka s ikonami hry. Obsahuje většinu obrázků kromě GUI a dlaždic. Používá se několik standardních velikostí a vrstev pro různé herní situace. Ve hře se používají PNG soubory s průhledným pozadím.

2.3.5. sounds

Složka se zvuky a hudbou. Lze přidávat nové soubory nebo nahrazovat stávající. Používaný formát — OGG.

2.3.6. texts

Složka s lokalizovanými texty hry. Každý soubor odpovídá jednomu jazyku a používá standard IETF BCP-47 / ISO. V současnosti je podporováno 13 jazyků: 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

Složka s obrázky dlaždic. Používají se PNG soubory s průhledným pozadím. Standardní velikost dlaždice — 256x384. Dlaždice se skládají z několika vrstev, jako země, objekty, les, hory, cesty.

2.4. Synchronizace modů

Po získání modu se automaticky synchronizuje s poslední verzí publikovanou ve Steam Workshop při každém spuštění hry.

Pokud jste autorem modu, synchronizace se neprovádí a soubory modu se nepřepisují. To je proto, aby se při práci na modu vaše změny neztratily po restartu hry.

Pokud chcete vytvořit mod na základě cizího modu, před restartem hry je nutné provést následující kroky:

  • Změnit název složky modu na jakýkoli jiný, odlišný od jeho id.
  • V souboru modinfo.json smazat pole: „author“, „created_time“, „steam_id“, „changed_time“.

2.5. Sloučení dat

JSON soubory dat modů a hry se nenahrazují, ale sloučí.

Pořadí sloučení:

  • Vezmou se originální entity z JSON souborů hry jako základní.
  • Na ně se aplikují data z modů. Mody se aplikují podle priorit určených polem order v souboru modinfo.json.

Při sloučení se všechna pole všech komponent zpracovávají samostatně. Například pokud má entita uvedeno „hideIfZero“:true a potřebujete, aby hodnota byla false, nestačí toto pole smazat - je nutné explicitně uvést „hideIfZero“:false.

Seznamy v souboru list.json se sloučí podle stejného principu. Není třeba duplikovat každý seznam se všemi poli, pokud potřebujete přidat pouze jeden prvek. Seznamy, které obsahují pouze prostá data, se však nahrazují celé, například RndGoodEvents a RndEvents.

3. Komponenty

Hra Next Run je postavena na architektuře ECS. Celá hra se skládá z entit. Entita je kontejner komponent. Entita obsahuje pouze pole id. Všechna ostatní data jsou popsána komponentami. Všechna data se zadávají v JSON souborech.

Příklad prvku v JSON souboru:

3.1. Button

Popisuje vzhled a chování tlačítka ve hře.

  • panel = string, výchozí panel tlačítka. Všechna tlačítka ve hře se nacházejí uvnitř panelů a menu. Použijte příklady pro výběr panelu, do kterého chcete umístit vaše tlačítko.
  • icon = string, název ikony tlačítka. Název ikony se bere ze složky icons, PNG soubor.
  • iconType = string, typ tlačítka, ovlivňuje velikost a prvky na tlačítku. Varianty: „btn“ — prosté tlačítko, „btnBig“ — tlačítko s hodnotou dole.
  • color = string, barva podkladu ikony, např. green, yellow. Seznam barev, které hra rozumí: 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, hodnota ikony.
  • numTextAdd = string, doplňek k hodnotě ikony, např. symbol „%“.
  • numText1Type = string, typ hodnoty ikony, např. level, total, duration.
  • numCustom = string, vlastní hodnota ikony, např. „∞“.
  • numIcon = string, ikona vedle hodnoty, např. star pro úrovně, coin pro zboží.
  • hotkey = string, klávesová zkratka.
  • hide = bool, zda je tlačítko skryté.
  • hideIfZero = bool, skryje tlačítko, pokud je Total.now rovno 0.
  • disabled = bool, zda je tlačítko vypnuto nebo zapnuto, např. některá menu jsou na startu hry vypnuta.
  • interactable = bool, zda je tlačítko interaktivní, ve výchozím stavu ano. Příklad neinteraktivních tlačítek — sloty inventáře.
  • cantBeDeselect = bool, zákaz zrušení výběru tohoto tlačítka.
  • cantBeSelect = bool, zákaz výběru tlačítka při kliknutí.
  • draggable = bool, zda lze tlačítko přesouvat metodou drag’n’drop.
  • x = double, pozice tlačítka v rozhraní po ose X, používá se pro tlačítka bez panelů, např. sloty v inventáři.
  • y = double, analogicky k X, ale po ose Y.
  • upMiniPred = string, název akce, která se ověřuje pro danou entitu. Pokud je akce dostupná, zobrazí se mini ikona nápovědy typu Vylepšení.
  • craftMiniPred = string, analogická nápověda pro akci Výroba.
  • raiseMiniPred = string, analogická nápověda pro akci Oživení.

3.2. Tooltip

Popisuje obsah nápovědy tlačítka.

  • text = string, název entity dostupný ve hře.
  • dontShowDuration = bool, zákaz zobrazení hodnoty trvání entity.
  • hideSources = bool, zákaz zobrazení zdrojových entit ovlivňujících hodnotu této entity.
  • hideAsSubjTT = bool, zákaz zobrazení tohoto objektu jako zdroje pro propojené entity.
  • desc = string, text popisu, zobrazuje se na začátku nápovědy.
  • desc2 = string, text popisu, zobrazuje se na konci nápovědy.
  • redDesc = string, text popisu zvýrazněný červeně, na konci.
  • totalTextAs = string, text místo „Celkem“.
  • ttPos = string, pozice nápovědy vzhledem k tlačítku, varianty „top“, „left“.

3.3. GameClass

Popisuje mechaniku herní třídy.

  • text = string, název třídy ve hře.
  • portrait_back = string, obrázek pozadí při výběru třídy 391x598.
  • portrait_front = string, obrázek třídy při výběru třídy 411x620, průhledný.
  • figurine = string, obrázek avatara postavy na mapě 149x243.
  • doll = string, čb obrázek třídy v inventáři 460x784.
  • bonusSkill1 = string, název dovednosti 1, která získává bonus.
  • bonusSkillVal1 = double, velikost bonusu dovednosti 1.
  • bonusSkill2 = string, název dovednosti 2, která získává bonus.
  • bonusSkillVal2 = double, velikost bonusu 2.
  • debuffSkill1 = string, název dovednosti 1, která získává postih.
  • debuffSkillVal1 = double, velikost postihu 1.
  • debuffSkill2 = string, název dovednosti 2, která získává postih.
  • debuffSkillVal2 = double, velikost postihu 2.
  • gold = double, množství zlata třídy na startu.
  • remains = double, počet ostatků na startu.
  • equip = List(string), seznam předmětů k nasazení na startu.
  • units = string, název bytosti, která bude na startu.
  • itemName = string, název předmětu v inventáři na startu.
  • itemNum = double, počet předmětů v inventáři na startu.
  • learnList = string, seznam kouzel nebo výkresů k naučení, seznam je v souboru list.json.
  • learnNum = double, počet kouzel nebo výkresů, které budou naučeny ze seznamu.
  • lessTime = double, o kolik méně času mezi útoky pekla.
  • manaBonus = double, bonus k maně, maximum a celkem.
  • upgradeDexterityBonusMod = double, bonus k vylepšitelným věcem od dovednosti Obratnost.
  • skillPointsPerLevel = double, počet bodů dovedností udělených při zvýšení úrovně.
  • upgradeManaCostMod = double, bonus efektivity vylepšování kouzel.
  • freeRegion = bool, bezplatný region.
  • necroBonus = bool, gameplay a bonusy Nekromanta.
  • druidBonus = bool, gameplay a bonusy Druida.
  • stances = bool, přítomnost postojů/forem/rozkazů.
  • defStance = string, výchozí postoj.
  • notDemo = bool, třída není dostupná v demu.
  • notTutorial = bool, zda je třída dostupná v režimu Výcvik.

3.4. GameMode

Popisuje mechaniku herního režimu.

  • text = string, název režimu ve hře.
  • back = string, obrázek pozadí při výběru režimu 391x598.
  • moreTime = double, o kolik více času mezi útoky pekla.
  • lessTime = double, o kolik méně času mezi útoky pekla.
  • woundChance = double, šance na získání zranění.
  • notDemo = bool, režim není dostupný v demu.
  • scenario = string, název samostatné mapy pro daný režim.
  • noHellAttacks = bool, žádné útoky pekla v tomto režimu (jako v pískovišti).
  • savesOnExitOnly = bool, v tomto režimu uložení pouze při ukončení hry.

3.5. Biome

Určuje mechaniku biomů.

  • frequency = double, frekvence výskytu biomu při generování mapy, čím větší číslo, tím častěji. Při 0 se negeneruje. Biom Lava se generuje vždy jako poslední region.
  • hexBase = string, základní dlaždice pro daný biom, generuje se jako podklad pod osídleními.
  • music = string, název souboru s hudební stopou biomu.
  • hexPatterns = List(string), seznam šablon objektů v biomu. Funguje na principu balíčku karet: šablony se zamíchají náhodně, poté se náhodně tahají, při dosažení 0 se balíček obnovuje. Šablona má formát: nazev_objektu#nazev_objektu, symbol # je oddělovač mezi objekty.
  • mobLevel1 .. mobLevel8 = string, název bytostí generovaných v biomu v závislosti na úrovni regionu.

3.6. TileAsset

Určuje vzhled objektu na herní mapě.

  • tileMap = string, název vrstvy LandTilemap — povrch země, ObjectTilemap — běžný objekt, RoadTilemap — cesta apod., rozdíl je pouze v pořadí vrstev nad sebou.
  • rawSprite = string, obrázek 256x384 pro přidání obrázku na mapu.
  • icon = string, ikona přidávaná nad všechny TileMap.
  • buttonIcon = bool, zda se má ikona brát z Button.
  • delLevel = double, úroveň odstranění, jak těžké je odstranit objekt pomocí akce.

3.7. Shop

Popisuje mechaniku obchodu.

  • slots = int, počet slotů obchodu.
  • type = string, název sortimentu obchodu, který je v list.json.

3.8. Item

Popisuje mechaniku předmětu.

  • slot = string, název slotu pro nasazení.
  • stackable = bool, zda může být předmětů více než 1 v jedné hromadě.
  • upgradable = bool, zda lze předmět vylepšovat, délka vylepšení závisí na úrovni.
  • upProgress = double, délka vylepšení.
  • order = double, pořadí předmětu v obchodě, čím menší, tím výše.

3.9. Mob

Popisuje mechaniku bytosti.

  • hell = bool, bytost je pekelná. Postih při podplacení. Účastní se pekelných útoků. Bonus ostatků.
  • undead = bool, bytost je neživá. Nelze podplatit. Speciální mechanika vylepšování.
  • type = string, typ bytosti — „Warriors“, „Defenders“, „Mages“, „Gatherers“, „Crafters“. Určuje barvu podkladu, šanci zásahu hráče, typ poškození, typ kořisti.
  • upMob = string, na co se bytost vylepšuje.
  • upCostName = string, předmět potřebný pro vylepšení.
  • upCostNum = double, množství zdroje potřebného pro vylepšení, výchozí 1.

3.10. Dungeon

Popisuje mechaniku podzemní kobky.

  • magic = bool, kobka je magická. Ovlivňuje typ poškození, kořisti a doplňků.
  • boss = bool, finální kobka.

3.11. Ruins

Popisuje mechaniku zřícenin — míst pro hledání předmětů.

3.12. Addon

Mechanika rozšíření. Rozšíření jsou objekty umístěné v políčku s kobkou nebo zříceninou, které mění jejich parametry a dávají samostatné odměny.

  • skill = string, název dovednosti, kterou hráč získá při vyčištění kobky nebo prohlídce zřícenin. Možno uvést: „Random“, „Strength“ apod.
  • unit = string, název bonusové bytosti po dokončení akce. Možno uvést „Random“.
  • item = string, název bonusového předmětu po dokončení akce. Možno uvést „Random“.
  • phyChanceMulti = double, modifikátor šance fyzického poškození při Vyčištění. Např. o 50(%).
  • magChanceMulti = double, modifikátor šance magického poškození při Vyčištění. Např. o 50(%).
  • progressMulti = double, o kolik déle trvají akce typu Vyčištění nebo Prohlídka. Např. o 100(%).
  • dmgMulti = double, modifikátor velikosti poškození při Vyčištění. Např. o 50(%).

3.13. Build

Určuje, že daný objekt je stavba.

3.14. Center

Určení, že tento objekt je osídlení.

  • captureProgress = double, úsilí potřebné pro dobytí osídlení.
  • upProgress = double, úsilí potřebné pro vylepšení osídlení.
  • upCostName1 = string, název předmětu 1 potřebného pro vylepšení.
  • upCostNum1 = double, počet předmětu 1 potřebného pro vylepšení.
  • upCostName2 = string, analogicky pro předmět 2.
  • upCostNum2 = double, analogicky pro předmět 2.
  • upCostName3 = string, analogicky pro předmět 3.
  • upCostNum3 = double, analogicky pro předmět 3.
  • upProp = string, na jaké osídlení se vylepšuje.

3.15. Gatherable

Určení, že daný objekt lze těžit a získávat suroviny.

  • gather = string, název suroviny, která bude vytěžena.
  • deposit = bool, zda je daný zdroj nalezištěm, pokud ano, lze zde stavět důl.

3.16. AlliedForest

Určení mechaniky a hodnot „spojeneckého lesa” při hře za druida.

  • allyBonus = double, velikost bonusu „Spojenecký les”.

3.17. Graveyard

Určení mechaniky, že daný objekt je hřbitov, což je důležité při hře za nekromanta. Zde se hodnota generuje náhodně, kolik přesně ostatků lze získat.

  • now = double, aktuální hodnota ostatků.
  • rndMin = double, minimální hodnota počtu ostatků.
  • rndMax = double, maximální hodnota počtu ostatků.
  • rndCeil = bool, zaokrouhlení na horní náhodnou hodnotu.

3.18. Pred

Komponenta akce. Ačkoli většina funkčnosti je skryta v kódu, část je dostupná.

  • action = string, název akce, která se spustí při provedení.
  • local = bool, zda je nutné se nacházet ve stejném políčku jako objekt pro interakci.
  • attackPred = bool, tato akce je útočná, bude aplikována automaticky při použití bojového kouzla.
  • gatherPred = bool, tato akce je těžbní, bude aplikována automaticky při použití kouzla na těžbu surovin.
  • craftPred = bool, tato akce je řemeslná, bude aplikována automaticky při použití kouzla při výrobě.
  • skill = string, dovednost používaná pro provedení akce, např. pro útočné akce se používá dovednost Útok.
  • longPred = bool, tato akce není okamžitá a vyžaduje čas.
  • repeat = bool, akce se bude opakovat do zastavení.
  • noOwner = bool, tato akce nevyžaduje výběr žádných objektů.
  • skipLongTooltip = bool, zjednodušená verze nápovědy pro akci.
  • onlyClass = string, tato akce typu postoj, forma nebo rozkaz je dostupná pouze pro určitou třídu.

3.19. Total

Komponenta určující číselnou hodnotu entity, zpravidla množství něčeho.

  • now = double, aktuální hodnota.
  • inc = double, přírůstek za tah.
  • max = double, maximální hodnota.
  • min = double, minimální hodnota.
  • rndMin = double, minimální hodnota náhodného čísla.
  • rndMax = double, maximální hodnota náhodného čísla, nahrazuje now.
  • rndCeil = bool, zaokrouhlení nahoru při generování náhodné hodnoty.
  • overMax = bool, umožňuje překročit limit.
  • delIfZero = bool, smazat, pokud je hodnota 0.
  • numPercent = bool, zda je hodnota procentem.

3.20. Level

Komponenta určující úroveň entity.

  • now = double, aktuální hodnota.
  • max = double, maximální hodnota.
  • min = double, minimální hodnota.
  • localLevelPlus = int, bonus k místní úrovni, funguje pouze pro objekty na mapě, jejich úroveň se stane rovna úrovni regionu plus hodnotě localLevelPlus.

3.21. Duration

Komponenta určující trvání entity.

  • now = double, aktuální hodnota.
  • max = double, maximální hodnota.
  • min = double, minimální hodnota.
  • delIfZero = bool, smazat, pokud je hodnota 0.

3.22. Mods

Komponenta se seznamem modifikátorů. Při vytvoření této komponenty se vytvoří sada změn ovlivňujících jiné entity. Při smazání entity tyto změny zmizí.

  • radius = int, poloměr, na který modifikace působí, funguje pouze na mapě.
  • objType = string, typ entit, na které se modifikace aplikuje, např. „Stat“, „Skill“, „Prop“, „Item“, „ModableVal“, „PropMod“.
  • objName = string, název entity, např. „Speed“.
  • objComp = string, komponenta, na kterou se modifikace aplikuje, např. „Total“, „Level“.
  • objKey = string, pole komponenty, na které se modifikace aplikuje, např. „now“, „inc“, „max“.
  • modType = string, způsob ovlivnění pole: „add“, „mult“, „addPerLevel“, „multPerLevel“.
  • now = double, hodnota modifikátoru, o kterou dochází ke změně.
  • subjTooltipText = string, do dynamické nápovědy bude přidáno označení subjektu.
  • skipPerTooltip = bool, v nápovědě nahradit PerLevel za Plus.
  • skipSubjTooltip = bool, přeskočit nápovědu pro tento subjekt.

3.23. ModableVals

Komponenta se seznamem globálních proměnných hry. Vazba na konkrétní entitu je podmíněná. Většina logiky práce s těmito proměnnými je skryta v kódu hry.

  • now = double, hodnota proměnné.

3.24. Slot

Komponenta, která definuje entitu jako slot v inventáři.

  • name = string, název slotu. Aby se předmět vložil do tohoto slotu, musí se shodovat hodnota pole slot u komponenty Item.

3.25. Container

Definuje danou entitu jako kontejner s buňkami.

  • cells = int, počet buněk v kontejneru.
  • cellsPanel = string, název panelu.

3.26. Tom

Určení, že daná entita je svázek kouzel, který lze prostudovat a získat nebo vylepšit kouzlo.

  • cast = string, název kouzla.

3.27. Cast

Určení, že entita je kouzlo.

  • mana = double, cena kouzla v maně.
  • predSkill = string, při aktivaci tohoto kouzla, jaký typ akcí se má spustit, např. pro typ Attack se automaticky spouštějí útočné akce.
  • notSkills = string, nápověda, jaká akce je potřebná pro použití daného kouzla.
  • attack = double, jak moc urychluje akci typu Útok použití tohoto kouzla, podmíněně jde o magické poškození.
  • gather = double, jak moc se urychluje akce typu Těžba surovin.
  • craft = double, jak moc se urychluje akce typu Výroba.
  • heal = double, jak moc se léčí hrdina hráče.
  • newEvent = string, název události, kterou kouzlo vyvolá, zpravidla jde o události typu buffů.
  • teleport = bool, teleportace na vybranou lokaci.
  • explore = double, prozkoumá toto políčko a sousední.

3.28. Blueprint

Mechanika entity výkresu.

  • item = string, název předmětu, který bude vytvořen.
  • build = string, název stavby, která bude postavena.
  • costName1 = string, název předmětu 1 potřebného pro vytvoření.
  • costNum1 = double, počet předmětu 1 potřebného pro vytvoření.
  • costName2 = string, analogicky pro předmět 2.
  • costNum2 = double, analogicky pro předmět 2.
  • costName3 = string, analogicky pro předmět 3.
  • costNum3 = double, analogicky pro předmět 3.

3.29. Cost

Komponenta ceny, určuje, že entitu lze kupovat a prodávat.

  • raw = double, základní cena, bez modifikátorů. Cena nákupu a prodeje se počítá z ní.

3.30. Event

Komponenta pro události.

  • uniq = bool, událost je jedinečná, opakovaná událost smaže starou se stejným názvem.
  • rndEvent = bool, událost je náhodná.
  • nextEvent1 = string, název první události, která začne po skončení aktuální.
  • nextEvent2 = string, název druhé události, která začne po skončení aktuální.
  • castType = string, typ zesílovacího efektu kouzla, přepisuje analogický typ.

3.31. Proc

Komponenta práce proců (šancí), např. pravděpodobnost vzniku nemoci.

  • addEvent = string, událost, která se spustí, pokud šance zabere.

3.32. ProcMod

Komponenta umožňující entitě ovlivňovat šanci proců.

  • proc = string, jméno procu, na který tato komponenta působí.
  • chance = double, síla vlivu, část funkčnosti je uvnitř kódu.
  • dependsLevel = bool, závislost na úrovni entity.

3.33. Usable

Komponenty jednorázového použití dávající efekt, např. lektvary. Komponenta se aktivuje při použití akce Použít.

  • stat = string, název statu, na který efekt působí.
  • skill = string, název dovednosti, na kterou efekt působí.
  • nowBonus = double, bonus ovlivňující pole Total.now komponenty.
  • maxBonus = double, bonus ovlivňující pole Total.max komponenty.
  • cure = bool, zda předmět léčí efekt Nemoci.

3.34. Drankable

Komponenta umožňující napít se z objektu na mapě, např. Jezero, Oázy a podobné.

3.35. Sphinx

Komponenta questu na mapě, Sfinga. Parametry se určují automaticky na základě úrovní regionu.

3.36. Living_tree

Komponenta questu na mapě, Živý strom. Parametry se určují automaticky na základě úrovní regionu.

3.37. Vision

Mechanismus objektu na mapě, který otevírá zvětšený rádius mapy při vstupu hrdiny hráče do lokace s entitou.

  • explore = int, rádius průzkumu. 1 — běžný průzkum, 2 — zvětšený o jedno políčko.

3.38. Remains

Popis entity jako komponenty ostatků. Umožňuje takové entity přeměnit v neživé.

3.39. Audio_comp

Komponenta umožňující přehrávat zvuky pro konkrétní entitu v závislosti na jejím typu.

  • click = string, zvuk při kliknutí na entitu, používá se pro akce a kouzla.
  • added = string, zvuk přehrávaný při vytvoření entity, používá se pro události.
  • ambient1 = string, zvuk prostředí, stopa 1.
  • ambient2 = string, zvuk prostředí, stopa 2.
  • ambient3 = string, zvuk prostředí, stopa 3.
  • process = List(string), seznam názvů zvuků přehrávaných během provádění akce.
  • waits = List(double), seznam pauz mezi přehráváním zvuků.
  • finish = string, zvuk dokončení akce.
  • rndProcess = bool, malé náhodné efekty pro zvuky během přehrávání.

3.40. Childs

Komponenta rekurzivně vytvářející nové entity.

  • list = List(Entity), seznam dětí, které se automaticky vytvoří a připojí ke konkrétní entitě.

3.41. Preds

Komponenta vytvářející akce pro konkrétní entitu, ačkoli většina entit se definuje v kódu hry.

  • list = List(string).

3.42. Equip

Komponenta značka znamenající, že tento předmět lze nasadit na hrdinu.

3.43. Res

Komponenta indikátor, že daná entita je surovina. Potřebné pro nápovědy, animace a souhrn hry.

3.44. TurnAct

Komponenta znamená, že entitu je třeba kontrolovat každý tik herního času, např. pro komponenty Total a Duration.

4. Seznamy

V souboru list.json je sada sekcí dat, které nejsou entitami ani komponentami. Definují různé seznamy pro generování obsahu ve hře.

4.1. RndGoodEvents

Seznam dobrých náhodných událostí, které se generují hned na startu hry.

4.2. RndEvents

Seznam dobrých a špatných náhodných událostí, které se budou generovat průběžně během hry.

4.3. Generator_dungeon_addons_physical

Seznam rozšíření (addons), která se budou generovat pro kobky s fyzickým poškozením.

4.4. Generator_dungeon_addons_magical

Seznam rozšíření (addons), která se budou generovat pro kobky s magickým poškozením.

4.5. Generator_ruins_addons

Seznam rozšíření (addons), která se budou generovat pro zříceniny.

4.6. Generator_settlement_levels

Seznam odpovídajících úrovní regionů a názvů entit osídlení, např. „lvl1“:„Village“ znamená, že v regionu 1. úrovně se bude generovat osídlení typu Village.

4.7. Generator_rar_metals

Seznam odpovídajících úrovní regionů a názvů nalezišť, např. „lvl2“:„Deposit_tin“ znamená, že v regionu 2. úrovně se bude generovat naleziště cínu.

4.8. Generator_mages

Seznam odpovídajících úrovní regionů a názvů mágů, kteří budou generováni a strážit věže mágů, např. „lvl3“:„Priestesses“ znamená, že v regionu 3. úrovně budou generovány kněžky.

4.9. LevelMobs_

Seznamy bytostí pro různé úrovně regionů, které hráč získá po osvobození vězňů při vyčištění kobky nebo při prohlídce zřícenin.

4.10. Crafter_start, Lord_start, Mage_start,

Různé seznamy věcí, které získají různé herní třídy na startu v komponentě GameClass, v poli learnList. Počet věcí se generuje v poli learnNum.

  • obj = string, název věci.
  • min = double, minimální náhodné číslo.
  • max = double, maximální náhodné číslo.
  • chance = double, šance generování právě této věci.
  • Lze vytvářet další seznamy a připojovat je pro různé třídy, pokud je třeba naučit jiné výkresy nebo kouzla.

4.11. Gold_

Tento seznam určuje množství generovaného zlata v závislosti na úrovni regionu. Zlato se objevuje s 50% pravděpodobností ve všech typech odměn na mapě. Viz bod 4.10 pro syntaxi.

4.12. Loot_-

Skupina seznamů určujících generování odměn v závislosti na úrovni regionu. Používá se pro bytosti, kobky a zříceniny. Pro bytosti určuje pravděpodobnost vypadávání konkrétních věcí s 50% šancí, pro zbývajících 50 % se používají seznamy z bodu 4.13. Viz bod 4.10 pro syntaxi.

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

Skupina seznamů určujících generování odměn v závislosti na úrovni regionu a třídě bytostí. Používá se pouze pro bytosti. Tyto seznamy rozšiřují seznamy typu Loot_ a spíše v 50 % případů generují odměny závislé na třídě, např. aby mágové častěji drořili svazky kouzel a hole. Viz bod 4.10 pro syntaxi.

4.14. Shop_, Books_

Seznamy pro různé úrovně regionů, např. Books5 nebo Shop6. Používají se pro generování sortimentu obchodů. Viz bod 4.10 pro syntaxi. Tyto seznamy se definují v komponentě Shop, pole type, pro věže se generují z kódu hry.