diff --git a/language.version b/language.version index 67b469c4b..786748a32 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r947 \cu(Mon 28 Aug 08:25:42 CEST 2023)\c-"; -SWWM_SHORTVER="\cw1.3pre r947 \cu(2023-08-28 08:25:42)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r948 \cu(Sat 2 Sep 10:01:26 CEST 2023)\c-"; +SWWM_SHORTVER="\cw1.3pre r948 \cu(2023-09-02 10:01:26)\c-"; diff --git a/zscript/hud/swwm_dialogue.zsc b/zscript/hud/swwm_dialogue.zsc index 80f66d142..4bd0cbbc2 100644 --- a/zscript/hud/swwm_dialogue.zsc +++ b/zscript/hud/swwm_dialogue.zsc @@ -12,26 +12,18 @@ Class SWWMDialogues abstract } // load the lump for parsing Array lines; - Array lnums; int cur = -1; for ( int lmp = Wads.FindLumpFullName("swwmdialogue",0,true); lmp != -1; lmp = Wads.FindLumpFullName("swwmdialogue",lmp+1,true) ) { String dat = Wads.ReadLump(lmp); + dat.Replace("\r",""); // just in case lines.Clear(); dat.Split(lines,"\n",0); - lnums.Clear(); - // for the error output - for ( int i=0; i 0 ) msg.delay = sdelay; if ( sstartdelay > 0 ) msg.startdelay = sstartdelay; @@ -91,7 +89,7 @@ Class SWWMDialogues abstract else { // additional message? append to last - if ( !lastmsg ) ThrowAbortException("dialogue '%s', line %d, lastmsg is null, this should not happen.",dlg,lnums[cur]); + if ( !lastmsg ) ThrowAbortException("dialogue '%s', line %d, lastmsg is null, this should not happen.",dlg,cur+1); lastmsg.nextmsg = msg; lastmsg.nextdirect = !sindirect; } @@ -100,50 +98,50 @@ Class SWWMDialogues abstract } else if ( lines[cur].Left(5) == "NAME " ) { - if ( sname != "" ) ThrowAbortException("dialogue '%s', line %d, duplicate 'NAME' parameter.",dlg,lnums[cur]); + if ( sname != "" ) ThrowAbortException("dialogue '%s', line %d, duplicate 'NAME' parameter.",dlg,cur+1); sname = lines[cur].Mid(5); } else if ( lines[cur].Left(4) == "CNT " ) { - if ( scnt > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'CNT' parameter.",dlg,lnums[cur]); + if ( scnt > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'CNT' parameter.",dlg,cur+1); scnt = lines[cur].Mid(4).ToInt(); } else if ( lines[cur].Left(6) == "DELAY " ) { - if ( sdelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'DELAY' parameter.",dlg,lnums[cur]); + if ( sdelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'DELAY' parameter.",dlg,cur+1); sdelay = lines[cur].Mid(6).ToInt(); } else if ( lines[cur].Left(11) == "STARTDELAY " ) { - if ( sstartdelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'STARTDELAY' parameter.",dlg,lnums[cur]); + if ( sstartdelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'STARTDELAY' parameter.",dlg,cur+1); sstartdelay = lines[cur].Mid(11).ToInt(); } else if ( lines[cur].Left(9) == "ENDDELAY " ) { - if ( senddelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'ENDDELAY' parameter.",dlg,lnums[cur]); + if ( senddelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'ENDDELAY' parameter.",dlg,cur+1); senddelay = lines[cur].Mid(9).ToInt(); } else if ( lines[cur].Left(10) == "CHARDELAY " ) { - if ( schardelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'CHARDELAY' parameter.",dlg,lnums[cur]); + if ( schardelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'CHARDELAY' parameter.",dlg,cur+1); schardelay = lines[cur].Mid(10).ToInt(); } else if ( lines[cur].Left(11) == "PAUSEDELAY " ) { - if ( spausedelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'PAUSEDELAY' parameter.",dlg,lnums[cur]); + if ( spausedelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'PAUSEDELAY' parameter.",dlg,cur+1); spausedelay = lines[cur].Mid(11).ToInt(); } else if ( lines[cur].Left(8) == "INDIRECT" ) { - if ( sindirect ) ThrowAbortException("dialogue '%s', line %d, duplicate 'INDIRECT' parameter.",dlg,lnums[cur]); + if ( sindirect ) ThrowAbortException("dialogue '%s', line %d, duplicate 'INDIRECT' parameter.",dlg,cur+1); sindirect = true; } else if ( lines[cur].Left(10) == "ZNVSPECIAL" ) { - if ( sznvspecial ) ThrowAbortException("dialogue '%s', line %d, duplicate 'ZNVSPECIAL' parameter.",dlg,lnums[cur]); + if ( sznvspecial ) ThrowAbortException("dialogue '%s', line %d, duplicate 'ZNVSPECIAL' parameter.",dlg,cur+1); sznvspecial = true; } - else ThrowAbortException("dialogue '%s', line %d, parameter not recognized",dlg,lnums[cur]); + else ThrowAbortException("dialogue '%s', line %d, parameter not recognized",dlg,cur+1); cur++; continue; } @@ -152,7 +150,7 @@ Class SWWMDialogues abstract // begin dialogue inseq = true; schr = lines[cur].Mid(4); - if ( schr == "" ) ThrowAbortException("dialogue '%s', line %d, sequence has no character.",dlg,lnums[cur]); + if ( schr == "" ) ThrowAbortException("dialogue '%s', line %d, sequence has no character.",dlg,cur+1); lastmsg = msg; msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_"..schr.."SNAME"),StringTable.Localize("$SWWM_"..schr.."NAME"),schr); // wipe params @@ -168,7 +166,7 @@ Class SWWMDialogues abstract cur++; continue; } - ThrowAbortException("dialogue '%s', line %d, expected 'SEQ' directive",dlg,lnums[cur]); + ThrowAbortException("dialogue '%s', line %d, expected 'SEQ' directive",dlg,cur+1); return; } ThrowAbortException("dialogue '%s', cursor past end of file.",dlg);