//* levprocs.c - game level management procedure definitions //* System library headers #include //* Application headers #include "main.h" //* Game level procedure command constant definitions enum { reset_enemy_control, set_enemy_min, set_mine_min, set_emerge_delay, set_kills_per_pickup, add_enemy, add_mine, end_of_level, keep_enemy_min, loop_start, loop_until_babies_saved, loop_until_level_clear, reduce_emerge_delay, change_enemy_min }; //* //* MODE: SURVIVE level control procedure //* int SurviveLevel[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_CYAN_GHOST, 10, set_enemy_min, ENEMY_ORANGE_GHOST, 10, set_enemy_min, ENEMY_RED_GHOST, 5, set_enemy_min, ENEMY_PINK_GHOST, 1, set_emerge_delay, 30, set_kills_per_pickup, 30, add_enemy, ENEMY_PINK_GHOST, 9, 13, DIR_DOWN, add_enemy, ENEMY_CYAN_GHOST, 20, 18, DIR_LEFT, add_enemy, ENEMY_CYAN_GHOST, 20, 8, DIR_RIGHT, add_enemy, ENEMY_RED_GHOST, 14, 6, DIR_DOWN_RIGHT, add_enemy, ENEMY_ORANGE_GHOST, 14, 20, DIR_DOWN_LEFT, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 4, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, -1, 4, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 15, (10*60), //* Increase PINK by 1 every 20 secs (to max of 30) change_enemy_min, ENEMY_PINK_GHOST, 1, 30, (20*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //* //* Game level control procedures //* //************************** Game level 1 ************************** int level1[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 0, set_enemy_min, ENEMY_CYAN_GHOST, 4, set_enemy_min, ENEMY_PINK_GHOST, 0, set_enemy_min, ENEMY_ORANGE_GHOST, 0, set_enemy_min, ENEMY_UFO, 0, set_mine_min, 0, set_emerge_delay, 5*60, set_kills_per_pickup, 4, add_enemy, ENEMY_CYAN_GHOST, 14, 6, DIR_UP, add_enemy, ENEMY_CYAN_GHOST, 14, 20, DIR_DOWN, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, 1, 10, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 1, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) //change_enemy_min, ENEMY_RED_GHOST, 1, 15, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) //change_enemy_min, ENEMY_PINK_GHOST, 1, 10, (20*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level2[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 0, set_enemy_min, ENEMY_CYAN_GHOST, 4, set_enemy_min, ENEMY_PINK_GHOST, 0, set_enemy_min, ENEMY_ORANGE_GHOST, 1, set_enemy_min, ENEMY_UFO, 1, set_mine_min, 1, set_emerge_delay, 5*60, set_kills_per_pickup, 4, add_enemy, ENEMY_CYAN_GHOST, 14, 6, DIR_DOWN, add_enemy, ENEMY_ORANGE_GHOST, 14, 20, DIR_UP, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, 1, 10, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 2, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 1, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) //change_enemy_min, ENEMY_PINK_GHOST, 1, 10, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) //change_enemy_min, ENEMY_UFO, 1, 10, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level3[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 1, set_enemy_min, ENEMY_CYAN_GHOST, 5, set_enemy_min, ENEMY_PINK_GHOST, 1, set_enemy_min, ENEMY_ORANGE_GHOST, 2, set_enemy_min, ENEMY_UFO, 1, set_mine_min, 2, set_emerge_delay, (4*60)+30, set_kills_per_pickup, 5, add_enemy, ENEMY_CYAN_GHOST, 9, 8, DIR_RIGHT, add_enemy, ENEMY_RED_GHOST, 20, 18, DIR_LEFT, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, 1, 10, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 3, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) //change_enemy_min, ENEMY_RED_GHOST, 1, 15, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) //change_enemy_min, ENEMY_PINK_GHOST, 1, 10, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) //change_enemy_min, ENEMY_UFO, 1, 10, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level4[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 1, set_enemy_min, ENEMY_CYAN_GHOST, 5, set_enemy_min, ENEMY_PINK_GHOST, 1, set_enemy_min, ENEMY_ORANGE_GHOST, 2, set_enemy_min, ENEMY_UFO, 1, set_mine_min, 3, set_emerge_delay, (4*60)+30, set_kills_per_pickup, 6, add_enemy, ENEMY_CYAN_GHOST, 9, 18, DIR_LEFT, add_enemy, ENEMY_PINK_GHOST, 20, 8, DIR_RIGHT, add_mine, 14,6, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, 1, 10, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 4, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) //change_enemy_min, ENEMY_RED_GHOST, 1, 15, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 2, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) //change_enemy_min, ENEMY_UFO, 1, 10, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level5[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 1, set_enemy_min, ENEMY_CYAN_GHOST, 6, set_enemy_min, ENEMY_PINK_GHOST, 1, set_enemy_min, ENEMY_ORANGE_GHOST, 3, set_enemy_min, ENEMY_UFO, 1, set_mine_min, 4, set_emerge_delay, 4*60, set_kills_per_pickup, 7, add_enemy, ENEMY_ORANGE_GHOST, 14, 6, DIR_UP_RIGHT, add_enemy, ENEMY_ORANGE_GHOST, 14, 20, DIR_DOWN_LEFT, add_mine, 20,11, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, 1, 10, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 5, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) //change_enemy_min, ENEMY_RED_GHOST, 1, 15, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 3, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 2, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level6[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 1, set_enemy_min, ENEMY_CYAN_GHOST, 6, set_enemy_min, ENEMY_PINK_GHOST, 1, set_enemy_min, ENEMY_ORANGE_GHOST, 3, set_enemy_min, ENEMY_UFO, 1, set_mine_min, 5, set_emerge_delay, 4*60, set_kills_per_pickup, 8, add_enemy, ENEMY_CYAN_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_CYAN_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_CYAN_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_CYAN_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 20,17, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, 1, 10, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 6, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) //change_enemy_min, ENEMY_RED_GHOST, 1, 15, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 3, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 2, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level7[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 2, set_enemy_min, ENEMY_CYAN_GHOST, 7, set_enemy_min, ENEMY_PINK_GHOST, 1, set_enemy_min, ENEMY_ORANGE_GHOST, 4, set_enemy_min, ENEMY_UFO, 1, set_mine_min, 6, set_emerge_delay, (3*60)+30, set_kills_per_pickup, 9, add_enemy, ENEMY_CYAN_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_CYAN_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_CYAN_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_CYAN_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_CYAN_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_CYAN_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 14,22, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, 1, 10, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 7, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) //change_enemy_min, ENEMY_RED_GHOST, 1, 15, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 3, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 2, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level8[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 2, set_enemy_min, ENEMY_CYAN_GHOST, 7, set_enemy_min, ENEMY_PINK_GHOST, 2, set_enemy_min, ENEMY_ORANGE_GHOST, 4, set_enemy_min, ENEMY_UFO, 2, set_mine_min, 7, set_emerge_delay, (3*60)+30, set_kills_per_pickup, 10, add_enemy, ENEMY_CYAN_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_CYAN_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_CYAN_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_CYAN_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_CYAN_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_CYAN_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 8,17, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, 1, 10, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 8, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 3, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 4, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 3, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level9[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 2, set_enemy_min, ENEMY_CYAN_GHOST, 8, set_enemy_min, ENEMY_PINK_GHOST, 2, set_enemy_min, ENEMY_ORANGE_GHOST, 5, set_enemy_min, ENEMY_UFO, 2, set_mine_min, 8, set_emerge_delay, 3*60, set_kills_per_pickup, 11, add_enemy, ENEMY_CYAN_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_CYAN_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_ORANGE_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_CYAN_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 8,11, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, 1, 9, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 9, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 4, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 4, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 3, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level10[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 2, set_enemy_min, ENEMY_CYAN_GHOST, 8, set_enemy_min, ENEMY_PINK_GHOST, 2, set_enemy_min, ENEMY_ORANGE_GHOST, 5, set_enemy_min, ENEMY_UFO, 2, set_mine_min, 9, set_emerge_delay, 3*60, set_kills_per_pickup, 12, add_enemy, ENEMY_ORANGE_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_CYAN_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_ORANGE_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_CYAN_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_CYAN_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 14,22, add_mine, 14,6, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, 1, 9, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 10, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 5, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 4, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 3, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level11[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 3, set_enemy_min, ENEMY_CYAN_GHOST, 9, set_enemy_min, ENEMY_PINK_GHOST, 2, set_enemy_min, ENEMY_ORANGE_GHOST, 6, set_enemy_min, ENEMY_UFO, 2, set_mine_min, 10, set_emerge_delay, (2*60)+30, set_kills_per_pickup, 15, add_enemy, ENEMY_ORANGE_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_ORANGE_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_ORANGE_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 20,11, add_mine, 8,17, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 8, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 9, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 6, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 5, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 4, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level12[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 3, set_enemy_min, ENEMY_CYAN_GHOST, 9, set_enemy_min, ENEMY_PINK_GHOST, 2, set_enemy_min, ENEMY_ORANGE_GHOST, 6, set_enemy_min, ENEMY_UFO, 2, set_mine_min, 11, set_emerge_delay, (2*60)+30, set_kills_per_pickup, 16, add_enemy, ENEMY_ORANGE_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_ORANGE_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_ORANGE_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 20,17, add_mine, 8,11, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 8, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 9, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 7, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 5, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 4, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level13[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 3, set_enemy_min, ENEMY_CYAN_GHOST, 10, set_enemy_min, ENEMY_PINK_GHOST, 3, set_enemy_min, ENEMY_ORANGE_GHOST, 7, set_enemy_min, ENEMY_UFO, 2, set_mine_min, 12, set_emerge_delay, 2*60, set_kills_per_pickup, 17, add_enemy, ENEMY_RED_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_RED_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_ORANGE_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_RED_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 14,22, add_mine, 14,6, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 7, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 8, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 8, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 5, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 4, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level14[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 3, set_enemy_min, ENEMY_CYAN_GHOST, 10, set_enemy_min, ENEMY_PINK_GHOST, 3, set_enemy_min, ENEMY_ORANGE_GHOST, 7, set_enemy_min, ENEMY_UFO, 3, set_mine_min, 13, set_emerge_delay, 2*60, set_kills_per_pickup, 18, add_enemy, ENEMY_ORANGE_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_RED_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_ORANGE_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_RED_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_ORANGE_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_RED_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 20,11, add_mine, 8,17, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 7, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, 1, 8, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 9, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 6, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 5, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level15[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 4, set_enemy_min, ENEMY_CYAN_GHOST, 10, set_enemy_min, ENEMY_PINK_GHOST, 3, set_enemy_min, ENEMY_ORANGE_GHOST, 8, set_enemy_min, ENEMY_UFO, 3, set_mine_min, 14, set_emerge_delay, (1*60)+30, set_kills_per_pickup, 19, add_enemy, ENEMY_RED_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_RED_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_RED_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_RED_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_RED_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_RED_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 20,17, add_mine, 8,11, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 6, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, -1, 7, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 10, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 6, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 5, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level16[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 4, set_enemy_min, ENEMY_CYAN_GHOST, 10, set_enemy_min, ENEMY_PINK_GHOST, 3, set_enemy_min, ENEMY_ORANGE_GHOST, 8, set_enemy_min, ENEMY_UFO, 3, set_mine_min, 15, set_emerge_delay, (1*60)+30, set_kills_per_pickup, 20, add_enemy, ENEMY_RED_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_RED_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_RED_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_RED_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_RED_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_RED_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 20,11, add_mine, 20,17, add_mine, 8,17, add_mine, 8,11, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 6, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, -1, 7, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 11, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 7, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 5, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level17[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 4, set_enemy_min, ENEMY_CYAN_GHOST, 10, set_enemy_min, ENEMY_PINK_GHOST, 3, set_enemy_min, ENEMY_ORANGE_GHOST, 9, set_enemy_min, ENEMY_UFO, 3, set_mine_min, 16, set_emerge_delay, 60, set_kills_per_pickup, 25, add_enemy, ENEMY_RED_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_PINK_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_RED_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_PINK_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_RED_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_PINK_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 20,11, add_mine, 20,17, add_mine, 8,17, add_mine, 8,11, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 5, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, -1, 6, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 12, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 7, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 6, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level18[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 4, set_enemy_min, ENEMY_CYAN_GHOST, 10, set_enemy_min, ENEMY_PINK_GHOST, 4, set_enemy_min, ENEMY_ORANGE_GHOST, 9, set_enemy_min, ENEMY_UFO, 3, set_mine_min, 17, set_emerge_delay, 60, set_kills_per_pickup, 25, add_enemy, ENEMY_PINK_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_RED_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_PINK_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_RED_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_PINK_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_RED_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 20,11, add_mine, 20,17, add_mine, 8,17, add_mine, 8,11, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 5, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, -1, 6, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 13, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 8, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 6, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level19[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 5, set_enemy_min, ENEMY_CYAN_GHOST, 10, set_enemy_min, ENEMY_PINK_GHOST, 4, set_enemy_min, ENEMY_ORANGE_GHOST, 10, set_enemy_min, ENEMY_UFO, 3, set_mine_min, 18, set_emerge_delay, 30, set_kills_per_pickup, 30, add_enemy, ENEMY_PINK_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_PINK_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_PINK_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_PINK_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_PINK_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_PINK_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 20,11, add_mine, 20,17, add_mine, 14,22, add_mine, 8,17, add_mine, 8,11, add_mine, 14,6, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 4, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, -1, 5, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 14, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 9, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 6, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 1 ************************** int level20[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 5, set_enemy_min, ENEMY_CYAN_GHOST, 10, set_enemy_min, ENEMY_PINK_GHOST, 4, set_enemy_min, ENEMY_ORANGE_GHOST, 10, set_enemy_min, ENEMY_UFO, 4, set_mine_min, 20, set_emerge_delay, 30, set_kills_per_pickup, 30, add_enemy, ENEMY_PINK_GHOST, 9, 18, DIR_DOWN_LEFT, add_enemy, ENEMY_PINK_GHOST, 9, 8, DIR_DOWN_RIGHT, add_enemy, ENEMY_PINK_GHOST, 14, 6, DIR_RIGHT, add_enemy, ENEMY_PINK_GHOST, 14, 20, DIR_LEFT, add_enemy, ENEMY_PINK_GHOST, 20, 18, DIR_UP_LEFT, add_enemy, ENEMY_PINK_GHOST, 20, 8, DIR_UP_RIGHT, add_mine, 20,11, add_mine, 20,17, add_mine, 14,22, add_mine, 8,17, add_mine, 8,11, add_mine, 14,6, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 10 frames every 30 secs (NTSC) reduce_emerge_delay, 10, (30*60), //* Reduce CYAN by 1 every 20 secs (to min of 4) change_enemy_min, ENEMY_CYAN_GHOST, -1, 4, (20*60), //* Reduce ORANGE by 1 every 30 secs (to min of 4) change_enemy_min, ENEMY_ORANGE_GHOST, -1, 4, (30*60), //* Increase RED by 1 every 10 secs (to max of 15) change_enemy_min, ENEMY_RED_GHOST, 1, 15, (10*60), //* Increase PINK by 1 every 20 secs (to max of 10) change_enemy_min, ENEMY_PINK_GHOST, 1, 10, (20*60), //* Increase UFO by 1 every 30 secs (to max of 10) change_enemy_min, ENEMY_UFO, 1, 10, (30*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //************************** Game level 2 ************************** int level21[] = { //* Level initialization reset_enemy_control, set_enemy_min, ENEMY_RED_GHOST, 1, set_enemy_min, ENEMY_CYAN_GHOST, 0, set_enemy_min, ENEMY_PINK_GHOST, 0, set_enemy_min, ENEMY_ORANGE_GHOST, 0, set_emerge_delay, 5*50, set_kills_per_pickup, 10, add_enemy, ENEMY_RED_GHOST, 13, 5, DIR_RIGHT, add_mine, 25,10, //* Level control loop while there are babies still to be saved loop_start, //* Dont let any enemy type population fall below their minimum! keep_enemy_min, //* Reduce emergeDelay by 30 frames every minute (NTSC) reduce_emerge_delay, 30, 1*(60*60), //* Add 1 extra cyan ghost every minute upto max of 10 change_enemy_min, ENEMY_CYAN_GHOST, 1, 10, 1*(60*60), loop_until_babies_saved, //* Level control loop while remaining enemies are still alive loop_start, loop_until_level_clear, end_of_level }; //* Array of pointers to all level procedures int *level[] = { SurviveLevel, level1, level2, level3, level4, level5, level6, level7, level8, level9, level10, level11, level12, level13, level14, level15, level16, level17, level18, level19, level20, level11 };