From 4ef9046f0e1c73e865bac8c349f1b3d1a9436a4e Mon Sep 17 00:00:00 2001 From: mcmlxxix <> Date: Mon, 16 Jun 2014 16:04:08 +0000 Subject: [PATCH] when removing single player games due to inactivity, score game as a forfeit loss --- xtrn/dicewarz2/service.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/xtrn/dicewarz2/service.js b/xtrn/dicewarz2/service.js index 46a0446c47..2a1df49465 100644 --- a/xtrn/dicewarz2/service.js +++ b/xtrn/dicewarz2/service.js @@ -214,12 +214,13 @@ function scanInactivity() { var game = data.games[g]; elog("game " + game.gameNumber + " last turn: " + game.last_turn + " inactive: " + (Date.now() - game.last_turn)); if(Date.now() - game.last_turn >= timeout) { + var player = game.players[game.turn]; if(game.single_player) { + scoreForfeit(player); deleteGame(game.gameNumber); elog("inactive game deleted"); } else if(game.status == status.PLAYING) { - var player = game.players[game.turn]; player.name += " AI"; player.AI = { sort:"random", @@ -236,6 +237,23 @@ function scanInactivity() { } } +/* forfeit points */ +function scoreForfeit(player) { + client.lock(game_id,"scores." + player.name,2); + + var score=client.read(game_id,"scores." + player.name); + if(!score) + score=new Score(player.name,player.system); + + score.losses++; + score.points=Number(score.points) + Number(settings.point_set.forfeit); + if(score.points < settings.min_points) + score.points = Number(settings.min_points); + + client.write(game_id,"scores." + player.name,score); + client.unlock(game_id,"scores." + player.name); +} + /* error log / debug log */ function elog(str) { var ef = new File(root + "e.log"); -- GitLab