Clarus Victoria

Next Run · Mody

Przewodnik po modach Next Run

Szczegółowy opis działania modów Next Run, struktury plików i komponentów gry. Zapisz ten link, aby szybko znaleźć odpowiedzi podczas tworzenia i publikowania własnych modów.

1. Ogólne

Ten dokument opisuje system modów w Next Run: jak je instalować, tworzyć własne mody i udostępniać je innym graczom.

2. System modów

Po uruchomieniu gry i kliknięciu przycisków "Graj" i "Utwórz grę" skanowany jest folder Mods w katalogu gry. Każdy podfolder tej ścieżki, jeśli zawiera plik modinfo.json, jest uznawany za mod.

2.1. Steam Workshop, instalacja i publikacja modów

Jeśli uruchamiasz grę z klienta Steam, w menu "Graj" znajdziesz panel "Mody" z następującymi przyciskami:

  • Steam Workshop
  • Folder modów
  • Opublikuj
  • Podręcznik

2.1.1. Steam Workshop

Otwiera Steam Workshop w kliencie Steam. Aby pobrać mod, należy go zasubskrybować. Potem pobieranie rozpocznie się automatycznie. Jeśli mod ma duży rozmiar, pobieranie może chwilę potrwać. Status pobierania jest widoczny w kliencie Steam.

2.1.2. Folder modów

Otwiera folder z modami Twojej gry.

2.1.3. Opublikuj

Gra automatycznie skanuje folder Mods i publikuje w Steam Workshop wszystkie mody, których jesteś autorem.

  • Jeśli mod jest nowy, automatycznie generowany jest steam_id.
  • Jeśli mod już istnieje, zostanie zaktualizowany.
  • Przycisk publikacji na czas wysyłania zmienia wygląd.
  • Mod zostanie opublikowany tylko, jeśli wykryto zmiany.
  • Zmiana pliku modinfo.json nie jest traktowana jako zmiana zawartości.
  • Opublikowane mody stają się dostępne dla graczy na całym świecie. Steam Workshop nie jest jednak jedynym sposobem dystrybucji — można je też przekazywać bezpośrednio, umieszczając folder moda w katalogu Mods.

2.2. Pliki JSON

Wszystkie dane i teksty w grze korzystają z formatu JSON. Główna różnica względem zwykłego tekstu polega na tym, że dane muszą być ujęte w nawiasy klamrowe {}.

Opis składni JSON:

Zaleca się wzorowanie na przykładowych plikach z gry.

2.3. Struktura plików

Każdy mod ma strukturę plików analogiczną do struktury gry. Te pliki dodają nową zawartość lub modyfikują istniejącą. Pliki JSON dodają lub zmieniają pojedyncze elementy gry. Pliki innych formatów (png, ogg) są zastępowane w całości.

Przykład: jeśli utworzysz plik data/game.json i zmienisz w nim jednostkę "Warrior" (klasa postaci), zmieni się tylko ta klasa, a pozostałe jednostki w game.json pozostaną bez zmian. Jeśli dodasz plik portrait_warrior_front.png, całkowicie zastąpi on odpowiadający mu obraz w grze, ponieważ nazwa jest taka sama.

W modzie istnieją obowiązkowe i opcjonalne pliki oraz foldery. Standardowa struktura wygląda następująco:

  • Nazwa folderu moda (może być dowolna, nie jest to nazwa moda)
  • modinfo.json
  • preview.png
  • data/
  • icons/
  • sounds/
  • texts/
  • tiles/

Dla lepszego zrozumienia warto przejrzeć przykłady z gry i istniejące mody. Poniżej znajduje się szczegółowy opis każdego folderu i pliku.

2.3.1. modinfo.json

Plik z metadanymi moda. Część tych danych jest wykorzystywana przez Steam Workshop przy publikacji.

  • title — nazwa moda wyświetlana w Steam.
  • version — wersja moda.
  • description — opis moda.
  • tags — tagi do nawigacji w Steam Workshop.
  • order — kolejność ładowania modów. Jeśli kilka modów zmienia te same dane, mod z wyższym order nadpisze mod o niższej wartości.
  • steam_id — nie trzeba podawać ręcznie, generuje się automatycznie przy publikacji.
  • created_time — czas utworzenia.
  • changed_time — czas modyfikacji.
  • Można dodać inne pola, ale będą używane tylko wewnątrz pliku. Autor moda jest określany automatycznie przez Steam Workshop.

2.3.2. preview.png

Grafika (ikona) moda do Steam Workshop. Zalecana rozdzielczość — 256x256 lub 512x512. Proporcje kwadratowe. Dozwolony jest przezroczysty PNG lub JPG.

2.3.3. data

Folder z plikami danych JSON. Zawiera pliki, które zmieniają istniejące jednostki gry lub dodają nowe. Tworzysz tylko te pliki i pola, które trzeba zmienić lub dodać. Szczegółowy opis zmienianych danych znajduje się w sekcji 3.

2.3.4. icons

Folder z ikonami gry. Zawiera większość obrazów poza GUI i kafelkami. Używanych jest kilka standardowych rozmiarów i warstw dla różnych sytuacji w grze. W grze stosowane są pliki PNG z przezroczystym tłem.

2.3.5. sounds

Folder z dźwiękami i muzyką. Można dodawać nowe pliki lub zastępować istniejące. Używany format to OGG.

2.3.6. texts

Folder z lokalizowanymi tekstami gry. Każdy plik odpowiada jednemu językowi i wykorzystuje standard IETF BCP-47 / ISO. Obecnie obsługiwanych jest 13 języków: 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 z obrazami kafelków. Używane są pliki PNG z przezroczystym tłem. Standardowy rozmiar kafelka to 256x384. Kafelki składają się z kilku warstw, takich jak ziemia, obiekty, lasy, góry, drogi.

2.4. Synchronizacja modów

Po pobraniu moda jest on automatycznie synchronizowany z najnowszą wersją opublikowaną w Steam Workshop przy każdym uruchomieniu gry.

Jeśli jesteś autorem moda, synchronizacja nie jest wykonywana i pliki moda nie są nadpisywane. Dzięki temu podczas pracy nad modem twoje zmiany nie znikną po ponownym uruchomieniu gry.

Jeśli chcesz stworzyć moda na podstawie cudzego moda, przed ponownym uruchomieniem gry musisz:

  • Zmień nazwę folderu moda na dowolną inną, różną od jego id.
  • W pliku modinfo.json usuń pola: "author", "created_time", "steam_id", "changed_time".

2.5. Łączenie danych

Pliki danych JSON z modów i gry nie są zastępowane, lecz łączone.

Kolejność łączenia:

  • Jako bazę przyjmuje się oryginalne encje z plików JSON gry.
  • Na nie nakładane są dane z modów. Mody są stosowane zgodnie z priorytetami określonymi w polu order w pliku modinfo.json.

Podczas łączenia każde pole każdego komponentu jest przetwarzane osobno. Jeśli np. encja ma "hideIfZero":true, a wartość ma być false, samo usunięcie pola nie wystarczy — trzeba jawnie ustawić "hideIfZero":false.

Listy w pliku list.json są łączone w ten sam sposób. Nie musisz duplikować każdej listy ze wszystkimi polami, gdy dodajesz tylko jeden element. Jednak listy zawierające wyłącznie proste dane są całkowicie zastępowane, np. RndGoodEvents i RndEvents.

3. Komponenty

Gra Next Run opiera się na architekturze ECS. Cała gra składa się z jednostek. Jednostka to kontener komponentów. Zawiera tylko pole id. Wszystkie pozostałe dane opisują komponenty. Wszystkie dane definiowane są w plikach JSON.

Przykład elementu w pliku JSON:

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

W tym przykładzie opisana jest jednostka "Speed" z trzema komponentami: Button — określa wygląd i zachowanie przycisku w grze; Tooltip — opis podpowiedzi; Total — wartość liczbowa jednostki, w tym przypadku prędkość wynosi 25.

Poniżej znajduje się bardziej szczegółowy opis komponentów i ich pól. Część właściwości komponentów jest określana automatycznie i nie można ich edytować w plikach JSON. Na przykład trudność Oczyszczenia podziemi zależy od poziomu i innych parametrów obliczanych przez grę.

3.1. Button

Opisuje wygląd i zachowanie przycisku w grze.

  • panel = string, domyślna panel Przycisku. Wszystkie przyciski w grze znajdują się w jakichś panelach i menu. Użyj przykładów, aby wybrać panel, w którym chcesz umieścić swój przycisk.
  • icon = string, nazwa ikony przycisku. Nazwa ikony pochodzi z folderu icons, plik PNG.
  • iconType = string, typ przycisku, wpływa na rozmiar i elementy na przycisku. Warianty: "btn" — zwykły przycisk, "btnBig" — przycisk z wartością u dołu.
  • color = string, kolor tła ikony, np. green, yellow. Lista kolorów rozumianych przez grę: 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, wartość na ikonie.
  • numTextAdd = string, dodatek do wartości ikony, np. symbol "%".
  • numText1Type = string, typ wartości ikony, np. level, total, duration.
  • numCustom = string, unikalna wartość ikony, np. "∞".
  • numIcon = string, ikona obok wartości, np. star dla poziomów, coin dla towarów.
  • hotkey = string, skrót klawiszowy.
  • hide = bool, czy przycisk jest ukryty.
  • hideIfZero = bool, ukrywa przycisk, jeśli komponent Total.now wynosi 0.
  • disabled = bool, czy przycisk jest wyłączony, np. niektóre menu na starcie gry są wyłączone.
  • interactable = bool, czy przycisk jest interaktywny, domyślnie tak. Przykład nieinteraktywnych przycisków — sloty ekwipunku.
  • cantBeDeselect = bool, zakaz zdejmowania zaznaczenia z tego przycisku.
  • cantBeSelect = bool, zakaz zaznaczenia przycisku po kliknięciu.
  • draggable = bool, czy można przeciągać przycisk metodą drag'n drop.
  • x = double, położenie przycisku w interfejsie względem osi X, używane dla przycisków bez paneli, np. slotów w ekwipunku.
  • y = double, analogicznie do X, ale dla osi Y.
  • upMiniPred = string, nazwa działania, które jest sprawdzane dla tej jednostki. Jeśli działanie jest dostępne, pojawia się miniikona podpowiedzi typu ulepszenia.
  • craftMiniPred = string, analogiczna podpowiedź dla działania Rzemiosła.
  • raiseMiniPred = string, analogiczna podpowiedź dla działania Podniesienia.

3.2. Tooltip

Opisuje zawartość podpowiedzi przycisku.

  • text = string, nazwa jednostki dostępna w grze.
  • dontShowDuration = bool, zakaz pokazywania wartości czasu trwania jednostki.
  • hideSources = bool, zakaz pokazywania jednostek-źródeł wpływających na wartość tej jednostki.
  • hideAsSubjTT = bool, zakaz pokazywania tego obiektu jako źródła dla powiązanych jednostek.
  • desc = string, tekst opisu, trafia na początek podpowiedzi.
  • desc2 = string, tekst opisu, trafia na koniec podpowiedzi.
  • redDesc = string, tekst opisu wyróżniony na czerwono, trafia na koniec.
  • totalTextAs = string, tekst zamiast "Łącznie".
  • ttPos = string, położenie podpowiedzi względem przycisku, warianty "top", "left".

3.3. GameClass

Opisuje mechanikę klasy postaci.

  • text = string, nazwa klasy w grze.
  • portrait_back = string, obraz tła przy wyborze klasy 391x598.
  • portrait_front = string, obraz klasy przy wyborze klasy 411x620, przezroczysty.
  • figurine = string, obraz awatara postaci na mapie 149x243.
  • doll = string, czarno-biały obraz klasy w ekwipunku 460x784.
  • bonusSkill1 = string, nazwa umiejętności 1, która daje premię.
  • bonusSkillVal1 = double, wartość premii umiejętności 1.
  • bonusSkill2 = string, nazwa umiejętności 2, która daje premię.
  • bonusSkillVal2 = double, wartość premii 2.
  • debuffSkill1 = string, nazwa umiejętności 1, która dostaje karę.
  • debuffSkillVal1 = double, wartość kary 1.
  • debuffSkill2 = string, nazwa umiejętności 2, która dostaje karę.
  • debuffSkillVal2 = double, wartość kary 2.
  • gold = double, ilość Złota na starcie.
  • remains = double, liczba szczątków na starcie.
  • equip = List<string>, lista przedmiotów do założenia na starcie.
  • units = string, nazwa stworzenia, które będzie na starcie.
  • itemName = string, nazwa przedmiotu w ekwipunku na starcie.
  • itemNum = double, liczba przedmiotu w ekwipunku na starcie.
  • learnList = string, lista zaklęć lub planów do nauki, lista znajduje się w pliku list.json.
  • learnNum = double, liczba zaklęć lub planów, które zostaną nauczone z listy.
  • lessTime = double, o ile krótszy jest czas między atakami piekła.
  • manaBonus = double, premia do many, maksimum i łącznie.
  • upgradeDexterityBonusMod = double, premia do ulepszanych rzeczy od umiejętności Zręczność.
  • skillPointsPerLevel = double, liczba punktów umiejętności przy awansie na poziom.
  • upgradeManaCostMod = double, premia do efektywności ulepszania zaklęć.
  • freeRegion = bool, darmowy region.
  • necroBonus = bool, rozgrywka i premie Nekromanty.
  • druidBonus = bool, rozgrywka i premie Druida.
  • stances = bool, dostępność postaw/form/rozkazów.
  • defStance = string, domyślna postawa.
  • notDemo = bool, klasa niedostępna w Wersji demo.
  • notTutorial = bool, czy klasa jest dostępna w trybie samouczka.

3.4. GameMode

Opisuje mechanikę trybu gry.

  • text = string, nazwa trybu w grze.
  • back = string, obraz tła przy wyborze trybu 391x598.
  • moreTime = double, o ile dłuższy jest czas między atakami piekła.
  • lessTime = double, o ile krótszy jest czas między atakami piekła.
  • woundChance = double, Szansa otrzymania rany.
  • notDemo = bool, tryb niedostępny w Wersji demo.
  • scenario = string, nazwa osobnej mapy dla tego trybu.
  • noHellAttacks = bool, brak ataków piekła w tym trybie (jak w piaskownicy).
  • savesOnExitOnly = bool, w tym trybie zapis wyłącznie przy wychodzeniu z gry.

3.5. Biome

Określa mechanikę biomów.

  • frequency = double, częstotliwość pojawiania się biomu przy generowaniu mapy, im większa liczba, tym częściej. Przy 0 nie jest generowany. Biom Lava generuje się zawsze jako finałowy region.
  • hexBase = string, podstawowy kafelek dla biomu, generowany jako podkładka pod osadami.
  • music = string, nazwa pliku z utworem muzycznym biomu.
  • hexPatterns = List<string>, lista szablonów obiektów w biomie. Działa jak talia kart: szablony są tasowane losowo, potem losowo wyciągane, przy wartości 0 talia tworzy się na nowo. Szablon ma format: nazwa_obiektu#nazwa_obiektu, symbol # jest separatorem między obiektami.
  • mobLevel1 .. mobLevel8 = string, nazwy stworzeń generowanych w biomie w zależności od poziomu regionu.

3.6. TileAsset

Określa wygląd obiektu na mapie gry.

  • tileMap = string, nazwa warstwy LandTilemap — powierzchnia ziemi, ObjectTilemap — zwykły obiekt, RoadTilemap — droga itd., różnica polega tylko na kolejności nakładania warstw na siebie.
  • rawSprite = string, obraz 256x384 do dodania grafiki na mapę.
  • icon = string, ikona do dodania na wszystkie TileMap.
  • buttonIcon = bool, czy należy brać ikonę z Button.
  • delLevel = double, poziom usuwania, określa trudność usunięcia obiektu za pomocą działania.

3.7. Shop

Opisuje mechanikę sklepu.

  • slots = int, liczba slotów sklepu.
  • type = string, nazwa asortymentu sklepu znajdującego się w list.json.

3.8. Item

Opisuje mechanikę przedmiotu.

  • slot = string, nazwa slotu do wyposażenia.
  • stackable = bool, czy w jednej kupce może być więcej niż 1 przedmiot.
  • upgradable = bool, czy można ulepszać przedmiot, czas trwania ulepszenia zależy od poziomu.
  • upProgress = double, czas trwania ulepszenia.
  • order = double, kolejność przedmiotu w sklepie, im mniejsza, tym wyżej.

3.9. Mob

Opisuje mechanikę stworzenia.

  • hell = bool, stworzenie piekielne. Kara przy przekupieniu. Uczestniczy w atakach piekła. Premia do szczątków.
  • undead = bool, stworzenie nieumarłe. Nie można przekupić. Specjalna mechanika ulepszania.
  • type = string, typ stworzenia — "Warriors", "Defenders", "Mages", "Gatherers", "Crafters". Określa kolor tła, szansę trafienia gracza, typ obrażeń, typ łupu.
  • upMob = string, w co stworzenie się ulepsza.
  • upCostName = string, przedmiot potrzebny do ulepszenia.
  • upCostNum = double, liczba zasobu potrzebna do ulepszenia, domyślnie 1.

3.10. Dungeon

Opisuje mechanikę podziemia.

  • magic = bool, podziemie magiczne. Wpływa na typ obrażeń, łup i dodatki.
  • boss = bool, finałowe podziemie.

3.11. Ruins

Opisuje mechanikę ruin — miejsc poszukiwania przedmiotów.

3.12. Addon

Mechanika rozszerzeń. Rozszerzenia to obiekty na heksie z podziemiami lub ruinami, które zmieniają ich parametry i dają osobne nagrody.

  • skill = string, nazwa umiejętności, która zostanie nadana graczowi po oczyszczeniu podziemia lub zbadaniu ruin. Można wskazać: "Random", "Strength" itd.
  • unit = string, nazwa bonusowego stworzenia po zakończeniu działania. Można wskazać "Random".
  • item = string, nazwa bonusowego przedmiotu po zakończeniu działania. Można wskazać "Random".
  • phyChanceMulti = double, mnożnik Szansy obrażeń fizycznych przy Oczyszczeniu. Na przykład o 50(%).
  • magChanceMulti = double, mnożnik Szansy obrażeń magicznych przy Oczyszczeniu. Na przykład o 50(%).
  • progressMulti = double, o ile dłużej trwa działanie typu Oczyszczenie lub Zbadanie. Na przykład o 100(%).
  • dmgMulti = double, mnożnik rozmiaru obrażeń przy Oczyszczeniu. Na przykład o 50(%).

3.13. Build

Określa, że dany obiekt jest budowlą.

3.14. Center

Określenie, że ten obiekt to osada.

  • captureProgress = double, wysiłek potrzebny do przejęcia osady.
  • upProgress = double, wysiłek potrzebny do ulepszenia osady.
  • upCostName1 = string, nazwa przedmiotu 1 potrzebnego do ulepszenia.
  • upCostNum1 = double, liczba przedmiotu 1 potrzebnego do ulepszenia.
  • upCostName2 = string, analogicznie dla przedmiotu 2.
  • upCostNum2 = double, analog dla przedmiotu 2.
  • upCostName3 = string, analogicznie dla przedmiotu 3.
  • upCostNum3 = double, analog dla przedmiotu 3.
  • upProp = string, w jaką osadę ulepsza się obiekt.

3.15. Gatherable

Określenie, że dany obiekt można wydobywać i uzyskiwać zasoby.

  • gather = string, nazwa zasobu, który zostanie pozyskany.
  • deposit = bool, czy dany zasób jest złożem, jeśli tak, można budować kopalnię.

3.16. AlliedForest

Określenie mechaniki i wartości "Sojuszniczego lasu" podczas gry Druidem.

  • allyBonus = double, wartość premii "Sojuszniczy las".

3.17. Graveyard

Określenie mechaniki, że dany obiekt jest cmentarzem, co ważne przy grze Nekromantą. Wartość generowana jest losowo — ile dokładnie szczątków można zdobyć.

  • now = double, bieżąca wartość szczątków.
  • rndMin = double, minimalna wartość liczby szczątków.
  • rndMax = double, maksymalna wartość liczby szczątków.
  • rndCeil = bool, zaokrąglenie w górę przy losowaniu.

3.18. Pred

Komponent-działanie. Choć większość funkcji komponentu jest ukryta w kodzie, część jest dostępna.

  • action = string, nazwa działania, które zadziała przy wykonaniu.
  • local = bool, czy trzeba znajdować się w tej samej komórce co obiekt, aby wchodzić w interakcję.
  • attackPred = bool, to działanie jest atakujące, zostanie użyte automatycznie, gdy zostanie użyte zaklęcie bojowe.
  • gatherPred = bool, to działanie jest wydobywcze, zostanie użyte automatycznie, gdy zostanie użyte zaklęcie do zbierania zasobów.
  • craftPred = bool, to działanie jest rzemieślnicze, zostanie użyte automatycznie, gdy zostanie użyte zaklęcie przy rzemiośle.
  • skill = string, umiejętność używana do wykonania działania, np. dla działań atakujących używana jest umiejętność Atak.
  • longPred = bool, to działanie nie jest natychmiastowe i wymaga czasu.
  • repeat = bool, działanie będzie powtarzane do zatrzymania.
  • noOwner = bool, działanie nie wymaga zaznaczenia jakichkolwiek obiektów.
  • skipLongTooltip = bool, uproszczona wersja podpowiedzi dla działania.
  • onlyClass = string, działanie typu postawy, formy lub rozkazu jest dostępne tylko dla określonej klasy.

3.19. Total

Komponent określający wartość liczbową jednostki, zazwyczaj ilość czegoś.

  • now = double, bieżąca wartość.
  • inc = double, przyrost na turę.
  • max = double, maksymalna wartość.
  • min = double, minimalna wartość.
  • rndMin = double, minimalna wartość losowej liczby.
  • rndMax = double, maksymalna wartość losowej liczby, zastępuje now.
  • rndCeil = bool, zaokrąglenie w górę przy generowaniu wartości losowej.
  • overMax = bool, pozwala przekraczać limit.
  • delIfZero = bool, usuwać, jeśli wartość wynosi 0.
  • numPercent = bool, czy wartość jest procentem.

3.20. Level

Komponent określający Poziom jednostki.

  • now = double, bieżąca wartość.
  • max = double, maksymalna wartość.
  • min = double, minimalna wartość.
  • localLevelPlus = int, premia do lokalnego poziomu, działa tylko dla obiektów na mapie — ich poziom staje się równy poziomowi regionu plus ta wartość.

3.21. Duration

Komponent określający czas trwania jednostki.

  • now = double, bieżąca wartość.
  • max = double, maksymalna wartość.
  • min = double, minimalna wartość.
  • delIfZero = bool, usuwać, jeśli wartość wynosi 0.

3.22. Mods

Komponent-lista modyfikatorów. Przy utworzeniu tego komponentu powstaje zestaw zmian wpływających na inne jednostki. Po usunięciu jednostki zmiany znikają.

  • radius = int, promień, na który działa modyfikacja, działa tylko na mapie.
  • objType = string, typ jednostek, na które nakładana jest modyfikacja, np. "Stat", "Skill", "Prop", "Item", "ModableVal", "PropMod".
  • objName = string, nazwa jednostki, np. "Speed".
  • objComp = string, komponent, na który nakładana jest modyfikacja, np. "Total", "Level".
  • objKey = string, pole komponentu, na które nakładana jest modyfikacja, np. "now", "inc", "max".
  • modType = string, sposób wpływu na pole: "add", "mult", "addPerLevel", "multPerLevel".
  • now = double, wartość modyfikatora, o jaką następuje zmiana.
  • subjTooltipText = string, do dynamicznej podpowiedzi zostanie dodane wskazanie podmiotu.
  • skipPerTooltip = bool, w podpowiedzi zamienia PerLevel na Plus.
  • skipSubjTooltip = bool, pomija podpowiedź dla tego podmiotu.

3.23. ModableVals

Komponent-lista globalnych zmiennych gry. Powiązanie z konkretną jednostką jest umowne. Większość logiki pracy z tymi zmiennymi jest ukryta w kodzie gry.

  • now = double, wartość zmiennej.

3.24. Slot

Komponent, który określa jednostkę jako slot w ekwipunku.

  • name = string, nazwa slotu. Aby umieścić przedmiot w tym slocie, pole slot komponentu Item musi mieć tę samą wartość.

3.25. Container

Określa jednostkę jako kontener z komórkami.

  • cells = int, liczba komórek w kontenerze.
  • cellsPanel = string, nazwa panelu.

3.26. Tom

Określenie, że dana jednostka to tom zaklęć, który można studiować, aby otrzymać lub ulepszyć zaklęcie.

  • cast = string, nazwa zaklęcia.

3.27. Cast

Określenie, że jednostka jest zaklęciem.

  • mana = double, koszt zaklęcia w manie.
  • predSkill = string, przy aktywacji tego zaklęcia jaki typ działań należy uruchomić, np. dla typu Attack automatycznie uruchamiane są działania atakujące.
  • notSkills = string, podpowiedź, jakie działanie jest potrzebne do użycia zaklęcia.
  • attack = double, o ile przyspiesza działanie typu Atak użycie tego zaklęcia, w uproszczeniu obrażenia magiczne.
  • gather = double, o ile przyspiesza działanie typu Zbieranie zasobów.
  • craft = double, o ile przyspiesza działanie typu Rzemiosło.
  • heal = double, o ile leczy bohatera gracza.
  • newEvent = string, nazwa wydarzenia wywoływanego przez zaklęcie, zazwyczaj są to wydarzenia typu buffów.
  • teleport = bool, teleportacja do wybranej lokacji.
  • explore = double, rozpoznaje tę komórkę i sąsiednie.

3.28. Blueprint

Mechanika jednostki–planu.

  • item = string, nazwa przedmiotu, który zostanie stworzony.
  • build = string, nazwa budowli, która zostanie wzniesiona.
  • costName1 = string, nazwa przedmiotu 1 potrzebnego do stworzenia.
  • costNum1 = double, liczba przedmiotu 1 potrzebna do stworzenia.
  • costName2 = string, analogicznie dla przedmiotu 2.
  • costNum2 = double, liczba przedmiotu 2.
  • costName3 = string, analogicznie dla przedmiotu 3.
  • costNum3 = double, liczba przedmiotu 3.

3.29. Cost

Komponent-cena, określa, że jednostkę można kupić i sprzedać.

  • raw = double, bazowa cena bez modyfikatorów. Cena zakupu i sprzedaży jest od niej obliczana.

3.30. Event

Komponent dla wydarzeń.

  • uniq = bool, wydarzenie unikalne, pojawienie się kolejnego wydarzenia usunie stare o tej samej nazwie.
  • rndEvent = bool, wydarzenie jest losowe.
  • nextEvent1 = string, nazwa pierwszego wydarzenia, które rozpocznie się po zakończeniu bieżącego.
  • nextEvent2 = string, nazwa drugiego wydarzenia, które rozpocznie się po zakończeniu bieżącego.
  • castType = string, typ wzmacniającego efektu zaklęcia, nadpisuje analogiczny typ.

3.31. Proc

Komponent obsługujący proce (szanse), np. prawdopodobieństwo wystąpienia choroby.

  • addEvent = string, wydarzenie, które zadziała, jeśli szansa się powiedzie.

3.32. ProcMod

Komponent, który pozwala jednostce wpływać na Szansę proców.

  • proc = string, nazwa proca, na który wpływa ten komponent.
  • chance = double, siła wpływu, część funkcjonalności znajduje się w kodzie.
  • dependsLevel = bool, zależność od Poziomu jednostki.

3.33. Usable

Komponenty jednorazowego użycia dające efekt, np. mikstury. Komponent jest aktywowany przy użyciu działania Użyj.

  • stat = string, nazwa statu, na który wpływa efekt.
  • skill = string, nazwa umiejętności, na którą wpływa efekt.
  • nowBonus = double, premia wpływająca na pole Total.now komponentu.
  • maxBonus = double, premia wpływająca na pole Total.max komponentu.
  • cure = bool, czy przedmiot leczy z efektu Choroby.

3.34. Drankable

Komponent, który pozwala zaczerpnąć z obiektu na mapie, np. Jeziora, Oazy i podobnych.

3.35. Sphinx

Komponent–quest na mapie, Sfinks. Parametry określane są automatycznie na podstawie poziomów regionu.

3.36. Living_tree

Komponent–quest na mapie, Żywe drzewo. Parametry określane są automatycznie na podstawie poziomów regionu.

3.37. Vision

Mechanizm obiektu na mapie, który otwiera zwiększony promień mapy po wejściu bohatera gracza w lokację z jednostką.

  • explore = int, promień zwiadu. 1 — zwykły zwiad, 2 — powiększony o jedno pole.

3.38. Remains

Opis jednostki jako komponentu szczątków. Pozwala przekształcać takie jednostki w nieumarłych.

3.39. Audio_comp

Komponent, który pozwala odtwarzać dźwięki dla konkretnej jednostki w zależności od jej typu.

  • click = string, dźwięk przy kliknięciu na jednostkę, używany dla działań i zaklęć.
  • added = string, dźwięk odtwarzany przy stworzeniu jednostki, używany dla wydarzeń.
  • ambient1 = string, dźwięk otoczenia, ścieżka 1.
  • ambient2 = string, dźwięk otoczenia, ścieżka 2.
  • ambient3 = string, dźwięk otoczenia, ścieżka 3.
  • process = List<string>, lista nazw dźwięków odtwarzanych podczas wykonywania działania.
  • waits = List<double>, lista przerw między odtwarzaniem dźwięków.
  • finish = string, dźwięk zakończenia działania.
  • rndProcess = bool, drobne losowe efekty dla dźwięków podczas odtwarzania.

3.40. Childs

Komponent, który rekursywnie tworzy nowe jednostki.

  • list = List<Entity>, lista dzieci, które automatycznie tworzą się i przypisują do konkretnej jednostki.

3.41. Preds

Komponent, który tworzy działania dla konkretnej jednostki, choć większość jednostek jest określana w kodzie gry.

  • list = List<string>.

3.42. Equip

Komponent-znacznik oznaczający, że ten przedmiot można założyć na bohatera.

3.43. Res

Komponent-wskaźnik, że dana jednostka to zasób. Potrzebne do podpowiedzi, animacji i podsumowania gry.

3.44. TurnAct

Komponent oznacza, że jednostkę należy sprawdzać co tik czasu gry, np. dla komponentów Total i Duration.

4. Listy

W pliku list.json znajduje się zestaw sekcji danych, które nie są jednostkami ani komponentami. Określają różne listy do generowania zawartości gry.

4.1. RndGoodEvents

Lista dobrych losowych wydarzeń generowanych od razu na starcie gry.

4.2. RndEvents

Lista dobrych i złych losowych wydarzeń, które będą generowane w trakcie gry.

4.3. Generator_dungeon_addons_physical

Lista rozszerzeń (addons), które będą generowane dla podziemi z obrażeniami fizycznymi.

4.4. Generator_dungeon_addons_magical

Lista rozszerzeń (addons), które będą generowane dla podziemi z obrażeniami magicznymi.

4.5. Generator_ruins_addons

Lista rozszerzeń (addons), które będą generowane dla ruin.

4.6. Generator_settlement_levels

Lista powiązań między poziomami regionów a nazwami jednostek–osad, np. "lvl1":"Village" oznacza, że w regionie 1. poziomu będzie generowana osada typu Village.

4.7. Generator_rar_metals

Lista powiązań między poziomami regionów a nazwami złóż, np. "lvl2":"Deposit_tin" oznacza, że w regionie 2. poziomu będzie generowane złoże cyny.

4.8. Generator_mages

Lista powiązań między poziomami regionów a nazwami magów, którzy będą generowani i strzec wież magów, np. "lvl3":"Priestesses" oznacza, że w regionie 3. poziomu będą generowane kapłanki.

4.9. LevelMobs_

Listy stworzeń dla różnych poziomów regionów, które otrzyma gracz po uwolnieniu więźniów przy Oczyszczeniu podziemia lub podczas badania ruin.

4.10. Crafter_start, Lord_start, Mage_start,

Różne listy rzeczy, które otrzymują różne klasy postaci na starcie w komponencie GameClass w polu learnList. Liczba rzeczy jest generowana w polu learnNum.

  • obj = string, nazwa rzeczy.
  • min = double, minimalna liczba losowa.
  • max = double, maksymalna liczba losowa.
  • chance = double, Szansa wygenerowania właśnie tej rzeczy.
  • Można tworzyć inne listy i przypinać je dla różnych klas, jeśli trzeba nauczyć innych planów lub zaklęć.

4.11. Gold_

Ta lista określa ilość generowanego Złota w zależności od poziomu regionu. Złoto pojawia się z prawdopodobieństwem 50% we wszystkich rodzajach nagród na mapie. Zobacz punkt 4.10 dla składni.

4.12. Loot_-

Grupa list określająca generowanie nagrody w zależności od poziomu regionu. Stosowana dla stworzeń, podziemi i ruin. Dla stworzeń określa prawdopodobieństwo wypadnięcia konkretnych rzeczy z szansą 50%, pozostałe 50% wykorzystują listy z punktu 4.13. Zobacz punkt 4.10 dla składni.

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

Grupa list określających generowanie nagrody w zależności od poziomu regionu i klasy stworzeń. Stosowana tylko dla stworzeń. Te listy rozszerzają listy typu Loot_- i działają w 50% przypadków, aby generować nagrody zależne od klasy, np. gdy trzeba, aby u magów częściej wypadały tomy zaklęć i kostury. Zobacz punkt 4.10 dla składni.

4.14. Shop_, Books_

Listy dla różnych poziomów regionów, np. Books5 lub Shop6. Używane do generowania asortymentu sklepów. Zobacz punkt 4.10 dla składni. Te listy są określane w komponencie Shop, pole type, dla wież generowane są z kodu gry.

Next Run — przewodnik po modach