Clarus Victoria

Next Run · Mods

Next Run – Mod-Handbuch

Detaillierter Überblick darüber, wie die Mods von Next Run funktionieren, über die Dateistruktur und die Spielkomponenten. Speichern Sie diesen Link für schnelle Antworten beim Erstellen und Veröffentlichen Ihrer eigenen Mods.

1. Allgemeines

Dieses Dokument beschreibt das Mod-System in Next Run: wie man Mods installiert, eigene Mods erstellt und sie mit anderen Spielern teilt.

2. Mod-System

Nach dem Start des Spiels und dem Klicken auf "Spielen" und "Spiel erstellen" wird der Ordner Mods im Spieleverzeichnis gescannt. Jeder Unterordner dieses Verzeichnisses gilt als Mod, sofern eine modinfo.json vorhanden ist.

2.1. Steam Workshop, Installation und Veröffentlichung von Mods

Wenn Sie das Spiel aus dem Steam-Client starten, steht Ihnen im Menü "Spielen" das Panel "Mods" mit folgenden Schaltflächen zur Verfügung:

  • Steam Workshop
  • Mod-Ordner
  • Veröffentlichen
  • Handbuch

2.1.1. Steam Workshop

Öffnet den Steam Workshop im Steam-Client. Um einen Mod herunterzuladen, müssen Sie ihn abonnieren. Danach startet der Download automatisch. Bei großen Mods kann der Download einige Zeit dauern. Der Downloadstatus wird im Steam-Client angezeigt.

2.1.2. Mod-Ordner

Öffnet den Ordner mit den Mods Ihres Spiels.

2.1.3. Veröffentlichen

Das Spiel scannt automatisch den Ordner Mods und veröffentlicht alle Mods, deren Autor Sie sind, im Steam Workshop.

  • Ist der Mod neu, wird automatisch eine steam_id generiert.
  • Existiert der Mod bereits, wird er aktualisiert.
  • Die Schaltfläche zum Veröffentlichen ändert während des Uploads ihr Aussehen.
  • Ein Mod wird nur veröffentlicht, wenn Änderungen vorhanden sind.
  • Eine Änderung der Datei modinfo.json gilt nicht als Inhaltsänderung.
  • Veröffentlichte Mods werden anderen Spielern weltweit zugänglich. Der Steam Workshop ist dabei nicht der einzige Weg, Mods zu verbreiten – sie können auch direkt weitergegeben werden, indem der Mod-Ordner in das Verzeichnis Mods gelegt wird.

2.2. JSON-Dateien

Alle Daten und Texte im Spiel verwenden das JSON-Format. Der Hauptunterschied zu einfachem Text ist, dass die Daten in geschweifte Klammern {} gesetzt werden müssen.

Beschreibung der JSON-Syntax:

Wir empfehlen, sich an den Beispielen aus dem Spiel zu orientieren.

2.3. Dateistruktur

Jeder Mod besitzt eine Dateistruktur, die der des Spiels ähnelt. Diese Dateien fügen entweder neuen Inhalt hinzu oder ändern vorhandenen. JSON-Dateien fügen einzelne Elemente hinzu oder ändern sie. Dateien in anderen Formaten (png, ogg) werden vollständig ersetzt.

Beispiel: Wenn Sie die Datei data/game.json erstellen und darin die Entität "Warrior" (Spielklasse) ändern, wird nur diese Klasse geändert, und die übrigen Entitäten in game.json bleiben unverändert. Wenn Sie die Datei portrait_warrior_front.png hinzufügen, ersetzt sie das entsprechende Bild im Spiel vollständig, da der Name übereinstimmt.

Innerhalb eines Mods gibt es Pflicht- und optionale Dateien und Ordner. Die Standardstruktur sieht wie folgt aus:

  • Name des Mod-Ordners (beliebig, nicht der Mod-Name)
  • modinfo.json
  • preview.png
  • data/
  • icons/
  • sounds/
  • texts/
  • tiles/

Für ein besseres Verständnis empfiehlt es sich, Beispiele aus dem Spiel und bestehende Mods zu studieren. Unten finden Sie eine detaillierte Beschreibung jedes Ordners und jeder Datei.

2.3.1. modinfo.json

Datei mit den Metadaten des Mods. Ein Teil dieser Daten wird beim Veröffentlichen im Steam Workshop verwendet.

  • title — Name des Mods, wird in Steam angezeigt.
  • version — Version des Mods.
  • description — Beschreibung des Mods.
  • tags — Tags zur Navigation im Steam Workshop.
  • order — Lade-Reihenfolge der Mods. Wenn mehrere Mods dieselben Daten ändern, überschreibt der Mod mit höherem order den Mod mit niedrigerem Wert.
  • steam_id — muss nicht manuell angegeben werden, wird bei der Veröffentlichung automatisch erstellt.
  • created_time — Erstellungszeit.
  • changed_time — Änderungszeit.
  • Weitere Felder sind möglich, werden aber nur innerhalb der Datei verwendet. Der Autor des Mods wird automatisch über den Steam Workshop bestimmt.

2.3.2. preview.png

Bild (Icon) des Mods für den Steam Workshop. Empfohlene Auflösung – 256x256 oder 512x512. Seitenverhältnis quadratisch. Transparente PNGs oder JPGs sind erlaubt.

2.3.3. data

Ordner mit JSON-Daten-Dateien. Enthält Dateien, die bestehende Spieleinheiten ändern oder neue hinzufügen. Sie können nur die Dateien und Felder erstellen, die Sie ändern oder ergänzen müssen. Eine ausführliche Beschreibung der änderbaren Daten finden Sie in Abschnitt 3.

2.3.4. icons

Ordner mit Spiele-Icons. Enthält die meisten Bilder außer GUI und Tiles. Es werden mehrere Standardgrößen und -layer für verschiedene Spielsituationen verwendet. Im Spiel kommen PNG-Dateien mit transparentem Hintergrund zum Einsatz.

2.3.5. sounds

Ordner mit Sounds und Musik. Sie können neue Dateien hinzufügen oder bestehende ersetzen. Verwendetes Format – OGG.

2.3.6. texts

Ordner mit lokalisierten Spieltexten. Jede Datei entspricht einer Sprache und verwendet den Standard IETF BCP-47 / ISO. Derzeit werden 13 Sprachen unterstützt: 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

Ordner mit Tile-Grafiken. Es werden PNG-Dateien mit transparentem Hintergrund verwendet. Standardgröße eines Tiles – 256x384. Tiles bestehen aus mehreren Layern wie Boden, Objekte, Wald, Berge, Straßen.

2.4. Mod-Synchronisation

Nachdem du einen Mod erhalten hast, wird er bei jedem Spielstart automatisch mit der neuesten Version aus dem Steam Workshop synchronisiert.

Wenn du der Autor des Mods bist, wird keine Synchronisation durchgeführt und die Mod-Dateien werden nicht überschrieben. Dadurch gehen deine Änderungen bei der Arbeit am Mod nach einem Neustart nicht verloren.

Wenn du einen Mod auf Basis eines fremden Mods erstellen möchtest, führe vor dem Neustart des Spiels Folgendes aus:

  • Benenn den Mod-Ordner in einen anderen Namen um, der sich von seiner ID unterscheidet.
  • Lösch in der Datei modinfo.json die Felder: "author", "created_time", "steam_id", "changed_time".

2.5. Datenzusammenführung

JSON-Datendateien aus Mods und dem Spiel werden nicht ersetzt, sondern zusammengeführt.

Reihenfolge der Zusammenführung:

  • Die originalen Entitäten aus den JSON-Dateien des Spiels dienen als Grundlage.
  • Darauf werden die Mod-Daten angewendet. Mods werden gemäß der Priorität aus dem Feld order in der Datei modinfo.json angewendet.

Beim Zusammenführen wird jedes Feld aller Komponenten einzeln verarbeitet. Wenn eine Entität z. B. "hideIfZero":true hat und der Wert auf false geändert werden soll, reicht es nicht, das Feld zu löschen – du musst ausdrücklich "hideIfZero":false angeben.

Die Listen in der Datei list.json werden nach demselben Prinzip zusammengeführt. Du musst nicht jede Liste mit allen Feldern duplizieren, wenn du nur einen Eintrag hinzufügen möchtest. Listen, die nur einfache Daten enthalten, werden jedoch vollständig ersetzt, z. B. RndGoodEvents und RndEvents.

3. Komponenten

Das Spiel Next Run basiert auf einer ECS-Architektur. Das gesamte Spiel besteht aus Entitäten. Eine Entität ist ein Container für Komponenten. Die Entität enthält nur das Feld id. Alle anderen Daten werden durch Komponenten beschrieben. Alle Daten werden in JSON-Dateien definiert.

Beispiel für einen Eintrag in einer JSON-Datei:

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

In diesem Beispiel wird die Entität "Speed" mit drei Komponenten beschrieben: Schaltfläche — definiert Aussehen und Verhalten der Schaltfläche im Spiel; Tooltip — Beschreibung des Tooltips; Gesamt — der numerische Wert der Entität, hier beträgt die Geschwindigkeit 25.

Unten finden Sie eine detailliertere Beschreibung der Komponenten und ihrer Felder. Einige Eigenschaften der Komponenten werden automatisch festgelegt und können in den JSON-Dateien nicht bearbeitet werden. Beispielsweise hängt die Schwierigkeit der Säuberung von Dungeons vom Level und anderen Parametern ab, die vom Spiel berechnet werden.

3.1. Button

Beschreibt das Aussehen und Verhalten einer Schaltfläche im Spiel.

  • panel = string, Standard-Panel der Schaltfläche. Alle Schaltflächen im Spiel befinden sich in irgendeiner Art von Panel oder Menü. Nutzen Sie Beispiele, um das Panel auszuwählen, in dem Ihre Schaltfläche erscheinen soll.
  • icon = string, Name des Schaltflächen-Icons. Der Icon-Name wird aus dem Ordner icons entnommen, PNG-Datei.
  • iconType = string, Typ der Schaltfläche, beeinflusst Größe und Elemente. Varianten: "btn" — einfache Schaltfläche, "btnBig" — Schaltfläche mit Wert unten.
  • color = string, Farbe des Icon-Hintergrunds, z. B. green, yellow. Liste der vom Spiel erkannten Farben: 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, Wert des Icons.
  • numTextAdd = string, Ergänzung zum Icon-Wert, z. B. das Symbol "%".
  • numText1Type = string, Typ des Icon-Werts, z. B. level, total, duration.
  • numCustom = string, individueller Icon-Wert, z. B. "∞".
  • numIcon = string, Icon neben dem Wert, z. B. star für Stufen, coin für Waren.
  • hotkey = string, Tastenkürzel.
  • hide = bool, ob die Schaltfläche verborgen ist.
  • hideIfZero = bool, blendet die Schaltfläche aus, wenn der Wert Total.now 0 ist.
  • disabled = bool, ob die Schaltfläche deaktiviert oder aktiviert ist, z. B. sind einige Menüs zu Beginn deaktiviert.
  • interactable = bool, ob die Schaltfläche interaktiv ist, standardmäßig ja. Beispiel für nicht interaktive Schaltflächen — Inventarslots.
  • cantBeDeselect = bool, verhindert das Entfernen der Auswahl dieser Schaltfläche.
  • cantBeSelect = bool, verhindert das Auswählen der Schaltfläche beim Anklicken.
  • draggable = bool, ob die Schaltfläche per Drag & Drop bewegt werden kann.
  • x = double, Position der Schaltfläche in der Benutzeroberfläche auf der X-Achse, wird für Schaltflächen ohne Panel verwendet, z. B. Slots im Inventar.
  • y = double, analog zu X, aber für die Y-Koordinate.
  • upMiniPred = string, Name der Aktion, die für diese Entität geprüft wird. Wenn die Aktion verfügbar ist, erscheint ein Mini-Icon vom Typ Verbesserung.
  • craftMiniPred = string, gleiches Hinweis-Icon für die Aktion Handwerk.
  • raiseMiniPred = string, gleiches Hinweis-Icon für die Aktion Erheben.

3.2. Tooltip

Beschreibt den Inhalt des Tooltips der Schaltfläche.

  • text = string, Name der Entität, das im Spiel verfügbar ist.
  • dontShowDuration = bool, verbietet die Anzeige der Dauer der Entität.
  • hideSources = bool, verbietet die Anzeige der Quellentitäten, die den Wert dieser Entität beeinflussen.
  • hideAsSubjTT = bool, verbietet die Anzeige dieses Objekts als Quelle für verbundene Entitäten.
  • desc = string, Beschreibungstext, steht am Anfang des Tooltips.
  • desc2 = string, Beschreibungstext, steht am Ende des Tooltips.
  • redDesc = string, Beschreibungstext in Rot, steht am Ende.
  • totalTextAs = string, Text anstelle von "Gesamt".
  • ttPos = string, Position des Tooltips relativ zur Schaltfläche, Optionen "top", "left".

3.3. GameClass

Beschreibt die Mechanik einer Spielklasse.

  • text = string, Name der Klasse im Spiel.
  • portrait_back = string, Hintergrundbild bei der Klassenauswahl 391x598.
  • portrait_front = string, Bild der Klasse bei der Auswahl 411x620, transparent.
  • figurine = string, Avatarbild des Charakters auf der Karte 149x243.
  • doll = string, s/w-Bild der Klasse im Inventar 460x784.
  • bonusSkill1 = string, Name des Skills 1, der einen Bonus erhält.
  • bonusSkillVal1 = double, Höhe des Bonus von Skill 1.
  • bonusSkill2 = string, Name des Skills 2, der einen Bonus erhält.
  • bonusSkillVal2 = double, Höhe des Bonus 2.
  • debuffSkill1 = string, Name des Skills 1 mit Malus.
  • debuffSkillVal1 = double, Höhe des Malus 1.
  • debuffSkill2 = string, Name des Skills 2 mit Malus.
  • debuffSkillVal2 = double, Höhe des Malus 2.
  • gold = double, Goldmenge der Klasse zu Beginn.
  • remains = double, Anzahl der Überreste zu Beginn.
  • equip = List<string>, Liste der Ausrüstungsgegenstände zu Beginn.
  • units = string, Name der Kreatur, die es zu Beginn gibt.
  • itemName = string, Name des Gegenstands im Startinventar.
  • itemNum = double, Anzahl des Gegenstands im Startinventar.
  • learnList = string, Liste der Zauber oder Blaupausen zum Lernen, Liste befindet sich in list.json.
  • learnNum = double, Anzahl der Zauber oder Blaupausen, die aus der Liste gelernt werden.
  • lessTime = double, wie viel weniger Zeit zwischen den Angriffen der Hölle vergeht.
  • manaBonus = double, Mana-Bonus, Maximum und Gesamt.
  • upgradeDexterityBonusMod = double, Bonus auf verbesserbare Gegenstände durch den Skill Geschicklichkeit.
  • skillPointsPerLevel = double, Anzahl der Skillpunkte pro Stufe.
  • upgradeManaCostMod = double, Bonus auf die Effizienz der Verbesserung von Zaubern.
  • freeRegion = bool, kostenloser Region.
  • necroBonus = bool, Gameplay und Boni des Nekromanten.
  • druidBonus = bool, Gameplay und Boni des Druiden.
  • stances = bool, Verfügbarkeit von Haltungen/Formen/Befehlen.
  • defStance = string, Standardhaltung.
  • notDemo = bool, Klasse nicht in der Demo verfügbar.
  • notTutorial = bool, ob die Klasse im Tutorial verfügbar ist.

3.4. GameMode

Beschreibt die Mechanik eines Spielmodus.

  • text = string, Name des Modus im Spiel.
  • back = string, Hintergrundbild bei der Modusauswahl 391x598.
  • moreTime = double, wie viel mehr Zeit zwischen den Angriffen der Hölle vergeht.
  • lessTime = double, wie viel weniger Zeit zwischen den Angriffen der Hölle vergeht.
  • woundChance = double, Chance eine Wunde zu erhalten.
  • notDemo = bool, Modus nicht in der Demo verfügbar.
  • scenario = string, Name einer separaten Karte für diesen Modus.
  • noHellAttacks = bool, keine Angriffe der Hölle in diesem Modus (wie im Sandbox-Modus).
  • savesOnExitOnly = bool, in diesem Modus wird nur beim Beenden gespeichert.

3.5. Biome

Bestimmt die Mechanik der Biome.

  • frequency = double, Häufigkeit des Bioms bei der Kartengenerierung; je höher die Zahl, desto häufiger. Bei 0 wird es nicht generiert. Das Biom Lava wird immer als letzter Bereich erzeugt.
  • hexBase = string, Basistile für dieses Biom, werden als Unterlage unter Siedlungen erzeugt.
  • music = string, Name der Musikdatei des Bioms.
  • hexPatterns = List<string>, Liste von Objektmustern im Biom. Funktioniert wie ein Kartendeck: Muster werden zufällig gemischt und gezogen, bei 0 wird das Deck neu erstellt. Ein Muster hat das Format: objektname#objektname, das Zeichen # trennt Objekte.
  • mobLevel1 .. mobLevel8 = string, Namen der Kreaturen, die im Biom je nach Regionsstufe generiert werden.

3.6. TileAsset

Bestimmt das Aussehen eines Objekts auf der Spielkarte.

  • tileMap = string, Name des Layers LandTilemap — Erdoberfläche, ObjectTilemap — gewöhnliches Objekt, RoadTilemap — Straße usw., der Unterschied liegt nur in der Reihenfolge der Layer.
  • rawSprite = string, Bild 256x384, um eine Grafik auf die Karte zu setzen.
  • icon = string, Icon zur Anzeige über allen TileMaps.
  • buttonIcon = bool, ob das Icon aus Button entnommen werden soll.
  • delLevel = double, Entfernen-Stufe, wie schwer es ist, ein Objekt per Aktion zu entfernen.

3.7. Shop

Beschreibt die Mechanik eines Ladens.

  • slots = int, Anzahl der Slots im Laden.
  • type = string, Name des Laden-Sortiments aus list.json.

3.8. Item

Beschreibt die Mechanik eines Gegenstands.

  • slot = string, Name des Slots für die Ausrüstung.
  • stackable = bool, ob mehr als 1 Gegenstand in einem Stapel sein kann.
  • upgradable = bool, ob der Gegenstand verbessert werden kann, Dauer der Verbesserung hängt vom Level ab.
  • upProgress = double, Dauer der Verbesserung.
  • order = double, Reihenfolge des Gegenstands im Laden, je kleiner, desto weiter oben.

3.9. Mob

Beschreibt die Mechanik einer Kreatur.

  • hell = bool, Kreatur ist höllisch. Malus bei Bestechung. Nimmt an Höllenangriffen teil. Bonus auf Überreste.
  • undead = bool, Kreatur ist Untote. Kann nicht bestochen werden. Besondere Verbesserungsmechanik.
  • type = string, Typ der Kreatur — "Warriors", "Defenders", "Mages", "Gatherers", "Crafters". Bestimmt Farbe des Hintergrunds, Trefferchance gegen den Spieler, Schadensart, Loot-Typ.
  • upMob = string, in wen sich die Kreatur verbessert.
  • upCostName = string, Gegenstand, der für die Verbesserung benötigt wird.
  • upCostNum = double, Menge des benötigten Ressourcen-Gegenstands, standardmäßig 1.

3.10. Dungeon

Beschreibt die Mechanik eines Dungeons.

  • magic = bool, Dungeon ist magisch. Beeinflusst Schadensart, Loot und Add-ons.
  • boss = bool, finales Dungeon.

3.11. Ruins

Beschreibt die Mechanik von Ruinen — Orte zur Suche nach Gegenständen.

3.12. Addon

Mechanik der Erweiterungen. Add-ons sind Objekte, die sich auf dem Feld mit einem Dungeon oder Ruinen befinden, deren Parameter verändern und eigene Belohnungen geben.

  • skill = string, Name des Skills, den der Spieler bei der Säuberung des Dungeons oder der Inspektion der Ruinen erhält. Möglich: "Random", "Strength" usw.
  • unit = string, Name der Bonus-Kreatur nach Abschluss der Aktion. "Random" ist möglich.
  • item = string, Name des Bonus-Gegenstands nach Abschluss der Aktion. "Random" ist möglich.
  • phyChanceMulti = double, Modifikator der Chance auf physischen Schaden bei der Säuberung. Zum Beispiel um 50(%).
  • magChanceMulti = double, Modifikator der Chance auf magischen Schaden bei der Säuberung. Zum Beispiel um 50(%).
  • progressMulti = double, wie viel länger Aktionen wie Säuberung oder Inspektion dauern. Zum Beispiel um 100(%).
  • dmgMulti = double, Modifikator der Schadenshöhe bei der Säuberung. Zum Beispiel um 50(%).

3.13. Build

Legt fest, dass dieses Objekt ein Gebäude ist.

3.14. Center

Definition, dass dieses Objekt eine Siedlung ist.

  • captureProgress = double, Aufwand, der für die Eroberung der Siedlung notwendig ist.
  • upProgress = double, Aufwand, der für die Verbesserung der Siedlung notwendig ist.
  • upCostName1 = string, Name des Gegenstands 1, der für die Verbesserung benötigt wird.
  • upCostNum1 = double, Menge des Gegenstands 1, die benötigt wird.
  • upCostName2 = string, analog für Gegenstand 2.
  • upCostNum2 = double, analog für Gegenstand 2.
  • upCostName3 = string, analog für Gegenstand 3.
  • upCostNum3 = double, analog für Gegenstand 3.
  • upProp = string, in welche Siedlung verbessert wird.

3.15. Gatherable

Definition, dass dieses Objekt abgebaut werden kann und Ressourcen liefert.

  • gather = string, Name der Ressource, die abgebaut wird.
  • deposit = bool, ob diese Ressource ein Vorkommen ist; falls ja, kann hier eine Mine gebaut werden.

3.16. AlliedForest

Definition der Mechanik und Werte des "Verbündeten Walds" beim Spielen als Druide.

  • allyBonus = double, Höhe des Bonus "Verbündeter Wald".

3.17. Graveyard

Definition der Mechanik, dass dieses Objekt ein Friedhof ist, was beim Spielen als Nekromant wichtig ist. Hier wird der Wert, wie viele Überreste abgebaut werden können, zufällig erzeugt.

  • now = double, aktueller Wert der Überreste.
  • rndMin = double, minimaler zufälliger Wert der Überreste.
  • rndMax = double, maximaler zufälliger Wert der Überreste.
  • rndCeil = bool, Aufrunden auf den oberen Zufallswert.

3.18. Pred

Aktions-Komponente. Obwohl ein Großteil der Funktionalität im Code verborgen ist, ist ein Teil zugänglich.

  • action = string, Name der Aktion, die beim Ausführen ausgelöst wird.
  • local = bool, ob man sich in demselben Feld wie das Objekt befinden muss, um zu interagieren.
  • attackPred = bool, diese Aktion ist angreifend und wird automatisch angewendet, wenn ein Kampfzauber gewirkt wird.
  • gatherPred = bool, diese Aktion ist ressourcengewinnend und wird automatisch angewendet, wenn ein Ressourcenzauber gewirkt wird.
  • craftPred = bool, diese Aktion ist handwerklich und wird automatisch angewendet, wenn ein Zauber beim Handwerk eingesetzt wird.
  • skill = string, Skill, der zur Ausführung der Aktion verwendet wird; z. B. wird für Angriffsaktionen der Skill Angriff verwendet.
  • longPred = bool, diese Aktion ist nicht sofortig und erfordert Zeit.
  • repeat = bool, die Aktion wird wiederholt, bis sie gestoppt wird.
  • noOwner = bool, diese Aktion erfordert keine Auswahl von Objekten.
  • skipLongTooltip = bool, vereinfachte Tooltip-Version für die Aktion.
  • onlyClass = string, diese Aktion vom Typ Haltung/Form/Befehl ist nur für eine bestimmte Klasse verfügbar.

3.19. Total

Komponente, die den numerischen Wert einer Entität bestimmt, in der Regel die Menge von etwas.

  • now = double, aktueller Wert.
  • inc = double, Zuwachs pro Zug.
  • max = double, Maximalwert.
  • min = double, Minimalwert.
  • rndMin = double, minimaler Zufallswert.
  • rndMax = double, maximaler Zufallswert, ersetzt now.
  • rndCeil = bool, Aufrunden bei der Generierung des Zufallswerts.
  • overMax = bool, erlaubt das Überschreiten des Limits.
  • delIfZero = bool, löschen, wenn der Wert 0 ist.
  • numPercent = bool, ob der Wert ein Prozentwert ist.

3.20. Level

Komponente, die die Stufe einer Entität bestimmt.

  • now = double, aktueller Wert.
  • max = double, Maximalwert.
  • min = double, Minimalwert.
  • localLevelPlus = int, Bonus auf den lokalen Level, funktioniert nur für Objekte auf der Karte; ihr Level entspricht dem Regionslevel plus localLevelPlus.

3.21. Duration

Komponente, die die Dauer einer Entität bestimmt.

  • now = double, aktueller Wert.
  • max = double, Maximalwert.
  • min = double, Minimalwert.
  • delIfZero = bool, löschen, wenn der Wert 0 ist.

3.22. Mods

Listen-Komponente für Modifikatoren. Beim Erstellen dieser Komponente entsteht ein Satz von Änderungen, die andere Entitäten beeinflussen. Beim Löschen der Entität verschwinden diese Änderungen.

  • radius = int, Radius, in dem die Modifikation wirkt, funktioniert nur auf der Karte.
  • objType = string, Typ der Entitäten, auf die die Modifikation angewendet wird, z. B. "Stat", "Skill", "Prop", "Item", "ModableVal", "PropMod".
  • objName = string, Name der Entität, z. B. "Speed".
  • objComp = string, Komponente, auf die die Modifikation angewendet wird, z. B. "Total", "Level".
  • objKey = string, Feld der Komponente, auf das die Modifikation wirkt, z. B. "now", "inc", "max".
  • modType = string, Art der Beeinflussung des Felds: "add", "mult", "addPerLevel", "multPerLevel".
  • now = double, Wert des Modifikators, um den geändert wird.
  • subjTooltipText = string, dem dynamischen Tooltip wird ein Hinweis auf das Subjekt hinzugefügt.
  • skipPerTooltip = bool, ersetzt im Tooltip PerLevel durch Plus.
  • skipSubjTooltip = bool, überspringt den Tooltip für dieses Subjekt.

3.23. ModableVals

Listen-Komponente globaler Variablen des Spiels. Die Bindung an eine bestimmte Entität ist nur bedingt. Der Großteil der Logik mit diesen Variablen ist im Spielcode verborgen.

  • now = double, Wert der Variablen.

3.24. Slot

Komponente, die eine Entität als Slot im Inventar definiert.

  • name = string, Name des Slots. Um einen Gegenstand in diesen Slot zu legen, muss der Wert des Felds slot der Komponente Item übereinstimmen.

3.25. Container

Legt diese Entität als Container mit Zellen fest.

  • cells = int, Anzahl der Zellen im Container.
  • cellsPanel = string, Name des Panels.

3.26. Tom

Definition, dass diese Entität ein Zauberbuch ist, das gelernt werden kann, um einen Zauber zu erhalten oder zu verbessern.

  • cast = string, Name des Zaubers.

3.27. Cast

Definition, dass die Entität ein Zauber ist.

  • mana = double, Manakosten des Zaubers.
  • predSkill = string, welcher Aktionstyp beim Aktivieren des Zaubers gestartet werden soll; z. B. starten Angriffs-Typen automatisch angreifende Aktionen.
  • notSkills = string, Hinweis, welche Aktion für diesen Zauber erforderlich ist.
  • attack = double, um wie viel die Anwendung dieses Zaubers Aktionen vom Typ Angriff beschleunigt; sinngemäß der magische Schaden.
  • gather = double, um wie viel die Aktion vom Typ Ressourcensammlung beschleunigt wird.
  • craft = double, um wie viel die Aktion vom Typ Handwerk beschleunigt wird.
  • heal = double, wie stark der Held des Spielers geheilt wird.
  • newEvent = string, Name des Ereignisses, das der Zauber auslöst, meist Buff-Ereignisse.
  • teleport = bool, Teleportation in den ausgewählten Ort.
  • explore = double, erkundet dieses Feld und benachbarte.

3.28. Blueprint

Mechanik einer Entität vom Typ Bauplan.

  • item = string, Name des Gegenstands, der erstellt wird.
  • build = string, Name des Gebäudes, das gebaut wird.
  • costName1 = string, Name des Gegenstands 1, der benötigt wird.
  • costNum1 = double, Anzahl des Gegenstands 1, die benötigt wird.
  • costName2 = string, analog für Gegenstand 2.
  • costNum2 = double, analog für Gegenstand 2.
  • costName3 = string, analog für Gegenstand 3.
  • costNum3 = double, analog für Gegenstand 3.

3.29. Cost

Preis-Komponente, legt fest, dass die Entität gekauft und verkauft werden kann.

  • raw = double, Basispreis ohne Modifikatoren. Kauf- und Verkaufspreise werden davon abgeleitet.

3.30. Event

Komponente für Ereignisse.

  • uniq = bool, Ereignis ist einzigartig; das Auftreten eines weiteren Ereignisses löscht das alte mit demselben Namen.
  • rndEvent = bool, Ereignis ist zufällig.
  • nextEvent1 = string, Name des ersten Ereignisses, das nach Abschluss des aktuellen startet.
  • nextEvent2 = string, Name des zweiten Ereignisses, das nach Abschluss des aktuellen startet.
  • castType = string, Art des Verstärkungseffekts eines Zaubers, überschreibt denselben Typ.

3.31. Proc

Komponente für die Auslösung von Procs (Chancen), z. B. die Wahrscheinlichkeit einer Krankheit.

  • addEvent = string, Ereignis, das ausgelöst wird, wenn die Chance greift.

3.32. ProcMod

Komponente, die einer Entität ermöglicht, die Proc-Chance zu beeinflussen.

  • proc = string, Name des Procs, auf den diese Komponente wirkt.
  • chance = double, Stärke des Einflusses, ein Teil der Funktionalität befindet sich im Code.
  • dependsLevel = bool, Abhängigkeit vom Level der Entität.

3.33. Usable

Einmal-Komponenten, die einen Effekt gewähren, z. B. Tränke. Die Komponente wird durch die Aktion Verwenden aktiviert.

  • stat = string, Name des Stats, den der Effekt beeinflusst.
  • skill = string, Name des Skills, den der Effekt beeinflusst.
  • nowBonus = double, Bonus, der das Feld Total.now einer Komponente beeinflusst.
  • maxBonus = double, Bonus, der das Feld Total.max einer Komponente beeinflusst.
  • cure = bool, ob der Gegenstand die Krankheit entfernt.

3.34. Drankable

Komponente, die das Trinken eines Objekts auf der Karte ermöglicht, z. B. See, Oase und Ähnliches.

3.35. Sphinx

Quest-Komponente auf der Karte, Sphinx. Parameter werden automatisch auf Grundlage der Regionsstufen festgelegt.

3.36. Living_tree

Quest-Komponente auf der Karte, Lebender Baum. Parameter werden automatisch auf Grundlage der Regionsstufen festgelegt.

3.37. Vision

Mechanik eines Objekts auf der Karte, das beim Betreten des Feldes durch den Helden des Spielers den Kartenradius vergrößert.

  • explore = int, Radius der Erkundung. 1 — normale Erkundung, 2 — um ein Feld vergrößert.

3.38. Remains

Beschreibung einer Entität als Überreste-Komponente. Ermöglicht, solche Entitäten in Untote zu verwandeln.

3.39. Audio_comp

Komponente, die das Abspielen von Sounds für eine bestimmte Entität je nach Typ ermöglicht.

  • click = string, Sound beim Klicken auf die Entität, wird für Aktionen und Zauber verwendet.
  • added = string, Sound wird beim Erstellen der Entität abgespielt, wird für Ereignisse verwendet.
  • ambient1 = string, Umgebungssound, Spur 1.
  • ambient2 = string, Umgebungssound, Spur 2.
  • ambient3 = string, Umgebungssound, Spur 3.
  • process = List<string>, Liste der Sounds, die abgespielt werden, während die Aktion ausgeführt wird.
  • waits = List<double>, Liste der Pausen zwischen den Sounds.
  • finish = string, Sound beim Abschluss der Aktion.
  • rndProcess = bool, kleine Zufallseffekte für Sounds während der Wiedergabe.

3.40. Childs

Komponente, die rekursiv neue Entitäten erzeugt.

  • list = List<Entity>, Liste der Kinder, die automatisch erstellt und an eine bestimmte Entität gebunden werden.

3.41. Preds

Komponente, die Aktionen für eine bestimmte Entität erstellt, obwohl der Großteil der Entitäten im Spielcode definiert wird.

  • list = List<string>.

3.42. Equip

Markierungskomponente, die bedeutet, dass dieser Gegenstand auf den Helden angelegt werden kann.

3.43. Res

Indikator-Komponente, dass diese Entität eine Ressource ist. Wird für Tooltips, Animationen und die Spielübersicht benötigt.

3.44. TurnAct

Komponente bedeutet, dass die Entität jeden Tick der Spielzeit geprüft werden muss, z. B. für die Komponenten Total und Duration.

4. Listen

Die Datei list.json enthält Datenabschnitte, die keine Entitäten oder Komponenten sind. Sie definieren verschiedene Listen zur Generierung von Spielinhalten.

4.1. RndGoodEvents

Liste guter zufälliger Ereignisse, die direkt zum Spielstart generiert werden.

4.2. RndEvents

Liste guter und schlechter zufälliger Ereignisse, die im Laufe des Spiels generiert werden.

4.3. Generator_dungeon_addons_physical

Liste der Erweiterungen (Add-ons), die für Dungeons mit physischem Schaden generiert werden.

4.4. Generator_dungeon_addons_magical

Liste der Erweiterungen (Add-ons), die für Dungeons mit magischem Schaden generiert werden.

4.5. Generator_ruins_addons

Liste der Erweiterungen (Add-ons), die für Ruinen generiert werden.

4.6. Generator_settlement_levels

Liste der Zuordnungen zwischen Regionsstufen und Namen der Siedlungs-Entitäten, z. B. "lvl1":"Village" bedeutet, dass in einer Region der Stufe 1 eine Siedlung vom Typ Village generiert wird.

4.7. Generator_rar_metals

Liste der Zuordnungen zwischen Regionsstufen und Namen der Vorkommen, z. B. "lvl2":"Deposit_tin" bedeutet, dass in einer Region der Stufe 2 ein Zinnvorkommen generiert wird.

4.8. Generator_mages

Liste der Zuordnungen zwischen Regionsstufen und Namen der Magier, die generiert werden und Magiertürme bewachen; z. B. "lvl3":"Priestesses" bedeutet, dass in einer Region der Stufe 3 Priesterinnen generiert werden.

4.9. LevelMobs_

Listen der Kreaturen für verschiedene Regionsstufen, die der Spieler nach der Befreiung von Gefangenen bei der Säuberung von Dungeons oder der Inspektion von Ruinen erhält.

4.10. Crafter_start, Lord_start, Mage_start,

Verschiedene Listen von Dingen, die verschiedene Spielklassen beim Start im Component GameClass im Feld learnList erhalten. Die Anzahl der Dinge wird im Feld learnNum generiert.

  • obj = string, Name des Gegenstands.
  • min = double, minimaler Zufallswert.
  • max = double, maximaler Zufallswert.
  • chance = double, Chance auf die Generierung genau dieses Gegenstands.
  • Sie können weitere Listen erstellen und sie verschiedenen Klassen zuordnen, wenn andere Baupläne oder Zauber gelernt werden sollen.

4.11. Gold_

Diese Liste bestimmt die Menge des generierten Goldes in Abhängigkeit vom Regionslevel. Gold erscheint mit einer Wahrscheinlichkeit von 50 % in allen Belohnungsarten auf der Karte. Siehe Punkt 4.10 für die Syntax.

4.12. Loot_-

Gruppe von Listen, die die Belohngenerierung in Abhängigkeit vom Regionslevel bestimmt. Wird für Kreaturen, Dungeons und Ruinen angewendet. Für Kreaturen bestimmt sie die Wahrscheinlichkeit, bestimmte Gegenstände mit 50 % Chance fallen zu lassen; die übrigen 50 % nutzen die Listen aus Punkt 4.13. Siehe Punkt 4.10 für die Syntax.

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

Gruppe von Listen, die die Belohngenerierung in Abhängigkeit vom Regionslevel und der Klasse der Kreaturen bestimmt. Wird nur für Kreaturen angewendet. Diese Listen erweitern die Listen vom Typ Loot_- und greifen in 50 % der Fälle für die Generierung klassenspezifischer Belohnungen, z. B. wenn Magier häufiger Zauberbücher und Stäbe fallen lassen sollen. Siehe Punkt 4.10 für die Syntax.

4.14. Shop_, Books_

Listen für verschiedene Regionslevels, z. B. Books5 oder Shop6. Werden zur Generierung des Ladenangebots verwendet. Siehe Punkt 4.10 für die Syntax. Diese Listen werden in der Komponente Shop, Feld type, definiert; für Türme werden sie aus dem Spielcode generiert.

Next Run — Mod-Handbuch