summaryrefslogtreecommitdiff
path: root/tools/patchgame.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/patchgame.js')
-rw-r--r--tools/patchgame.js26
1 files changed, 14 insertions, 12 deletions
diff --git a/tools/patchgame.js b/tools/patchgame.js
index 9b63f4f..167aca9 100644
--- a/tools/patchgame.js
+++ b/tools/patchgame.js
@@ -1,5 +1,7 @@
#!/usr/bin/env node
+const VERIFY = true
+
const fs = require('fs')
const sqlite3 = require('better-sqlite3')
@@ -20,8 +22,8 @@ fs.writeFileSync("backup-" + game_id + ".txt", save)
function is_valid_action(rules, game, role, action, a) {
if (action !== 'undo')
- if (game.active !== role && game.active !== "Both" && game.active !== "All")
- return false
+ if (game.active !== role && game.active !== "Both" && game.active !== "All")
+ return false
let view = rules.view(game, role)
let va = view.actions[action]
if (va === undefined)
@@ -47,27 +49,27 @@ try {
game = rules.resign(game, item.role)
else {
console.log("ACTION", i, game.seed, game.state, game.active, ">", item.role, item.action, item.arguments)
- if (1)
- if (!is_valid_action(rules, game, item.role, item.action, args)) {
- console.log(`invalid action: ${item.role} ${item.action} ${item.arguments}`)
- console.log("\t", game.state, game.active, JSON.stringify(rules.view(game, item.role).actions))
- throw "invalid action"
+ if (VERIFY) {
+ if (!is_valid_action(rules, game, item.role, item.action, args)) {
+ console.log(`invalid action: ${item.role} ${item.action} ${item.arguments}`)
+ console.log("\t", game.state, game.active, JSON.stringify(rules.view(game, item.role).actions))
+ throw "invalid action"
+ }
}
game = rules.action(game, item.role, item.action, args)
}
++i
})
+ console.log("SUCCESS %d", log.length)
+ db.prepare("update game_state set active=?, state=? where game_id=?").run(game.active, JSON.stringify(game), game_id)
} catch (err) {
console.log("FAILED %d/%d", i+1, log.length)
console.log(err)
- game.log=undefined
- game.undo=undefined
- //console.log(JSON.stringify(game,0,4))
+ delete game.log
+ delete game.undo
console.log(game)
}
-db.prepare("update game_state set active=?, state=? where game_id=?").run(game.active, JSON.stringify(game), game_id)
-
if (i < log.length) {
console.log("BROKEN ENTRIES: %d", log.length-i)
console.log(`sqlite3 db "delete from game_replay where game_id=${game_id} and replay_id>=${log[i].replay_id}"`)