From 9803f79ed8776723dc7ac98108bc66879f921d23 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Mon, 21 Apr 2025 09:20:13 +0200 Subject: Fix replay view of discard pile. In the replay mode the view object is not serialized to JSON before viewing, so we cannot rely on the JSON representation dropping any properties with the value "undefined". Don't use (property in object) to check if something is undefined. Initialize game.discard pile in on_setup as well. --- rules.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'rules.js') diff --git a/rules.js b/rules.js index ac96885..60bcafa 100644 --- a/rules.js +++ b/rules.js @@ -140,13 +140,14 @@ exports.view = function (state, role) { dice: game.dice, } - if (game.cmd && "attacker" in game.cmd) { + if (game.cmd && game.cmd.attacker !== undefined) { view.attack = { where: game.cmd.where, attacker: game.cmd.attacker, target: game.cmd.target } - if ("n_units" in game.cmd) view.attack.n_units = game.cmd.n_units + if (game.cmd.n_units !== undefined) + view.attack.n_units = game.cmd.n_units } if (game.result) { @@ -252,7 +253,7 @@ exports.setup = function (seed, scenario, _options) { cavalry: Array(10).fill(AVAILABLE), deck: [], of_gods_and_kings: [null, null, 0], - // discard: [], + discard: [], order: [], cmd: { type: null, @@ -407,10 +408,6 @@ function end_card() { } function update_discard() { - if ("discard" in game === false) { - game.discard = [] - } - if (this_card() === 45) game.discard = [45] else if (this_card() === 46) -- cgit v1.2.3