From 53a1ef4aef85ece71236fb7681b832be04fb9ced Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Tue, 24 Sep 2019 23:38:20 +0000
Subject: [PATCH] Account for mysterious 10 bytes between items array and
 integers array. Set lastsave to the current minute number.  This may be used
 for update.tmp or something?

---
 xtrn/lord2/lord2.js | 83 ++++++++++++++++++++++++++++-----------------
 1 file changed, 51 insertions(+), 32 deletions(-)

diff --git a/xtrn/lord2/lord2.js b/xtrn/lord2/lord2.js
index b5014802b0..566dc9c300 100644
--- a/xtrn/lord2/lord2.js
+++ b/xtrn/lord2/lord2.js
@@ -38,144 +38,149 @@ var progname = '';
 var items = [];
 var other_players = {};
 var Player_Def = [
-	{
+	{	// 0
 		prop:'name',
 		type:'PString:25',
 		def:''
 	},
-	{
+	{	// 26 (1a)
 		prop:'realname',
 		type:'PString:40',
 		def:''
 	},
-	{
+	{	// 67 (43)
 		prop:'money',
 		type:'SignedInteger',
 		def:0
 	},
-	{
+	{	// 71 (47)
 		prop:'bank',
 		type:'SignedInteger',
 		def:0
 	},
-	{
+	{	// 75 (4b)
 		prop:'experience',
 		type:'SignedInteger',
 		def:0
 	},
-	{
+	{	// 79 (4f)
 		prop:'lastdayon',
 		type:'SignedInteger16',
 		def:-1
 	},
-	{
-		prop:'love',
+	{	// 81 (51)
+		prop:'love',		
 		type:'SignedInteger16',
 		def:0
 	},
-	{
+	{	// 83 (53)
 		prop:'weaponnumber',
 		type:'SignedInteger8',
 		def:0
 	},
-	{
+	{	// 84 (54)
 		prop:'armournumber',
 		type:'SignedInteger8',
 		def:0
 	},
-	{
+	{	// 85 (55)
 		prop:'race',
 		type:'PString:30',
 		def:''
 	},
-	{
+	{	// 106 (74)
 		prop:'sexmale',
 		type:'SignedInteger16',
 		def:0
 	},
-	{
+	{	// 108 (76)
 		prop:'onnow',
 		type:'Integer8',
 		def:0
 	},
-	{
+	{	// 109 (77)
 		prop:'battle',
 		type:'Integer8',
 		def:0
 	},
-	{
+	{	// 110 (78)
 		prop:'dead',
 		type:'SignedInteger16',
 		def:0
 	},
-	{
+	{	// 112 (7a)
 		prop:'busy',
 		type:'SignedInteger16',
 		def:0
 	},
-	{
+	{	// 114 (7c)
 		prop:'deleted',
 		type:'SignedInteger16',
 		def:0
 	},
-	{
+	{	// 116 (7e)
 		prop:'nice',
 		type:'SignedInteger16',
 		def:0
 	},
-	{
+	{	// 118 (80)
 		prop:'map',
 		type:'SignedInteger16',
 		def:0
 	},
-	{
+	{	// 120 (82)
 		prop:'e6',
 		type:'SignedInteger16',
 		def:0
 	},
-	{
+	{	// 122 (84)
 		prop:'x',
 		type:'SignedInteger16',
 		def:0
 	},
-	{
+	{	// 124 (86)
 		prop:'y',
 		type:'SignedInteger16',
 		def:0
 	},
-	{
+	{	// 126 (88)
 		prop:'i',
 		type:'Array:99:SignedInteger16',
 		def:eval('var aret = []; while(aret.length < 99) aret.push(0); aret;')
 	},
-	{
+	{	// 324 (144)
+		prop:'mystery1',	// This is a mystery...
+		type:'String:10',
+		def:''
+	},
+	{	// 334 (14e)
 		prop:'p',
 		type:'Array:99:SignedInteger',
 		def:eval('var aret = []; while(aret.length < 99) aret.push(0); aret;')
 	},
-	{
+	{	// 730 (2da)
 		prop:'t',
 		type:'Array:99:Integer8',
 		def:eval('var aret = []; while(aret.length < 99) aret.push(0); aret;')
 	},
-	{
+	{	// 829 (33d)
 		prop:'lastsaved',
 		type:'SignedInteger',
 		def:-1
 	},
-	{
+	{	// 833 (341)
 		prop:'lastdayplayed',
 		type:'SignedInteger',
 		def:-1
 	},
-	{
+	{	// 837 (345)
 		prop:'lastmap',
 		type:'SignedInteger16',
 		def:-1
 	},
-	{
+	{	// 839 (347)
 		prop:'extra',
-		type:'String:354',
+		type:'String:344',
 		def:''
 	}
 ];
@@ -516,6 +521,13 @@ function getfname(str)
 	return str.toLowerCase();
 }
 
+function savetime()
+{
+	var n = new Date();
+
+	return n.getHours()*60 + n.getMinutes();
+}
+
 function clamp_integer(v, s)
 {
 	var i = parseInt(v, 10);
@@ -771,7 +783,6 @@ function expand_ticks(str)
 	str = str.replace(/`w/ig, '');
 	str = str.replace(/`l/ig, '');
 	str = str.replace(/`c/ig, '');
-	// TODO: Not sure how to handle `c and `d is icky.
 	return str;
 }
 
@@ -2059,6 +2070,7 @@ function run_ref(sec, fname)
 			var tmp = pfile.new();
 			player.Record = tmp.Record;
 			ufile.new();
+			player.lastsaved = savetime();
 			player.put();
 			update_rec = ufile.get(player.Record);
 		},
@@ -3733,6 +3745,9 @@ function do_map()
 					status_bar();
 				}
 				break;
+			case 'H':
+				// TODO: Hail (internode)
+				break;
 			case 'L':
 				run_ref('listplayers', 'help.ref');
 				break;
@@ -3772,6 +3787,9 @@ function do_map()
 				view_inventory();
 				run_ref('closestats', 'gametxt.ref');
 				break;
+			case 'W':
+				// TODO: Write mail (multiplayer)
+				break;
 			case 'Y':
 				run_ref('yell', 'help.ref');
 				break;
@@ -3916,12 +3934,13 @@ killfiles.push(lfile);
 lfile.close();
 
 run_ref('startgame', 'gametxt.ref');
-js.on_exit('if (player !== undefined) { update_rec.onnow = 0; update_rec.busy = 0; update_rec.battle = 0; update_rec.map = player.map; update_rec.x = player.x; update_rec.y = player.y; update_rec.put(); ufile.file.close(); player.onnow = 0; player.busy = 0; player.battle = 0; player.put(); pfile.file.close() }');
+js.on_exit('if (player !== undefined) { update_rec.onnow = 0; update_rec.busy = 0; update_rec.battle = 0; update_rec.map = player.map; update_rec.x = player.x; update_rec.y = player.y; update_rec.put(); ufile.file.close(); player.onnow = 0; player.busy = 0; player.battle = 0; player.lastsaved = savetime(); player.put(); pfile.file.close() }');
 players[player.Record] = update_rec;
 player.onnow = 1;
 player.busy = 0;
 player.battle = 0;
 player.lastdayon = state.time;
 player.lastdayplayed = state.time;
+player.lastsaved = savetime();
 player.put();
 do_map();
-- 
GitLab