From a7962bc7c2a879c1afccf02906afc53ac81085f8 Mon Sep 17 00:00:00 2001
From: mcmlxxix <>
Date: Thu, 13 Aug 2009 17:15:46 +0000
Subject: [PATCH] kill now scores +1 point, added option to hide player names,
 revised scoring system to give more points for a win, added games per player
 limit **NOTE: this update requires clearing existing game data (delete
 everything in the directory). if you wish to retain your current game data,
 contact me for a conversion utility to update the game files.

---
 xtrn/dicewarz/dice.ini |  3 +-
 xtrn/dicewarz/dice.js  | 66 +++++++++++++++++++++++-------------------
 xtrn/dicewarz/maps.js  | 41 +++++++++++++++++---------
 3 files changed, 66 insertions(+), 44 deletions(-)

diff --git a/xtrn/dicewarz/dice.ini b/xtrn/dicewarz/dice.ini
index a6f3538778..77559e149b 100644
--- a/xtrn/dicewarz/dice.ini
+++ b/xtrn/dicewarz/dice.ini
@@ -1,10 +1,11 @@
 pointstowin=	100
 minscore=	-2
 maxgames=	100
+maxperplayer=	20
 minplayers=	3
 maxplayers=	7
 maxdice=	8
-enablelogging=	false
+enablelogging=	true
 
 
 // minplayers should be no less than 3 and no greater than 7 (default: 3)
diff --git a/xtrn/dicewarz/dice.js b/xtrn/dicewarz/dice.js
index edbafc0d60..47d8c699b7 100644
--- a/xtrn/dicewarz/dice.js
+++ b/xtrn/dicewarz/dice.js
@@ -33,6 +33,7 @@
 	var 	pointsToWin=	100;
 	var		minScore=		-2;
 	var 	maxGames=		100;
+	var 	maxPerPlayer=	20;
 	var 	minPlayers=		3;
 	var 	maxPlayers=		7;
 	var 	maxDice=		8;
@@ -64,7 +65,7 @@
 	const 	blackBG=		console.ansi(ANSI_NORMAL);
 	
 	//TODO: FIX SCORING SYSTEM... BECAUSE RIGHT NOW IT SUCKS
-	const	points=			[-2,-2,-2,-1,0,1,2];			//POINTS GAINED/LOST FOR WINNING/LOSING
+	const	points=			[-2,-2,-1,-1,0,2,4];			//POINTS GAINED/LOST FOR WINNING/LOSING
 	var		scores=			[];
 	
 	var		messages=		[];								//MESSAGES QUEUED FOR DISPLAY UPON RELOADING MAIN MENU
@@ -509,9 +510,14 @@ function	ViewGameInfo(gameNumber)
 	console.putmsg("\1n\1g Players In This Game:\r\n");
 	for(playerNumber=0;playerNumber<g.players.length;playerNumber++)
 	{
-		player=g.players[playerNumber];
+		var player=g.players[playerNumber];
+		var name=GetUserName(player,playerNumber);
+		if(g.hiddenNames && name!=user.alias)
+		{
+			name="Player " + playerNumber;
+		}
 
-		console.putmsg("\1g\1h  " + GetUserName(player,playerNumber));
+		console.putmsg("\1g\1h  " + name);
 		if(player.vote>=0) {
 			if(g.maxPlayers>g.minPlayers)
 				console.putmsg(" \1n\1gvotes to \1h" + g.getVote(playerNumber));
@@ -526,9 +532,11 @@ function	StartGame(gameNumber)
 	var players=games.gameData[gameNumber].players;
 	var oldFn=games.gameData[gameNumber].fileName
 	var oldSp=games.gameData[gameNumber].singlePlayer;
+	var oldhn=games.gameData[gameNumber].hiddenNames;
 	games.gameData[gameNumber]=new Map(columns,rows,maxPlayers,gameNumber);
 	games.gameData[gameNumber].fileName = oldFn;
 	games.gameData[gameNumber].singlePlayer = oldSp;
+	games.gameData[gameNumber].hiddenNames = oldhn;
 	g=games.gameData[gameNumber];
 	games.gameData[gameNumber].players=players;
 	games.inProgress.push(gameNumber);
@@ -564,6 +572,12 @@ function	StartGame(gameNumber)
 }
 function	JoinGame(gameNumber)
 {
+	var numplayergames=games.yourGames.length-games.eliminated.length;
+	if(numplayergames>=maxPerPlayer)
+	{
+		console.pause();
+		return;
+	}
 	var vote=-1;
 	g=games.gameData[gameNumber];
 	if(console.noyes("\1n\1gJoin this game?"));
@@ -584,7 +598,14 @@ function	JoinGame(gameNumber)
 	}
 }
 function 	CreateNewGame()
-{	
+{
+	var numplayergames=games.yourGames.length-games.eliminated.length;
+	if(numplayergames>=maxPerPlayer) 
+	{
+		QueueMessage("\1r\1hYou can only be active in " + maxPerPlayer + " games at a time",30,20);
+		return false;
+	}
+
 	var minNumPlayers=-1;
 	var maxNumPlayers=7;
 	var numComputerPlayers=-1;
@@ -616,7 +637,7 @@ function 	CreateNewGame()
 	console.gotoxy(x,y);
 	console.cleartoeol();
 	y++;
-	if(!console.noyes("\1n\1gSingle Player Game?"))
+	if(!console.noyes("\1n\1gSingle player game?"))
 	{
 		singlePlayer=true;
 		while(1)
@@ -639,6 +660,9 @@ function 	CreateNewGame()
 	}
 	else	
 	{
+		console.gotoxy(x,y);
+		y++;
+		hiddenNames=console.noyes("\1n\1gKeep player names hidden?");
 		while(1)
 		{
 			console.gotoxy(x,y);
@@ -698,6 +722,7 @@ function 	CreateNewGame()
 	}
 	if(!singlePlayer)
 	{
+		if(hiddenNames) games.gameData[gameNumber].hiddenNames=true;
 		if(fixedPlayers) games.gameData[gameNumber].fixedPlayers=true;
 		else
 		{
@@ -899,6 +924,7 @@ function	Battle(attackFrom,attackTo,gameNumber)
 			{
 				GameLog("player scored a kill: " + system.username(killer));
 				scores[killer].kills++;
+				scores[killer].points++;
 				games.StoreRankings();
 			}
 			if(killed>=0)
@@ -1181,10 +1207,13 @@ function 	Quit(err)
 function	LoadSettings()
 {
 	var sfile=new File(game_dir + "dice.ini");
+	if(!file_exists(sfile.name)) return;
+	
 	sfile.open('r',true);
 	pointsToWin=	sfile.iniGetValue(null,"pointstowin");
 	minScore=		sfile.iniGetValue(null,"minscore");
 	maxGames=		sfile.iniGetValue(null,"maxgames");
+	maxPerPlayer=	sfile.iniGetValue(null,"maxperplayer");
 	minPlayers=		sfile.iniGetValue(null,"minplayers");
 	maxPlayers=		sfile.iniGetValue(null,"maxplayers");
 	maxDice=		sfile.iniGetValue(null,"maxdice");
@@ -1234,7 +1263,6 @@ function	GameStatusInfo()
 	}
 	this.LoadRankings=function()
 	{
-		if(file_exists(game_dir + "dicerank.dat")) this.UpdateScoreFile();
 		var sfilename=game_dir+scorefile+".dat";
 		if(file_exists(sfilename))
 		{
@@ -1259,29 +1287,6 @@ function	GameStatusInfo()
 		}
 		else GameLog("score file: " + sfilename + " does not exist");
 	}
-	this.UpdateScoreFile=function() //FOR BACKWARD COMPATIBILITY WITH OLD SCORE FILES (for sysops who dont want to reset their scores with the latest changes)
-	{
-		GameLog("updating score file");		
-		var sfile=new File(game_dir+"dicerank.dat");
-		sfile.open('r',true);
-		for(sc=0;!(sfile.eof);sc++) 
-		{
-			plyr=sfile.readln();
-			if(plyr==undefined || plyr=="") break;
-			else
-			{
-				player=parseInt(plyr);
-				var score=parseInt(sfile.readln());
-				var wins=parseInt(sfile.readln());
-				var losses=parseInt(sfile.readln());
-				scores[player]={'score':score,'kills':0,'wins':wins,'losses':losses};
-				GameLog("loaded old score: " + score + " w: " + wins + " l: " + losses);		
-			}
-		}
-		sfile.close();
-		file_remove(sfile.name);
-		this.StoreRankings();
-	}
 	this.WinRound=function(player)
 	{	
 		hfilename=game_dir+halloffame+".dat";
@@ -1312,6 +1317,7 @@ function	GameStatusInfo()
 		gfile.open('r',true);
 		var lgame;
 
+		var hn=parseInt(gfile.readln())==0?false:true;
 		var status=parseInt(gfile.readln());
 		if(status<0) 
 		{
@@ -1358,6 +1364,7 @@ function	GameStatusInfo()
 		lgame.nextTurn=nt;
 		lgame.status=status;
 		lgame.playerTerr=pt;
+		lgame.hiddenNames=hn;
 		
 		for(to=0;to<np;to++)
 		{
@@ -1436,6 +1443,7 @@ function	GameStatusInfo()
 		var gfile=new File(gamefullname);
 		gfile.open('w+',false);
 		
+		gfile.writeln(g.hiddenNames?1:0);
 		gfile.writeln(g.status);
 		if(g.status<0)
 		{
diff --git a/xtrn/dicewarz/maps.js b/xtrn/dicewarz/maps.js
index 1700014663..4e78f0ac9a 100644
--- a/xtrn/dicewarz/maps.js
+++ b/xtrn/dicewarz/maps.js
@@ -8,6 +8,7 @@ function	NewGame(minp,maxp,n)
 	this.users=[];
 	this.fixedPlayers=false;
 	this.singlePlayer=false;
+	this.hiddenNames=false;
 	this.lastModified=0;
 	this.fileName="";
 	
@@ -78,6 +79,7 @@ function 	Map(c,r,p,gn)
 	this.status=1;						//GAME STATUS INDICATOR
 	this.takingTurn=false;
 	this.singlePlayer=false;
+	this.hiddenNames=false;
 	this.eliminated=[];
 	this.lastEliminator=-1;
 	this.lastMapPosition=-1;
@@ -417,21 +419,32 @@ function 	Map(c,r,p,gn)
 	}
 	this.DisplayPlayers=		function()
 	{										//DISPLAY PLAYER INFO (RIGHT SIDE)
-		xxx=menuColumn;
-		yyy=menuRow;
-		for(ply=0;ply<this.maxPlayers;ply++)
+		var xxx=menuColumn;
+		var yyy=menuRow;
+		
+		for(var ply=0;ply<this.maxPlayers;ply++)
 		{
-				playerNumber=this.turnOrder[ply];
-				this.CountDice(playerNumber);
-				player=this.players[playerNumber];
-				if(player.eliminated) { player.bColor=blackBG; player.fColor="\1n\1k\1h"; }
-				
-				console.gotoxy(xxx,yyy); yyy++;
-				console.putmsg(PrintPadded(player.bColor + player.fColor + " " + GetUserName(player,playerNumber) + ":",36," ", "left"));
-				console.gotoxy(xxx,yyy); yyy++;
-				console.putmsg(player.fColor + player.bColor+ " LAND: " + PrintPadded(player.fColor + player.territories.length,3," ", "right"));
-				console.putmsg(player.fColor + player.bColor+ " DICE: " + PrintPadded(player.fColor + player.totalDice,3," ", "right"));
-				console.putmsg(player.fColor + player.bColor+ " RSRV: " + PrintPadded(player.fColor + player.reserve,3," ", "right") + " ");
+			var playerNumber=this.turnOrder[ply];
+			this.CountDice(playerNumber);
+			var player=this.players[playerNumber];
+			var name=GetUserName(player,playerNumber);
+			
+			if(player.eliminated) 
+			{
+				player.bColor=blackBG; 
+				player.fColor="\1n\1k\1h"; 
+			}
+			else if(this.hiddenNames && name!=user.alias)
+			{
+				name="Player " + playerNumber;
+			}
+			
+			console.gotoxy(xxx,yyy); yyy++;
+			console.putmsg(PrintPadded(player.bColor + player.fColor + " " + name + ":",36," ", "left"));
+			console.gotoxy(xxx,yyy); yyy++;
+			console.putmsg(player.fColor + player.bColor+ " LAND: " + PrintPadded(player.fColor + player.territories.length,3," ", "right"));
+			console.putmsg(player.fColor + player.bColor+ " DICE: " + PrintPadded(player.fColor + player.totalDice,3," ", "right"));
+			console.putmsg(player.fColor + player.bColor+ " RSRV: " + PrintPadded(player.fColor + player.reserve,3," ", "right") + " ");
 		}
 		console.print(blackBG);
 	}
-- 
GitLab