diff --git a/xtrn/dicewarz/dice.ini b/xtrn/dicewarz/dice.ini
index 77559e149bb7299bcc9a6ec11fbea10cfcb176d0..4479e165a9710bf5891e2be05c094b5df1810ee8 100644
--- a/xtrn/dicewarz/dice.ini
+++ b/xtrn/dicewarz/dice.ini
@@ -1,12 +1,10 @@
 pointstowin=	100
 minscore=	-2
 maxgames=	100
-maxperplayer=	20
+maxperplayer=	30
 minplayers=	3
 maxplayers=	7
 maxdice=	8
-enablelogging=	true
-
 
 // minplayers should be no less than 3 and no greater than 7 (default: 3)
 // minplayers should be no less than 3 and no greater than 7 (default: 7)
diff --git a/xtrn/dicewarz/dice.js b/xtrn/dicewarz/dice.js
index f6976ae852796ce9c0ffd7cd3872f317f5c715da..ff67bf3cf1ebbc7ad3932ed15c23ab8883a8630b 100644
--- a/xtrn/dicewarz/dice.js
+++ b/xtrn/dicewarz/dice.js
@@ -13,7 +13,6 @@
 
 	load("sbbsdefs.js");
 	load("graphic.js");
-	load("logging.js");
 	var game_dir;
 	try { barfitty.barf(barf); } catch(e) { game_dir = e.fileName; }
 	game_dir = game_dir.replace(/[^\/\\]*$/,'');
@@ -37,7 +36,6 @@
 	var 	minPlayers=		3;
 	var 	maxPlayers=		7;
 	var 	maxDice=		8;
-	var 	gamelog=		false;
 	const 	root=			"game";
 	const	scorefile=		"rankings";
 	const	halloffame=		"dicehof";
@@ -57,7 +55,7 @@
 
 	const	daySeconds=		86400;
 	const 	startRow=		4;
-	const  startColumn=	3;
+	const	startColumn=	3;
 	const	menuRow=		1;
 	const	menuColumn=		50;
 	const 	columns=		9;
@@ -438,12 +436,10 @@ function 	ProcessSelection(gameNumber)
 	
 	if(g.status>=0)
 	{
-		GameLog("Loading game: " + gameNumber);
 		PlayGame(gameNumber);
 	}
 	else 
 	{
-		GameLog("Viewing game info: " + gameNumber);
 		ViewGameInfo(gameNumber);
 		if(g.users[user.number]>=0)
 		{
@@ -626,7 +622,6 @@ function 	CreateNewGame()
 		ClearArea(19,30,5);
 		var gameNumber=GetNextGameNumber();
 		var gnum=gameNumber;
-		GameLog("creating new game: " + gnum);
 		if(gameNumber<10) gnum="0" + gnum;
 		var gamefile=root + gnum;
 		Lock(gamefile);
@@ -766,7 +761,6 @@ function 	GetVote()
 	{
 		vote = 1;
 	}
-	GameLog("got user vote: " + vote);
 	return vote;
 }
 function 	GetUserName(playerData,playerNumber)
@@ -904,7 +898,6 @@ function	Battle(attackFrom,attackTo,gameNumber)
 	ShowSelected(attackFrom,"\1n\1r\1h");
 	ShowSelected(attackTo,"\1n\1r\1h");
 	var totals=RollDice(attackFrom.dice,attackTo.dice);
-	GameLog("attackingfrom: " + attackFrom.dice + " attackingTo: " + attackTo.dice);
 	
 	var defender=attackTo.player;
 	var attacker=attackFrom.player;
@@ -926,14 +919,12 @@ function	Battle(attackFrom,attackTo,gameNumber)
 			g.EliminatePlayer(defender,killer);
 			if(killer>=0)
 			{
-				GameLog("player scored a kill: " + system.username(killer));
 				scores[killer].kills++;
 				scores[killer].points++;
 				games.StoreRankings();
 			}
 			if(killed>=0)
 			{
-				GameLog("player has been killed: " + system.username(killed));
 				var kname= (killer<0?g.players[attacker].AI.name:system.username(killer));
 				DeliverKillMessage(kname,killed,gameNumber);
 			} 
@@ -949,7 +940,6 @@ function	Battle(attackFrom,attackTo,gameNumber)
 }
 function	EndTurn(gameNumber,pl)
 {
-	GameLog("###ENDING TURN");
 	var g=games.gameData[gameNumber];
 	var placed=g.Reinforce(pl);
 	ClearArea(16,menuColumn,9);
@@ -963,19 +953,16 @@ function	EndTurn(gameNumber,pl)
 }
 function	Forfeit(gameNumber,playerNumber)
 {
-	GameLog("Player " + playerNumber + " forfeitting game");
 	var g=games.gameData[gameNumber];
 	if(g.singlePlayer) 
 	{
 		scores[user.number].losses+=1;
-		GameLog("assigning loss to user " + user.alias);
 		file_remove(g.fileName);
 	}
 	else 
 	{
 		var activePlayers=g.countActivePlayers();
 		scores[user.number].score+=points[7-activePlayers.length];
-		GameLog("giving " + points[7-activePlayers.length] + " points to user " + user.alias);
 		if(activePlayers.length==2) 
 		{
 			g.status=0;
@@ -986,7 +973,6 @@ function	Forfeit(gameNumber,playerNumber)
 				{
 					g.winner=g.players[ply].user;
 					scores[g.players[ply].user].points+=2;
-					GameLog("giving " + pts + " points to user " + system.username(g.players[ply].user));
 					break;
 				}
 			}
@@ -1043,7 +1029,6 @@ function	PlayGame(gameNumber)
 				name="Player " + (parseInt(turn,10)+1);
 			}
 			////////////////////////////////////
-				GameLog("####COMPUTER PLAYER TAKING TURN");
 				ClearLine(1,48);
 				console.gotoxy(2,1);
 				console.putmsg("\1r\1hPlease wait. " + name + " taking turn.");
@@ -1075,7 +1060,6 @@ function	PlayGame(gameNumber)
 			else if(turn==currentPlayer) 
 			{
 				pMenu.enable("T");
-				GameLog("it is the current user's turn");
 			}
 			else  
 			{
@@ -1106,7 +1090,6 @@ function	PlayGame(gameNumber)
 				pMenu.enable(["F"]);
 				pMenu.disable(["Q","T"]);
 				g.takingTurn=true;
-				GameLog("######TAKING TURN");
 				if(g.CanAttack(currentPlayer,-1))
 				{
 					pMenu.enable("A");
@@ -1122,12 +1105,8 @@ function	PlayGame(gameNumber)
 				break; 
 			case "A":
 				if(Attack(gameNumber,currentPlayer));
-				else 
-				{
-					GameLog("player cancelled attack");
-					continue; 
-				}
-				g.DisplayPlayers();
+				else continue;
+ 				g.DisplayPlayers();
 				break;
 			case "E":
 				pMenu.disable(["A","E","F"]);
@@ -1193,7 +1172,6 @@ function 	TakeTurnAI(gameNumber,playerNumber)
 	targets.sort(AISortFunctions[computerPlayer.AI.sort]);
 	for(attackNum=0;attackNum<attackQuantity;attackNum++)
 	{
-		GameLog("computer " + (playerNumber+1) + " attacking: " + targets[attackNum].target + " from: " + targets[attackNum].base);
 		attackFrom=g.grid[targets[attackNum].base];
 		attackTo=g.grid[targets[attackNum].target];
 		if(attackFrom.dice>1 && attackTo.player!=playerNumber) {
@@ -1223,20 +1201,13 @@ function	LoadSettings()
 	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");
-	logEnabled=		sfile.iniGetValue(null,"enablelogging");
-	
-	if(logEnabled)
-	{
-		if(!file_isdir(game_dir+"logs")) mkdir(game_dir+"logs");
-		gamelog=new Logger(game_dir + "logs/",root);
-	}
+	pointsToWin=	parseInt(sfile.iniGetValue(null,"pointstowin"),10);
+	minScore=		parseInt(sfile.iniGetValue(null,"minscore"),10);
+	maxGames=		parseInt(sfile.iniGetValue(null,"maxgames"),10);
+	maxPerPlayer=	parseInt(sfile.iniGetValue(null,"maxperplayer"),10);
+	minPlayers=		parseInt(sfile.iniGetValue(null,"minplayers"),10);
+	maxPlayers=		parseInt(sfile.iniGetValue(null,"maxplayers"),10);
+	maxDice=		parseInt(sfile.iniGetValue(null,"maxdice"),10);
 	sfile.close();
 }
 function	GameStatusInfo()
@@ -1259,7 +1230,6 @@ function	GameStatusInfo()
 		var sfile=new File(sfilename);
 		if(!Locked(scorefile,true))
 		{
-			GameLog("storing rankings in file: " + sfilename);
 			Lock(scorefile);
 			sfile.open((file_exists(sfilename)?'r+':'w+'), true);
 			for(s in scores)
@@ -1280,7 +1250,6 @@ function	GameStatusInfo()
 		if(file_exists(sfilename))
 		{
 			var lfile=new File(sfilename);
-			GameLog("loading scores from file: " + sfilename);
 			lfile.open('r',true);
 			var plyrs=lfile.iniGetAllObjects("user");
 			for(p in plyrs)
@@ -1298,7 +1267,6 @@ function	GameStatusInfo()
 			}
 			lfile.close();
 		}
-		else GameLog("score file: " + sfilename + " does not exist");
 	}
 	this.WinRound=function(player)
 	{	
@@ -1361,7 +1329,6 @@ function	GameStatusInfo()
 					}
 				}
 			}
-			GameLog("game " + gameNumber + " loaded");
 			gfile.close();
 			return lgame;
 		}
@@ -1408,7 +1375,7 @@ function	GameStatusInfo()
 				humans++;
 				if(!scores[u])
 				{
-					scores[u]={'score':0,'wins':0,'losses':0};
+					scores[u]={'score':0,'kills':0,'wins':0,'losses':0};
 				}
 			}
 			else {
@@ -1429,7 +1396,6 @@ function	GameStatusInfo()
 		if(humans<2) 
 		{
 			lgame.singlePlayer=true;
-			GameLog("single player game");
 		}
 		for(sec=0;sec<ms;sec++)
 		{
@@ -1445,14 +1411,12 @@ function	GameStatusInfo()
 		lgame.SetGrid();
 		lgame.SetEliminated();
 		lgame.CountDiceAll();
-		GameLog("game " + gameNumber + " loaded");
 		gfile.close();
 		return lgame;
 	}
 	this.StoreGame=function(gameNumber)
 	{
 		g=this.gameData[gameNumber];
-		GameLog("Storing game: " + gameNumber);
 		var gamefullname=GetFileName(gameNumber);
 		var gfile=new File(gamefullname);
 		gfile.open('w+',false);
@@ -1501,7 +1465,6 @@ function	GameStatusInfo()
 	}	
 	this.UpdateGames=function()
 	{
-		GameLog("updating game data");
 		for(gd in this.gameData)
 		{
 			var fileName=this.gameData[gd].fileName;
@@ -1511,13 +1474,11 @@ function	GameStatusInfo()
 			{
 				if(lastModified>this.gameData[gd].lastModified) 
 				{
-					GameLog("game " + gd + " needs updating");
 					this.gameData[gd]=this.LoadGame(fileName,gd,lastModified);
 				}
 			}
 			else
 			{
-				GameLog("gamefile " + fileName + " deleted, removing data");
 				delete this.gameData[gd];
 			}
 		}
@@ -1542,7 +1503,6 @@ function	GameStatusInfo()
 	}
 	this.FilterData=function()
 	{
-		GameLog("organizing game data");
 		this.singleGames=[]; 
 		this.inProgress=[];
 		this.notFull=[];
@@ -1597,7 +1557,6 @@ function	GameStatusInfo()
 	this.LoadGames=function()
 	{	
 		var open_list=directory(game_dir + root + "*.dat"); 	
-		GameLog("today's date: " + time());
 		if(open_list.length)
 		{
 			for(lg in open_list)
@@ -1606,7 +1565,6 @@ function	GameStatusInfo()
 				var lastModified=file_date(open_list[lg]);
 				var daysOld=(time()-lastModified)/daySeconds;
 				var gameNumber=parseInt(temp_fname.substring(4,temp_fname.indexOf(".")),10);
-				GameLog("game " + gameNumber + " last modified: " + daysOld + " ago");
 				var lgame=this.LoadGame(open_list[lg],gameNumber,lastModified);
 				this.gameData[gameNumber]=lgame;
 			}
@@ -1621,7 +1579,6 @@ function	GameStatusInfo()
 			daysOld=(time()-this.gameData[oldgame].lastModified)/daySeconds;
 			if(this.gameData[oldgame].singlePlayer===true && daysOld>=10)
 			{
-				GameLog("removing old singleplayer game: " + this.gameData[oldgame].gameNumber);
 				file_remove(this.gameData[oldgame].fileName);
 				delete this.gameData[oldgame];
 			}
@@ -1630,12 +1587,10 @@ function	GameStatusInfo()
 		{
 			gm=this.completed[completed];
 			daysOld=(time()-this.gameData[gm].lastModified)/daySeconds;
-			GameLog("game was completed " + daysOld + " days ago");
 			if(this.gameData[gm].singlePlayer===true)
 			{
 				if(daysOld>=1) 
 				{
-					GameLog("removing old singleplayer game: " + this.gameData[gm].gameNumber);
 					file_remove(this.gameData[gm].fileName);
 					delete this.gameData[gm];
 				}
@@ -1644,7 +1599,6 @@ function	GameStatusInfo()
 			{
 				if(daysOld>=4) 
 				{
-					GameLog("removing old game: " + gm.gameNumber);
 					file_remove(this.gameData[gm].fileName);
 					delete this.gameData[gm];
 				}
@@ -1657,11 +1611,9 @@ function	GameStatusInfo()
 		{
 			gm=this.gameData[this.inProgress[inp]];
 			if(gm) daysOld=(time()-gm.lastModified)/daySeconds;
-			GameLog("game: " + this.inProgress[inp] + " last turn was: " + daysOld + " ago");
 			if(daysOld>=4 && !gm.singlePlayer) 
 			{
 				nextTurnPlayer=gm.turnOrder[gm.nextTurn];
-				GameLog("skipping player: " + system.username(gm.players[nextTurnPlayer].user) + " in game " + this.inProgress[inp]);
 				gm.Reinforce(nextTurnPlayer);
 				this.StoreGame(this.inProgress[inp]);
 			}
@@ -1675,10 +1627,6 @@ function	GameStatusInfo()
 		this.SkipPlayers();
 	}
 }
-function	GameLog(data)
-{
-	if(gamelog) gamelog.Log(data);
-}
 
 	LoadSettings();
 	SplashScreen();
diff --git a/xtrn/dicewarz/maps.js b/xtrn/dicewarz/maps.js
index 7419a6f5b55beb407e2ab51351df57564d0b1190..98bf3a9af1483af6c2903b0390506f42f00ad114 100644
--- a/xtrn/dicewarz/maps.js
+++ b/xtrn/dicewarz/maps.js
@@ -14,7 +14,6 @@ function	NewGame(minp,maxp,n)
 	
 	this.addPlayer=function(userNumber,vote)
 	{
-		GameLog("adding player: " + userNumber + " vote: " + vote);
 		if(userNumber) this.users[userNumber]=this.players.length;
 		this.players.push(new Player(userNumber,vote));
 	}
@@ -26,18 +25,12 @@ function	NewGame(minp,maxp,n)
 			if(this.players[v].user>0 && this.players[v].vote==1) 
 			{
 				trueVotes++;
-				GameLog("player " + v + " voted to start");
 			}
 		}
-		GameLog("votes to start: " + trueVotes);
-		GameLog("human players: " + this.countHumanPlayers());
-		GameLog("total players: " + this.countPlayers());
 		if(trueVotes==this.countHumanPlayers()) 
 		{
-			GameLog("true votes meets number of humans");
 			if(this.countPlayers()>=this.minPlayers) 
 			{	
-				GameLog("number of players meets minimum");
 				return true;
 			}
 		}
@@ -115,13 +108,11 @@ function 	Map(c,r,p,gn)
 		{
 			if(this.CountActiveHumans<2) 
 			{
-				GameLog("only one human player active, no notification sent");
 				return;
 			}
 			if(nextTurnPlayer>0 && nextTurnPlayer!=user.number) 
 			{
 				DeliverMessage(nextTurnPlayer,this.gameNumber);
-				GameLog("next player notified of turn: " + system.username(nextTurnPlayer));
 			}
 			else
 			{
@@ -132,13 +123,11 @@ function 	Map(c,r,p,gn)
 					nextTurnPlayer=this.players[this.turnOrder[nextTurn]].user;
 					if(nextTurnPlayer==this.players[this.turnOrder[this.nextTurn]].user) 
 					{
-						GameLog("all other human players eliminated, no other players notified");
 						break;
 					}
 					else if(nextTurnPlayer>0) 
 					{
 						DeliverMessage(nextTurnPlayer,this.gameNumber);
-						GameLog("skipped computer notices, next human user notified of turn: " + system.username(nextTurnPlayer));
 						break;
 					}
 				}
@@ -152,19 +141,13 @@ function 	Map(c,r,p,gn)
 	}
 	this.CheckElimination=		function()
 	{
-		GameLog("checking game elimination data");
 		var numEliminated=this.eliminated.length;
 		var humans=this.CountActiveHumans();
 		if(numEliminated==(this.maxPlayers-1) || humans==0)
 		{
 			this.winner=this.lastEliminator;
-			if(this.lastEliminator==(-1))
+			if(this.lastEliminator>=0)
 			{	
-				GameLog("game over - computer winner");
-			}
-			else
-			{	
-				GameLog("game over - player winner");
 				this.AssignPoints();
 			}
 			this.status=0;
@@ -196,13 +179,11 @@ function 	Map(c,r,p,gn)
 		if(this.singlePlayer) 
 		{
 			scores[this.winner].wins+=1;
-			GameLog("adding win to user " + this.winner);
 		}
 		else 
 		{
 			var points=this.players.length<5?1:2;
 			scores[this.winner].score=parseInt(scores[this.winner].score,10) + points;
-			GameLog("giving " + points + " points to user " + this.winner);
 		}
 		games.StoreRankings();
 	}
@@ -218,7 +199,6 @@ function 	Map(c,r,p,gn)
 			if(this.singlePlayer)
 			{
 				scores[dead.user].losses+=1;
-				GameLog(system.username(dead.user) + " lost single player game " + this.gameNumber);
 				this.status=0;
 			}
 			else
@@ -228,11 +208,9 @@ function 	Map(c,r,p,gn)
 				pts=points[pointBuffer+(this.eliminated.length-offset)];
 				scores[dead.user].score=parseInt(scores[dead.user].score,10) + pts;
 				if(scores[dead.user].score<minScore) scores[dead.user].score=parseInt(minScore,10);
-				GameLog("giving " + pts + " points to user " + system.username(dead.user));
 			}
 			games.StoreRankings();
 		}
-		GameLog("player " + playerNumber + " eliminated");
 	}
 	this.SetEliminated=			function()
 	{										//RUNS AT STARTUP, STORING GAME ELIMINATION DATA UPON LOADING EACH GAME
@@ -250,7 +228,6 @@ function 	Map(c,r,p,gn)
 	}
 	this.GetNextTurn=			function()
 	{
-		GameLog("assigning next turn in turn order");
 		if(this.nextTurn==this.maxPlayers-1) this.nextTurn=0;
 		else this.nextTurn++;
 		nextPlayer=this.turnOrder[this.nextTurn];
@@ -532,7 +509,6 @@ function 	Map(c,r,p,gn)
 		toPlace=numDice;
 		fulldice=false;
 		placed=[];
-		GameLog("Player " + (playerNumber+1) + " Placing " + numDice + " reinforcements");
 		for(sd=0;sd<numDice;sd++)
 		{
 			rand=random(this.players[playerNumber].territories.length);
@@ -540,12 +516,10 @@ function 	Map(c,r,p,gn)
 
 			if(this.players[playerNumber].totalDice==(this.players[playerNumber].territories.length*this.maxDice)) 	//IF ALL OF THIS PLAYER'S TERRITORIES HAVE THE MAXIMUM
 			{ 									  						//AMOUNT OF DICE  PUSH DICE INTO PLAYER'S RESERVE
-				GameLog("all territories full");
 				fulldice=true;
 				reserveCap=(30-this.players[playerNumber].reserve);
 				if(reserveCap>0)
 				{
-					GameLog("reserve: " + this.players[playerNumber].reserve + " reserve cap: " + reserveCap + " adding: " + toPlace);
 					if(reserveCap>=toPlace) this.players[playerNumber].reserve+=toPlace;
 					else this.players[playerNumber].reserve+=reserveCap;
 				}
@@ -566,10 +540,8 @@ function 	Map(c,r,p,gn)
 		}
 		if(this.players[playerNumber].reserve>0)
 		{
-			GameLog("placing reserves");
 			if(this.players[playerNumber].totalDice==(this.players[playerNumber].territories.length*this.maxDice)) 	//IF ALL OF THIS PLAYER'S TERRITORIES HAVE THE MAXIMUM
 			{ 									  						//AMOUNT OF DICE  PUSH DICE INTO PLAYER'S RESERVE
-				GameLog("all territories full");
 				fulldice=true;
 			}
 			else
@@ -586,7 +558,6 @@ function 	Map(c,r,p,gn)
 						this.players[playerNumber].reserve--;
 						if(this.players[playerNumber].totalDice==(this.players[playerNumber].territories.length*this.maxDice)) 	//IF ALL OF THIS PLAYER'S TERRITORIES HAVE THE MAXIMUM
 						{
-							GameLog("all territories full");
 							return placed;
 						}
 					}
@@ -614,13 +585,9 @@ function 	Map(c,r,p,gn)
 	this.Init=					function()
 	{										//InitIALIZE GAME
 		this.SetMap();
-		GameLog("map size set");
 		this.GeneratePlayers();
-		GameLog("players Generated");
 		this.GenerateMap(this.columns, this.rows);
-		GameLog("map Generated");
 		this.SetGrid();
-		GameLog("grid set");
 	}
 									//END METHODS 
 }
diff --git a/xtrn/dicewarz/menu.js b/xtrn/dicewarz/menu.js
index 31fb07cd497cfaec4b7a1f7c7017412d3b5f1980..2547430d9afd37fdf2d79d29c9e1e550f1687652 100644
--- a/xtrn/dicewarz/menu.js
+++ b/xtrn/dicewarz/menu.js
@@ -36,7 +36,6 @@ function 	Menu(title,x,y,color,hkey_color)
 			console.cleartoeol();
 
 		}
-		WipeCursor("right");
 	}
 	this.disable=function(items)
 	{
@@ -78,7 +77,6 @@ function 	Menu(title,x,y,color,hkey_color)
 		{
 			if(this.items[i].enabled) console.putmsg(this.items[i].text + " ");
 		}
-		WipeCursor("left");
 	}
 }
 function 	MenuItem(item,hotkey,color,hkey_color)