parse-wormedit: include multiplayer levels in images
[wormy.git] / wormedit.pas
index b8f5cfbc193c8001e1165f405d9ddd57fac211a9..d310458a93fa0485273ca2ae741df9a90a815757 100644 (file)
@@ -372,7 +372,8 @@ BEGIN
       IF M2 THEN PPLINE(MXX,MYY,MX,MY,1);
       MXX:=MX; MYY:=MY;
     END; {MOUSE}
-    IF KEYPRESSED THEN BEGIN C:=#0;
+    C:=#0;
+    IF KEYPRESSED THEN BEGIN
       WHILE KEYPRESSED DO C:=READKEY;
       IF C='1'THEN BEGIN
        I4:=L[II].SPRSIZE; IF I4=0THEN I4:=B.SPRSIZE; DEC(I4);
@@ -617,12 +618,6 @@ FUNCTION COMPSIZE:WORD;
 BEGIN
   I:=B.SPRSIZE+1;
   IF B.LFROM[1]>0THEN FOR II:=B.LFROM[1]TO B.LSINGLE DO INC(I,L[II].SIZE); {SP}
-  IF B.LMULTI>0THEN FOR II:=B.LSINGLE+1TO B.LSINGLE+B.LMULTI DO INC(I,L[II].SIZE); {MP}
-  IF B.LFROM[8]>0THEN
-   FOR II:=B.LSINGLE+B.LMULTI+B.LFROM[8]TO B.LSINGLE+B.LMULTI+B.LTO[8]DO INC(I,L[II].SIZE); {RACE}
-  IF B.LFROM[9]>0THEN
-   FOR II:=B.LSINGLE+B.LMULTI+B.LRACE+B.LFROM[9]TO B.LSINGLE+B.LMULTI+B.LRACE+B.LTO[9]DO INC(I,L[II].SIZE); {CTF}
-
 {MAKE SP_END CODE}
   CASE B.ENDTYPE OF
     1:B.ENDDATA:=#$21+CHR(LO(PC+10+I))+CHR(HI(PC+10+I))+#$CD+#$37+#$4A+#$C3+#$AA+#$55+B.ENDSTR+#0;
@@ -634,6 +629,12 @@ BEGIN
   END; {ENDTYPE}
   INC(I,ORD(B.ENDDATA[0]));
 
+  IF B.LMULTI>0THEN FOR II:=B.LSINGLE+1TO B.LSINGLE+B.LMULTI DO INC(I,L[II].SIZE); {MP}
+  IF B.LFROM[8]>0THEN
+   FOR II:=B.LSINGLE+B.LMULTI+B.LFROM[8]TO B.LSINGLE+B.LMULTI+B.LTO[8]DO INC(I,L[II].SIZE); {RACE}
+  IF B.LFROM[9]>0THEN
+   FOR II:=B.LSINGLE+B.LMULTI+B.LRACE+B.LFROM[9]TO B.LSINGLE+B.LMULTI+B.LRACE+B.LTO[9]DO INC(I,L[II].SIZE); {CTF}
+
   INC(I,$35+ORD(B.NAME[0])+ORD(B.DESC[0]));
   IF B.LFROM[1]>0THEN INC(I,5); {HI_SP}
   IF B.LFROM[2]>0THEN I:=I+((1+B.LTO[2]-B.LFROM[2])*5); {HI_PW}
@@ -763,7 +764,7 @@ BEGIN
       B.LFROM[8]:=INPUTINT('ENTER STARTING LEVEL','USUALLY 1 UNLESS YOU WANT TO SKIP LEVELS0=NO LEVELS',0,1,B.LRACE);
       IF B.LFROM[8]>0THEN
         B.LTO[8]:=INPUTINT('ENTER LAST LEVEL','',B.LFROM[8],B.LRACE,B.LRACE);
-    END {RACE} ELSE IF III=8THEN BEGIN
+    END {RACE} ELSE IF III=9THEN BEGIN
       B.LFROM[9]:=INPUTINT('ENTER STARTING LEVEL','USUALLY 1 UNLESS YOU WANT TO SKIP LEVELS0=NO LEVELS',0,1,B.LCTF);
       IF B.LFROM[9]>0THEN
         B.LTO[9]:=INPUTINT('ENTER LAST LEVEL','',B.LFROM[9],B.LCTF,B.LCTF);
@@ -1205,7 +1206,8 @@ BEGIN
            FOR I:=B.LTOTAL DOWNTO B.LSINGLE+B.LMULTI+1DO L[I]:=L[I-1];
            L[B.LSINGLE+B.LMULTI]:=L[II]; II:=B.LSINGLE+B.LMULTI;
          END {MP} ELSE IF II<=B.LSINGLE+B.LMULTI+B.LRACE THEN BEGIN
-           INC(B.LRACE); L[B.LTOTAL]:=L[II]; II:=B.LTOTAL;
+           INC(B.LRACE); FOR I:=B.LTOTAL DOWNTO B.LSINGLE+B.LMULTI+B.LRACE+1DO L[I]:=L[I-1];
+           L[B.LSINGLE+B.LMULTI+B.LRACE]:=L[II]; II:=B.LSINGLE+B.LMULTI+B.LRACE;
          END {RACE} ELSE BEGIN
            INC(B.LCTF); L[B.LTOTAL]:=L[II]; II:=B.LTOTAL;
          END; {CTF}
@@ -1614,4 +1616,4 @@ BEGIN
   WINDOW(1,1,80,25); TEXTCOLOR(7); TEXTBACKGROUND(0); CLRSCR;
   WRITE('EXITING '); TEXTCOLOR(15); WRITE('WORMEDIT 0.53 BY SHIAR');
   TEXTCOLOR(7); WRITELN('.'); WRITELN('BYEBYE..'); WRITELN;
-END.
\ No newline at end of file
+END.