// 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 // }, };