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