diff --git a/xtrn/knk/knk.js b/xtrn/knk/knk.js
index df9f089aa567b1a00230af51bb38ddb49c16b0a2..dfde374cb3cac53304a2dc723e2ac00021aa8892 100644
--- a/xtrn/knk/knk.js
+++ b/xtrn/knk/knk.js
@@ -206,17 +206,17 @@ function Player(t, n, p)
 		this.refer_singular=this.full_name;
 	}
 	this.score=0;
-	this.kastle=10000+random(10000);
-	this.soldiers=2000+random(4000);
-	this.civilians=10000+random(10000);
-	this.kannons=150+random(150);
-	this.katapults=random(1);
+	this.kastle=12500+random(10000);
+	this.soldiers=1750+random(3500);
+	this.civilians=12500+random(5000);
+	this.kannons=200+random(100);
+	this.katapults=random(2);
 	this.assassins=1+random(4);
-	this.guards=10+random(10);
-	this.gold=15000+random(15000);
-	this.food=100000+random(100000);
+	this.guards=8+random(15);
+	this.gold=17500+random(2500);
+	this.food=200000+random(100000);
 	this.power getter=function() { var p=parseInt(this.kastle/500)+parseInt(this.soldiers/750); if(p>46) return(46); return(p); };
-	this.mfood getter=function() { var f=this.food/(this.soldiers*2+this.civilians); if(isNaN(f)) return(0); if(f<0.1) return(0); return(f); };
+	this.mfood getter=function() { if(this.soldiers==0 && this.civilians==0) return(0); if(this.food==0) return(0); var f=this.food/(this.soldiers*2+this.civilians); if(f<0.1) return(0); return(f); };
 	this.produce=Player_produce;
 	this.powerbar=Player_powerbar;
 	this.drawscreen=Player_drawscreen;
@@ -530,6 +530,7 @@ function Player_soldierattack(other)
 				if(random(10)) {
 					oth_lost++;
 					other.soldiers--;
+					this.score++;
 				}
 				break;
 			case 1:
@@ -583,7 +584,7 @@ function Player_dodamage(other, damage, men)
 			else
 				rnd += other.kastle;
 
-			if(other.kastle==0 || other.soldiers==0) {
+			if(other.kastle==0 || other.soldiers==0 || rnd==0) {
 				if(nodamage=false)
 					continue;
 			}
@@ -649,16 +650,20 @@ function Player_dodamage(other, damage, men)
 			}
 			rnd -= other.civilians;
 
-			this.score++;
 			if(men) {
-				loss.soldiers++;
-				other.soldiers--;
+				if(rnd < other.soldiers) {
+					this.score++;
+					loss.soldiers++;
+					other.soldiers--;
+					total_cost+=1000;
+				}
+			}
+			if(rnd < other.kastle) {
+				this.score++;
+				loss.kastle++;
+				other.kastle--;
 				total_cost+=1000;
-				continue;
 			}
-			loss.kastle++;
-			other.kastle--;
-			total_cost+=1000;
 		}
 		while(total_cost > 100000) {
 			switch(random(2)) {
@@ -822,7 +827,7 @@ function Player_playermove(month, other)
 	var tl=bbs.time_left;
 
 	do {
-		console.print("\1h\1cTime:\1g "+parseInt(tl/60)+":"+format("%02d",tl%80)+"  \1y*  A,C,D,F,K,P,Q,R,S,T,Z,$ or ? for Help -=> \1n\1g");
+		console.print("\1n\1h\1cTime:\1g "+parseInt(tl/60)+":"+format("%02d",tl%80)+"  \1y*  A,C,D,F,K,P,Q,R,S,T,Z,$ or ? for Help -=> \1n\1g");
 		loop=false;
 		switch(getkeys("ACDFKPQRSTZ$?\r\n")) {
 			case '?':
@@ -1337,7 +1342,7 @@ function UserData(alias, wins, losses, score)
 	this.wins=parseInt(wins);
 	this.losses=parseInt(losses);
 	this.score=parseInt(score);
-	this.lines getter=function() { return(new Array(this.alias, this.wins, this.losses, this.score)); };
+	this.lines getter=function() { return([this.alias, this.wins, this.losses, this.score].join('\r\n')); };
 }
 
 function pretty_number(num)
@@ -1453,7 +1458,7 @@ function update_userfile(player, computer, won)
 		f.writeln("Rank  Name                   Games  Wins  Losses  Win %       Score");
 		f.writeln("--------------------------------------------------------------------");
 		for(line=0; line<2; line++) {
-			if(computer_total < player_total || line==1) {
+			if((computer_total <= player_total && line==0) || (computer_total > player_total && line==1)) {
 				f.writeln(format("%3u   %-22s %5u  %4u  %6u  %3u %% %11s"
 								,line+1
 								,'All Users'
@@ -1493,14 +1498,14 @@ function read_dat()
 	if(Lock(f.name, system.node, true, 1)) {
 		if(f.open("r")) {
 			dat_file.shortestgame.months=parseInt(f.readln());
-			dat_file.shortestgame.winner==f.readln();
-			dat_file.shortestgame.loser==f.readln();
-			dat_file.longestgame.months==parseInt(f.readln());
-			dat_file.longestgame.winner==f.readln();
-			dat_file.longestgame.loser==f.readln();
-			dat_file.lastgame.months==parseInt(f.readln());
-			dat_file.lastgame.winner==f.readln();
-			dat_file.lastgame.loser==f.readln();
+			dat_file.shortestgame.winner=f.readln();
+			dat_file.shortestgame.loser=f.readln();
+			dat_file.longestgame.months=parseInt(f.readln());
+			dat_file.longestgame.winner=f.readln();
+			dat_file.longestgame.loser=f.readln();
+			dat_file.lastgame.months=parseInt(f.readln());
+			dat_file.lastgame.winner=f.readln();
+			dat_file.lastgame.loser=f.readln();
 			f.close();
 		}
 	}