add custom game data overrides
build container / build (push) Failing after 5m13s

This commit is contained in:
2026-11-01 16:18:38 +01:00
parent ea8e76a6b7
commit 1ccf4a760b
7 changed files with 459 additions and 1 deletions
+77
View File
@@ -0,0 +1,77 @@
// Eigene Spieldaten für diese Instanz.
//
// Die Datei liegt auf dem Host unter files/custom/game.js und wird in die
// Container als /app/custom/game.js gemountet. Sie ist kein Teil des Images:
// Änderungen brauchen nur einen Neustart, keinen Rebuild.
//
// docker compose restart al-backend al-game
//
// Regeln:
// - Objekte werden tief zusammengeführt; Arrays ersetzen den bisherigen Wert.
// - Neue IDs sind erlaubt (Items, Monster, NPCs, Conditions, ...), solange
// sie eine vorhandene Grafik aus design/dimensions.js verwenden.
// - Neue Karten sind nicht möglich: ihre Geometrie liegt in MongoDB.
// - `drops` wird an die vorhandene Tabelle angehängt.
// - `phrases` überschreibt Anzeigetexte. "*" gilt für alle Sprachen,
// ein Sprachcode (de, en, ...) hat Vorrang. Das ist nötig, wenn sich
// Zahlen in einem Tooltip ändern.
// - `apply(game)` ist ein Notausgang für alles, was sich nicht als Daten
// ausdrücken lässt; `game` enthält die Design-Objekte und `drops`.
//
// Aktuelles Beispiel: "Lone Wolf" gibt 10× XP statt 3×.
// Der Game-Server liest die Multiplikatoren aus der Condition-Definition
// (siehe docker/patch-custom-game.js); der Tooltip-Text kommt aus `phrases`.
module.exports = {
conditions: {
encouragement_lonewolf: {
gold_multiplier: 3,
xp_multiplier: 10,
luck_multiplier: 3,
// Fallback für Stellen, die die Rohdaten ohne Phrase anzeigen.
explanation:
"3× Gold, 10× XP and 3× Luck while you run one non-merchant character. Merchants may stay online. Extra rewards follow your contribution.",
},
},
phrases: {
"*": {
"condition.encouragement_lonewolf.explanation":
"3× Gold, 10× XP and 3× Luck while you run one non-merchant character. Merchants may stay online. Extra rewards follow your contribution.",
},
de: {
"condition.encouragement_lonewolf.explanation":
"3× Gold, 10× XP und 3× Glück, solange du nur einen Nicht-Händler-Charakter spielst. Händler dürfen online bleiben. Zusätzliche Belohnungen richten sich nach deinem Beitrag.",
},
},
// Weitere Beispiele – einkommentieren und anpassen:
//
// items: {
// "training_sword": {
// type: "weapon",
// wtype: "short_sword",
// skin: "sword", // muss in design/dimensions.js existieren
// name: "Training Sword",
// g: 10,
// },
// },
//
// monsters: {
// "training_goo": {
// skin: "goo",
// name: "Training Goo",
// speed: 6, charge: 12, hp: 100, xp: 100, attack: 5,
// damage_type: "physical", respawn: 1, gold: 20, range: 15,
// frequency: 0.4, aggro: 0, aa: 1,
// // Zusätzlich muss das Monster in einer Karte auftauchen, z. B.:
// // maps: { main: { monsters: [{ type: "training_goo", position: [0, 0], radius: 100, count: 1 }] } },
// },
// },
//
// drops: {
// main: [[0.001, "training_sword"]], // [Chance, Item-ID], wird angehängt
// },
//
// gold: {
// base: 0.8, // Standard 0.64
// },
};