diff options
author | Tor Andersson <tor@ccxvii.net> | 2024-11-24 12:31:12 +0100 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2024-11-24 13:06:18 +0100 |
commit | 0e50f39f33079de81c5da473473383d6956ef575 (patch) | |
tree | 81fe9a7aa4926496ad268179dd6e04a5a6c97ee5 /tools | |
parent | a9481cf40c87ef830833177bd1a368aa9b249e74 (diff) | |
download | server-0e50f39f33079de81c5da473473383d6956ef575.tar.gz |
Use it for Columbia simultaneous card selection states to prevent the
"duplicate" snapshot when going from both player selecting to the
remaining player only.
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/patchgame.js | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/tools/patchgame.js b/tools/patchgame.js index c2b0802..1426a75 100755 --- a/tools/patchgame.js +++ b/tools/patchgame.js @@ -89,6 +89,16 @@ function is_valid_action(rules, state, role, action, arg) { return false } +function dont_snap(rules, state, old_active) { + if (state.state === "game_over") + return true + if (state.active === old_active) + return true + if (rules.dont_snap && rules.dont_snap(state)) + return true + return false +} + function patch_game(game_id, {validate_actions=true, save_snaps=true, delete_undo=false, delete_invalid=false}, verbose) { let game = select_game.get(game_id) if (!game) { @@ -142,7 +152,7 @@ function patch_game(game_id, {validate_actions=true, save_snaps=true, delete_und item.state = snapshot(state) item.checksum = crc32c(item.state) - if (old_active !== state.active) + if (!dont_snap(rules, state, old_active)) item.save = 1 old_active = state.active |