Skip to content
Snippets Groups Projects
Commit deb14008 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

More CNW related fixes...

- Convert second argument to @readspecial to upper-case
- Convert both sides to strings for equality comparisons
- Implement @display label in file.name
- Fix @do XXX is getname ### where ### is the current player
parent 4e076a23
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
...@@ -455,14 +455,15 @@ function insane_run_ref(sec, fname, refret) ...@@ -455,14 +455,15 @@ function insane_run_ref(sec, fname, refret)
'readspecial':function(args) { 'readspecial':function(args) {
var attr = scr.attr.value; var attr = scr.attr.value;
var ch; var ch;
var opts = args[1].toUpperCase();
if (args.length < 2) if (args.length < 2)
throw new Error('@do readspecial requires two arguments'); throw new Error('@do readspecial requires two arguments');
do { do {
ch = getkey().toUpperCase(); ch = getkey().toUpperCase();
if (ch === '\r' || ch === '\x1b') if (ch === '\r' || ch === '\x1b')
ch = args[1].substr(0, 1); ch = opts.substr(0, 1);
} while (args[1].indexOf(ch) === -1); } while (opts.indexOf(ch) === -1);
setvar(args[0], ch); setvar(args[0], ch);
dk.console.attr = 15; dk.console.attr = 15;
sln(ch); sln(ch);
...@@ -813,14 +814,14 @@ function insane_run_ref(sec, fname, refret) ...@@ -813,14 +814,14 @@ function insane_run_ref(sec, fname, refret)
l = l.substr(m[0].length); l = l.substr(m[0].length);
switch(m[1]) { switch(m[1]) {
case '=': case '=':
if (left.toString().toLowerCase() !== right.toLowerCase()) { if (left.toString().toLowerCase() !== right.toString().toLowerCase()) {
if (cur > i) if (cur > i)
cur--; cur--;
return; return;
} }
break; break;
case '!': case '!':
if (left.toString().toLowerCase() === right.toLowerCase()) { if (left.toString().toLowerCase() === right.toString().toLowerCase()) {
if (cur > i) if (cur > i)
cur--; cur--;
return; return;
...@@ -1067,9 +1068,28 @@ function insane_run_ref(sec, fname, refret) ...@@ -1067,9 +1068,28 @@ function insane_run_ref(sec, fname, refret)
}, },
'display':function(args) { 'display':function(args) {
if (args.length > 2 && args[1].toLowerCase() === 'in') { if (args.length > 2 && args[1].toLowerCase() === 'in') {
// TODO: Implement this! var label = getvar(args[0]).toString().toLowerCase();
throw new Error('@display not implemented!'); var f = new File(getfname(getvar(args[2])));
var l;
var found = false;
if (!f.open('rb'))
throw new Error('@display unable to open '+f.name);
// First, find the label...
while ((l = f.readln()) !== null) {
if (l.toLowerCase().indexOf('@#'+label) === 0) {
found = true;
break;
}
} }
if (!found)
throw new Error('@display unable to find label @#'+label+' in '+f.name);
while ((l = f.readln()) !== null) {
if (l.indexOf('@#') === 0)
break;
lln(l);
}
y }
throw new Error('@display not implemented'); throw new Error('@display not implemented');
}, },
'displayfile':function(args) { 'displayfile':function(args) {
...@@ -1132,7 +1152,7 @@ function insane_run_ref(sec, fname, refret) ...@@ -1132,7 +1152,7 @@ function insane_run_ref(sec, fname, refret)
else if (args[2].toLowerCase() === 'getname') { else if (args[2].toLowerCase() === 'getname') {
tmp = clamp_integer(getvar(args[3]), '8') - 1; tmp = clamp_integer(getvar(args[3]), '8') - 1;
if (tmp === player.Record) { if (tmp === player.Record) {
setvar(args[0], tmp.name); setvar(args[0], player.name);
} }
else { else {
if (tmp >= pfile.length || tmp < 0) if (tmp >= pfile.length || tmp < 0)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment