9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
-
+
|
* Solutions may optionally include a timestamp. They may also include comments.
* Maximum grid size is up to 64 by 64. The level still stores the maximum size for that level which may be less than that; objects cannot be created or move outside of the maximum area defined by the level (29 by 21 for all converted levels).
* Many attributes are now signed 32-bit numbers. This means you can for example define objects with a negative Weight or Volume.
* All values now include a type. This avoids some of the problems with improper puzzles<sup>1</sup>, and prevents segfaults, since pointers to objects are stored with the generation number.
* AltImage and GlobalBool and ExplainDeath are no longer available. This avoids problems with improper puzzles. Instead they are converted into constants (0 for AltImage and GlobalBool, 1 for ExplainDeath). There is a AltImage setting, but it is not used by class codes; it is used to select which picture to load if multiple pictures of an appropriate size are available.
* WinLevel ends execution of all class codes, and does advance the level (or a user setting may change this).
* GotoLevel and Link no longer exist; both are replaced with a new instruction called LoseLevel.
* PopupMisc() is no longer available; it is converted into "Misc1 Misc2 Misc3 (PopUp 3)", which does the same thing.
* PopupMisc() is no longer available; it is converted into "Misc1 Misc2 Misc3 (PopUp 2)", which does the same thing.
* Animations are handled differently, in order to avoid improper puzzles.<sup>2</sup>
* Signed comparison and division operators are now available, although the unsigned ones still exist and are used by converted puzzle sets.
* The Level global variable works differently. Instead of being the zero-based level number, it is a 16-bit number which is defined by the level itself and does not change if the levels are reordered (you can use it as an extra parameter to mean whatever you want in the puzzle set). Converted levels retain their existing value though.
* LevelCount is no longer available and is converted to -1 (because converted puzzle sets always use unsigned comparison operators, it should not make a mistake).
* PuzzleSetNumber is no longer available; all references to it in class codes are replaced by its value at the time of conversion.
* IgnoreKey() does some things to avoid improper puzzles and bugs.
* You can now access class attributes without needing to create an object of that class. (Having typed values helps with this.)
|