#define CE_CREATION_OF_X 37
#define CE_SCORE_GETS_ZERO 38
#define CE_SCORE_GETS_ZERO_OF_X 39
+#define CE_VALUE_CHANGES 40
+#define CE_VALUE_CHANGES_OF_X 41
+#define CE_SCORE_CHANGES 42
+#define CE_SCORE_CHANGES_OF_X 43
-#define NUM_CHANGE_EVENTS 40
+#define NUM_CHANGE_EVENTS 44
#define NUM_CE_BITFIELDS ((NUM_CHANGE_EVENTS + 31) / 32)
#define CA_SET_LEVEL_GEMS 7
#define CA_SET_LEVEL_SCORE 8
#define CA_SET_LEVEL_WIND 9
-#define CA_SET_LEVEL_GRAVITY 10
+#define CA_SET_PLAYER_GRAVITY 10
#define CA_SET_PLAYER_KEYS 11
#define CA_SET_PLAYER_SPEED 12
#define CA_SET_PLAYER_SHIELD 13
#define NUM_BELTS 4
#define NUM_BELT_PARTS 3
+#define NUM_ENVELOPES 4
#define MIN_ENVELOPE_XSIZE 1
#define MIN_ENVELOPE_YSIZE 1
#define MAX_ENVELOPE_XSIZE 30
int e[3][3];
};
+struct EnvelopeInfo
+{
+ int xsize;
+ int ysize;
+
+ char text[MAX_ENVELOPE_TEXT_LEN + 1];
+};
+
struct LevelSetInfo
{
int music[MAX_LEVELS];
char *filename;
};
+struct DateInfo
+{
+ int year;
+ int month;
+ int day;
+};
+
struct LevelInfo
{
struct LevelFileInfo file_info;
int file_version; /* file format version the level is stored with */
int game_version; /* game release version the level was created with */
+ struct DateInfo creation_date;
+
boolean encoding_16bit_field; /* level contains 16-bit elements */
boolean encoding_16bit_yamyam; /* yamyam contains 16-bit elements */
boolean encoding_16bit_amoeba; /* amoeba contains 16-bit elements */
char name[MAX_LEVEL_NAME_LEN + 1];
char author[MAX_LEVEL_AUTHOR_LEN + 1];
- char envelope_text[4][MAX_ENVELOPE_TEXT_LEN + 1];
- int envelope_xsize[4], envelope_ysize[4];
+ struct EnvelopeInfo envelope[NUM_ENVELOPES];
int score[LEVEL_SCORE_ELEMENTS];
int can_move_into_acid_bits; /* bitfield to store property for elements */
int dont_collide_with_bits; /* bitfield to store property for elements */
- int initial_player_stepsize; /* initial player speed */
+ int initial_player_stepsize[MAX_PLAYERS]; /* initial player speed */
+ boolean initial_player_gravity[MAX_PLAYERS];
- boolean initial_gravity;
boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */
boolean use_spring_bug; /* for compatibility with old levels */
boolean use_time_orb_bug; /* for compatibility with old levels */