diff --git a/xtrn/dicewarz/dice.js b/xtrn/dicewarz/dice.js index 73ef0b713ff7e9ff5e0dbce5ef021a8aae1f2d49..74ddd2eb047ce114ec7703d28e47debf44d2b940 100644 --- a/xtrn/dicewarz/dice.js +++ b/xtrn/dicewarz/dice.js @@ -57,7 +57,7 @@ var scores= []; var messages= []; //MESSAGES QUEUED FOR DISPLAY UPON RELOADING MAIN MENU var games= new GameStatusInfo(); var settings= new GameSettings(); -var dice= loadDice(); +var gamedice= loadDice(); var oldpass= console.ctrlkey_passthru; js.on_exit("file_remove(userFileName);"); @@ -902,14 +902,13 @@ function battle(attackFrom,attackTo,gameNumber) clearArea(16,menuColumn,8); showSelected(attackFrom,"\1n\1r\1h"); showSelected(attackTo,"\1n\1r\1h"); - var totals=rollDice(attackFrom.dice,attackTo.dice); + var totals=rollDice(attackFrom.dice,attackTo.dice,gamedice); var defender=attackTo.player; var attacker=attackFrom.player; var defending=attackTo.location; var attacking=attackFrom.location; - if(totals[0]>totals[1]) - { + if(totals[0]>totals[1]) { g.players[defender].removeTerritory(defending); //REMOVE TILE FROM DEFENDER'S LIST g.players[attacker].territories.push(defending); //ADD TILE TO ATTACKER'S LIST g.players[defender].totalDice-=(attackTo.dice); @@ -917,9 +916,7 @@ function battle(attackFrom,attackTo,gameNumber) g.grid[defending].assign(attacker,g.players[attacker]); g.grid[defending].dice=(attackFrom.dice-1); if(g.players[defender].territories.length==0) - { g.eliminatePlayer(defender,attacker); - } } g.grid[attacking].dice=1; attackFrom.show(); @@ -948,14 +945,15 @@ function forfeit(gameNumber,playerNumber) var p=g.players[playerNumber]; if(p.user > 0) { - Log("forfeiting " + system.username(g.players[playerNumber].user) + " in game " + gm.gameNumber); + Log("forfeiting " + system.username(g.players[playerNumber].user) + " in game " + gameNumber); scores[p.user].losses+=1; scores[p.user].score+=settings.forfeitPoints; } else { Log("forfeiting " + g.players[playerNumber].AI.name + " in game " + gameNumber); } - if(g.singlePlayer) + + if(g.singlePlayer && p.user > 0) file_remove(g.fileName); else { var activePlayers=g.countActivePlayers(); @@ -1119,10 +1117,11 @@ function takeTurnAI(gameNumber,playerNumber) /* if we are down to two players */ if(g.countActivePlayers().length == 2) { + var perc = computerPlayer.countTerritory() / g.mapSize; /* if this ai occupies less than a quarter of the map, forfeit the game */ - if((computerPlayer.countTerritory() / g.mapSize) < (0.25)) { - Log("computer player forfeiting game " + gameNumber); + if(perc < 0.25) { forfeit(gameNumber,playerNumber); + return false; } } diff --git a/xtrn/dicewarz/diceroll.js b/xtrn/dicewarz/diceroll.js index 2c85f3285f187b7423d23052b39cb4b74825234f..ea882be0cf95942823a67bec8582b33969c48c67 100644 --- a/xtrn/dicewarz/diceroll.js +++ b/xtrn/dicewarz/diceroll.js @@ -1,17 +1,17 @@ //#########################DICE ROLLING FUNCTIONS############################ -function rollDice(a,b) +function rollDice(a,b,dice) { //MAIN DICE ROLLING FUNCTION var totals=[0,0]; - var x=menuColumn; var y=16; + var x=menuColumn; + var y=16; bc=console.ansi(BG_RED); fc=console.ansi(LIGHTGRAY); - fancyRoll(a,x,y,fc,bc); + fancyRoll(a,x,y,fc,bc,dice); xx=x; yy=y; - for(aa=0;aa<a;aa++) - { + for(aa=0;aa<a;aa++) { rand=(random(6)+1); dice[rand].display(xx,yy,fc,bc); xx+=4; @@ -23,11 +23,10 @@ function rollDice(a,b) bc=console.ansi(BG_LIGHTGRAY); fc=console.ansi(RED); - fancyRoll(b,x,y,fc,bc); + fancyRoll(b,x,y,fc,bc,dice); xx=x; yy=y; - for(bb=0;bb<b;bb++) - { + for(bb=0;bb<b;bb++) { rand=(random(6)+1); totals[1]+=rand; dice[rand].display(xx,yy,fc,bc); @@ -38,14 +37,12 @@ function rollDice(a,b) printf("\1n\1r\1hAttacker: " + totals[0] + "\1n Defender: " + totals[1]); return totals; } -function fancyRoll(qty,x,y,fc,bc) +function fancyRoll(qty,x,y,fc,bc,dice) { //"ROLLING DICE" DISPLAY - for(roll=0;roll<8;roll++) - { + for(roll=0;roll<8;roll++) { xx=x; yy=y; - for(dr=0;dr<qty;dr++) - { + for(dr=0;dr<qty;dr++) { dice[random(6)+1].display(xx,yy,fc,bc); xx+=4; } @@ -60,13 +57,11 @@ function Die(number) this.line3=" "; this.dot="\xFE"; - if(this.number==2 || this.number==3) - { + if(this.number==2 || this.number==3) { this.line1=this.dot+" "; this.line3=" "+this.dot; } - if(this.number==4 || this.number==5 || this.number==6) - { + if(this.number==4 || this.number==5 || this.number==6) { this.line1=this.dot+" "+this.dot; this.line3=this.dot+" "+this.dot; } @@ -74,8 +69,7 @@ function Die(number) this.line2=" "+this.dot+" "; if(this.number==6) this.line2=this.dot+" "+this.dot; - this.display=function(x,y,b,f) - { + this.display=function(x,y,b,f) { console.gotoxy(x,y); y++; printf(f + b + this.line1); console.gotoxy(x,y); y++; @@ -87,10 +81,8 @@ function Die(number) } function loadDice() { //INITIALIZE SIX SIDED DICE OBJECTS - dice_=[]; - for(d=1;d<=6;d++) - { + var dice_=[]; + for(d=1;d<=6;d++) dice_[d]=new Die(d); - } return dice_; }