Skip to content
Snippets Groups Projects
Commit a7962bc7 authored by mcmlxxix's avatar mcmlxxix
Browse files

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.
parent ede6d004
No related branches found
No related tags found
No related merge requests found
pointstowin= 100 pointstowin= 100
minscore= -2 minscore= -2
maxgames= 100 maxgames= 100
maxperplayer= 20
minplayers= 3 minplayers= 3
maxplayers= 7 maxplayers= 7
maxdice= 8 maxdice= 8
enablelogging= false 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: 3)
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
var pointsToWin= 100; var pointsToWin= 100;
var minScore= -2; var minScore= -2;
var maxGames= 100; var maxGames= 100;
var maxPerPlayer= 20;
var minPlayers= 3; var minPlayers= 3;
var maxPlayers= 7; var maxPlayers= 7;
var maxDice= 8; var maxDice= 8;
...@@ -64,7 +65,7 @@ ...@@ -64,7 +65,7 @@
const blackBG= console.ansi(ANSI_NORMAL); const blackBG= console.ansi(ANSI_NORMAL);
//TODO: FIX SCORING SYSTEM... BECAUSE RIGHT NOW IT SUCKS //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 scores= [];
var messages= []; //MESSAGES QUEUED FOR DISPLAY UPON RELOADING MAIN MENU var messages= []; //MESSAGES QUEUED FOR DISPLAY UPON RELOADING MAIN MENU
...@@ -509,9 +510,14 @@ function ViewGameInfo(gameNumber) ...@@ -509,9 +510,14 @@ function ViewGameInfo(gameNumber)
console.putmsg("\1n\1g Players In This Game:\r\n"); console.putmsg("\1n\1g Players In This Game:\r\n");
for(playerNumber=0;playerNumber<g.players.length;playerNumber++) 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(player.vote>=0) {
if(g.maxPlayers>g.minPlayers) if(g.maxPlayers>g.minPlayers)
console.putmsg(" \1n\1gvotes to \1h" + g.getVote(playerNumber)); console.putmsg(" \1n\1gvotes to \1h" + g.getVote(playerNumber));
...@@ -526,9 +532,11 @@ function StartGame(gameNumber) ...@@ -526,9 +532,11 @@ function StartGame(gameNumber)
var players=games.gameData[gameNumber].players; var players=games.gameData[gameNumber].players;
var oldFn=games.gameData[gameNumber].fileName var oldFn=games.gameData[gameNumber].fileName
var oldSp=games.gameData[gameNumber].singlePlayer; var oldSp=games.gameData[gameNumber].singlePlayer;
var oldhn=games.gameData[gameNumber].hiddenNames;
games.gameData[gameNumber]=new Map(columns,rows,maxPlayers,gameNumber); games.gameData[gameNumber]=new Map(columns,rows,maxPlayers,gameNumber);
games.gameData[gameNumber].fileName = oldFn; games.gameData[gameNumber].fileName = oldFn;
games.gameData[gameNumber].singlePlayer = oldSp; games.gameData[gameNumber].singlePlayer = oldSp;
games.gameData[gameNumber].hiddenNames = oldhn;
g=games.gameData[gameNumber]; g=games.gameData[gameNumber];
games.gameData[gameNumber].players=players; games.gameData[gameNumber].players=players;
games.inProgress.push(gameNumber); games.inProgress.push(gameNumber);
...@@ -564,6 +572,12 @@ function StartGame(gameNumber) ...@@ -564,6 +572,12 @@ function StartGame(gameNumber)
} }
function JoinGame(gameNumber) function JoinGame(gameNumber)
{ {
var numplayergames=games.yourGames.length-games.eliminated.length;
if(numplayergames>=maxPerPlayer)
{
console.pause();
return;
}
var vote=-1; var vote=-1;
g=games.gameData[gameNumber]; g=games.gameData[gameNumber];
if(console.noyes("\1n\1gJoin this game?")); if(console.noyes("\1n\1gJoin this game?"));
...@@ -584,7 +598,14 @@ function JoinGame(gameNumber) ...@@ -584,7 +598,14 @@ function JoinGame(gameNumber)
} }
} }
function CreateNewGame() 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 minNumPlayers=-1;
var maxNumPlayers=7; var maxNumPlayers=7;
var numComputerPlayers=-1; var numComputerPlayers=-1;
...@@ -616,7 +637,7 @@ function CreateNewGame() ...@@ -616,7 +637,7 @@ function CreateNewGame()
console.gotoxy(x,y); console.gotoxy(x,y);
console.cleartoeol(); console.cleartoeol();
y++; y++;
if(!console.noyes("\1n\1gSingle Player Game?")) if(!console.noyes("\1n\1gSingle player game?"))
{ {
singlePlayer=true; singlePlayer=true;
while(1) while(1)
...@@ -639,6 +660,9 @@ function CreateNewGame() ...@@ -639,6 +660,9 @@ function CreateNewGame()
} }
else else
{ {
console.gotoxy(x,y);
y++;
hiddenNames=console.noyes("\1n\1gKeep player names hidden?");
while(1) while(1)
{ {
console.gotoxy(x,y); console.gotoxy(x,y);
...@@ -698,6 +722,7 @@ function CreateNewGame() ...@@ -698,6 +722,7 @@ function CreateNewGame()
} }
if(!singlePlayer) if(!singlePlayer)
{ {
if(hiddenNames) games.gameData[gameNumber].hiddenNames=true;
if(fixedPlayers) games.gameData[gameNumber].fixedPlayers=true; if(fixedPlayers) games.gameData[gameNumber].fixedPlayers=true;
else else
{ {
...@@ -899,6 +924,7 @@ function Battle(attackFrom,attackTo,gameNumber) ...@@ -899,6 +924,7 @@ function Battle(attackFrom,attackTo,gameNumber)
{ {
GameLog("player scored a kill: " + system.username(killer)); GameLog("player scored a kill: " + system.username(killer));
scores[killer].kills++; scores[killer].kills++;
scores[killer].points++;
games.StoreRankings(); games.StoreRankings();
} }
if(killed>=0) if(killed>=0)
...@@ -1181,10 +1207,13 @@ function Quit(err) ...@@ -1181,10 +1207,13 @@ function Quit(err)
function LoadSettings() function LoadSettings()
{ {
var sfile=new File(game_dir + "dice.ini"); var sfile=new File(game_dir + "dice.ini");
if(!file_exists(sfile.name)) return;
sfile.open('r',true); sfile.open('r',true);
pointsToWin= sfile.iniGetValue(null,"pointstowin"); pointsToWin= sfile.iniGetValue(null,"pointstowin");
minScore= sfile.iniGetValue(null,"minscore"); minScore= sfile.iniGetValue(null,"minscore");
maxGames= sfile.iniGetValue(null,"maxgames"); maxGames= sfile.iniGetValue(null,"maxgames");
maxPerPlayer= sfile.iniGetValue(null,"maxperplayer");
minPlayers= sfile.iniGetValue(null,"minplayers"); minPlayers= sfile.iniGetValue(null,"minplayers");
maxPlayers= sfile.iniGetValue(null,"maxplayers"); maxPlayers= sfile.iniGetValue(null,"maxplayers");
maxDice= sfile.iniGetValue(null,"maxdice"); maxDice= sfile.iniGetValue(null,"maxdice");
...@@ -1234,7 +1263,6 @@ function GameStatusInfo() ...@@ -1234,7 +1263,6 @@ function GameStatusInfo()
} }
this.LoadRankings=function() this.LoadRankings=function()
{ {
if(file_exists(game_dir + "dicerank.dat")) this.UpdateScoreFile();
var sfilename=game_dir+scorefile+".dat"; var sfilename=game_dir+scorefile+".dat";
if(file_exists(sfilename)) if(file_exists(sfilename))
{ {
...@@ -1259,29 +1287,6 @@ function GameStatusInfo() ...@@ -1259,29 +1287,6 @@ function GameStatusInfo()
} }
else GameLog("score file: " + sfilename + " does not exist"); 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) this.WinRound=function(player)
{ {
hfilename=game_dir+halloffame+".dat"; hfilename=game_dir+halloffame+".dat";
...@@ -1312,6 +1317,7 @@ function GameStatusInfo() ...@@ -1312,6 +1317,7 @@ function GameStatusInfo()
gfile.open('r',true); gfile.open('r',true);
var lgame; var lgame;
var hn=parseInt(gfile.readln())==0?false:true;
var status=parseInt(gfile.readln()); var status=parseInt(gfile.readln());
if(status<0) if(status<0)
{ {
...@@ -1358,6 +1364,7 @@ function GameStatusInfo() ...@@ -1358,6 +1364,7 @@ function GameStatusInfo()
lgame.nextTurn=nt; lgame.nextTurn=nt;
lgame.status=status; lgame.status=status;
lgame.playerTerr=pt; lgame.playerTerr=pt;
lgame.hiddenNames=hn;
for(to=0;to<np;to++) for(to=0;to<np;to++)
{ {
...@@ -1436,6 +1443,7 @@ function GameStatusInfo() ...@@ -1436,6 +1443,7 @@ function GameStatusInfo()
var gfile=new File(gamefullname); var gfile=new File(gamefullname);
gfile.open('w+',false); gfile.open('w+',false);
gfile.writeln(g.hiddenNames?1:0);
gfile.writeln(g.status); gfile.writeln(g.status);
if(g.status<0) if(g.status<0)
{ {
......
...@@ -8,6 +8,7 @@ function NewGame(minp,maxp,n) ...@@ -8,6 +8,7 @@ function NewGame(minp,maxp,n)
this.users=[]; this.users=[];
this.fixedPlayers=false; this.fixedPlayers=false;
this.singlePlayer=false; this.singlePlayer=false;
this.hiddenNames=false;
this.lastModified=0; this.lastModified=0;
this.fileName=""; this.fileName="";
...@@ -78,6 +79,7 @@ function Map(c,r,p,gn) ...@@ -78,6 +79,7 @@ function Map(c,r,p,gn)
this.status=1; //GAME STATUS INDICATOR this.status=1; //GAME STATUS INDICATOR
this.takingTurn=false; this.takingTurn=false;
this.singlePlayer=false; this.singlePlayer=false;
this.hiddenNames=false;
this.eliminated=[]; this.eliminated=[];
this.lastEliminator=-1; this.lastEliminator=-1;
this.lastMapPosition=-1; this.lastMapPosition=-1;
...@@ -417,21 +419,32 @@ function Map(c,r,p,gn) ...@@ -417,21 +419,32 @@ function Map(c,r,p,gn)
} }
this.DisplayPlayers= function() this.DisplayPlayers= function()
{ //DISPLAY PLAYER INFO (RIGHT SIDE) { //DISPLAY PLAYER INFO (RIGHT SIDE)
xxx=menuColumn; var xxx=menuColumn;
yyy=menuRow; var yyy=menuRow;
for(ply=0;ply<this.maxPlayers;ply++)
for(var ply=0;ply<this.maxPlayers;ply++)
{ {
playerNumber=this.turnOrder[ply]; var playerNumber=this.turnOrder[ply];
this.CountDice(playerNumber); this.CountDice(playerNumber);
player=this.players[playerNumber]; var player=this.players[playerNumber];
if(player.eliminated) { player.bColor=blackBG; player.fColor="\1n\1k\1h"; } var name=GetUserName(player,playerNumber);
console.gotoxy(xxx,yyy); yyy++; if(player.eliminated)
console.putmsg(PrintPadded(player.bColor + player.fColor + " " + GetUserName(player,playerNumber) + ":",36," ", "left")); {
console.gotoxy(xxx,yyy); yyy++; player.bColor=blackBG;
console.putmsg(player.fColor + player.bColor+ " LAND: " + PrintPadded(player.fColor + player.territories.length,3," ", "right")); player.fColor="\1n\1k\1h";
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") + " "); 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); console.print(blackBG);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment