Jump to content

WHILE Loop Parse Error


Rastor

Recommended Posts

After just doing a --traify of a tp2 file, WeiDU gives me the following parse error:

 

[RPGTweaks.tp2] PARSE ERROR at line 947 column 1-5

Near Text: BEGIN

        syntax error

ERROR: problem tra-ifying file [RPGTweaks.tp2]: Parsing.Parse_error

 

FATAL ERROR: Parsing.Parse_error

 

Line 947 is the new component right at the bottom of the code. Here's the last two WHILE loops before it.

 

  WHILE ("%sorc_levels%" > 18 OR "%wiz_levels%" > 18)
  BEGIN
   SET "items" = RANDOM (1 25)
   PATCH_IF "%item%" = 1
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI601Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 2
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI603Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 3
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI605Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 4
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI606Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 5
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI607Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 6
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI608Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 7
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI609Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 8
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI610Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 9
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI611Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 10
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI612Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 11
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI613Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 12
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI614Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 13
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI615Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 14
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI616Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 15
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI617Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 16
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI618Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 17
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI619Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 18
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI620Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 19
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI621Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 20
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI622Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 21
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI623Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 22
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI626Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 23
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI627Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 24
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI628Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END ELSE BEGIN
   PATCH_IF "%item%" = 25
    THEN BEGIN
     ADD_CRE_ITEM ~SPWI629Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
   END
  END

// New component
BEGIN ~More Realistic Raise Dead Costs~

 

See anything that could be causing this error?

Link to comment

You'll need a hell of a lot more than three. You've nested every one of those PATCH_IFs, meaning you'll need 25 ENDs plus an END for the WHILE loop. Usiing END ELSE BEGIN doesn't close the PATCH_IF; it still needs an END after the else clause. Instead of

 

PATCH_IF predicate THEN BEGIN
// foo
END ELSE BEGIN
 // next PATCH_IF

 

use

 

PATCH_IF predicate THEN BEGIN
 // foo
END
PATCH_IF predicate2 THEN BEGIN
 // foo2
END

 

As an aside, you're generating a random %items% but the predicates are checking %item%. As bigg points out, the loop will never close; I'd suggest replacing the WHILE with a PATCH_IF so it only runs once as well.

 

PATCH_IF ("%sorc_levels%" > 18 OR "%wiz_levels%" > 18) BEGIN
 SET "item" = RANDOM (1 25)
  PATCH_IF "%item%" = 1  BEGIN
    ADD_CRE_ITEM ~SPWI601Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 2 BEGIN
    ADD_CRE_ITEM ~SPWI603Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 3 BEGIN
    ADD_CRE_ITEM ~SPWI605Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 4 BEGIN
    ADD_CRE_ITEM ~SPWI606Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 5 BEGIN
    ADD_CRE_ITEM ~SPWI607Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 6 BEGIN
    ADD_CRE_ITEM ~SPWI608Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 7 BEGIN
    ADD_CRE_ITEM ~SPWI609Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 8 BEGIN
    ADD_CRE_ITEM ~SPWI610Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 9 BEGIN
    ADD_CRE_ITEM ~SPWI611Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 10 BEGIN
    ADD_CRE_ITEM ~SPWI612Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 11 BEGIN
    ADD_CRE_ITEM ~SPWI613Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 12 BEGIN
    ADD_CRE_ITEM ~SPWI614Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 13 BEGIN
    ADD_CRE_ITEM ~SPWI615Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 14 BEGIN
    ADD_CRE_ITEM ~SPWI616Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 15 BEGIN
    ADD_CRE_ITEM ~SPWI617Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 16 BEGIN
    ADD_CRE_ITEM ~SPWI618Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 17 BEGIN
    ADD_CRE_ITEM ~SPWI619Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 18 BEGIN
    ADD_CRE_ITEM ~SPWI620Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 19 BEGIN
    ADD_CRE_ITEM ~SPWI621Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 20 BEGIN
    ADD_CRE_ITEM ~SPWI622Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 21 BEGIN
    ADD_CRE_ITEM ~SPWI623Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 22 BEGIN
    ADD_CRE_ITEM ~SPWI626Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 23 BEGIN
    ADD_CRE_ITEM ~SPWI627Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 24 BEGIN
    ADD_CRE_ITEM ~SPWI628Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
  PATCH_IF "%item%" = 25 BEGIN
    ADD_CRE_ITEM ~SPWI629Z~ #0 #0 #0 ~IDENTIFIED~ ~QITEM1~
  END
 END

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...