From 2d34130d95cff61947b456cabe83fbc04bf167ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Mon, 8 Mar 2021 18:34:00 -0500
Subject: [PATCH] @readnum and @readstr ignore invalid fg/bg arguments (ie:
 comments)

---
 xtrn/lord2/lord2.js | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/xtrn/lord2/lord2.js b/xtrn/lord2/lord2.js
index e7a2c9fd7f..030e77380f 100644
--- a/xtrn/lord2/lord2.js
+++ b/xtrn/lord2/lord2.js
@@ -430,15 +430,15 @@ function insane_run_ref(sec, fname, refret)
 				// TODO: Verify if input happens on invalid parameters or not
 				val = parseInt(getvar(args[1]), 10);
 				if (isNaN(val))
-					throw new Error('@do readnum invalid default');
-				if (args.length > 2) {
+					val = 0;
+				else if (args.length > 2) {
 					bg = parseInt(getvar(getvar(args[2])), 10);
 					if (isNaN(bg))
-						throw new Error('@do readnum invalid background');
-					if (args.length > 3) {
+						bg = 1;
+					else if (args.length > 3) {
 						fg = parseInt(getvar(getvar(args[2])), 10);
 						if (isNaN(fg))
-							throw new Error('@do readnum invalid foreground');
+							fg = 15;
 					}
 				}
 			}
@@ -486,14 +486,15 @@ function insane_run_ref(sec, fname, refret)
 				if (args.length > 2) {
 					svar = args[2];
 					if (args.length > 3) {
-						// TODO: What happens in invalid bg/fg?
+						// What happens in invalid bg/fg?
+						// See ODINKEEP.REF:1818... they're ignored!
 						bg = parseInt(getvar(getvar(args[2])), 10);
 						if (isNaN(bg))
-							throw new Error('@do readstring invalid background');
-						if (args.length > 4) {
+							bg = 1;
+						else if (args.length > 4) {
 							fg = parseInt(getvar(getvar(args[2])), 10);
 							if (isNaN(fg))
-								throw new Error('@do readnum invalid foreground');
+								fg = 15;
 						}
 					}
 				}
@@ -538,6 +539,7 @@ function insane_run_ref(sec, fname, refret)
 			setvar(args[2], hs);
 		},
 		'saybar':function(args) {
+			// TODO: This does not persist across other bar updates... see "[ please wait ]" in CNW GENRAN.REF and TRAVEL.REF
 			line++;
 			if (line >= files[fname].lines.length)
 				throw new Error('Trailing saybar at '+fname+':'+line);
@@ -2538,6 +2540,8 @@ function move_player(xoff, yoff) {
 	});
 	while (enemy !== undefined)
 		offline_battle();
+	// Figure out what happens when you die from REF damage... (ie: canoe dock)
+	// It seems you stay at negative HP and don't die until something hits *facepalm*.
 	erase_player();
 	update(true);
 	perday = getvar('`v05');
-- 
GitLab