USING "penthouse_arcade_cabinet_common.sch" // ------------------------------ CONSTANTS ------------------------------ //~~~~~ Stages ~~~~~ CONST_INT ciIAP_STAGE_INFINITE_LENGTH -1 CONST_INT ciIAP_STAGE_0_LENGTH 100 CONST_INT ciIAP_STAGE_1_LENGTH 150 CONST_INT ciIAP_STAGE_2_LENGTH 250 CONST_INT ciIAP_STAGE_3_LENGTH 350 CONST_INT ciIAP_STAGE_4_LENGTH ciIAP_STAGE_INFINITE_LENGTH CONST_FLOAT cfIAP_STAGE_0_BASE_Y 0.798148 CONST_FLOAT cfIAP_STAGE_1_BASE_Y 0.794444 CONST_FLOAT cfIAP_STAGE_2_BASE_Y 0.798148 CONST_FLOAT cfIAP_STAGE_3_BASE_Y 0.794444 CONST_FLOAT cfIAP_STAGE_4_BASE_Y 0.807037 CONST_FLOAT cfIAP_STAGE_0_ADDITIONAL_SPEED_MOD 0.0 CONST_FLOAT cfIAP_STAGE_1_ADDITIONAL_SPEED_MOD 0.08 CONST_FLOAT cfIAP_STAGE_2_ADDITIONAL_SPEED_MOD 0.2 CONST_FLOAT cfIAP_STAGE_3_ADDITIONAL_SPEED_MOD 0.4 CONST_FLOAT cfIAP_STAGE_4_ADDITIONAL_SPEED_MOD 0.6 CONST_FLOAT cfIAP_STAGE_0_PITFALL_GROUND_WIDTH_LEFT 0.109375000 CONST_FLOAT cfIAP_STAGE_0_PITFALL_GROUND_WIDTH_RIGHT 0.096354167 CONST_FLOAT cfIAP_STAGE_1_PITFALL_GROUND_WIDTH_LEFT 0.036458333 CONST_FLOAT cfIAP_STAGE_1_PITFALL_GROUND_WIDTH_RIGHT 0.039062500 CONST_FLOAT cfIAP_STAGE_2_PITFALL_GROUND_WIDTH_LEFT 0.068229167 CONST_FLOAT cfIAP_STAGE_2_PITFALL_GROUND_WIDTH_RIGHT 0.076562500 CONST_FLOAT cfIAP_STAGE_3_PITFALL_GROUND_WIDTH_LEFT 0.030729167 CONST_FLOAT cfIAP_STAGE_3_PITFALL_GROUND_WIDTH_RIGHT 0.058333333 CONST_FLOAT cfIAP_STAGE_4_PITFALL_GROUND_WIDTH_LEFT 0.043229167 CONST_FLOAT cfIAP_STAGE_4_PITFALL_GROUND_WIDTH_RIGHT 0.053125000 CONST_INT ciIAP_PITFALL_CRUMBLE_ANIM_FRAMES 4 CONST_FLOAT ciIAP_PITFALL_CRUMBLE_TRIGGER_DISTANCE_MOD 1.25 CONST_FLOAT cfIAP_STAGE_0_PITFALL_CRUMBLE_SCALE_X 0.0 CONST_FLOAT cfIAP_STAGE_0_PITFALL_CRUMBLE_SCALE_Y 0.0 CONST_FLOAT cfIAP_STAGE_0_PITFALL_CRUMBLE_OFFSET_X 0.0 CONST_FLOAT cfIAP_STAGE_0_PITFALL_CRUMBLE_OFFSET_Y 0.0 CONST_FLOAT cfIAP_STAGE_1_PITFALL_CRUMBLE_SCALE_X 0.0 CONST_FLOAT cfIAP_STAGE_1_PITFALL_CRUMBLE_SCALE_Y 0.0 CONST_FLOAT cfIAP_STAGE_1_PITFALL_CRUMBLE_OFFSET_X 0.0 CONST_FLOAT cfIAP_STAGE_1_PITFALL_CRUMBLE_OFFSET_Y 0.0 CONST_FLOAT cfIAP_STAGE_2_PITFALL_CRUMBLE_SCALE_X 0.177083 CONST_FLOAT cfIAP_STAGE_2_PITFALL_CRUMBLE_SCALE_Y 0.211111 CONST_FLOAT cfIAP_STAGE_2_PITFALL_CRUMBLE_OFFSET_X -0.011979 CONST_FLOAT cfIAP_STAGE_2_PITFALL_CRUMBLE_OFFSET_Y 0.0 CONST_FLOAT cfIAP_STAGE_3_PITFALL_CRUMBLE_SCALE_X 0.0 CONST_FLOAT cfIAP_STAGE_3_PITFALL_CRUMBLE_SCALE_Y 0.0 CONST_FLOAT cfIAP_STAGE_3_PITFALL_CRUMBLE_OFFSET_X 0.0 CONST_FLOAT cfIAP_STAGE_3_PITFALL_CRUMBLE_OFFSET_Y 0.0 CONST_FLOAT cfIAP_STAGE_4_PITFALL_CRUMBLE_SCALE_X 0.0 CONST_FLOAT cfIAP_STAGE_4_PITFALL_CRUMBLE_SCALE_Y 0.0 CONST_FLOAT cfIAP_STAGE_4_PITFALL_CRUMBLE_OFFSET_X 0.0 CONST_FLOAT cfIAP_STAGE_4_PITFALL_CRUMBLE_OFFSET_Y 0.0 CONST_FLOAT cfIAP_PITFALL_DEPTH 1.2 CONST_FLOAT cfIAP_LEDGE_OFFSET 0.032407148 CONST_INT ciIAP_MAX_ACTIVE_BACKGROUND_SPRITES 3 CONST_INT ciIAP_MAX_ACTIVE_MIDGROUND1_SPRITES 3 CONST_INT ciIAP_MAX_ACTIVE_MIDGROUND2_SPRITES 3 CONST_INT ciIAP_MAX_ACTIVE_MIDGROUND3_SPRITES 5 CONST_INT ciIAP_MAX_ACTIVE_FOREGROUND_SPRITES 7 CONST_INT ciIAP_PARALLAX_DEFAULT_SPRITE 0 CONST_INT ciIAP_PARALLAX_PITFALL 1 CONST_INT ciIAP_PARALLAX_RAISED_LEDGE 2 CONST_FLOAT cfIAP_DISTANCE_CONVERSION 0.164583 //~~~~~ Objects ~~~~~ CONST_INT ciIAP_MAX_SPAWNING_OBJECTS 225 CONST_INT ciIAP_MAX_END_OIL_OBJECTS 14 CONST_INT ciIAP_MAX_ACTIVE_OBJECTS 14 CONST_INT ciIAP_MAX_OBJECT_COLLISION_POINTS 4 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS 0 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES 1 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS 2 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES 3 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE 4 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON 5 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL 6 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM 7 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE 8 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES 9 CONST_INT ciIAP_RANDOM_GENERATION_OBJECT_GROUP_MAX 10 CONST_INT ciIAP_OBJECT_DAMAGE_RED_TIME 500 CONST_INT ciIAP_DEFAULT_PLAYER_OBJECT_COLLISION_DAMAGE 4 TWEAK_FLOAT cfIAP_DRONE_END_OFFSET_X 0.125 TWEAK_FLOAT cfIAP_DRONE_END_OFFSET_Y -0.225 TWEAK_FLOAT cfIAP_DRONE_END_OFFSET_LENGTH 0.15 TWEAK_FLOAT cfIAP_DRONE_END_POSITION_ANGLE 30.0 TWEAK_FLOAT cfIAP_DRONE_END_POSITION_ANGLE_MOD 15.0 TWEAK_FLOAT cfIAP_DRONE_SIN_ANGLE_MOD 2000.0 TWEAK_FLOAT cfIAP_DRONE_SIN_POS_MOD 650.0 CONST_INT ciIAP_DRONE_LIFESPAN 6500 CONST_FLOAT cfIAP_FLAG_SPRITE_SCALE_X 0.045833 CONST_FLOAT cfIAP_FLAG_SPRITE_SCALE_Y 0.088889 CONST_FLOAT cfIAP_FLAG_MAX_Y_OFFSET 0.040404 CONST_FLOAT cfIAP_FLAG_MAX_Y_SPEED 0.177778 CONST_FLOAT cfIAP_PICKUP_FALL_SPEED 0.45 CONST_FLOAT cfIAP_PICKUP_SPAWN_Y 0.9 //~~~~~ Object Flags ~~~~~ //Random Pickup CONST_INT ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_FLAMETHROWER 1 //Blocks the flamethrower this random pickup CONST_INT ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_ROCKETS 2 //Blocks the rocket launcher this random pickup CONST_INT ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_HEALTH 4 //Blocks the health pickup this random pickup CONST_INT ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_LIFE 8 //Blocks the extra life this random pickup CONST_INT ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_SCORE 16 //Blocks the score pickup this random pickup CONST_INT ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_SHIELD 32 //Blocks the shield this random pickup CONST_INT ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_ENEMY 64 //Blocks the enemy pickup this random pickup CONST_INT ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_PLASMA 128 //Blocks the plasma cannon this random pickup CONST_INT ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_TRIPLE 256 //Blocks the triple shot this random pickup CONST_INT ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_NUKE 512 //Blocks the nuke this random pickup //Pitfalls CONST_INT ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING 1 //Makes this pitfall a crumbling pitfall. Make sure the stage has assets for this before using //Drones CONST_INT ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP 1 //Sets the drone to fly into the player when its lifespan is up instead of flying off the right of the screen //Oil Drums CONST_INT ciIAP_OBJECT_FLAG_OIL_DRUM_NO_SFX 1 //Blocks the raised flag sound effect from triggering CONST_INT ciIAP_OBJECT_FLAG_OIL_DRUM_RAISED 2 //Raises the oil drum's y pos for the end stockpile //~~~~~ Stage Speed ~~~~~ CONST_FLOAT cfIAP_BASE_STAGE_SPEED_MOD 1.0 TWEAK_FLOAT cfIAP_MAX_STAGE_SPEED_MOD 2.0 TWEAK_FLOAT cfIAP_LARGE_OIL_SPEED_BOOST 0.06 TWEAK_FLOAT cfIAP_MEDIUM_OIL_SPEED_BOOST 0.04 TWEAK_FLOAT cfIAP_SMALL_OIL_SPEED_BOOST 0.02 CONST_FLOAT cfIAP_BASE_BACKGROUND_SPEED -0.0050 CONST_FLOAT cfIAP_BASE_MIDGROUND1_SPEED -0.010 CONST_FLOAT cfIAP_BASE_MIDGROUND2_SPEED -0.02 CONST_FLOAT cfIAP_BASE_MIDGROUND3_SPEED -0.04 CONST_FLOAT cfIAP_BASE_FOREGROUND_SPEED -0.15 TWEAK_FLOAT cfIAP_MIDGROUND1_Y_OFFSET 0.0 TWEAK_FLOAT cfIAP_MIDGROUND2_Y_OFFSET 0.0 TWEAK_FLOAT cfIAP_MIDGROUND3_Y_OFFSET 0.0 TWEAK_FLOAT cfIAP_BACKGROUND_Y_OFFSET 0.0 //~~~~~ Scoring ~~~~~ CONST_FLOAT cfIAP_DISTANCE_SCORE_MOD 151.8990418 CONST_INT ciIAP_SCORE_PER_MS 4 CONST_INT ciIAP_SCORE_PER_MS_OUTRO 12 CONST_INT ciIAP_SCORE_END_OIL_SPEED_MULTIPLIER 5 CONST_INT ciIAP_SCORE_PER_LIFE_REMAINING 10000 CONST_INT ciIAP_SCORE_PER_ARMOUR_REMAINING 500 //~~~~~ Timers & Messages ~~~~~ CONST_INT ciIAP_STAGE_LOADING_TIME 10000 CONST_INT ciIAP_GO_TIME 1750 CONST_INT ciIAP_OUTRO_TEXT_TIME 7500 CONST_INT ciIAP_DEATH_TIME 7500 CONST_INT ciIAP_RON_OIL_SPLASH_FADE_TIME 3000 CONST_INT ciIAP_RON_OIL_SPLASH_HOLD_TIME 1000 CONST_INT ciIAP_GO_MESSAGE_FRAMES 11 CONST_INT ciIAP_GET_READY_MESSAGE_FRAMES 21 CONST_INT ciIAP_GAMEOVER_MESSAGE_FRAMES 21 CONST_INT ciIAP_STAGE_CLEARED_MESSAGE_FRAMES 25 CONST_FLOAT cfIAP_GO_MESSAGE_SCALE_X 0.104167 CONST_FLOAT cfIAP_GO_MESSAGE_SCALE_Y 0.118519 CONST_FLOAT cfIAP_GET_READY_MESSAGE_SCALE_X 0.266667 CONST_FLOAT cfIAP_GET_READY_MESSAGE_SCALE_Y 0.118519 CONST_FLOAT cfIAP_GAMEOVER_MESSAGE_SCALE_X 0.266667 CONST_FLOAT cfIAP_GAMEOVER_MESSAGE_SCALE_Y 0.118519 CONST_FLOAT cfIAP_STAGE_CLEARED_MESSAGE_SCALE_X 0.312500 CONST_FLOAT cfIAP_STAGE_CLEARED_MESSAGE_SCALE_Y 0.118519 CONST_INT ciIAP_HOLD_TO_QUIT_TIME 1000 //~~~~~ Player Tank ~~~~~ CONST_INT ciIAP_TANK_BASE_ANIM_FRAMES 4 CONST_INT ciIAP_TANK_JUMP_ANIM_FRAMES 4 CONST_INT ciIAP_TANK_SHOOT_ANIM_FRAMES 4 CONST_INT ciIAP_TANK_EXPLOSION_ANIM_FRAMES 16 CONST_INT ciIAP_TANK_EXPLOSION_SMOKE_INTERVAL 150 CONST_FLOAT cfIAP_TURRET_SCALE_X 0.104167 CONST_FLOAT cfIAP_TURRET_SCALE_Y 0.059259 CONST_FLOAT cfIAP_PLAYER_TANK_SCALE_X 0.104167 CONST_FLOAT cfIAP_PLAYER_TANK_SCALE_Y 0.129630 CONST_FLOAT cfIAP_PLAYER_TANK_JUMP_SCALE_X 0.104167 CONST_FLOAT cfIAP_PLAYER_TANK_JUMP_SCALE_Y 0.144444 CONST_FLOAT cfIAP_PLAYER_TANK_JUMP_SPRITE_OFFSET_Y -0.007407 CONST_FLOAT cfIAP_PLAYER_TANK_GROUND_TEST_OFFSET_X 0.011458 CONST_FLOAT cfIAP_PLAYER_TANK_KNOCK_BACK_X 0.004166667 CONST_FLOAT cfIAP_TANK_COLLISION_BOTTOM_LEFT_X -0.056 CONST_FLOAT cfIAP_TANK_COLLISION_BOTTOM_LEFT_Y 0.047 CONST_FLOAT cfIAP_TANK_COLLISION_TOP_LEFT_X -0.034 CONST_FLOAT cfIAP_TANK_COLLISION_TOP_LEFT_Y -0.036 CONST_FLOAT cfIAP_TANK_COLLISION_TOP_RIGHT_X 0.046 CONST_FLOAT cfIAP_TANK_COLLISION_TOP_RIGHT_Y -0.026 CONST_FLOAT cfIAP_TANK_COLLISION_BOTTOM_RIGHT_X 0.039 CONST_FLOAT cfIAP_TANK_COLLISION_BOTTOM_RIGHT_Y 0.047 CONST_FLOAT cfIAP_TURRET_COLLISION_BOTTOM_LEFT_X -0.010 CONST_FLOAT cfIAP_TURRET_COLLISION_BOTTOM_LEFT_Y 0.032 CONST_FLOAT cfIAP_TURRET_COLLISION_TOP_LEFT_X -0.010 CONST_FLOAT cfIAP_TURRET_COLLISION_TOP_LEFT_Y -0.032 CONST_FLOAT cfIAP_TURRET_COLLISION_CENTRE_RIGHT_X 0.059 CONST_FLOAT cfIAP_TURRET_COLLISION_CENTRE_RIGHT_Y 0.000 CONST_FLOAT cfIAP_PLAYER_TANK_BASE_POS_X 0.3 CONST_FLOAT cfIAP_PLAYER_TANK_BASE_POS_Y -0.061111 CONST_FLOAT cfIAP_PLAYER_TANK_MIN_POS_X 0.225 CONST_FLOAT cfIAP_PLAYER_TANK_MAX_POS_X 0.775 CONST_FLOAT cfIAP_PLAYER_TANK_EXPLOSION_OFFSET_Y -0.035185 CONST_FLOAT cfIAP_PLAYER_TANK_EXPLOSION_SCALE_X 0.166667 CONST_FLOAT cfIAP_PLAYER_TANK_EXPLOSION_SCALE_Y 0.2 CONST_FLOAT cfIAP_PLAYER_TANK_RESPAWN_POS_Y -0.2 CONST_INT ciIAP_PLAYER_TANK_RESPAWN_FALL_TIME_DOWN 500 CONST_INT ciIAP_PLAYER_TANK_FALL_ACCEL 500 CONST_FLOAT cfIAP_PLAYER_TANK_FALL_SPEED 0.5 CONST_FLOAT cfIAP_TURRET_OFFSET_X 0.0075 CONST_FLOAT cfIAP_TURRET_SPRITE_OFFSET_X 0.061 CONST_FLOAT cfIAP_TURRET_SPRITE_OFFSET_Y -0.055 CONST_FLOAT cfIAP_SHIELD_OFFSET_DEFAULT_Y -0.025222 CONST_FLOAT cfIAP_SHIELD_OFFSET_JUMPING_Y -0.03575 CONST_FLOAT cfIAP_SHIELD_OFFSET_X 0.0 CONST_FLOAT cfIAP_SHIELD_SCALE_X 0.110417 CONST_FLOAT cfIAP_SHIELD_SCALE_Y 0.125926 CONST_INT ciIAP_MAX_HEALTH 20 CONST_INT ciIAP_STARTING_LIVES 3 CONST_INT ciIAP_MAX_TURRET_DIRECTIONS 10 CONST_INT ciIAP_TURRET_ROTATION_INTERVAL 100 CONST_INT ciIAP_TURRET_ROTATION_INTERVAL_PC 50 CONST_FLOAT cfIAP_TURRET_DIRECTION_INCREMENT -15.0 TWEAK_INT ciIAP_PLAYER_TANK_SPEED_MOD_TIME 250 TWEAK_FLOAT cfIAP_PLAYER_TANK_MAX_SPEED_MOD 0.15 TWEAK_INT ciIAP_PLAYER_TANK_JUMP_TIME_UP 600 TWEAK_INT ciIAP_PLAYER_TANK_JUMP_INTERVAL 100 TWEAK_FLOAT cfIAP_PLAYER_TANK_JUMP_HEIGHT -0.25 CONST_INT ciIAP_PLAYER_DAMAGE_RED_TIME 750 CONST_INT ciIAP_PLAYER_RESPAWN_INVULN_TIME 2000 CONST_INT ciIAP_PLAYER_HEAL_GREEN_TIME 500 //Player Tank Bitset CONST_INT ciIAP_PLAYER_TANK_BS_SHIELD_ACTIVE 0 CONST_INT ciIAP_PLAYER_TANK_BS_TRIPLE_SHOT_ACTIVE 1 CONST_INT ciIAP_PLAYER_TANK_BS_SHOWING_HELP_TEXT 2 CONST_INT ciIAP_PLAYER_TANK_BS_DISTANCE_SCORE_ADDED 3 CONST_INT ciIAP_PLAYER_TANK_BS_ARMOUR_SCORE_ADDED 4 CONST_INT ciIAP_PLAYER_TANK_BS_LIVES_SCORE_ADDED 5 CONST_INT ciIAP_PLAYER_TANK_BS_SCORE_TALLY_STARTED 6 CONST_INT ciIAP_PLAYER_TANK_BS_STATS_SENT 7 CONST_INT ciIAP_PLAYER_TANK_BS_END_MUSIC_TRIGGERED 8 CONST_INT ciIAP_PLAYER_TANK_BS_INTRO_MUSIC_STARTED 9 CONST_INT ciIAP_PLAYER_TANK_BS_INTRO_MUSIC_STOPPED 10 //~~~~~ Projectiles & Weapons ~~~~~ CONST_INT ciIAP_MAX_PLAYER_PROJECTILES 20 CONST_INT ciIAP_MAX_ENEMY_PROJECTILES 15 CONST_INT ciIAP_BULLET_SHOOTING_INTERVAL 250 CONST_INT ciIAP_BULLET_PROJECTILE_SPEED 2000 CONST_INT ciIAP_BULLET_WEAPON_DAMAGE 4 CONST_INT ciIAP_BULLET_ANIM_FRAMES 0 CONST_FLOAT cfIAP_BULLET_PROJECTILE_SPRITE_SCALE_X 0.020833 CONST_FLOAT cfIAP_BULLET_PROJECTILE_SPRITE_SCALE_Y 0.011111 CONST_INT ciIAP_FLAME_SHOOTING_INTERVAL 50 CONST_INT ciIAP_FLAME_PROJECTILE_SPEED 800 CONST_INT ciIAP_FLAME_WEAPON_DAMAGE 1 CONST_INT ciIAP_FLAME_ANIM_FRAMES 9 CONST_FLOAT cfIAP_FLAME_PROJECTILE_SPRITE_SCALE_X 0.035417 CONST_FLOAT cfIAP_FLAME_PROJECTILE_SPRITE_SCALE_Y 0.062963 CONST_INT ciIAP_FLAME_PROJECTILE_ANIM_START_MAX_FRAME 2 CONST_FLOAT cfIAP_FLAME_PROJECTILE_RANGE 0.15 CONST_FLOAT cfIAP_FLAME_PROJECTILE_ADDITIONAL_RANGE_MAX 0.1 CONST_FLOAT cfIAP_FLAME_PROJECTILE_ORIGIN_MOD 0.0005 CONST_INT ciIAP_FLAME_PROJECTILE_ANGLE_MOD 5 CONST_INT ciIAP_FLAME_SHOT_TIME_MOD 10 CONST_INT ciIAP_HOMING_ROCKET_SHOOTING_INTERVAL 500 CONST_INT ciIAP_HOMING_ROCKET_PROJECTILE_SPEED 6000 CONST_INT ciIAP_HOMING_ROCKET_WEAPON_DAMAGE 8 CONST_INT ciIAP_HOMING_ROCKET_ANIM_FRAMES 2 CONST_FLOAT cfIAP_HOMING_ROCKET_PROJECTILE_SPRITE_SCALE_X 0.037500 CONST_FLOAT cfIAP_HOMING_ROCKET_PROJECTILE_SPRITE_SCALE_Y 0.018519 CONST_FLOAT cfIAP_HOMING_ROCKET_RANGE 0.35 CONST_FLOAT cfIAP_HOMING_ROCKET_TURN_SPEED 180.0 CONST_FLOAT cfIAP_HOMING_ROCKET_SPEED 0.375 CONST_INT ciIAP_PLASMA_SHOOTING_INTERVAL 0 CONST_INT ciIAP_PLASMA_DAMAGE_INTERVAL 62 CONST_INT ciIAP_PLASMA_PROJECTILE_SPEED 0 CONST_INT ciIAP_PLASMA_WEAPON_DAMAGE 2 CONST_INT ciIAP_PLASMA_ANIM_FRAMES 4 CONST_FLOAT cfIAP_PLASMA_PROJECTILE_SPRITE_SCALE_X 0.025000 CONST_FLOAT cfIAP_PLASMA_PROJECTILE_SPRITE_SCALE_Y 0.044444 CONST_FLOAT cfIAP_PLASMA_ORIGIN_POSITION_MOD 1.5 CONST_FLOAT cfIAP_PLASMA_BOUNCE_MAX_DISTANCE 0.35 CONST_INT ciIAP_PLASMA_BOUNCE_MAX 3 CONST_INT ciIAP_FALLING_BARREL_PROJECTILE_SPEED 5000 CONST_INT ciIAP_FALLING_BARREL_ANIM_FRAMES 8 CONST_FLOAT cfIAP_FALLING_BARREL_PROJECTILE_SPRITE_SCALE_X 0.054167 CONST_FLOAT cfIAP_FALLING_BARREL_PROJECTILE_SPRITE_SCALE_Y 0.092593 CONST_INT ciIAP_ENEMY_PROJECTILE_SPEED ciIAP_BULLET_PROJECTILE_SPEED CONST_INT ciIAP_ENEMY_ANIM_FRAMES 0 CONST_FLOAT cfIAP_ENEMY_PROJECTILE_SPRITE_SCALE_X 0.027083 CONST_FLOAT cfIAP_ENEMY_PROJECTILE_SPRITE_SCALE_Y 0.022222 //~~~~~ Pickups ~~~~~ CONST_FLOAT cfIAP_PICKUP_PARACHUTE_SPRITE_SCALE_X 0.020833 CONST_FLOAT cfIAP_PICKUP_PARACHUTE_SPRITE_SCALE_Y 0.037037 CONST_INT ciIAP_PICKUP_MAX 11 CONST_INT ciIAP_PICKUP_OPEN_FRAMES 3 CONST_INT ciIAP_PICKUP_SCORE_VALUE 10000 CONST_FLOAT cfIAP_PICKUP_ROTATION 20.0 CONST_FLOAT cfIAP_PICKUP_OPEN_EFFECT_SPRITE_SCALE_X 0.085417 CONST_FLOAT cfIAP_PICKUP_OPEN_EFFECT_SPRITE_SCALE_Y 0.092593 CONST_INT ciIAP_PICKUP_NUKE_DURATION 4000 CONST_INT ciIAP_PICKUP_NUKE_START_DURATION 650 //~~~~~ Explosions ~~~~~ CONST_INT ciIAP_EXPLOSION_FRAMES 6 CONST_INT ciIAP_SMOKE_FRAMES 7 CONST_FLOAT cfIAP_EXPLOSION_SPRITE_SCALE_X 0.066667 CONST_FLOAT cfIAP_EXPLOSION_SPRITE_SCALE_Y 0.118519 CONST_INT ciIAP_MAX_EXPLOSIONS 20 //~~~~~ Floating Text ~~~~~ CONST_INT ciIAP_MAX_SCORE_TEXT 14 CONST_INT ciIAP_ABOVE_PLAYER_TEXT_DURATION 1000 CONST_INT ciIAP_SCORE_TEXT_DURATION 1000 CONST_FLOAT cfIAP_ABOVE_PLAYER_TEXT_START_OFFSET -0.125 CONST_FLOAT cfIAP_ABOVE_PLAYER_TEXT_END_OFFSET -0.200 CONST_FLOAT cfIAP_SCORE_TEXT_START_OFFSET 0.0 CONST_FLOAT cfIAP_SCORE_TEXT_END_OFFSET -0.05 //~~~~~ Weather Effects ~~~~~ CONST_INT ciIAP_MAX_BLIZZARD_SPRITES_X 5 CONST_INT ciIAP_MAX_BLIZZARD_SPRITES_Y 6 CONST_FLOAT cfIAP_WEATHER_SPRITE_SCALE_X 0.250000 CONST_FLOAT cfIAP_WEATHER_SPRITE_SCALE_Y 0.325926 CONST_FLOAT cfIAP_BLIZZARD_SPEED_X -0.250000 CONST_FLOAT cfIAP_BLIZZARD_SPEED_Y 0.325926 //~~~~~ Procedural Generation ~~~~~ TWEAK_FLOAT cfIAP_RANDOM_MIN_DIST_BETWEEN_SPAWNS_START 0.25 TWEAK_FLOAT cfIAP_RANDOM_MAX_DIST_BETWEEN_SPAWNS_START 3.0 TWEAK_FLOAT cfIAP_RANDOM_MIN_DIST_BETWEEN_SPAWNS_END 0.0 TWEAK_FLOAT cfIAP_RANDOM_MAX_DIST_BETWEEN_SPAWNS_END 1.75 TWEAK_FLOAT cfIAP_RANDOM_DISTANCE_TO_END_SPAWN_DIST 1250.0 //~~~~~ HUD & UI ~~~~~ CONST_FLOAT cfIAP_FACADE_WIDTH 0.156250000 CONST_FLOAT cfIAP_FACADE_HEIGHT 0.930555556 CONST_FLOAT cfIAP_FACADE_POS_X 0.085417 CONST_FLOAT cfIAP_FACADE_POS_Y 0.5 CONST_FLOAT cfIAP_FACADE_TOP_HEIGHT 0.069444444 CONST_FLOAT cfIAP_PLAY_AREA_WIDTH 0.658333 CONST_FLOAT cfIAP_PLAY_AREA_HEIGHT 0.930555556 CONST_FLOAT cfIAP_CENTER_TEXT_SCALE 2.0 CONST_FLOAT cfIAP_HUD_Y 0.139444 CONST_FLOAT cfIAP_LIVES_HUD_SCALE_X 0.066667 CONST_FLOAT cfIAP_LIVES_HUD_SCALE_Y 0.059259 CONST_FLOAT cfIAP_LIVES_HUD_POS_X 0.2166665 TWEAK_FLOAT cfIAP_LIVES_TEXT_OFFSET_X 0.003 TWEAK_FLOAT cfIAP_LIVES_TEXT_OFFSET_Y 0.0 CONST_FLOAT cfIAP_LIVES_TEXT_SCALE 0.75 CONST_FLOAT cfIAP_HEALTH_HUD_SCALE_X 0.150000 CONST_FLOAT cfIAP_HEALTH_HUD_SCALE_Y 0.059259 CONST_FLOAT cfIAP_HEALTH_HUD_POS_X 0.333854 CONST_FLOAT cfIAP_HEALTH_SEGMENT_START_POS_X 0.295312 CONST_FLOAT cfIAP_HEALTH_SEGMENT_OFFSET_X 0.005208 CONST_FLOAT cfIAP_HEALTH_SEGMENT_HUD_SCALE_X 0.006250 CONST_FLOAT cfIAP_HEALTH_SEGMENT_HUD_SCALE_Y 0.029630 CONST_FLOAT cfIAP_HEALTH_SHIELD_HUD_SCALE_X 0.112500 CONST_FLOAT cfIAP_HEALTH_SHIELD_HUD_SCALE_Y 0.044444 CONST_FLOAT cfIAP_HEALTH_SHIELD_HUD_POS_X 0.346875 CONST_FLOAT cfIAP_SCORE_HUD_SCALE_X 0.161458 CONST_FLOAT cfIAP_SCORE_HUD_SCALE_Y 0.059259 CONST_FLOAT cfIAP_SCORE_HUD_POS_X 0.498437 CONST_FLOAT cfIAP_LIVES_TEXT_WRAP_MIN 0.449999 TWEAK_FLOAT cfIAP_LIVES_TEXT_WRAP_MAX 0.571 TWEAK_FLOAT cfIAP_SCORE_TEXT_OFFSET_Y 0.0 CONST_FLOAT cfIAP_SCORE_TEXT_SCALE 0.75 CONST_FLOAT cfIAP_DISTANCE_HUD_SCALE_X 0.228125 CONST_FLOAT cfIAP_DISTANCE_HUD_SCALE_Y 0.059259 CONST_FLOAT cfIAP_DISTANCE_HUD_POS_X 0.7026035 CONST_FLOAT cfIAP_DISTANCE_BAR_HUD_SCALE_X 0.117708 CONST_FLOAT cfIAP_DISTANCE_BAR_HUD_SCALE_Y 0.011111 CONST_FLOAT cfIAP_DISTANCE_ARROW_HUD_SCALE_X 0.006250 CONST_FLOAT cfIAP_DISTANCE_ARROW_HUD_SCALE_Y 0.007407 TWEAK_FLOAT cfIAP_DISTANCE_TEXT_BEST_OFFSET_X 0.026 TWEAK_FLOAT cfIAP_DISTANCE_TEXT_OFFSET_X 0.098 TWEAK_FLOAT cfIAP_DISTANCE_TEXT_OFFSET_Y 0.0085 CONST_FLOAT cfIAP_DISTANCE_TEXT_SCALE 0.400 CONST_FLOAT cfIAP_DISTANCE_RECT_POS_X -0.01945 CONST_FLOAT cfIAP_DISTANCE_RECT_POS_Y 0.0095 CONST_FLOAT cfIAP_LOADING_TEXT_POS_X cfSCREEN_CENTER CONST_FLOAT cfIAP_LOADING_TEXT_POS_Y 0.883334 CONST_FLOAT cfIAP_LOADING_TEXT_SCALE_X 0.416667 CONST_FLOAT cfIAP_LOADING_TEXT_SCALE_Y 0.062963 CONST_FLOAT cfIAP_LOADING_NAME_POS_X cfSCREEN_CENTER CONST_FLOAT cfIAP_LOADING_NAME_POS_Y 0.712967 CONST_FLOAT cfIAP_LOADING_TEXT_SCALE_X_IRAQ 0.287500 CONST_FLOAT cfIAP_LOADING_TEXT_SCALE_X_RUSSIA 0.195833 CONST_FLOAT cfIAP_LOADING_TEXT_SCALE_X_CHINA 0.291667 CONST_FLOAT cfIAP_LOADING_TEXT_SCALE_X_CANADA 0.187500 CONST_FLOAT cfIAP_LOADING_TEXT_SCALE_X_MOON 0.183333 CONST_FLOAT cfIAP_LOADING_NAME_SCALE_Y 0.088889 CONST_FLOAT cfIAP_LOADING_SCREEN_SCALE_X 0.687500000 CONST_FLOAT cfIAP_LOADING_SCREEN_SCALE_Y 0.948148148 CONST_FLOAT cfIAP_LOADING_SCREEN_COUNTRY_FLASH_MOD 0.4 CONST_FLOAT cfIAP_SCREEN_BORDER_FLASH_CORNER_SCALE_X 0.027083333 CONST_FLOAT cfIAP_SCREEN_BORDER_FLASH_CORNER_SCALE_Y 0.048148148 CONST_FLOAT cfIAP_SCREEN_BORDER_CORNER_TOP_Y 0.107407407 CONST_FLOAT cfIAP_SCREEN_BORDER_CORNER_BOT_Y 0.902777778 CONST_FLOAT cfIAP_SCREEN_BORDER_CORNER_LEFT_X 0.192708333 CONST_FLOAT cfIAP_SCREEN_BORDER_CORNER_RIGHT_X 0.811979167 CONST_FLOAT cfIAP_STAGE_CLEAR_BACKGROUND_MIN_Y 0.018518519 CONST_FLOAT cfIAP_STAGE_CLEAR_BACKGROUND_MID_Y 0.115740741 CONST_FLOAT cfIAP_STAGE_CLEAR_BACKGROUND_MAX_Y 0.347222222 CONST_FLOAT cfIAP_STAGE_CLEAR_BORDER_Y 0.003703704 CONST_INT ciIAP_STAGE_CLEAR_TALLY_DELAY_FRAMES 60 CONST_INT ciIAP_STAGE_CLEAR_SCALE_UP_FRAMES 10 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_TEXT_POS_Y 0.467592593 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_TEXT_TITLE_COLUMN_WRAP_MIN 0.388541667 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_TEXT_TITLE_COLUMN_WRAP_MAX 0.494791667 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_TEXT_VALUE_COLUMN_WRAP_MIN 0.503 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_TEXT_VALUE_COLUMN_WRAP_MAX 0.598958333 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_TEXT_SPACING_Y 0.037037037 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_RECT_OFFSET_X 0.022 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_RECT_OFFSET_Y 0.0095 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_RECT_WIDTH 0.175 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_RECT_HEIGHT 0.005555556 TWEAK_FLOAT cfIAP_STAGE_CLEAR_TALLY_TEXT_SCALE 0.600 CONST_INT ciIAP_DEFAULT_HELP_TEXT_TIME 7500 CONST_FLOAT cfIAP_FONT_SCALE_LARGE_X 0.010416667 CONST_FLOAT cfIAP_FONT_SCALE_LARGE_Y 0.029629630 CONST_FLOAT cfIAP_FONT_COMMA_SCALE_LARGE_X 0.008333333 CONST_FLOAT cfIAP_FONT_COMMA_SCALE_LARGE_Y 0.029629630 CONST_FLOAT cfIAP_FONT_SCALE_SMALL_X 0.005208333 CONST_FLOAT cfIAP_FONT_SCALE_SMALL_Y 0.014814815 CONST_FLOAT cfIAP_FONT_COMMA_SCALE_SMALL_X 0.004166667 CONST_FLOAT cfIAP_FONT_COMMA_SCALE_SMALL_Y 0.014814815 CONST_FLOAT cfIAP_FONT_TITLE_SCALE_X 0.095833333 CONST_FLOAT cfIAP_FONT_TITLE_SCALE_Y 0.029629630 CONST_INT ciIAP_FONT_MAX_DIGITS 10 CONST_INT ciIAP_FONT_DIGIT_COUNT 99 //~~~~~ Input ~~~~~ CONST_FLOAT cfIAP_CONTROLLER_AXIS_THRESHOLD_MOD 1.0 CONST_FLOAT cfIAP_KEYBOARD_MOUSE_AXIS_THRESHOLD_MOD 0.3 //~~~~~ Challenges ~~~~~ CONST_INT ciIAP_CHALLENGEBS_GOLDEN_TANK_UNLOCKED 0 CONST_INT ciIAP_CHALLENGEBS_KILL_CHALLENGE_COMPLETE 1 CONST_INT ciIAP_CHALLENGEBS_OIL_CHALLENGE_COMPLETE 2 CONST_INT ciIAP_CHALLENGEBS_MOON_DISTANCE_CHALLENGE_COMPLETE 3 CONST_INT ciIAP_CHALLENGEBS_LIVES_CHALLENGE_COMPLETE 4 CONST_INT ciIAP_CHALLENGEBS_SCORE_CHALLENGE_COMPLETE 5 CONST_INT ciIAP_CHALLENGEBS_GOLDEN_TANK_UNLOCKED_THIS_GAME 6 CONST_INT ciIAP_CHALLENGEBS_KILL_CHALLENGE_UNLOCKED_THIS_GAME 7 CONST_INT ciIAP_CHALLENGEBS_OIL_CHALLENGE_UNLOCKED_THIS_GAME 8 CONST_INT ciIAP_CHALLENGEBS_MOON_DISTANCE_UNLOCKED_THIS_GAME 9 CONST_INT ciIAP_CHALLENGEBS_LIVES_CHALLENGE_UNLOCKED_THIS_GAME 10 CONST_INT ciIAP_CHALLENGEBS_SCORE_CHALLENGE_UNLOCKED_THIS_GAME 11 //~~~~~ Leaderboard ~~~~~ CONST_FLOAT cfIAP_LBD_STARTING_POS_Y 0.220 CONST_FLOAT cfIAP_LBD_POSITION_POS_X 0.370 CONST_FLOAT cfIAP_LBD_INITIAL_3_POS_X 0.46875 CONST_FLOAT cfIAP_LBD_INITIAL_2_POS_X 0.441145833 CONST_FLOAT cfIAP_LBD_INITIAL_1_POS_X 0.413541666 CONST_FLOAT cfIAP_LBD_SCORE_POS_X 0.695 CONST_FLOAT cfIAP_LBD_TEXT_SCALE 1.0 CONST_FLOAT cfIAP_LBD_SPACING_Y 0.06 CONST_INT ciIAP_LBD_DEFAULT_RANK 99 CONST_FLOAT cfIAP_DROP_SHADOW_OFFSET_X 0.001041667 CONST_FLOAT cfIAP_DROP_SHADOW_OFFSET_Y 0.003703704 CONST_INT ciIAP_RESEND_LEADERBOARD_REQUEST_TIME 5000 //~~~~~ Cheating ~~~~~ CONST_INT ciIAP_STARTING_LIVES_CHEATED 99 CONST_INT ciIAP_CHEAT_PROGRESS_UP_1 0 CONST_INT ciIAP_CHEAT_PROGRESS_UP_2 1 CONST_INT ciIAP_CHEAT_PROGRESS_DOWN_1 2 CONST_INT ciIAP_CHEAT_PROGRESS_DOWN_2 3 CONST_INT ciIAP_CHEAT_PROGRESS_LEFT_1 4 CONST_INT ciIAP_CHEAT_PROGRESS_RIGHT_1 5 CONST_INT ciIAP_CHEAT_PROGRESS_LEFT_2 6 CONST_INT ciIAP_CHEAT_PROGRESS_RIGHT_2 7 CONST_INT ciIAP_CHEAT_PROGRESS_B 8 CONST_INT ciIAP_CHEAT_PROGRESS_A 9 CONST_INT ciIAP_CHEAT_PROGRESS_COMPLETE 10 CONST_INT ciIAP_CHEAT_TIMEOUT_DELAY 600 // ------------------------------ ENUMS ------------------------------ /// PURPOSE: /// Defines a value for each stage/level in the game ENUM IAP_STAGE IAP_STAGE_IRAQ = 0, IAP_STAGE_RUSSIA = 1, IAP_STAGE_CHINA = 2, IAP_STAGE_CANADA = 3, IAP_STAGE_MOON = 4, //Add any new stages above this comment IAP_STAGE_MAX = 5 ENDENUM /// PURPOSE: /// Defines a value for each object that can spawn in the game ENUM IAP_OBJECT IAP_OBJECT_NONE = -1, IAP_OBJECT_ENEMY_CAMEL = 0, IAP_OBJECT_ENEMY_PANDA, IAP_OBJECT_ENEMY_BEAR, IAP_OBJECT_ENEMY_MOOSE, IAP_OBJECT_ENEMY_JET, IAP_OBJECT_ENEMY_DRONE, IAP_OBJECT_HAZARD_CRASHED_JET, IAP_OBJECT_HAZARD_BARRIER, IAP_OBJECT_HAZARD_PITFALL_IRAQ, IAP_OBJECT_HAZARD_PITFALL_RUSSIA, IAP_OBJECT_HAZARD_PITFALL_CHINA, IAP_OBJECT_HAZARD_PITFALL_CANADA, IAP_OBJECT_HAZARD_PITFALL_MOON, IAP_OBJECT_HAZARD_LEDGE_IRAQ, IAP_OBJECT_HAZARD_LEDGE_RUSSIA, IAP_OBJECT_HAZARD_LEDGE_CHINA, IAP_OBJECT_HAZARD_LEDGE_CANADA, IAP_OBJECT_HAZARD_LEDGE_MOON, IAP_OBJECT_PICKUP_FLAMETHROWER, IAP_OBJECT_PICKUP_ROCKETS, IAP_OBJECT_PICKUP_HEALTH, IAP_OBJECT_PICKUP_LIFE, IAP_OBJECT_PICKUP_SCORE, IAP_OBJECT_PICKUP_SHIELD, IAP_OBJECT_PICKUP_ENEMY, IAP_OBJECT_PICKUP_PLASMA, IAP_OBJECT_PICKUP_TRIPLE, IAP_OBJECT_PICKUP_NUKE, IAP_OBJECT_PICKUP_RANDOM, //Random needs to be the last pickup. Update ciIAP_PICKUP_MAX if more are added above IAP_OBJECT_OIL_SMALL, IAP_OBJECT_OIL_MED_LIGHT, IAP_OBJECT_OIL_MED_DARK, IAP_OBJECT_OIL_LARGE, IAP_OBJECT_CRASHED_TANK, //Add any new objects above this comment IAP_OBJECT_START_RANDOM_GENERATION //If spawned the level will become procedurally generated ENDENUM /// PURPOSE: /// Defines a value for each type of object in the game ENUM IAP_OBJECT_TYPE IAP_OBJECT_TYPE_GROUND_ENEMY = 0, IAP_OBJECT_TYPE_JET, IAP_OBJECT_TYPE_DRONE, IAP_OBJECT_TYPE_PITFALL, IAP_OBJECT_TYPE_LEDGE, IAP_OBJECT_TYPE_PICKUP, IAP_OBJECT_TYPE_OIL, IAP_OBJECT_TYPE_DESTRUCTABLE_HAZARD, IAP_OBJECT_TYPE_INDESTRUCTABLE_HAZARD, //Add any new object types above this comment IAP_OBJECT_TYPE_MAX ENDENUM /// PURPOSE: /// Defines values for the game's states ENUM IAP_CLIENT_STATE IAP_CLIENT_STATE_INITIALISING = 0, IAP_CLIENT_STATE_REQUESTING_ASSETS, IAP_CLIENT_STATE_DEGENETRON, IAP_CLIENT_STATE_RON_OIL, IAP_CLIENT_STATE_TITLE_SCREEN, IAP_CLIENT_STATE_STAGE_LOADING, IAP_CLIENT_STATE_STAGE_INTRO, IAP_CLIENT_STATE_RUNNING, //Main game loop. IAP_CLIENT_STATE_GAMEOVER_STAGE, IAP_CLIENT_STATE_STAGE_OUTRO, IAP_CLIENT_STATE_STAGE_LEADERBOARD, IAP_CLIENT_STATE_CLEANUP, IAP_CLIENT_STATE_FINISHED ENDENUM /// PURPOSE: /// Defines values for the state of the player's tank ENUM IAP_PLAYER_TANK_STATE IAP_PLAYER_TANK_STATE_DEFAULT = 0, IAP_PLAYER_TANK_STATE_JUMPING, IAP_PLAYER_TANK_STATE_FALLING, IAP_PLAYER_TANK_STATE_EXPLODING, IAP_PLAYER_TANK_STATE_RESPAWNING ENDENUM /// PURPOSE: /// Defines values for the state of the player's turret ENUM IAP_PLAYER_TURRET_STATE IAP_PLAYER_TURRET_STATE_DEFAULT = 0, IAP_PLAYER_TURRET_STATE_SHOOTING ENDENUM /// PURPOSE: /// Defines a value for each weapon in the game ENUM IAP_PLAYER_WEAPON IAP_PLAYER_WEAPON_DEFAULT = 0, IAP_PLAYER_WEAPON_FLAMETHROWER, IAP_PLAYER_WEAPON_ROCKET_LAUNCHER, IAP_PLAYER_WEAPON_PLASMA ENDENUM /// PURPOSE: /// Defines a value for each projectile type in the game ENUM IAP_PROJECTILE_TYPE IAP_PROJECTILE_TYPE_NONE= -1, IAP_PROJECTILE_TYPE_BULLET= 0, IAP_PROJECTILE_TYPE_FALLING_BARREL, IAP_PROJECTILE_TYPE_ENEMY, IAP_PROJECTILE_TYPE_FLAME, IAP_PROJECTILE_TYPE_HOMING_ROCKET, IAP_PROJECTILE_TYPE_PLASMA ENDENUM /// PURPOSE: /// Defines values for the state of an object ENUM IAP_OBJECT_STATE IAP_OBJECT_STATE_DEFAULT = 0, IAP_OBJECT_STATE_SHOOTING, IAP_OBJECT_STATE_FALLING ENDENUM /// PURPOSE: /// Defines a value for each type of score in the game ENUM IAP_SCORE_TYPE IAP_SCORE_TYPE_ENEMY, IAP_SCORE_TYPE_PICKUP, IAP_SCORE_TYPE_OIL, IAP_SCORE_TYPE_DISTANCE, IAP_SCORE_TYPE_LIVES, IAP_SCORE_TYPE_ARMOUR ENDENUM /// PURPOSE: /// Defines a value for each type of explosion that can be triggered in game ENUM IAP_EXPLOSION IAP_EXPLOSION_MEDIUM, IAP_EXPLOSION_SMOKE ENDENUM /// PURPOSE: /// Defines a value for each middle text sequence ENUM IAP_MIDDLE_TEXT_SEQ IAP_MIDDLE_TEXT_SEQ_GET_READY, IAP_MIDDLE_TEXT_SEQ_GO, IAP_MIDDLE_TEXT_SEQ_GAMEOVER, IAP_MIDDLE_TEXT_SEQ_STAGE_CLEARED ENDENUM /// PURPOSE: /// Defines a value for each type of music event ENUM IAP_MUSIC_EVENT IAP_MUSIC_EVENT_TITLE_SCREEN, IAP_MUSIC_EVENT_LEVEL_BRIEF, IAP_MUSIC_EVENT_LEVEL_PLAY, IAP_MUSIC_EVENT_LEVEL_END, IAP_MUSIC_EVENT_LEADERBOARD_START, IAP_MUSIC_EVENT_STAGE_CLEAR, IAP_MUSIC_EVENT_STOP_MUSIC, IAP_MUSIC_EVENT_STOP_MUSIC_NO_FADE ENDENUM #IF IS_DEBUG_BUILD // ------------------------------ ENUM TO STRING HELPERS ------------------------------ FUNC STRING IAP_DEBUG_GET_IAP_STAGE_AS_STRING(IAP_STAGE eValue) SWITCH eValue CASE IAP_STAGE_IRAQ RETURN "IAP_STAGE_IRAQ" CASE IAP_STAGE_RUSSIA RETURN "IAP_STAGE_RUSSIA" CASE IAP_STAGE_CHINA RETURN "IAP_STAGE_CHINA" CASE IAP_STAGE_CANADA RETURN "IAP_STAGE_CANADA" CASE IAP_STAGE_MOON RETURN "IAP_STAGE_MOON" ENDSWITCH RETURN "INVALID IAP_STAGE" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_OBJECT_AS_STRING(IAP_OBJECT eValue) SWITCH eValue CASE IAP_OBJECT_ENEMY_CAMEL RETURN "IAP_OBJECT_ENEMY_CAMEL" CASE IAP_OBJECT_ENEMY_PANDA RETURN "IAP_OBJECT_ENEMY_PANDA" CASE IAP_OBJECT_ENEMY_BEAR RETURN "IAP_OBJECT_ENEMY_BEAR" CASE IAP_OBJECT_ENEMY_MOOSE RETURN "IAP_OBJECT_ENEMY_MOOSE" CASE IAP_OBJECT_ENEMY_JET RETURN "IAP_OBJECT_ENEMY_JET" CASE IAP_OBJECT_ENEMY_DRONE RETURN "IAP_OBJECT_ENEMY_DRONE" CASE IAP_OBJECT_HAZARD_CRASHED_JET RETURN "IAP_OBJECT_HAZARD_CRASHED_JET" CASE IAP_OBJECT_HAZARD_BARRIER RETURN "IAP_OBJECT_HAZARD_BARRIER" CASE IAP_OBJECT_HAZARD_PITFALL_IRAQ RETURN "IAP_OBJECT_HAZARD_PITFALL_IRAQ" CASE IAP_OBJECT_HAZARD_PITFALL_RUSSIA RETURN "IAP_OBJECT_HAZARD_PITFALL_RUSSIA" CASE IAP_OBJECT_HAZARD_PITFALL_CHINA RETURN "IAP_OBJECT_HAZARD_PITFALL_CHINA" CASE IAP_OBJECT_HAZARD_PITFALL_CANADA RETURN "IAP_OBJECT_HAZARD_PITFALL_CANADA" CASE IAP_OBJECT_HAZARD_PITFALL_MOON RETURN "IAP_OBJECT_HAZARD_PITFALL_MOON" CASE IAP_OBJECT_HAZARD_LEDGE_IRAQ RETURN "IAP_OBJECT_HAZARD_LEDGE_IRAQ" CASE IAP_OBJECT_HAZARD_LEDGE_RUSSIA RETURN "IAP_OBJECT_HAZARD_LEDGE_RUSSIA" CASE IAP_OBJECT_HAZARD_LEDGE_CHINA RETURN "IAP_OBJECT_HAZARD_LEDGE_CHINA" CASE IAP_OBJECT_HAZARD_LEDGE_CANADA RETURN "IAP_OBJECT_HAZARD_LEDGE_CANADA" CASE IAP_OBJECT_HAZARD_LEDGE_MOON RETURN "IAP_OBJECT_HAZARD_LEDGE_MOON" CASE IAP_OBJECT_PICKUP_FLAMETHROWER RETURN "IAP_OBJECT_PICKUP_FLAMETHROWER" CASE IAP_OBJECT_PICKUP_ROCKETS RETURN "IAP_OBJECT_PICKUP_ROCKETS" CASE IAP_OBJECT_PICKUP_HEALTH RETURN "IAP_OBJECT_PICKUP_HEALTH" CASE IAP_OBJECT_PICKUP_LIFE RETURN "IAP_OBJECT_PICKUP_LIFE" CASE IAP_OBJECT_PICKUP_SCORE RETURN "IAP_OBJECT_PICKUP_SCORE" CASE IAP_OBJECT_PICKUP_SHIELD RETURN "IAP_OBJECT_PICKUP_SHIELD" CASE IAP_OBJECT_PICKUP_ENEMY RETURN "IAP_OBJECT_PICKUP_ENEMY" CASE IAP_OBJECT_PICKUP_PLASMA RETURN "IAP_OBJECT_PICKUP_PLASMA" CASE IAP_OBJECT_PICKUP_TRIPLE RETURN "IAP_OBJECT_PICKUP_TRIPLE" CASE IAP_OBJECT_PICKUP_NUKE RETURN "IAP_OBJECT_PICKUP_NUKE" CASE IAP_OBJECT_PICKUP_RANDOM RETURN "IAP_OBJECT_PICKUP_RANDOM" CASE IAP_OBJECT_OIL_SMALL RETURN "IAP_OBJECT_OIL_SMALL" CASE IAP_OBJECT_OIL_MED_LIGHT RETURN "IAP_OBJECT_OIL_MED_LIGHT" CASE IAP_OBJECT_OIL_MED_DARK RETURN "IAP_OBJECT_OIL_MED_DARK" CASE IAP_OBJECT_OIL_LARGE RETURN "IAP_OBJECT_OIL_LARGE" CASE IAP_OBJECT_CRASHED_TANK RETURN "IAP_OBJECT_CRASHED_TANK" CASE IAP_OBJECT_START_RANDOM_GENERATION RETURN "IAP_OBJECT_START_RANDOM_GENERATION" ENDSWITCH RETURN "INVALID IAP_OBJECT" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_OBJECT_TYPE_AS_STRING(IAP_OBJECT_TYPE eValue) SWITCH eValue CASE IAP_OBJECT_TYPE_GROUND_ENEMY RETURN "IAP_OBJECT_TYPE_GROUND_ENEMY" CASE IAP_OBJECT_TYPE_JET RETURN "IAP_OBJECT_TYPE_JET" CASE IAP_OBJECT_TYPE_DRONE RETURN "IAP_OBJECT_TYPE_DRONE" CASE IAP_OBJECT_TYPE_PITFALL RETURN "IAP_OBJECT_TYPE_PITFALL" CASE IAP_OBJECT_TYPE_LEDGE RETURN "IAP_OBJECT_TYPE_LEDGE" CASE IAP_OBJECT_TYPE_PICKUP RETURN "IAP_OBJECT_TYPE_PICKUP" CASE IAP_OBJECT_TYPE_OIL RETURN "IAP_OBJECT_TYPE_OIL" CASE IAP_OBJECT_TYPE_DESTRUCTABLE_HAZARD RETURN "IAP_OBJECT_TYPE_DESTRUCTABLE_HAZARD" CASE IAP_OBJECT_TYPE_INDESTRUCTABLE_HAZARD RETURN "IAP_OBJECT_TYPE_INDESTRUCTABLE_HAZARD" ENDSWITCH RETURN "INVALID IAP_OBJECT_TYPE" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_CLIENT_STATE_AS_STRING(IAP_CLIENT_STATE eValue) SWITCH eValue CASE IAP_CLIENT_STATE_INITIALISING RETURN "IAP_CLIENT_STATE_INITIALISING" CASE IAP_CLIENT_STATE_REQUESTING_ASSETS RETURN "IAP_CLIENT_STATE_REQUESTING_ASSETS" CASE IAP_CLIENT_STATE_DEGENETRON RETURN "IAP_CLIENT_STATE_DEGENETRON" CASE IAP_CLIENT_STATE_RON_OIL RETURN "IAP_CLIENT_STATE_RON_OIL" CASE IAP_CLIENT_STATE_TITLE_SCREEN RETURN "IAP_CLIENT_STATE_TITLE_SCREEN" CASE IAP_CLIENT_STATE_STAGE_LOADING RETURN "IAP_CLIENT_STATE_STAGE_LOADING" CASE IAP_CLIENT_STATE_STAGE_INTRO RETURN "IAP_CLIENT_STATE_STAGE_INTRO" CASE IAP_CLIENT_STATE_RUNNING RETURN "IAP_CLIENT_STATE_RUNNING" CASE IAP_CLIENT_STATE_GAMEOVER_STAGE RETURN "IAP_CLIENT_STATE_GAMEOVER_STAGE" CASE IAP_CLIENT_STATE_STAGE_OUTRO RETURN "IAP_CLIENT_STATE_STAGE_OUTRO" CASE IAP_CLIENT_STATE_STAGE_LEADERBOARD RETURN "IAP_CLIENT_STATE_STAGE_LEADERBOARD" CASE IAP_CLIENT_STATE_CLEANUP RETURN "IAP_CLIENT_STATE_CLEANUP" CASE IAP_CLIENT_STATE_FINISHED RETURN "IAP_CLIENT_STATE_FINISHED" ENDSWITCH RETURN "INVALID IAP_CLIENT_STATE" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_PLAYER_TANK_STATE_AS_STRING(IAP_PLAYER_TANK_STATE eValue) SWITCH eValue CASE IAP_PLAYER_TANK_STATE_DEFAULT RETURN "IAP_PLAYER_TANK_STATE_DEFAULT" CASE IAP_PLAYER_TANK_STATE_JUMPING RETURN "IAP_PLAYER_TANK_STATE_JUMPING" CASE IAP_PLAYER_TANK_STATE_FALLING RETURN "IAP_PLAYER_TANK_STATE_FALLING" CASE IAP_PLAYER_TANK_STATE_EXPLODING RETURN "IAP_PLAYER_TANK_STATE_EXPLODING" CASE IAP_PLAYER_TANK_STATE_RESPAWNING RETURN "IAP_PLAYER_TANK_STATE_RESPAWNING" ENDSWITCH RETURN "INVALID IAP_PLAYER_TANK_STATE" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_PLAYER_TURRET_STATE_AS_STRING(IAP_PLAYER_TURRET_STATE eValue) SWITCH eValue CASE IAP_PLAYER_TURRET_STATE_DEFAULT RETURN "IAP_PLAYER_TURRET_STATE_DEFAULT" CASE IAP_PLAYER_TURRET_STATE_SHOOTING RETURN "IAP_PLAYER_TURRET_STATE_SHOOTING" ENDSWITCH RETURN "INVALID IAP_PLAYER_TURRET_STATE" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_PLAYER_WEAPON_AS_STRING(IAP_PLAYER_WEAPON eValue) SWITCH eValue CASE IAP_PLAYER_WEAPON_DEFAULT RETURN "IAP_PLAYER_WEAPON_DEFAULT" CASE IAP_PLAYER_WEAPON_FLAMETHROWER RETURN "IAP_PLAYER_WEAPON_FLAMETHROWER" CASE IAP_PLAYER_WEAPON_ROCKET_LAUNCHER RETURN "IAP_PLAYER_WEAPON_ROCKET_LAUNCHER" CASE IAP_PLAYER_WEAPON_PLASMA RETURN "IAP_PLAYER_WEAPON_PLASMA" ENDSWITCH RETURN "INVALID IAP_PLAYER_WEAPON" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_OBJECT_STATE_AS_STRING(IAP_OBJECT_STATE eValue) SWITCH eValue CASE IAP_OBJECT_STATE_DEFAULT RETURN "IAP_OBJECT_STATE_DEFAULT" CASE IAP_OBJECT_STATE_SHOOTING RETURN "IAP_OBJECT_STATE_SHOOTING" CASE IAP_OBJECT_STATE_FALLING RETURN "IAP_OBJECT_STATE_FALLING" ENDSWITCH RETURN "INVALID IAP_OBJECT_STATE" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_SCORE_TYPE_AS_STRING(IAP_SCORE_TYPE eValue) SWITCH eValue CASE IAP_SCORE_TYPE_ENEMY RETURN "IAP_SCORE_TYPE_ENEMY" CASE IAP_SCORE_TYPE_PICKUP RETURN "IAP_SCORE_TYPE_PICKUP" CASE IAP_SCORE_TYPE_OIL RETURN "IAP_SCORE_TYPE_OIL" CASE IAP_SCORE_TYPE_DISTANCE RETURN "IAP_SCORE_TYPE_DISTANCE" CASE IAP_SCORE_TYPE_LIVES RETURN "IAP_SCORE_TYPE_LIVES" CASE IAP_SCORE_TYPE_ARMOUR RETURN "IAP_SCORE_TYPE_ARMOUR" ENDSWITCH RETURN "INVALID IAP_SCORE_TYPE" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_PROJECTILE_TYPE_AS_STRING(IAP_PROJECTILE_TYPE eValue) SWITCH eValue CASE IAP_PROJECTILE_TYPE_NONE RETURN "IAP_PROJECTILE_TYPE_NONE" CASE IAP_PROJECTILE_TYPE_BULLET RETURN "IAP_PROJECTILE_TYPE_BULLET" CASE IAP_PROJECTILE_TYPE_FALLING_BARREL RETURN "IAP_PROJECTILE_TYPE_FALLING_BARREL" CASE IAP_PROJECTILE_TYPE_ENEMY RETURN "IAP_PROJECTILE_TYPE_ENEMY" CASE IAP_PROJECTILE_TYPE_FLAME RETURN "IAP_PROJECTILE_TYPE_FLAME" CASE IAP_PROJECTILE_TYPE_HOMING_ROCKET RETURN "IAP_PROJECTILE_TYPE_HOMING_ROCKET" CASE IAP_PROJECTILE_TYPE_PLASMA RETURN "IAP_PROJECTILE_TYPE_PLASMA" ENDSWITCH RETURN "INVALID IAP_PROJECTILE_TYPE" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_EXPLOSION_AS_STRING(IAP_EXPLOSION eValue) SWITCH eValue CASE IAP_EXPLOSION_MEDIUM RETURN "IAP_EXPLOSION_MEDIUM" CASE IAP_EXPLOSION_SMOKE RETURN "IAP_EXPLOSION_SMOKE" ENDSWITCH RETURN "INVALID IAP_EXPLOSION" ENDFUNC FUNC STRING IAP_DEBUG_GET_CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_STRING(CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE eValue) SWITCH eValue CASE CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_NOT_PLAYING RETURN "CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_NOT_PLAYING" CASE CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_INTRO RETURN "CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_INTRO" CASE CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_STAGE_LOADING RETURN "CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_STAGE_LOADING" CASE CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_PLAYING RETURN "CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_PLAYING" CASE CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_DEAD RETURN "CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_DEAD" CASE CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_GAMEOVER_SCREEN RETURN "CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_GAMEOVER_SCREEN" CASE CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_LEVEL_COMPLETE RETURN "CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE_LEVEL_COMPLETE" ENDSWITCH RETURN "INVALID CASINO_ARCADE_INVADE_PERSUADE_PLAYER_STATE" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_MIDDLE_TEXT_SEQ_AS_STRING(IAP_MIDDLE_TEXT_SEQ eValue) SWITCH eValue CASE IAP_MIDDLE_TEXT_SEQ_GET_READY RETURN "IAP_MIDDLE_TEXT_SEQ_GET_READY" CASE IAP_MIDDLE_TEXT_SEQ_GO RETURN "IAP_MIDDLE_TEXT_SEQ_GO" CASE IAP_MIDDLE_TEXT_SEQ_GAMEOVER RETURN "IAP_MIDDLE_TEXT_SEQ_GAMEOVER" CASE IAP_MIDDLE_TEXT_SEQ_STAGE_CLEARED RETURN "IAP_MIDDLE_TEXT_SEQ_STAGE_CLEARED" ENDSWITCH RETURN "INVALID IAP_MIDDLE_TEXT_SEQ" ENDFUNC FUNC STRING IAP_DEBUG_GET_IAP_MUSIC_EVENT_AS_STRING(IAP_MUSIC_EVENT eValue) SWITCH eValue CASE IAP_MUSIC_EVENT_TITLE_SCREEN RETURN "IAP_MUSIC_EVENT_TITLE_SCREEN" CASE IAP_MUSIC_EVENT_LEVEL_BRIEF RETURN "IAP_MUSIC_EVENT_LEVEL_BRIEF" CASE IAP_MUSIC_EVENT_LEVEL_PLAY RETURN "IAP_MUSIC_EVENT_LEVEL_PLAY" CASE IAP_MUSIC_EVENT_LEVEL_END RETURN "IAP_MUSIC_EVENT_LEVEL_END" CASE IAP_MUSIC_EVENT_LEADERBOARD_START RETURN "IAP_MUSIC_EVENT_LEADERBOARD_START" CASE IAP_MUSIC_EVENT_STAGE_CLEAR RETURN "IAP_MUSIC_EVENT_STAGE_CLEAR" CASE IAP_MUSIC_EVENT_STOP_MUSIC RETURN "IAP_MUSIC_EVENT_STOP_MUSIC" CASE IAP_MUSIC_EVENT_STOP_MUSIC_NO_FADE RETURN "IAP_MUSIC_EVENT_STOP_MUSIC_NO_FADE" ENDSWITCH RETURN "INVALID IAP_MUSIC_EVENT" ENDFUNC // ------------------------------ DEBUG STRUCTS ------------------------------ STRUCT IAP_DEBUG_STRUCT WIDGET_GROUP_ID widgetScrollingMinigame BOOL bDebugCreatedWidgets = FALSE BOOL bDrawCollisionDebug = FALSE BOOL bNoDamage = FALSE BOOL bDontFailWhenOutOfLives = FALSE BOOL bDebugPause = FALSE BOOL bDontReplenishLivesEachStage = FALSE BOOL bLoseWeaponOnHit = FALSE BOOL bAccelInAir = FALSE BOOL bNoAccel = FALSE BOOL bDisableSFX = FALSE BOOL bDisableMusic = FALSE BOOL bRandomPickupsOnly = FALSE BOOL bEnableAllChallenges = FALSE BOOL bDisableAllChallenges = FALSE BOOL bTriggerChallenge0 = FALSE BOOL bTriggerChallenge1 = FALSE BOOL bTriggerChallenge2 = FALSE BOOL bTriggerChallenge3 = FALSE BOOL bTriggerChallenge4 = FALSE FLOAT fLastObjectSpawned ENDSTRUCT #ENDIF // ------------------------------ STRUCTS ------------------------------ /// PURPOSE: /// Contains all the data required to spawn an object STRUCT IAP_OBJECT_SPAWNING_DATA_STRUCT IAP_OBJECT eObject = IAP_OBJECT_NONE FLOAT fSpawnDistance //The distance from the start of the stage before the object is spawned INT iFlags = 0 //Used for object type specific flags ENDSTRUCT /// PURPOSE: /// Contains all of the data for drawing and processing each type of object STRUCT IAP_STAGE_OBJECT_DATA_STRUCT //~~~~~ Processing ~~~~~ IAP_OBJECT_TYPE eObjectType FLOAT fBaseScrollSpeed //The speed the object moves once spawned FLOAT fBaseYOffset //Offset to position the object on the ground VECTOR_2D vShotOffset //Offset from the center of the object that projectiles originate from VECTOR_2D vCollisionBounds[ciIAP_MAX_OBJECT_COLLISION_POINTS] //Array of points used to define the object's hitbox for collision INT iShotInterval //Time between shots, a value of 0 means the object cannot shoot INT iShotDamage //Damage applied to the player when hit with a projectile from this object, should be a multiple of 4 INT iScoreValue //Score given to player when this object is destroyed INT iMaxHealth INT iRandomGenerationObjectGroup //Index of the group this object should be part of for procedural generation. //Used to control the distances between different types of object when generating random stages INT iValidStagesBS //Bitset of what stages the object can spawn on (make sure the object is in that stage's texture dict before enabling it here) STRING stHelpText INT iHelpTextTime //~~~~~ Drawing ~~~~~ VECTOR_2D vSpriteScale STRING stSpritePrefix INT iAnimationFrames STRING stShootingSpritePrefix INT iShootingAnimationFrames ENDSTRUCT /// PURPOSE: /// Contains all the data for processing and drawing an instance of an object STRUCT IAP_STAGE_OBJECT_INSTANCE_STRUCT IAP_OBJECT eObjectType INT iAnimFrame INT iSpawnTime VECTOR_2D vPosition VECTOR_2D vDesiredPosition INT iHealth INT iLastDamagedTime = -HIGHEST_INT INT iLastShotTime = -HIGHEST_INT IAP_OBJECT_STATE eState = IAP_OBJECT_STATE_DEFAULT INT iFlags = 0 INT iOneShotSoundId = -1 INT iLoopingSoundId = -1 ENDSTRUCT /// PURPOSE: /// Contains all the data for processing and drawing a stage STRUCT IAP_STAGE_DATA_STRUCT //~~~~~ Processing ~~~~~ FLOAT fStageDistance //The distance from the start to the end of the stage. 1 unit is 1/4 of the play area on screen //Enough room should be left at the end to allow for the end oil barrels to spawn INT iRandomSeed //The seed for procedural object placement, can be left blank if the stage is fully authored FLOAT fBaseSpeed //The starting speed modifier for the stage FLOAT fBaseY //The Y coord for the default ground position IAP_OBJECT_SPAWNING_DATA_STRUCT sObjectSpawningData[ciIAP_MAX_SPAWNING_OBJECTS] //Array of all the objects that will spawn in the stage and when IAP_OBJECT_SPAWNING_DATA_STRUCT sEndOilSpawningData[ciIAP_MAX_END_OIL_OBJECTS] //Array of the oil stockpiles that spawn at the end of the stage //~~~~~ Drawing ~~~~~ STRING stStageTextureDictionary STRING stBackgroundSprite INT iMaxActiveBackgroundSprites VECTOR_2D vBackgroundSpriteScale FLOAT fBackgroundYPos STRING stMidground1Sprite INT iMaxActiveMidground1Sprites VECTOR_2D vMidground1SpriteScale FLOAT fMidground1YPos STRING stMidground2Sprite INT iMaxActiveMidground2Sprites VECTOR_2D vMidground2SpriteScale FLOAT fMidground2YPos STRING stMidground3Sprite INT iMaxActiveMidground3Sprites VECTOR_2D vMidground3SpriteScale FLOAT fMidground3YPos STRING stForegroundSprite INT iMaxActiveForegroundSprites VECTOR_2D vForegroundSpriteScale FLOAT fForegroundYPos RGBA_COLOUR_STRUCT rgbaStageBackground //Colour to draw behind the above sprites ENDSTRUCT /// PURPOSE: /// Contains all the data for procedurally generating objects for a stage STRUCT IAP_RANDOM_GENERATION_STRUCT FLOAT fMinDistBetweenSpawns //Current minimum distance between objects FLOAT fMaxDistBetweenSpawns //Current maximum distance between objects FLOAT fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_MAX][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_MAX] //Minimum distances between each group and all other groups FLOAT fLastSpawnedFromGroup[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_MAX] //The last distances an object from each group was spawned FLOAT fNextSpawnDistance //The next point in the stage an object will be spawned IAP_OBJECT eNextSpawnType = IAP_OBJECT_NONE //The object to be spawned next #IF IS_DEBUG_BUILD INT iNumSpawnedFromGroup[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_MAX] #ENDIF ENDSTRUCT /// PURPOSE: /// Contains all the data for processing and drawing the parallax background STRUCT IAP_PARALLAX_STRUCT FLOAT fBackgroundPosX FLOAT fMidground1PosX FLOAT fMidground2PosX FLOAT fMidground3PosX FLOAT fForegroundPosX[ciIAP_MAX_ACTIVE_FOREGROUND_SPRITES] INT iActiveForegroundSpriteIndexes[ciIAP_MAX_ACTIVE_FOREGROUND_SPRITES] INT iLinkedObjectIndexes[ciIAP_MAX_ACTIVE_FOREGROUND_SPRITES] ENDSTRUCT /// PURPOSE: /// Contains all the data for processing and drawing each type of projectile STRUCT IAP_PROJECTILE_DATA_STRUCT STRING stSprite INT iMaxAnimFrames INT iSpeed VECTOR_2D vSpriteScale ENDSTRUCT /// PURPOSE: /// Contains all the data for processing and drawing an instance of a projectile STRUCT IAP_PROJECTILE_INSTANCE_STRUCT IAP_PROJECTILE_TYPE eProjectileType = IAP_PROJECTILE_TYPE_NONE VECTOR_2D vOrigin VECTOR_2D vDirection VECTOR_2D vThisFramePos VECTOR_2D vPreviousFramePos FLOAT fRotation FLOAT fDesiredRotation INT iShotTime = -HIGHEST_INT INT iAnimFrame = -1 INT iDamage = -1 ENDSTRUCT /// PURPOSE: /// Contains all the data for displaying floating text above the player tank STRUCT IAP_ABOVE_PLAYER_TEXT_STRUCT INT iStartTime = -HIGHEST_INT TEXT_LABEL_63 tl63Text ENDSTRUCT /// PURPOSE: /// Contains all the data for displaying floating score text at a position STRUCT IAP_SCORE_TEXT_STRUCT INT iStartTime = -HIGHEST_INT INT iScore VECTOR_2D vPos ENDSTRUCT /// PURPOSE: /// Represents the current state of the player's tank STRUCT IAP_PLAYER_TANK_STRUCT IAP_PLAYER_TANK_STATE eTankState = IAP_PLAYER_TANK_STATE_DEFAULT IAP_PLAYER_TURRET_STATE eTurretState = IAP_PLAYER_TURRET_STATE_DEFAULT IAP_PLAYER_WEAPON eWeaponType = IAP_PLAYER_WEAPON_DEFAULT IAP_PROJECTILE_INSTANCE_STRUCT sProjectileInstances[ciIAP_MAX_PLAYER_PROJECTILES] INT iCurrentProjectile = 0 INT iTurretLastShootTime = -HIGHEST_INT IAP_ABOVE_PLAYER_TEXT_STRUCT sAbovePlayerText TEXT_LABEL_63 stTankSprite INT iTankBaseAnimFrame = 0 INT iTankShootAnimFrame = 0 VECTOR_2D vPosition INT iMovementModTime = 0 INT iLastFrameTurretDirection = 0 INT iTurretDirection = 0 INT iTurretLastRotationTime = -HIGHEST_INT INT iLastJumpTime = -HIGHEST_INT FLOAT fJumpStartY FLOAT fJumpEndY INT iLives = ciIAP_STARTING_LIVES INT iHealth = ciIAP_MAX_HEALTH INT iDisplayHealth = 0 //Health displayed on the HUD, interps from iHealth for a smooth anim INT iPlayerTankBitset = 0 INT iLastDamagedTime = -HIGHEST_INT INT iLastHealedTime = -HIGHEST_INT INT iLastSmokeTime = -HIGHEST_INT INT iRespawnTime = -HIGHEST_INT INT iWeaponLoopSoundId = -1 INT iEngineLoopSoundId = -1 INT iDamageLoopSoundId = -1 INT iWeaponSoundId = -1 INT iTurretSoundId = -1 INT iGeneralSoundId = -1 ENDSTRUCT /// PURPOSE: /// Contains variables to calculate the player's current score and tracking for telemetry STRUCT IAP_SCORE_TRACKING_STRUCT //Pickups INT iScoreFromPickups INT iPickupsCollected INT iTotalPickupsCollected //Enemies INT iScoreFromEnemies INT iEnemiesKilled INT iTotalAnimalsKilled INT iTotalEnemiesKilled //Oil INT iScoreFromOil INT iOilCollected INT iTotalOilCollected INT iScoreFromDistance INT iScoreFromLives INT iScoreFromArmour ENDSTRUCT /// PURPOSE: /// Contains all the data for processing and drawing an instance of an explosion STRUCT IAP_EXPLOSION_INSTANCE_STRUCT IAP_EXPLOSION eExplosionType INT iAnimFrame = -1 VECTOR_2D vPosition ENDSTRUCT /// PURPOSE: /// Contains all the data for processing and drawing an instance of an explosion STRUCT IAP_COLOUR_DATA_STRUCT RGBA_COLOUR_STRUCT rgbaSprite RGBA_COLOUR_STRUCT rgbaBlack RGBA_COLOUR_STRUCT rgbaHeal RGBA_COLOUR_STRUCT rgbaDamage RGBA_COLOUR_STRUCT rgbaPlasma RGBA_COLOUR_STRUCT rgbaScoringBg RGBA_COLOUR_STRUCT rgbaScoringBorder RGBA_COLOUR_STRUCT rgbaScoringText RGBA_COLOUR_STRUCT rgbaHudText ENDSTRUCT /// PURPOSE: Contains data representing a leaderboard position STRUCT IAP_LEADERBOARD_STRUCT INT iInitials = 0 INT iScore = -1 BOOL bPlayer = FALSE ENDSTRUCT /// PURPOSE: /// Struct containing all data for the minigame STRUCT IAP_DATA IAP_STAGE_DATA_STRUCT sCurrentStageData IAP_STAGE_OBJECT_DATA_STRUCT sObjectData[COUNT_OF(IAP_OBJECT)] IAP_PROJECTILE_DATA_STRUCT sProjectileData[COUNT_OF(IAP_PROJECTILE_TYPE)] IAP_COLOUR_DATA_STRUCT sColours IAP_STAGE_OBJECT_INSTANCE_STRUCT sObjectInstances[ciIAP_MAX_ACTIVE_OBJECTS] IAP_PROJECTILE_INSTANCE_STRUCT sEnemyProjectileInstances[ciIAP_MAX_ENEMY_PROJECTILES] INT iCurrentEnemyProjectile = 0 INT iNextObjectToSpawn = 0 INT iNextObjectIndex = 0 INT iNextOilToSpawn = 0 INT iNextOilIndex = 0 IAP_RANDOM_GENERATION_STRUCT sRandomGeneration IAP_PARALLAX_STRUCT sParallax IAP_PLAYER_TANK_STRUCT sPlayerTank IAP_SCORE_TRACKING_STRUCT sScoreTracking INT iScoreToShow INT iEndLivesToShow INT iEndArmourToShow INT iEndDistanceToShow INT iTallyLoopSoundId = -1 IAP_EXPLOSION_INSTANCE_STRUCT sExplosions[ciIAP_MAX_EXPLOSIONS] INT iNextExplosionIndex = 0 IAP_SCORE_TEXT_STRUCT sScoreText[ciIAP_MAX_SCORE_TEXT] INT iNextScoreTextIndex = 0 IAP_CLIENT_STATE eCurrentState = IAP_CLIENT_STATE_INITIALISING IAP_STAGE eCurrentStage = IAP_STAGE_IRAQ FLOAT fDistanceTravelled FLOAT fStageSpeedMod = cfIAP_BASE_STAGE_SPEED_MOD INT iFrameTimeCounter15FPS INT iUpdateFrames15FPS INT iFrameTimeCounter30FPS INT iUpdateFrames30FPS INT iMiddleTextAnimFrame = -1 BINK_MOVIE_ID binkDegenIntro BINK_MOVIE_ID binkIntroLoop BINK_MOVIE_ID binkLeaderboard SCRIPT_TIMER tdStageLoadingTimer SCRIPT_TIMER tdStageTimer SCRIPT_TIMER tdStageOutroTimer SCRIPT_TIMER tdRetryTimer SCRIPT_TIMER tdRonOilTimer SCRIPT_TIMER tdNukeTimer INT iNukeAnimFrame = -1 STRING stLoadedStageTextureDictionary VECTOR_2D vBaseWeatherPos INT iSpawnedObjectBitSet[2] INT iCurrentHelpTextExpiry = -HIGHEST_INT INT iCurrentHelpTextValue = -1 STRING stCurrentHelpText INT iChallengeBitSet INT iCachedMaxMoonDistance INT iQuitTime = -HIGHEST_INT BOOL bCheated = FALSE INT iCheatInputTime = -HIGHEST_INT INT iCheatInputProgress = 0 BOOL bLeaderboardRecieved INT iLastLeaderboardRequest = -HIGHEST_INT IAP_LEADERBOARD_STRUCT sLeaderboard[ciCASINO_ARCADE_LEADERBOARD_POSITIONS] INT iCurrentInitial = 0 INT iInitials = 0 INT iLocalLbdPos = -1 INT iLbdInitialProfanityToken = 0 INT iDisplayedHelpText = -1 ARCADE_CABINET_ANIM_EVENT_STRUCT sArcadeCabinetAnimEvent #IF IS_DEBUG_BUILD IAP_DEBUG_STRUCT sDebugStruct #ENDIF ENDSTRUCT // ------------------------------ VARIABLES ------------------------------ IAP_DATA sIAPData // ------------------------------ HELPERS & DATA FILLERS ------------------------------ /// PURPOSE: /// Initialises sIAPData.sCurrentStageData.sEndOilSpawningData to the values for eCurrentStage /// IMPORTANT: /// Oil drums are spawned and drawn in the defined order, make sure to declare them from front to back /// Ensure ciIAP_MAX_END_OIL_OBJECTS is updated to the size of the largest level PROC IAP_INITIALISE_STAGE_END_OIL_SPAWNING_DATA(IAP_STAGE eCurrentStage) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_INITIALISE_STAGE_END_OIL_SPAWNING_DATA - Initialising end oil spawning data for stage: ", IAP_DEBUG_GET_IAP_STAGE_AS_STRING(eCurrentStage)) //All stages use the same oil stock pile layout currently. SWITCH eCurrentStage CASE IAP_STAGE_IRAQ CASE IAP_STAGE_RUSSIA CASE IAP_STAGE_CHINA CASE IAP_STAGE_CANADA CASE IAP_STAGE_MOON sIAPData.sCurrentStageData.sEndOilSpawningData[0].eObject = IAP_OBJECT_OIL_MED_DARK sIAPData.sCurrentStageData.sEndOilSpawningData[0].fSpawnDistance = 2.15 sIAPData.sCurrentStageData.sEndOilSpawningData[0].iFlags = (ciIAP_OBJECT_FLAG_OIL_DRUM_RAISED) sIAPData.sCurrentStageData.sEndOilSpawningData[1].eObject = IAP_OBJECT_OIL_MED_DARK sIAPData.sCurrentStageData.sEndOilSpawningData[1].fSpawnDistance = 2.9 sIAPData.sCurrentStageData.sEndOilSpawningData[1].iFlags = (ciIAP_OBJECT_FLAG_OIL_DRUM_RAISED) sIAPData.sCurrentStageData.sEndOilSpawningData[2].eObject = IAP_OBJECT_OIL_MED_DARK sIAPData.sCurrentStageData.sEndOilSpawningData[2].fSpawnDistance = 3.75 sIAPData.sCurrentStageData.sEndOilSpawningData[2].iFlags = (ciIAP_OBJECT_FLAG_OIL_DRUM_RAISED) sIAPData.sCurrentStageData.sEndOilSpawningData[3].eObject = IAP_OBJECT_OIL_MED_LIGHT sIAPData.sCurrentStageData.sEndOilSpawningData[3].fSpawnDistance = 1.75 sIAPData.sCurrentStageData.sEndOilSpawningData[3].iFlags = (ciIAP_OBJECT_FLAG_OIL_DRUM_RAISED) sIAPData.sCurrentStageData.sEndOilSpawningData[4].eObject = IAP_OBJECT_OIL_MED_LIGHT sIAPData.sCurrentStageData.sEndOilSpawningData[4].fSpawnDistance = 2.5 sIAPData.sCurrentStageData.sEndOilSpawningData[4].iFlags = (ciIAP_OBJECT_FLAG_OIL_DRUM_RAISED) sIAPData.sCurrentStageData.sEndOilSpawningData[5].eObject = IAP_OBJECT_OIL_LARGE sIAPData.sCurrentStageData.sEndOilSpawningData[5].fSpawnDistance = 1.75 sIAPData.sCurrentStageData.sEndOilSpawningData[5].iFlags = 0 sIAPData.sCurrentStageData.sEndOilSpawningData[6].eObject = IAP_OBJECT_OIL_LARGE sIAPData.sCurrentStageData.sEndOilSpawningData[6].fSpawnDistance = 2.5 sIAPData.sCurrentStageData.sEndOilSpawningData[6].iFlags = 0 sIAPData.sCurrentStageData.sEndOilSpawningData[7].eObject = IAP_OBJECT_OIL_LARGE sIAPData.sCurrentStageData.sEndOilSpawningData[7].fSpawnDistance = 3 sIAPData.sCurrentStageData.sEndOilSpawningData[7].iFlags = 0 sIAPData.sCurrentStageData.sEndOilSpawningData[8].eObject = IAP_OBJECT_OIL_LARGE sIAPData.sCurrentStageData.sEndOilSpawningData[8].fSpawnDistance = 3.75 sIAPData.sCurrentStageData.sEndOilSpawningData[8].iFlags = 0 sIAPData.sCurrentStageData.sEndOilSpawningData[9].eObject = IAP_OBJECT_OIL_MED_LIGHT sIAPData.sCurrentStageData.sEndOilSpawningData[9].fSpawnDistance = 1.75 sIAPData.sCurrentStageData.sEndOilSpawningData[9].iFlags = 0 sIAPData.sCurrentStageData.sEndOilSpawningData[10].eObject = IAP_OBJECT_OIL_MED_LIGHT sIAPData.sCurrentStageData.sEndOilSpawningData[10].fSpawnDistance = 3.5 sIAPData.sCurrentStageData.sEndOilSpawningData[10].iFlags = 0 sIAPData.sCurrentStageData.sEndOilSpawningData[11].eObject = IAP_OBJECT_OIL_SMALL sIAPData.sCurrentStageData.sEndOilSpawningData[11].fSpawnDistance = 2 sIAPData.sCurrentStageData.sEndOilSpawningData[11].iFlags = 0 sIAPData.sCurrentStageData.sEndOilSpawningData[12].eObject = IAP_OBJECT_OIL_SMALL sIAPData.sCurrentStageData.sEndOilSpawningData[12].fSpawnDistance = 3.25 sIAPData.sCurrentStageData.sEndOilSpawningData[12].iFlags = 0 sIAPData.sCurrentStageData.sEndOilSpawningData[13].eObject = IAP_OBJECT_OIL_SMALL sIAPData.sCurrentStageData.sEndOilSpawningData[13].fSpawnDistance = 4.25 sIAPData.sCurrentStageData.sEndOilSpawningData[13].iFlags = 0 BREAK ENDSWITCH ENDPROC /// PURPOSE: /// Initialises sIAPData.sCurrentStageData.sObjectSpawningData to the values for eCurrentStage /// IMPORTANT: /// Ensure ciIAP_MAX_SPAWNING_OBJECTS is updated to the size of the largest level PROC IAP_INITIALISE_STAGE_OBJECT_SPAWNING_DATA(IAP_STAGE eCurrentStage) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_INITIALISE_STAGE_OBJECT_SPAWNING_DATA - Initialising object spawning data for stage: ", IAP_DEBUG_GET_IAP_STAGE_AS_STRING(eCurrentStage)) //Clear struct INT i FOR i = 0 TO ciIAP_MAX_SPAWNING_OBJECTS - 1 sIAPData.sCurrentStageData.sObjectSpawningData[i].eObject = IAP_OBJECT_NONE sIAPData.sCurrentStageData.sObjectSpawningData[i].fSpawnDistance = 0 sIAPData.sCurrentStageData.sObjectSpawningData[i].iFlags = 0 ENDFOR SWITCH eCurrentStage CASE IAP_STAGE_IRAQ sIAPData.sCurrentStageData.sObjectSpawningData[0].eObject = IAP_OBJECT_ENEMY_CAMEL // teach shoot sIAPData.sCurrentStageData.sObjectSpawningData[0].fSpawnDistance = 3 sIAPData.sCurrentStageData.sObjectSpawningData[1].eObject = IAP_OBJECT_ENEMY_DRONE // teach turret sIAPData.sCurrentStageData.sObjectSpawningData[1].fSpawnDistance = 7 sIAPData.sCurrentStageData.sObjectSpawningData[2].eObject = IAP_OBJECT_HAZARD_CRASHED_JET // teach reset turret sIAPData.sCurrentStageData.sObjectSpawningData[2].fSpawnDistance = 12 sIAPData.sCurrentStageData.sObjectSpawningData[3].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[3].fSpawnDistance = 15 sIAPData.sCurrentStageData.sObjectSpawningData[4].eObject = IAP_OBJECT_HAZARD_BARRIER // teach jump sIAPData.sCurrentStageData.sObjectSpawningData[4].fSpawnDistance = 18 sIAPData.sCurrentStageData.sObjectSpawningData[5].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[5].fSpawnDistance = 23 sIAPData.sCurrentStageData.sObjectSpawningData[6].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[6].fSpawnDistance = 25 sIAPData.sCurrentStageData.sObjectSpawningData[7].eObject = IAP_OBJECT_PICKUP_SCORE //score //teach collectables can't be destroyed //pickup - Score sIAPData.sCurrentStageData.sObjectSpawningData[7].fSpawnDistance = 28 sIAPData.sCurrentStageData.sObjectSpawningData[8].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[8].fSpawnDistance = 30 sIAPData.sCurrentStageData.sObjectSpawningData[9].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[9].fSpawnDistance = 32 sIAPData.sCurrentStageData.sObjectSpawningData[10].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[10].fSpawnDistance = 35 sIAPData.sCurrentStageData.sObjectSpawningData[11].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[11].fSpawnDistance = 40 sIAPData.sCurrentStageData.sObjectSpawningData[12].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[12].fSpawnDistance = 42 sIAPData.sCurrentStageData.sObjectSpawningData[13].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[13].fSpawnDistance = 44 sIAPData.sCurrentStageData.sObjectSpawningData[14].eObject = IAP_OBJECT_HAZARD_LEDGE_IRAQ //teach platform sIAPData.sCurrentStageData.sObjectSpawningData[14].fSpawnDistance = 46 sIAPData.sCurrentStageData.sObjectSpawningData[15].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[15].fSpawnDistance = 48 sIAPData.sCurrentStageData.sObjectSpawningData[16].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase //HALF WAY sIAPData.sCurrentStageData.sObjectSpawningData[16].fSpawnDistance = 50 sIAPData.sCurrentStageData.sObjectSpawningData[17].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[17].fSpawnDistance = 51.9 sIAPData.sCurrentStageData.sObjectSpawningData[18].eObject = IAP_OBJECT_HAZARD_PITFALL_IRAQ //teach pitfalls sIAPData.sCurrentStageData.sObjectSpawningData[18].fSpawnDistance = 52 sIAPData.sCurrentStageData.sObjectSpawningData[19].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[19].fSpawnDistance = 54 sIAPData.sCurrentStageData.sObjectSpawningData[20].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[20].fSpawnDistance = 56 sIAPData.sCurrentStageData.sObjectSpawningData[21].eObject = IAP_OBJECT_PICKUP_HEALTH //pickup - Health sIAPData.sCurrentStageData.sObjectSpawningData[21].fSpawnDistance = 57 sIAPData.sCurrentStageData.sObjectSpawningData[22].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[22].fSpawnDistance = 58 sIAPData.sCurrentStageData.sObjectSpawningData[23].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[23].fSpawnDistance = 60 sIAPData.sCurrentStageData.sObjectSpawningData[24].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[24].fSpawnDistance = 62 sIAPData.sCurrentStageData.sObjectSpawningData[25].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[25].fSpawnDistance = 64 sIAPData.sCurrentStageData.sObjectSpawningData[26].eObject = IAP_OBJECT_PICKUP_SHIELD //pickup - Shield sIAPData.sCurrentStageData.sObjectSpawningData[26].fSpawnDistance = 65 sIAPData.sCurrentStageData.sObjectSpawningData[27].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[27].fSpawnDistance = 65.5 sIAPData.sCurrentStageData.sObjectSpawningData[28].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[28].fSpawnDistance = 67 sIAPData.sCurrentStageData.sObjectSpawningData[29].eObject = IAP_OBJECT_HAZARD_LEDGE_IRAQ //platform sIAPData.sCurrentStageData.sObjectSpawningData[29].fSpawnDistance = 69 sIAPData.sCurrentStageData.sObjectSpawningData[30].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[30].fSpawnDistance = 70.5 sIAPData.sCurrentStageData.sObjectSpawningData[31].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[31].fSpawnDistance = 71 //70.5 sIAPData.sCurrentStageData.sObjectSpawningData[32].eObject = IAP_OBJECT_PICKUP_TRIPLE //pickup - Triple sIAPData.sCurrentStageData.sObjectSpawningData[32].fSpawnDistance = 72.2 sIAPData.sCurrentStageData.sObjectSpawningData[33].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[33].fSpawnDistance = 73 sIAPData.sCurrentStageData.sObjectSpawningData[34].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[34].fSpawnDistance = 74 sIAPData.sCurrentStageData.sObjectSpawningData[35].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[35].fSpawnDistance = 75 sIAPData.sCurrentStageData.sObjectSpawningData[36].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[36].fSpawnDistance = 76 sIAPData.sCurrentStageData.sObjectSpawningData[37].eObject = IAP_OBJECT_PICKUP_SCORE //pickup - score sIAPData.sCurrentStageData.sObjectSpawningData[37].fSpawnDistance = 77 sIAPData.sCurrentStageData.sObjectSpawningData[38].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[38].fSpawnDistance = 77.5 sIAPData.sCurrentStageData.sObjectSpawningData[39].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[39].fSpawnDistance = 78 sIAPData.sCurrentStageData.sObjectSpawningData[40].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[40].fSpawnDistance = 79 sIAPData.sCurrentStageData.sObjectSpawningData[41].eObject = IAP_OBJECT_HAZARD_PITFALL_IRAQ sIAPData.sCurrentStageData.sObjectSpawningData[41].fSpawnDistance = 80 sIAPData.sCurrentStageData.sObjectSpawningData[42].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[42].fSpawnDistance = 83 sIAPData.sCurrentStageData.sObjectSpawningData[43].eObject = IAP_OBJECT_ENEMY_CAMEL sIAPData.sCurrentStageData.sObjectSpawningData[43].fSpawnDistance = 84.2 sIAPData.sCurrentStageData.sObjectSpawningData[44].eObject = IAP_OBJECT_HAZARD_PITFALL_IRAQ sIAPData.sCurrentStageData.sObjectSpawningData[44].fSpawnDistance = 84.3 sIAPData.sCurrentStageData.sObjectSpawningData[45].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[45].fSpawnDistance = 84.5 sIAPData.sCurrentStageData.sObjectSpawningData[46].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[46].fSpawnDistance = 85 sIAPData.sCurrentStageData.sObjectSpawningData[47].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[47].fSpawnDistance = 85.5 BREAK CASE IAP_STAGE_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[0].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[0].fSpawnDistance = 3 sIAPData.sCurrentStageData.sObjectSpawningData[1].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[1].fSpawnDistance = 5 sIAPData.sCurrentStageData.sObjectSpawningData[2].eObject = IAP_OBJECT_ENEMY_BEAR sIAPData.sCurrentStageData.sObjectSpawningData[2].fSpawnDistance = 7 sIAPData.sCurrentStageData.sObjectSpawningData[3].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[3].fSpawnDistance = 9 sIAPData.sCurrentStageData.sObjectSpawningData[4].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[4].fSpawnDistance = 12 sIAPData.sCurrentStageData.sObjectSpawningData[5].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[5].fSpawnDistance = 13 sIAPData.sCurrentStageData.sObjectSpawningData[6].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[6].fSpawnDistance = 18 sIAPData.sCurrentStageData.sObjectSpawningData[7].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[7].fSpawnDistance = 17 sIAPData.sCurrentStageData.sObjectSpawningData[8].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[8].fSpawnDistance = 22 sIAPData.sCurrentStageData.sObjectSpawningData[9].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[9].fSpawnDistance = 22.5 sIAPData.sCurrentStageData.sObjectSpawningData[10].eObject = IAP_OBJECT_ENEMY_BEAR sIAPData.sCurrentStageData.sObjectSpawningData[10].fSpawnDistance = 24 sIAPData.sCurrentStageData.sObjectSpawningData[11].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[11].fSpawnDistance = 25.5 sIAPData.sCurrentStageData.sObjectSpawningData[12].eObject = IAP_OBJECT_HAZARD_LEDGE_RUSSIA //platform sIAPData.sCurrentStageData.sObjectSpawningData[12].fSpawnDistance = 26 sIAPData.sCurrentStageData.sObjectSpawningData[13].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[13].fSpawnDistance = 27 sIAPData.sCurrentStageData.sObjectSpawningData[14].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[14].fSpawnDistance = 29 sIAPData.sCurrentStageData.sObjectSpawningData[15].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[15].fSpawnDistance = 31 sIAPData.sCurrentStageData.sObjectSpawningData[16].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[16].fSpawnDistance = 32 sIAPData.sCurrentStageData.sObjectSpawningData[17].eObject = IAP_OBJECT_HAZARD_LEDGE_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[17].fSpawnDistance = 35 sIAPData.sCurrentStageData.sObjectSpawningData[18].eObject = IAP_OBJECT_PICKUP_ROCKETS //collectable //pickup - Weapon - Rocket sIAPData.sCurrentStageData.sObjectSpawningData[18].fSpawnDistance = 37.5 sIAPData.sCurrentStageData.sObjectSpawningData[19].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[19].fSpawnDistance = 40 sIAPData.sCurrentStageData.sObjectSpawningData[20].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[20].fSpawnDistance = 43 sIAPData.sCurrentStageData.sObjectSpawningData[21].eObject = IAP_OBJECT_PICKUP_ENEMY //pickup - Enemy sIAPData.sCurrentStageData.sObjectSpawningData[21].fSpawnDistance = 44 sIAPData.sCurrentStageData.sObjectSpawningData[22].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[22].fSpawnDistance = 46 sIAPData.sCurrentStageData.sObjectSpawningData[23].eObject = IAP_OBJECT_OIL_MED_DARK //OIL - 4% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[23].fSpawnDistance = 50 sIAPData.sCurrentStageData.sObjectSpawningData[24].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[24].fSpawnDistance = 50.5 sIAPData.sCurrentStageData.sObjectSpawningData[25].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[25].fSpawnDistance = 52 sIAPData.sCurrentStageData.sObjectSpawningData[26].eObject = IAP_OBJECT_ENEMY_BEAR sIAPData.sCurrentStageData.sObjectSpawningData[26].fSpawnDistance = 55 sIAPData.sCurrentStageData.sObjectSpawningData[27].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[27].fSpawnDistance = 57 sIAPData.sCurrentStageData.sObjectSpawningData[28].eObject = IAP_OBJECT_PICKUP_HEALTH //pickup - Health sIAPData.sCurrentStageData.sObjectSpawningData[28].fSpawnDistance = 58 sIAPData.sCurrentStageData.sObjectSpawningData[29].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[29].fSpawnDistance = 60 sIAPData.sCurrentStageData.sObjectSpawningData[30].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[30].fSpawnDistance = 62 sIAPData.sCurrentStageData.sObjectSpawningData[31].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[31].fSpawnDistance = 63 sIAPData.sCurrentStageData.sObjectSpawningData[32].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[32].fSpawnDistance = 64 sIAPData.sCurrentStageData.sObjectSpawningData[33].eObject = IAP_OBJECT_PICKUP_SHIELD //pickup - shield sIAPData.sCurrentStageData.sObjectSpawningData[33].fSpawnDistance = 65.5 sIAPData.sCurrentStageData.sObjectSpawningData[34].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[34].fSpawnDistance = 66 sIAPData.sCurrentStageData.sObjectSpawningData[35].eObject = IAP_OBJECT_ENEMY_BEAR sIAPData.sCurrentStageData.sObjectSpawningData[35].fSpawnDistance = 67 sIAPData.sCurrentStageData.sObjectSpawningData[36].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[36].fSpawnDistance = 70 sIAPData.sCurrentStageData.sObjectSpawningData[37].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[37].fSpawnDistance = 72 sIAPData.sCurrentStageData.sObjectSpawningData[38].eObject = IAP_OBJECT_PICKUP_ENEMY //pickup - Enemy sIAPData.sCurrentStageData.sObjectSpawningData[38].fSpawnDistance = 73 sIAPData.sCurrentStageData.sObjectSpawningData[39].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[39].fSpawnDistance = 73.5 sIAPData.sCurrentStageData.sObjectSpawningData[40].eObject = IAP_OBJECT_OIL_MED_DARK //OIL - 4% speed increase //HALF WAY sIAPData.sCurrentStageData.sObjectSpawningData[40].fSpawnDistance = 75 sIAPData.sCurrentStageData.sObjectSpawningData[41].eObject = IAP_OBJECT_PICKUP_HEALTH //pickup - Heath sIAPData.sCurrentStageData.sObjectSpawningData[41].fSpawnDistance = 76.5 sIAPData.sCurrentStageData.sObjectSpawningData[42].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[42].fSpawnDistance = 78 sIAPData.sCurrentStageData.sObjectSpawningData[43].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[43].fSpawnDistance = 80 sIAPData.sCurrentStageData.sObjectSpawningData[44].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[44].fSpawnDistance = 81 sIAPData.sCurrentStageData.sObjectSpawningData[45].eObject = IAP_OBJECT_ENEMY_BEAR sIAPData.sCurrentStageData.sObjectSpawningData[45].fSpawnDistance = 83 sIAPData.sCurrentStageData.sObjectSpawningData[46].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[46].fSpawnDistance = 85 sIAPData.sCurrentStageData.sObjectSpawningData[47].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[47].fSpawnDistance = 86 sIAPData.sCurrentStageData.sObjectSpawningData[48].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[48].fSpawnDistance = 88 sIAPData.sCurrentStageData.sObjectSpawningData[49].eObject = IAP_OBJECT_ENEMY_BEAR sIAPData.sCurrentStageData.sObjectSpawningData[49].fSpawnDistance = 92 sIAPData.sCurrentStageData.sObjectSpawningData[50].eObject = IAP_OBJECT_PICKUP_RANDOM //pickup - Random sIAPData.sCurrentStageData.sObjectSpawningData[50].iFlags = (ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_PLASMA | ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_FLAMETHROWER | ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_ENEMY | ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_NUKE) sIAPData.sCurrentStageData.sObjectSpawningData[50].fSpawnDistance = 94 sIAPData.sCurrentStageData.sObjectSpawningData[51].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[51].fSpawnDistance = 96 sIAPData.sCurrentStageData.sObjectSpawningData[52].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[52].fSpawnDistance = 98 sIAPData.sCurrentStageData.sObjectSpawningData[53].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[53].fSpawnDistance = 100 sIAPData.sCurrentStageData.sObjectSpawningData[54].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[54].fSpawnDistance = 101 sIAPData.sCurrentStageData.sObjectSpawningData[55].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[55].fSpawnDistance = 102 sIAPData.sCurrentStageData.sObjectSpawningData[56].eObject = IAP_OBJECT_ENEMY_BEAR sIAPData.sCurrentStageData.sObjectSpawningData[56].fSpawnDistance = 104 sIAPData.sCurrentStageData.sObjectSpawningData[57].eObject = IAP_OBJECT_ENEMY_BEAR sIAPData.sCurrentStageData.sObjectSpawningData[57].fSpawnDistance = 106 sIAPData.sCurrentStageData.sObjectSpawningData[58].eObject = IAP_OBJECT_PICKUP_LIFE //pickup - Life sIAPData.sCurrentStageData.sObjectSpawningData[58].fSpawnDistance = 107 sIAPData.sCurrentStageData.sObjectSpawningData[59].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[59].fSpawnDistance = 108 sIAPData.sCurrentStageData.sObjectSpawningData[60].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[60].fSpawnDistance = 109 sIAPData.sCurrentStageData.sObjectSpawningData[61].eObject = IAP_OBJECT_OIL_MED_DARK //OIL - 4% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[61].fSpawnDistance = 110 sIAPData.sCurrentStageData.sObjectSpawningData[62].eObject = IAP_OBJECT_HAZARD_LEDGE_RUSSIA //platform sIAPData.sCurrentStageData.sObjectSpawningData[62].fSpawnDistance = 112 sIAPData.sCurrentStageData.sObjectSpawningData[63].eObject = IAP_OBJECT_PICKUP_SCORE //pickup - Score sIAPData.sCurrentStageData.sObjectSpawningData[63].fSpawnDistance = 114.5 sIAPData.sCurrentStageData.sObjectSpawningData[64].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[64].fSpawnDistance = 117 sIAPData.sCurrentStageData.sObjectSpawningData[65].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[65].fSpawnDistance = 118 sIAPData.sCurrentStageData.sObjectSpawningData[66].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[66].fSpawnDistance = 119 sIAPData.sCurrentStageData.sObjectSpawningData[67].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[67].fSpawnDistance = 120 sIAPData.sCurrentStageData.sObjectSpawningData[68].eObject = IAP_OBJECT_PICKUP_ROCKETS //pickup - Weapon Rockets sIAPData.sCurrentStageData.sObjectSpawningData[68].fSpawnDistance = 123 sIAPData.sCurrentStageData.sObjectSpawningData[69].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[69].fSpawnDistance = 125 sIAPData.sCurrentStageData.sObjectSpawningData[70].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[70].fSpawnDistance = 126 sIAPData.sCurrentStageData.sObjectSpawningData[71].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[71].fSpawnDistance = 127 sIAPData.sCurrentStageData.sObjectSpawningData[72].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[72].fSpawnDistance = 129.5 sIAPData.sCurrentStageData.sObjectSpawningData[73].eObject = IAP_OBJECT_ENEMY_BEAR sIAPData.sCurrentStageData.sObjectSpawningData[73].fSpawnDistance = 131.9 sIAPData.sCurrentStageData.sObjectSpawningData[74].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[74].fSpawnDistance = 132 sIAPData.sCurrentStageData.sObjectSpawningData[75].eObject = IAP_OBJECT_HAZARD_LEDGE_RUSSIA //platform sIAPData.sCurrentStageData.sObjectSpawningData[75].fSpawnDistance = 135.4 sIAPData.sCurrentStageData.sObjectSpawningData[76].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[76].fSpawnDistance = 135.5 sIAPData.sCurrentStageData.sObjectSpawningData[77].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[77].fSpawnDistance = 136 sIAPData.sCurrentStageData.sObjectSpawningData[80].eObject = IAP_OBJECT_PICKUP_SCORE //pickup - Score sIAPData.sCurrentStageData.sObjectSpawningData[80].fSpawnDistance = 137.3 sIAPData.sCurrentStageData.sObjectSpawningData[81].eObject = IAP_OBJECT_HAZARD_PITFALL_RUSSIA sIAPData.sCurrentStageData.sObjectSpawningData[81].fSpawnDistance = 137.5 BREAK CASE IAP_STAGE_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[0].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[0].fSpawnDistance = 1 sIAPData.sCurrentStageData.sObjectSpawningData[1].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[1].fSpawnDistance = 3 sIAPData.sCurrentStageData.sObjectSpawningData[2].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[2].fSpawnDistance = 4 sIAPData.sCurrentStageData.sObjectSpawningData[3].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[3].fSpawnDistance = 6.5 sIAPData.sCurrentStageData.sObjectSpawningData[4].eObject = IAP_OBJECT_PICKUP_FLAMETHROWER //pickup - Weapon Flame sIAPData.sCurrentStageData.sObjectSpawningData[4].fSpawnDistance = 8.2 sIAPData.sCurrentStageData.sObjectSpawningData[5].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[5].fSpawnDistance = 10 sIAPData.sCurrentStageData.sObjectSpawningData[6].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[6].fSpawnDistance = 13 sIAPData.sCurrentStageData.sObjectSpawningData[7].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[7].fSpawnDistance = 13 sIAPData.sCurrentStageData.sObjectSpawningData[8].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[8].fSpawnDistance = 13.5 sIAPData.sCurrentStageData.sObjectSpawningData[9].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[9].fSpawnDistance = 21 sIAPData.sCurrentStageData.sObjectSpawningData[10].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[10].fSpawnDistance = 22 sIAPData.sCurrentStageData.sObjectSpawningData[11].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[11].fSpawnDistance = 23 sIAPData.sCurrentStageData.sObjectSpawningData[12].eObject = IAP_OBJECT_OIL_MED_LIGHT //OIL - 4% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[12].fSpawnDistance = 23.5 sIAPData.sCurrentStageData.sObjectSpawningData[13].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[13].fSpawnDistance = 27 sIAPData.sCurrentStageData.sObjectSpawningData[14].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[14].fSpawnDistance = 30 sIAPData.sCurrentStageData.sObjectSpawningData[15].eObject = IAP_OBJECT_PICKUP_SHIELD //pickup - Shield sIAPData.sCurrentStageData.sObjectSpawningData[15].fSpawnDistance = 31 sIAPData.sCurrentStageData.sObjectSpawningData[16].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[16].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[17].fSpawnDistance = 35 sIAPData.sCurrentStageData.sObjectSpawningData[17].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[18].fSpawnDistance = 35.1 sIAPData.sCurrentStageData.sObjectSpawningData[18].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[18].fSpawnDistance = 35.6 sIAPData.sCurrentStageData.sObjectSpawningData[19].eObject = IAP_OBJECT_PICKUP_ENEMY //pickup - Enemy sIAPData.sCurrentStageData.sObjectSpawningData[19].fSpawnDistance = 35.7 sIAPData.sCurrentStageData.sObjectSpawningData[20].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[20].fSpawnDistance = 37 sIAPData.sCurrentStageData.sObjectSpawningData[21].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[21].fSpawnDistance = 39 sIAPData.sCurrentStageData.sObjectSpawningData[22].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[22].fSpawnDistance = 40 sIAPData.sCurrentStageData.sObjectSpawningData[23].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[23].fSpawnDistance = 40.5 sIAPData.sCurrentStageData.sObjectSpawningData[24].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[24].fSpawnDistance = 41 sIAPData.sCurrentStageData.sObjectSpawningData[25].eObject = IAP_OBJECT_PICKUP_SCORE //pickup - Score sIAPData.sCurrentStageData.sObjectSpawningData[25].fSpawnDistance = 42.3 sIAPData.sCurrentStageData.sObjectSpawningData[26].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[26].fSpawnDistance = 43.5 sIAPData.sCurrentStageData.sObjectSpawningData[27].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[27].fSpawnDistance = 46.3 sIAPData.sCurrentStageData.sObjectSpawningData[28].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[28].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[28].fSpawnDistance = 46.5 sIAPData.sCurrentStageData.sObjectSpawningData[29].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[29].fSpawnDistance = 47 sIAPData.sCurrentStageData.sObjectSpawningData[30].eObject = IAP_OBJECT_PICKUP_HEALTH //pickup - Health - Repair sIAPData.sCurrentStageData.sObjectSpawningData[30].fSpawnDistance = 47.5 sIAPData.sCurrentStageData.sObjectSpawningData[31].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[31].fSpawnDistance = 49 sIAPData.sCurrentStageData.sObjectSpawningData[32].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[32].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[32].fSpawnDistance = 50 sIAPData.sCurrentStageData.sObjectSpawningData[33].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[33].fSpawnDistance = 53 sIAPData.sCurrentStageData.sObjectSpawningData[34].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[34].fSpawnDistance = 54.5 sIAPData.sCurrentStageData.sObjectSpawningData[35].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[35].fSpawnDistance = 55.2 sIAPData.sCurrentStageData.sObjectSpawningData[36].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[36].fSpawnDistance = 55.9 sIAPData.sCurrentStageData.sObjectSpawningData[37].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[37].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[37].fSpawnDistance = 56 sIAPData.sCurrentStageData.sObjectSpawningData[38].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[38].fSpawnDistance = 56.5 sIAPData.sCurrentStageData.sObjectSpawningData[39].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[39].fSpawnDistance = 57.5 sIAPData.sCurrentStageData.sObjectSpawningData[40].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[40].fSpawnDistance = 60 sIAPData.sCurrentStageData.sObjectSpawningData[41].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[41].fSpawnDistance = 63 sIAPData.sCurrentStageData.sObjectSpawningData[42].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[42].fSpawnDistance = 64 sIAPData.sCurrentStageData.sObjectSpawningData[43].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[43].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[43].fSpawnDistance = 65 sIAPData.sCurrentStageData.sObjectSpawningData[44].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[44].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[44].fSpawnDistance = 66 sIAPData.sCurrentStageData.sObjectSpawningData[45].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[45].fSpawnDistance = 71.5 sIAPData.sCurrentStageData.sObjectSpawningData[46].eObject = IAP_OBJECT_PICKUP_SHIELD //pickup - Weapons - shield sIAPData.sCurrentStageData.sObjectSpawningData[46].fSpawnDistance = 72 sIAPData.sCurrentStageData.sObjectSpawningData[47].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[47].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[47].fSpawnDistance = 72 sIAPData.sCurrentStageData.sObjectSpawningData[48].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[48].fSpawnDistance = 74 sIAPData.sCurrentStageData.sObjectSpawningData[49].eObject = IAP_OBJECT_OIL_LARGE //OIL - 6% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[49].fSpawnDistance = 76 sIAPData.sCurrentStageData.sObjectSpawningData[50].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[50].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[50].fSpawnDistance = 77 sIAPData.sCurrentStageData.sObjectSpawningData[51].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[51].fSpawnDistance = 78 sIAPData.sCurrentStageData.sObjectSpawningData[52].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[52].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[52].fSpawnDistance = 79 sIAPData.sCurrentStageData.sObjectSpawningData[53].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[53].fSpawnDistance = 79 sIAPData.sCurrentStageData.sObjectSpawningData[54].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[54].fSpawnDistance = 80 sIAPData.sCurrentStageData.sObjectSpawningData[55].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[55].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[55].fSpawnDistance = 81 sIAPData.sCurrentStageData.sObjectSpawningData[56].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[56].fSpawnDistance = 82 sIAPData.sCurrentStageData.sObjectSpawningData[57].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[57].fSpawnDistance = 83 sIAPData.sCurrentStageData.sObjectSpawningData[58].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[58].fSpawnDistance = 83.5 sIAPData.sCurrentStageData.sObjectSpawningData[59].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[59].fSpawnDistance = 84 sIAPData.sCurrentStageData.sObjectSpawningData[60].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[60].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[60].fSpawnDistance = 85 sIAPData.sCurrentStageData.sObjectSpawningData[61].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[61].fSpawnDistance = 85.1 sIAPData.sCurrentStageData.sObjectSpawningData[62].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[62].fSpawnDistance = 85.8 sIAPData.sCurrentStageData.sObjectSpawningData[63].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[63].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[63].fSpawnDistance = 90 sIAPData.sCurrentStageData.sObjectSpawningData[64].eObject = IAP_OBJECT_PICKUP_HEALTH //pickup - Health sIAPData.sCurrentStageData.sObjectSpawningData[64].fSpawnDistance = 94 sIAPData.sCurrentStageData.sObjectSpawningData[65].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[65].fSpawnDistance = 95 sIAPData.sCurrentStageData.sObjectSpawningData[66].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[66].fSpawnDistance = 96 sIAPData.sCurrentStageData.sObjectSpawningData[67].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[67].fSpawnDistance = 98 sIAPData.sCurrentStageData.sObjectSpawningData[68].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[68].fSpawnDistance = 99 sIAPData.sCurrentStageData.sObjectSpawningData[69].eObject = IAP_OBJECT_OIL_MED_DARK //OIL - 4% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[69].fSpawnDistance = 99.5 sIAPData.sCurrentStageData.sObjectSpawningData[70].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[70].fSpawnDistance = 104 sIAPData.sCurrentStageData.sObjectSpawningData[71].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[71].fSpawnDistance = 106 sIAPData.sCurrentStageData.sObjectSpawningData[72].eObject = IAP_OBJECT_PICKUP_SCORE //pickup - Score sIAPData.sCurrentStageData.sObjectSpawningData[72].fSpawnDistance = 110 sIAPData.sCurrentStageData.sObjectSpawningData[73].eObject = IAP_OBJECT_OIL_MED_DARK //OIL - 4% speed increase //HALF WAY sIAPData.sCurrentStageData.sObjectSpawningData[73].fSpawnDistance = 112.5 sIAPData.sCurrentStageData.sObjectSpawningData[74].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[74].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[74].fSpawnDistance = 115 sIAPData.sCurrentStageData.sObjectSpawningData[75].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[75].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[75].fSpawnDistance = 117 sIAPData.sCurrentStageData.sObjectSpawningData[76].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[76].fSpawnDistance = 120 sIAPData.sCurrentStageData.sObjectSpawningData[77].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[77].fSpawnDistance = 125 sIAPData.sCurrentStageData.sObjectSpawningData[78].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[78].fSpawnDistance = 126 sIAPData.sCurrentStageData.sObjectSpawningData[79].eObject = IAP_OBJECT_PICKUP_NUKE //pickup - Nuke sIAPData.sCurrentStageData.sObjectSpawningData[79].fSpawnDistance = 126.5 sIAPData.sCurrentStageData.sObjectSpawningData[80].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[80].fSpawnDistance = 126.6 sIAPData.sCurrentStageData.sObjectSpawningData[81].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[81].fSpawnDistance = 127.5 sIAPData.sCurrentStageData.sObjectSpawningData[82].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[82].fSpawnDistance = 128.5 sIAPData.sCurrentStageData.sObjectSpawningData[83].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[83].fSpawnDistance = 129 sIAPData.sCurrentStageData.sObjectSpawningData[84].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[84].fSpawnDistance = 129.5 sIAPData.sCurrentStageData.sObjectSpawningData[85].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[85].fSpawnDistance = 130 sIAPData.sCurrentStageData.sObjectSpawningData[86].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[86].fSpawnDistance = 132 sIAPData.sCurrentStageData.sObjectSpawningData[87].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[87].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[87].fSpawnDistance = 135 sIAPData.sCurrentStageData.sObjectSpawningData[88].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[88].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[88].fSpawnDistance = 135.5 sIAPData.sCurrentStageData.sObjectSpawningData[89].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[89].fSpawnDistance = 136 sIAPData.sCurrentStageData.sObjectSpawningData[90].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[90].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[90].fSpawnDistance = 136.5 sIAPData.sCurrentStageData.sObjectSpawningData[91].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[91].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[91].fSpawnDistance = 137 sIAPData.sCurrentStageData.sObjectSpawningData[92].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[92].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[92].fSpawnDistance = 137.7 sIAPData.sCurrentStageData.sObjectSpawningData[93].eObject = IAP_OBJECT_PICKUP_FLAMETHROWER // pickup - flamethrower sIAPData.sCurrentStageData.sObjectSpawningData[93].fSpawnDistance = 141 sIAPData.sCurrentStageData.sObjectSpawningData[94].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[94].fSpawnDistance = 142 sIAPData.sCurrentStageData.sObjectSpawningData[95].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[95].fSpawnDistance = 143 sIAPData.sCurrentStageData.sObjectSpawningData[96].eObject = IAP_OBJECT_PICKUP_SCORE //pickup - Score sIAPData.sCurrentStageData.sObjectSpawningData[96].fSpawnDistance = 144 sIAPData.sCurrentStageData.sObjectSpawningData[97].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[97].fSpawnDistance = 145 sIAPData.sCurrentStageData.sObjectSpawningData[98].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[98].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[98].fSpawnDistance = 147 sIAPData.sCurrentStageData.sObjectSpawningData[99].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[99].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[99].fSpawnDistance = 150 sIAPData.sCurrentStageData.sObjectSpawningData[100].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[100].fSpawnDistance = 143 sIAPData.sCurrentStageData.sObjectSpawningData[101].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[101].fSpawnDistance = 150 sIAPData.sCurrentStageData.sObjectSpawningData[102].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[102].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[102].fSpawnDistance = 151 sIAPData.sCurrentStageData.sObjectSpawningData[103].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[103].fSpawnDistance = 153 sIAPData.sCurrentStageData.sObjectSpawningData[104].eObject = IAP_OBJECT_PICKUP_LIFE //pickup - Life sIAPData.sCurrentStageData.sObjectSpawningData[104].fSpawnDistance = 156 sIAPData.sCurrentStageData.sObjectSpawningData[105].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[105].fSpawnDistance = 157 sIAPData.sCurrentStageData.sObjectSpawningData[106].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[106].fSpawnDistance = 160 sIAPData.sCurrentStageData.sObjectSpawningData[107].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[107].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[107].fSpawnDistance = 161 sIAPData.sCurrentStageData.sObjectSpawningData[108].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[108].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[108].fSpawnDistance = 162 sIAPData.sCurrentStageData.sObjectSpawningData[109].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[109].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[109].fSpawnDistance = 165 sIAPData.sCurrentStageData.sObjectSpawningData[110].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[110].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[110].fSpawnDistance = 167 sIAPData.sCurrentStageData.sObjectSpawningData[111].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[111].fSpawnDistance = 170 sIAPData.sCurrentStageData.sObjectSpawningData[112].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[112].fSpawnDistance = 172 sIAPData.sCurrentStageData.sObjectSpawningData[113].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[113].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[113].fSpawnDistance = 175 sIAPData.sCurrentStageData.sObjectSpawningData[114].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[114].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[114].fSpawnDistance = 175.5 sIAPData.sCurrentStageData.sObjectSpawningData[115].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[115].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[115].fSpawnDistance = 176 sIAPData.sCurrentStageData.sObjectSpawningData[116].eObject = IAP_OBJECT_PICKUP_RANDOM //pickup - Random sIAPData.sCurrentStageData.sObjectSpawningData[116].iFlags = (ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_PLASMA | ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_ENEMY) sIAPData.sCurrentStageData.sObjectSpawningData[116].fSpawnDistance = 180 sIAPData.sCurrentStageData.sObjectSpawningData[117].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[117].fSpawnDistance = 183 sIAPData.sCurrentStageData.sObjectSpawningData[118].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[118].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[118].fSpawnDistance = 185 sIAPData.sCurrentStageData.sObjectSpawningData[119].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[119].fSpawnDistance = 185.5 sIAPData.sCurrentStageData.sObjectSpawningData[120].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[120].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[120].fSpawnDistance = 186 sIAPData.sCurrentStageData.sObjectSpawningData[121].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[121].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[121].fSpawnDistance = 186.5 sIAPData.sCurrentStageData.sObjectSpawningData[122].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[122].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[122].fSpawnDistance = 187 sIAPData.sCurrentStageData.sObjectSpawningData[123].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[123].fSpawnDistance = 187.2 sIAPData.sCurrentStageData.sObjectSpawningData[124].eObject = IAP_OBJECT_PICKUP_ROCKETS //pickup - Weapon Rockets sIAPData.sCurrentStageData.sObjectSpawningData[124].fSpawnDistance = 190 sIAPData.sCurrentStageData.sObjectSpawningData[125].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[125].fSpawnDistance = 192 sIAPData.sCurrentStageData.sObjectSpawningData[126].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[126].fSpawnDistance = 193 sIAPData.sCurrentStageData.sObjectSpawningData[127].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[127].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[127].fSpawnDistance = 194 sIAPData.sCurrentStageData.sObjectSpawningData[128].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[128].fSpawnDistance = 195 sIAPData.sCurrentStageData.sObjectSpawningData[129].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[129].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[129].fSpawnDistance = 196 sIAPData.sCurrentStageData.sObjectSpawningData[130].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[130].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[130].fSpawnDistance = 197 sIAPData.sCurrentStageData.sObjectSpawningData[131].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[131].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[131].fSpawnDistance = 197.2 sIAPData.sCurrentStageData.sObjectSpawningData[132].eObject = IAP_OBJECT_PICKUP_HEALTH //pickup - Health sIAPData.sCurrentStageData.sObjectSpawningData[132].fSpawnDistance = 200 sIAPData.sCurrentStageData.sObjectSpawningData[133].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[133].fSpawnDistance = 202 sIAPData.sCurrentStageData.sObjectSpawningData[134].eObject = IAP_OBJECT_OIL_MED_DARK //OIL - 4% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[134].fSpawnDistance = 204 sIAPData.sCurrentStageData.sObjectSpawningData[135].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA //platform sIAPData.sCurrentStageData.sObjectSpawningData[135].fSpawnDistance = 206.5 sIAPData.sCurrentStageData.sObjectSpawningData[136].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[136].fSpawnDistance = 207 sIAPData.sCurrentStageData.sObjectSpawningData[137].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[137].fSpawnDistance = 208 sIAPData.sCurrentStageData.sObjectSpawningData[138].eObject = IAP_OBJECT_PICKUP_RANDOM //pickup - Random sIAPData.sCurrentStageData.sObjectSpawningData[138].iFlags = (ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_PLASMA | ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_ENEMY) sIAPData.sCurrentStageData.sObjectSpawningData[138].fSpawnDistance = 208.1 sIAPData.sCurrentStageData.sObjectSpawningData[139].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[139].fSpawnDistance = 209 sIAPData.sCurrentStageData.sObjectSpawningData[140].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[140].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[140].fSpawnDistance = 210 sIAPData.sCurrentStageData.sObjectSpawningData[141].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[141].fSpawnDistance = 211 sIAPData.sCurrentStageData.sObjectSpawningData[142].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[142].fSpawnDistance = 211.5 sIAPData.sCurrentStageData.sObjectSpawningData[143].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[143].fSpawnDistance = 212 sIAPData.sCurrentStageData.sObjectSpawningData[144].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[144].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[144].fSpawnDistance = 213 sIAPData.sCurrentStageData.sObjectSpawningData[145].eObject = IAP_OBJECT_PICKUP_SCORE //pickup - Score sIAPData.sCurrentStageData.sObjectSpawningData[145].fSpawnDistance = 213.5 sIAPData.sCurrentStageData.sObjectSpawningData[146].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[146].fSpawnDistance = 214 sIAPData.sCurrentStageData.sObjectSpawningData[147].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[147].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[147].fSpawnDistance = 215 sIAPData.sCurrentStageData.sObjectSpawningData[148].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[148].fSpawnDistance = 217 sIAPData.sCurrentStageData.sObjectSpawningData[149].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[149].fSpawnDistance = 218 sIAPData.sCurrentStageData.sObjectSpawningData[150].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[150].fSpawnDistance = 220 sIAPData.sCurrentStageData.sObjectSpawningData[151].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[151].fSpawnDistance = 222 sIAPData.sCurrentStageData.sObjectSpawningData[152].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[152].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[152].fSpawnDistance = 223 sIAPData.sCurrentStageData.sObjectSpawningData[153].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[153].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[153].fSpawnDistance = 224 sIAPData.sCurrentStageData.sObjectSpawningData[154].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[154].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[154].fSpawnDistance = 225 sIAPData.sCurrentStageData.sObjectSpawningData[155].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[155].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[155].fSpawnDistance = 226 sIAPData.sCurrentStageData.sObjectSpawningData[156].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[156].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[156].fSpawnDistance = 227 sIAPData.sCurrentStageData.sObjectSpawningData[157].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[157].fSpawnDistance = 228 sIAPData.sCurrentStageData.sObjectSpawningData[158].eObject = IAP_OBJECT_PICKUP_RANDOM //pickup - Random sIAPData.sCurrentStageData.sObjectSpawningData[158].iFlags = (ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_PLASMA | ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_ENEMY) sIAPData.sCurrentStageData.sObjectSpawningData[158].fSpawnDistance = 229 sIAPData.sCurrentStageData.sObjectSpawningData[159].eObject = IAP_OBJECT_HAZARD_LEDGE_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[159].fSpawnDistance = 232 sIAPData.sCurrentStageData.sObjectSpawningData[160].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[160].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[160].fSpawnDistance = 233 sIAPData.sCurrentStageData.sObjectSpawningData[161].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[161].fSpawnDistance = 234 sIAPData.sCurrentStageData.sObjectSpawningData[162].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[162].fSpawnDistance = 235 sIAPData.sCurrentStageData.sObjectSpawningData[163].eObject = IAP_OBJECT_ENEMY_PANDA sIAPData.sCurrentStageData.sObjectSpawningData[163].fSpawnDistance = 235.1 sIAPData.sCurrentStageData.sObjectSpawningData[164].eObject = IAP_OBJECT_HAZARD_PITFALL_CHINA sIAPData.sCurrentStageData.sObjectSpawningData[164].iFlags = ciIAP_OBJECT_FLAG_PITFALL_CRUMBLING sIAPData.sCurrentStageData.sObjectSpawningData[164].fSpawnDistance = 235.2 sIAPData.sCurrentStageData.sObjectSpawningData[165].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[165].fSpawnDistance = 236.1 sIAPData.sCurrentStageData.sObjectSpawningData[166].eObject = IAP_OBJECT_PICKUP_SCORE //pickup - Score sIAPData.sCurrentStageData.sObjectSpawningData[166].fSpawnDistance = 237.8 sIAPData.sCurrentStageData.sObjectSpawningData[167].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[167].fSpawnDistance = 239.3 BREAK CASE IAP_STAGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[0].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[0].fSpawnDistance = 1 sIAPData.sCurrentStageData.sObjectSpawningData[1].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[1].fSpawnDistance = 6 sIAPData.sCurrentStageData.sObjectSpawningData[2].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[2].fSpawnDistance = 7 sIAPData.sCurrentStageData.sObjectSpawningData[3].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[3].fSpawnDistance = 9 sIAPData.sCurrentStageData.sObjectSpawningData[4].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[4].fSpawnDistance = 10 sIAPData.sCurrentStageData.sObjectSpawningData[5].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[5].fSpawnDistance = 12 sIAPData.sCurrentStageData.sObjectSpawningData[6].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[6].fSpawnDistance = 13 sIAPData.sCurrentStageData.sObjectSpawningData[7].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[7].fSpawnDistance = 14.5 sIAPData.sCurrentStageData.sObjectSpawningData[8].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[8].fSpawnDistance = 15 sIAPData.sCurrentStageData.sObjectSpawningData[9].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[9].fSpawnDistance = 16 sIAPData.sCurrentStageData.sObjectSpawningData[10].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[10].fSpawnDistance = 19 sIAPData.sCurrentStageData.sObjectSpawningData[11].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[11].fSpawnDistance = 21 sIAPData.sCurrentStageData.sObjectSpawningData[12].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[12].fSpawnDistance = 22 sIAPData.sCurrentStageData.sObjectSpawningData[13].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[13].fSpawnDistance = 23 sIAPData.sCurrentStageData.sObjectSpawningData[14].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[14].fSpawnDistance = 24 sIAPData.sCurrentStageData.sObjectSpawningData[15].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[15].fSpawnDistance = 25 sIAPData.sCurrentStageData.sObjectSpawningData[16].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[16].fSpawnDistance = 26 sIAPData.sCurrentStageData.sObjectSpawningData[17].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[17].fSpawnDistance = 27 sIAPData.sCurrentStageData.sObjectSpawningData[18].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[18].fSpawnDistance = 28 sIAPData.sCurrentStageData.sObjectSpawningData[19].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[19].fSpawnDistance = 31 sIAPData.sCurrentStageData.sObjectSpawningData[20].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[20].fSpawnDistance = 32 sIAPData.sCurrentStageData.sObjectSpawningData[21].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[21].fSpawnDistance = 33 sIAPData.sCurrentStageData.sObjectSpawningData[22].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[22].fSpawnDistance = 35 sIAPData.sCurrentStageData.sObjectSpawningData[23].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[23].fSpawnDistance = 36 sIAPData.sCurrentStageData.sObjectSpawningData[24].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[24].fSpawnDistance = 37 sIAPData.sCurrentStageData.sObjectSpawningData[25].eObject = IAP_OBJECT_PICKUP_SHIELD sIAPData.sCurrentStageData.sObjectSpawningData[25].fSpawnDistance = 37.5 sIAPData.sCurrentStageData.sObjectSpawningData[26].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[26].fSpawnDistance = 38 sIAPData.sCurrentStageData.sObjectSpawningData[27].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[27].fSpawnDistance = 40 sIAPData.sCurrentStageData.sObjectSpawningData[28].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[28].fSpawnDistance = 41 sIAPData.sCurrentStageData.sObjectSpawningData[29].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[29].fSpawnDistance = 42 sIAPData.sCurrentStageData.sObjectSpawningData[30].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[30].fSpawnDistance = 45 sIAPData.sCurrentStageData.sObjectSpawningData[31].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[31].fSpawnDistance = 46.5 sIAPData.sCurrentStageData.sObjectSpawningData[32].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[32].fSpawnDistance = 47.2 sIAPData.sCurrentStageData.sObjectSpawningData[33].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[33].fSpawnDistance = 48.5 sIAPData.sCurrentStageData.sObjectSpawningData[34].eObject = IAP_OBJECT_PICKUP_SCORE //pickup score sIAPData.sCurrentStageData.sObjectSpawningData[34].fSpawnDistance = 49.5 sIAPData.sCurrentStageData.sObjectSpawningData[35].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[35].fSpawnDistance = 50 sIAPData.sCurrentStageData.sObjectSpawningData[36].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[36].fSpawnDistance = 51 sIAPData.sCurrentStageData.sObjectSpawningData[37].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[37].fSpawnDistance = 52.2 sIAPData.sCurrentStageData.sObjectSpawningData[38].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[38].fSpawnDistance = 53 sIAPData.sCurrentStageData.sObjectSpawningData[39].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[39].fSpawnDistance = 54 sIAPData.sCurrentStageData.sObjectSpawningData[40].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[40].fSpawnDistance = 55 sIAPData.sCurrentStageData.sObjectSpawningData[41].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[41].fSpawnDistance = 56 sIAPData.sCurrentStageData.sObjectSpawningData[42].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[42].fSpawnDistance = 57 sIAPData.sCurrentStageData.sObjectSpawningData[43].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[43].fSpawnDistance = 58 sIAPData.sCurrentStageData.sObjectSpawningData[44].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[44].fSpawnDistance = 60 sIAPData.sCurrentStageData.sObjectSpawningData[45].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[45].fSpawnDistance = 61 sIAPData.sCurrentStageData.sObjectSpawningData[46].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[46].fSpawnDistance = 63 sIAPData.sCurrentStageData.sObjectSpawningData[47].eObject = IAP_OBJECT_PICKUP_PLASMA //pickup plasma sIAPData.sCurrentStageData.sObjectSpawningData[47].fSpawnDistance = 63.7 sIAPData.sCurrentStageData.sObjectSpawningData[48].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[48].fSpawnDistance = 64 sIAPData.sCurrentStageData.sObjectSpawningData[49].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[49].fSpawnDistance = 65 sIAPData.sCurrentStageData.sObjectSpawningData[50].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[50].fSpawnDistance = 66 sIAPData.sCurrentStageData.sObjectSpawningData[51].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[51].fSpawnDistance = 67 sIAPData.sCurrentStageData.sObjectSpawningData[52].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[52].fSpawnDistance = 69 sIAPData.sCurrentStageData.sObjectSpawningData[53].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[53].fSpawnDistance = 70 sIAPData.sCurrentStageData.sObjectSpawningData[54].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[54].fSpawnDistance = 70.1 sIAPData.sCurrentStageData.sObjectSpawningData[55].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[55].fSpawnDistance = 72 sIAPData.sCurrentStageData.sObjectSpawningData[56].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[56].fSpawnDistance = 74.5 sIAPData.sCurrentStageData.sObjectSpawningData[57].eObject = IAP_OBJECT_PICKUP_SHIELD //pickup shield sIAPData.sCurrentStageData.sObjectSpawningData[57].fSpawnDistance = 75 sIAPData.sCurrentStageData.sObjectSpawningData[58].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[58].fSpawnDistance = 75.5 sIAPData.sCurrentStageData.sObjectSpawningData[59].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[59].fSpawnDistance = 76 sIAPData.sCurrentStageData.sObjectSpawningData[60].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[60].fSpawnDistance = 76.5 sIAPData.sCurrentStageData.sObjectSpawningData[61].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[61].fSpawnDistance = 78.5 sIAPData.sCurrentStageData.sObjectSpawningData[62].eObject = IAP_OBJECT_PICKUP_RANDOM //pickup - Random sIAPData.sCurrentStageData.sObjectSpawningData[62].iFlags = (ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_ENEMY | ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_FLAMETHROWER | ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_PLASMA | ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_ROCKETS | ciIAP_OBJECT_FLAG_PICKUP_BLOCK_RANDOM_TRIPLE) sIAPData.sCurrentStageData.sObjectSpawningData[62].fSpawnDistance = 79 sIAPData.sCurrentStageData.sObjectSpawningData[63].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[63].fSpawnDistance = 80 sIAPData.sCurrentStageData.sObjectSpawningData[64].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[64].fSpawnDistance = 80.5 sIAPData.sCurrentStageData.sObjectSpawningData[65].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[65].fSpawnDistance = 81 sIAPData.sCurrentStageData.sObjectSpawningData[66].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[66].fSpawnDistance = 82 sIAPData.sCurrentStageData.sObjectSpawningData[67].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[67].fSpawnDistance = 83 sIAPData.sCurrentStageData.sObjectSpawningData[68].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[68].fSpawnDistance = 83.5 sIAPData.sCurrentStageData.sObjectSpawningData[69].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[69].fSpawnDistance = 85 sIAPData.sCurrentStageData.sObjectSpawningData[70].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[70].fSpawnDistance = 86 sIAPData.sCurrentStageData.sObjectSpawningData[71].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[71].fSpawnDistance = 89.3 sIAPData.sCurrentStageData.sObjectSpawningData[72].eObject = IAP_OBJECT_PICKUP_HEALTH //pickup health sIAPData.sCurrentStageData.sObjectSpawningData[72].fSpawnDistance = 89.8 sIAPData.sCurrentStageData.sObjectSpawningData[73].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[73].fSpawnDistance = 90.5 sIAPData.sCurrentStageData.sObjectSpawningData[74].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[74].fSpawnDistance = 92 sIAPData.sCurrentStageData.sObjectSpawningData[75].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[75].fSpawnDistance = 92.1 sIAPData.sCurrentStageData.sObjectSpawningData[76].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[76].fSpawnDistance = 93 sIAPData.sCurrentStageData.sObjectSpawningData[77].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[77].fSpawnDistance = 93.6 sIAPData.sCurrentStageData.sObjectSpawningData[78].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[78].fSpawnDistance = 93.7 sIAPData.sCurrentStageData.sObjectSpawningData[79].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[79].fSpawnDistance = 94.5 sIAPData.sCurrentStageData.sObjectSpawningData[80].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[80].fSpawnDistance = 95 sIAPData.sCurrentStageData.sObjectSpawningData[81].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[81].fSpawnDistance = 96 sIAPData.sCurrentStageData.sObjectSpawningData[82].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[82].fSpawnDistance = 98 sIAPData.sCurrentStageData.sObjectSpawningData[83].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[83].fSpawnDistance = 99 sIAPData.sCurrentStageData.sObjectSpawningData[84].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[84].fSpawnDistance = 100 sIAPData.sCurrentStageData.sObjectSpawningData[85].eObject = IAP_OBJECT_PICKUP_SCORE //pickup Score sIAPData.sCurrentStageData.sObjectSpawningData[85].fSpawnDistance = 102 sIAPData.sCurrentStageData.sObjectSpawningData[86].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[86].fSpawnDistance = 104 sIAPData.sCurrentStageData.sObjectSpawningData[87].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[87].fSpawnDistance = 106 sIAPData.sCurrentStageData.sObjectSpawningData[88].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[88].fSpawnDistance = 110 sIAPData.sCurrentStageData.sObjectSpawningData[89].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[89].fSpawnDistance = 112 sIAPData.sCurrentStageData.sObjectSpawningData[90].eObject = IAP_OBJECT_PICKUP_ENEMY //pickup enemy sIAPData.sCurrentStageData.sObjectSpawningData[90].fSpawnDistance = 114 sIAPData.sCurrentStageData.sObjectSpawningData[91].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[91].fSpawnDistance = 115 sIAPData.sCurrentStageData.sObjectSpawningData[92].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[92].fSpawnDistance = 116 sIAPData.sCurrentStageData.sObjectSpawningData[93].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[93].fSpawnDistance = 119 sIAPData.sCurrentStageData.sObjectSpawningData[94].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[94].fSpawnDistance = 122 sIAPData.sCurrentStageData.sObjectSpawningData[95].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[95].fSpawnDistance = 124 sIAPData.sCurrentStageData.sObjectSpawningData[96].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[96].fSpawnDistance = 126 sIAPData.sCurrentStageData.sObjectSpawningData[97].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[97].fSpawnDistance = 129 sIAPData.sCurrentStageData.sObjectSpawningData[98].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[98].fSpawnDistance = 130 sIAPData.sCurrentStageData.sObjectSpawningData[99].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[99].fSpawnDistance = 132 sIAPData.sCurrentStageData.sObjectSpawningData[100].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[100].fSpawnDistance = 133 sIAPData.sCurrentStageData.sObjectSpawningData[101].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[101].fSpawnDistance = 134 sIAPData.sCurrentStageData.sObjectSpawningData[102].eObject = IAP_OBJECT_PICKUP_LIFE //pickup life sIAPData.sCurrentStageData.sObjectSpawningData[102].fSpawnDistance = 136 sIAPData.sCurrentStageData.sObjectSpawningData[103].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[103].fSpawnDistance = 138 sIAPData.sCurrentStageData.sObjectSpawningData[104].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[104].fSpawnDistance = 140 sIAPData.sCurrentStageData.sObjectSpawningData[105].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[105].fSpawnDistance = 141 sIAPData.sCurrentStageData.sObjectSpawningData[106].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[106].fSpawnDistance = 142 sIAPData.sCurrentStageData.sObjectSpawningData[107].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[107].fSpawnDistance = 143 sIAPData.sCurrentStageData.sObjectSpawningData[108].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[108].fSpawnDistance = 147 sIAPData.sCurrentStageData.sObjectSpawningData[109].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[109].fSpawnDistance = 148 sIAPData.sCurrentStageData.sObjectSpawningData[110].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[110].fSpawnDistance = 150 sIAPData.sCurrentStageData.sObjectSpawningData[111].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[111].fSpawnDistance = 152 sIAPData.sCurrentStageData.sObjectSpawningData[112].eObject = IAP_OBJECT_PICKUP_ENEMY //pickup enemy sIAPData.sCurrentStageData.sObjectSpawningData[112].fSpawnDistance = 154 sIAPData.sCurrentStageData.sObjectSpawningData[113].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[113].fSpawnDistance = 155 sIAPData.sCurrentStageData.sObjectSpawningData[114].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[114].fSpawnDistance = 156 sIAPData.sCurrentStageData.sObjectSpawningData[115].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[115].fSpawnDistance = 157 sIAPData.sCurrentStageData.sObjectSpawningData[116].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[116].fSpawnDistance = 160 sIAPData.sCurrentStageData.sObjectSpawningData[117].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[117].fSpawnDistance = 163 sIAPData.sCurrentStageData.sObjectSpawningData[118].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[118].fSpawnDistance = 165 sIAPData.sCurrentStageData.sObjectSpawningData[119].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[119].fSpawnDistance = 167 sIAPData.sCurrentStageData.sObjectSpawningData[120].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[120].fSpawnDistance = 170 sIAPData.sCurrentStageData.sObjectSpawningData[121].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[121].fSpawnDistance = 171 sIAPData.sCurrentStageData.sObjectSpawningData[122].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[122].fSpawnDistance = 172 sIAPData.sCurrentStageData.sObjectSpawningData[123].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[123].fSpawnDistance = 173 sIAPData.sCurrentStageData.sObjectSpawningData[124].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[124].fSpawnDistance = 176 sIAPData.sCurrentStageData.sObjectSpawningData[125].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[125].fSpawnDistance = 182 sIAPData.sCurrentStageData.sObjectSpawningData[126].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[126].fSpawnDistance = 184 sIAPData.sCurrentStageData.sObjectSpawningData[127].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[127].fSpawnDistance = 185 sIAPData.sCurrentStageData.sObjectSpawningData[128].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[128].fSpawnDistance = 186 sIAPData.sCurrentStageData.sObjectSpawningData[129].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[129].fSpawnDistance = 187 sIAPData.sCurrentStageData.sObjectSpawningData[130].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[130].fSpawnDistance = 188 sIAPData.sCurrentStageData.sObjectSpawningData[131].eObject = IAP_OBJECT_PICKUP_HEALTH //pickup health sIAPData.sCurrentStageData.sObjectSpawningData[131].fSpawnDistance = 190 sIAPData.sCurrentStageData.sObjectSpawningData[132].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[132].fSpawnDistance = 192 sIAPData.sCurrentStageData.sObjectSpawningData[133].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[133].fSpawnDistance = 193 sIAPData.sCurrentStageData.sObjectSpawningData[134].eObject = IAP_OBJECT_OIL_MED_LIGHT //OIL - 4% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[134].fSpawnDistance = 196 sIAPData.sCurrentStageData.sObjectSpawningData[135].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[135].fSpawnDistance = 198 sIAPData.sCurrentStageData.sObjectSpawningData[136].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[136].fSpawnDistance = 201 sIAPData.sCurrentStageData.sObjectSpawningData[137].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[137].fSpawnDistance = 202 sIAPData.sCurrentStageData.sObjectSpawningData[138].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[138].fSpawnDistance = 203 sIAPData.sCurrentStageData.sObjectSpawningData[139].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[139].fSpawnDistance = 205 sIAPData.sCurrentStageData.sObjectSpawningData[140].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[140].fSpawnDistance = 207 sIAPData.sCurrentStageData.sObjectSpawningData[141].eObject = IAP_OBJECT_PICKUP_SCORE //pickup score sIAPData.sCurrentStageData.sObjectSpawningData[141].fSpawnDistance = 209 sIAPData.sCurrentStageData.sObjectSpawningData[142].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[142].fSpawnDistance = 210 sIAPData.sCurrentStageData.sObjectSpawningData[143].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[143].fSpawnDistance = 211 sIAPData.sCurrentStageData.sObjectSpawningData[144].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[144].fSpawnDistance = 212 sIAPData.sCurrentStageData.sObjectSpawningData[145].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[145].fSpawnDistance = 213 sIAPData.sCurrentStageData.sObjectSpawningData[146].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[146].fSpawnDistance = 214 sIAPData.sCurrentStageData.sObjectSpawningData[147].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[147].fSpawnDistance = 215 sIAPData.sCurrentStageData.sObjectSpawningData[148].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[148].fSpawnDistance = 216 sIAPData.sCurrentStageData.sObjectSpawningData[149].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[149].fSpawnDistance = 217 sIAPData.sCurrentStageData.sObjectSpawningData[150].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[150].fSpawnDistance = 218 sIAPData.sCurrentStageData.sObjectSpawningData[151].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[151].fSpawnDistance = 219.5 sIAPData.sCurrentStageData.sObjectSpawningData[152].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[152].fSpawnDistance = 220 sIAPData.sCurrentStageData.sObjectSpawningData[153].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[153].fSpawnDistance = 223 sIAPData.sCurrentStageData.sObjectSpawningData[154].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[154].fSpawnDistance = 224 sIAPData.sCurrentStageData.sObjectSpawningData[155].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[155].fSpawnDistance = 226 sIAPData.sCurrentStageData.sObjectSpawningData[156].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[156].fSpawnDistance = 228 sIAPData.sCurrentStageData.sObjectSpawningData[157].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[157].fSpawnDistance = 230 sIAPData.sCurrentStageData.sObjectSpawningData[158].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[158].fSpawnDistance = 230.5 sIAPData.sCurrentStageData.sObjectSpawningData[159].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[159].fSpawnDistance = 233 sIAPData.sCurrentStageData.sObjectSpawningData[160].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[160].fSpawnDistance = 234 sIAPData.sCurrentStageData.sObjectSpawningData[161].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[161].fSpawnDistance = 235 sIAPData.sCurrentStageData.sObjectSpawningData[162].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[162].fSpawnDistance = 236 sIAPData.sCurrentStageData.sObjectSpawningData[163].eObject = IAP_OBJECT_PICKUP_ENEMY //pickup enemy sIAPData.sCurrentStageData.sObjectSpawningData[163].fSpawnDistance = 238 sIAPData.sCurrentStageData.sObjectSpawningData[164].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[164].fSpawnDistance = 242 sIAPData.sCurrentStageData.sObjectSpawningData[165].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[165].fSpawnDistance = 243 sIAPData.sCurrentStageData.sObjectSpawningData[166].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[166].fSpawnDistance = 244 sIAPData.sCurrentStageData.sObjectSpawningData[167].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[167].fSpawnDistance = 248 sIAPData.sCurrentStageData.sObjectSpawningData[168].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[168].fSpawnDistance = 251 sIAPData.sCurrentStageData.sObjectSpawningData[169].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[169].fSpawnDistance = 252 sIAPData.sCurrentStageData.sObjectSpawningData[170].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[170].fSpawnDistance = 253 sIAPData.sCurrentStageData.sObjectSpawningData[171].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[171].fSpawnDistance = 254 sIAPData.sCurrentStageData.sObjectSpawningData[172].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[172].fSpawnDistance = 255 sIAPData.sCurrentStageData.sObjectSpawningData[173].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[173].fSpawnDistance = 256 sIAPData.sCurrentStageData.sObjectSpawningData[174].eObject = IAP_OBJECT_PICKUP_HEALTH //pickup health sIAPData.sCurrentStageData.sObjectSpawningData[174].fSpawnDistance = 259 sIAPData.sCurrentStageData.sObjectSpawningData[175].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[175].fSpawnDistance = 261 sIAPData.sCurrentStageData.sObjectSpawningData[176].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[176].fSpawnDistance = 263 sIAPData.sCurrentStageData.sObjectSpawningData[177].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[177].fSpawnDistance = 264 sIAPData.sCurrentStageData.sObjectSpawningData[178].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[178].fSpawnDistance = 265 sIAPData.sCurrentStageData.sObjectSpawningData[179].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[179].fSpawnDistance = 267 sIAPData.sCurrentStageData.sObjectSpawningData[180].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[180].fSpawnDistance = 269 sIAPData.sCurrentStageData.sObjectSpawningData[181].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[181].fSpawnDistance = 270 sIAPData.sCurrentStageData.sObjectSpawningData[182].eObject = IAP_OBJECT_PICKUP_SHIELD // pickup shield sIAPData.sCurrentStageData.sObjectSpawningData[182].fSpawnDistance = 272 sIAPData.sCurrentStageData.sObjectSpawningData[183].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[183].fSpawnDistance = 274 sIAPData.sCurrentStageData.sObjectSpawningData[184].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[184].fSpawnDistance = 275 sIAPData.sCurrentStageData.sObjectSpawningData[185].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[185].fSpawnDistance = 277 sIAPData.sCurrentStageData.sObjectSpawningData[186].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[186].fSpawnDistance = 280 sIAPData.sCurrentStageData.sObjectSpawningData[187].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[187].fSpawnDistance = 283 sIAPData.sCurrentStageData.sObjectSpawningData[188].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[188].fSpawnDistance = 286 sIAPData.sCurrentStageData.sObjectSpawningData[189].eObject = IAP_OBJECT_OIL_SMALL //OIL - 2% speed increase sIAPData.sCurrentStageData.sObjectSpawningData[189].fSpawnDistance = 288 sIAPData.sCurrentStageData.sObjectSpawningData[190].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[190].fSpawnDistance = 289 sIAPData.sCurrentStageData.sObjectSpawningData[191].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[191].fSpawnDistance = 292 sIAPData.sCurrentStageData.sObjectSpawningData[192].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[192].fSpawnDistance = 294 sIAPData.sCurrentStageData.sObjectSpawningData[193].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[193].fSpawnDistance = 296 sIAPData.sCurrentStageData.sObjectSpawningData[194].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[194].fSpawnDistance = 299 sIAPData.sCurrentStageData.sObjectSpawningData[195].eObject = IAP_OBJECT_PICKUP_FLAMETHROWER //pickup flamethrower sIAPData.sCurrentStageData.sObjectSpawningData[195].fSpawnDistance = 302 sIAPData.sCurrentStageData.sObjectSpawningData[196].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[196].fSpawnDistance = 303 sIAPData.sCurrentStageData.sObjectSpawningData[197].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[197].fSpawnDistance = 305 sIAPData.sCurrentStageData.sObjectSpawningData[198].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[198].fSpawnDistance = 306 sIAPData.sCurrentStageData.sObjectSpawningData[199].eObject = IAP_OBJECT_PICKUP_ENEMY // pickup enemy sIAPData.sCurrentStageData.sObjectSpawningData[199].fSpawnDistance = 307 sIAPData.sCurrentStageData.sObjectSpawningData[200].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[200].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[200].fSpawnDistance = 308 sIAPData.sCurrentStageData.sObjectSpawningData[201].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[201].fSpawnDistance = 309 sIAPData.sCurrentStageData.sObjectSpawningData[202].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[202].fSpawnDistance = 310 sIAPData.sCurrentStageData.sObjectSpawningData[203].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[203].fSpawnDistance = 314 sIAPData.sCurrentStageData.sObjectSpawningData[204].eObject = IAP_OBJECT_HAZARD_BARRIER sIAPData.sCurrentStageData.sObjectSpawningData[204].fSpawnDistance = 314.7 sIAPData.sCurrentStageData.sObjectSpawningData[205].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[205].fSpawnDistance = 315.5 sIAPData.sCurrentStageData.sObjectSpawningData[206].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[206].fSpawnDistance = 316 sIAPData.sCurrentStageData.sObjectSpawningData[207].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[207].fSpawnDistance = 317 sIAPData.sCurrentStageData.sObjectSpawningData[208].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[208].fSpawnDistance = 320 sIAPData.sCurrentStageData.sObjectSpawningData[209].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[209].fSpawnDistance = 321 sIAPData.sCurrentStageData.sObjectSpawningData[210].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[210].fSpawnDistance = 322 sIAPData.sCurrentStageData.sObjectSpawningData[211].eObject = IAP_OBJECT_ENEMY_DRONE sIAPData.sCurrentStageData.sObjectSpawningData[211].iFlags = ciIAP_OBJECT_FLAG_DRONE_BOMB_PLAYER_ON_CLEANUP sIAPData.sCurrentStageData.sObjectSpawningData[211].fSpawnDistance = 322.5 sIAPData.sCurrentStageData.sObjectSpawningData[212].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[212].fSpawnDistance = 324 sIAPData.sCurrentStageData.sObjectSpawningData[213].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[213].fSpawnDistance = 325 sIAPData.sCurrentStageData.sObjectSpawningData[214].eObject = IAP_OBJECT_PICKUP_NUKE //pickup nuke sIAPData.sCurrentStageData.sObjectSpawningData[214].fSpawnDistance = 328.5 sIAPData.sCurrentStageData.sObjectSpawningData[215].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[215].fSpawnDistance = 329.5 sIAPData.sCurrentStageData.sObjectSpawningData[216].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[216].fSpawnDistance = 330 sIAPData.sCurrentStageData.sObjectSpawningData[217].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[217].fSpawnDistance = 331 sIAPData.sCurrentStageData.sObjectSpawningData[218].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[218].fSpawnDistance = 332 sIAPData.sCurrentStageData.sObjectSpawningData[219].eObject = IAP_OBJECT_HAZARD_CRASHED_JET sIAPData.sCurrentStageData.sObjectSpawningData[219].fSpawnDistance = 333 sIAPData.sCurrentStageData.sObjectSpawningData[220].eObject = IAP_OBJECT_HAZARD_LEDGE_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[220].fSpawnDistance = 334 sIAPData.sCurrentStageData.sObjectSpawningData[221].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[221].fSpawnDistance = 335 sIAPData.sCurrentStageData.sObjectSpawningData[222].eObject = IAP_OBJECT_ENEMY_MOOSE sIAPData.sCurrentStageData.sObjectSpawningData[222].fSpawnDistance = 336 sIAPData.sCurrentStageData.sObjectSpawningData[223].eObject = IAP_OBJECT_HAZARD_PITFALL_CANADA sIAPData.sCurrentStageData.sObjectSpawningData[223].fSpawnDistance = 337 sIAPData.sCurrentStageData.sObjectSpawningData[224].eObject = IAP_OBJECT_ENEMY_JET sIAPData.sCurrentStageData.sObjectSpawningData[224].fSpawnDistance = 338 BREAK CASE IAP_STAGE_MOON sIAPData.sCurrentStageData.sObjectSpawningData[0].eObject = IAP_OBJECT_START_RANDOM_GENERATION sIAPData.sCurrentStageData.sObjectSpawningData[0].fSpawnDistance = 0 BREAK ENDSWITCH ENDPROC /// PURPOSE: /// Initialises sIAPData.sCurrentStageData to the values for eCurrentStage PROC IAP_INITIALISE_STAGE_DATA(IAP_STAGE eCurrentStage) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_INITIALISE_STAGE_DATA - Initialising data for stage: ", IAP_DEBUG_GET_IAP_STAGE_AS_STRING(eCurrentStage)) SWITCH eCurrentStage CASE IAP_STAGE_IRAQ sIAPData.sCurrentStageData.fStageDistance = ciIAP_STAGE_0_LENGTH sIAPData.sCurrentStageData.iRandomSeed = HASH("OILANDGASISTAN") sIAPData.sCurrentStageData.fBaseSpeed = cfIAP_BASE_STAGE_SPEED_MOD + cfIAP_STAGE_0_ADDITIONAL_SPEED_MOD sIAPData.sCurrentStageData.fBaseY = cfIAP_STAGE_0_BASE_Y - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sCurrentStageData.stStageTextureDictionary = "MPInvPersStage0" sIAPData.sCurrentStageData.stBackgroundSprite = "background" sIAPData.sCurrentStageData.iMaxActiveBackgroundSprites = 3 sIAPData.sCurrentStageData.vBackgroundSpriteScale = INIT_VECTOR_2D(0.658333, 1.0) sIAPData.sCurrentStageData.fBackgroundYPos = 0.5 - cfIAP_FACADE_TOP_HEIGHT sIAPData.sCurrentStageData.stMidground1Sprite = "midground_3" sIAPData.sCurrentStageData.iMaxActiveMidground1Sprites = 3 sIAPData.sCurrentStageData.vMidground1SpriteScale = INIT_VECTOR_2D(0.658333, 0.214815) sIAPData.sCurrentStageData.fMidground1YPos = 0.470378 - cfIAP_FACADE_TOP_HEIGHT sIAPData.sCurrentStageData.stMidground2Sprite = "midground_2" sIAPData.sCurrentStageData.iMaxActiveMidground2Sprites = 3 sIAPData.sCurrentStageData.vMidground2SpriteScale = INIT_VECTOR_2D(0.658333, 0.400000) sIAPData.sCurrentStageData.fMidground2YPos = 0.483333 - cfIAP_FACADE_TOP_HEIGHT sIAPData.sCurrentStageData.stMidground3Sprite = "midground_1" sIAPData.sCurrentStageData.iMaxActiveMidground3Sprites = 3 sIAPData.sCurrentStageData.vMidground3SpriteScale = INIT_VECTOR_2D(0.658333, 0.296296) sIAPData.sCurrentStageData.fMidground3YPos = 0.785183 - cfIAP_FACADE_TOP_HEIGHT sIAPData.sCurrentStageData.stForegroundSprite = "foreground" sIAPData.sCurrentStageData.iMaxActiveForegroundSprites = 6 sIAPData.sCurrentStageData.vForegroundSpriteScale = INIT_VECTOR_2D(0.191667, 0.211111) sIAPData.sCurrentStageData.fForegroundYPos = 0.89444 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 INIT_RGBA_STRUCT(sIAPData.sCurrentStageData.rgbaStageBackground, 220, 169, 80) BREAK CASE IAP_STAGE_RUSSIA sIAPData.sCurrentStageData.fStageDistance = ciIAP_STAGE_1_LENGTH sIAPData.sCurrentStageData.iRandomSeed = HASH("VODKASTAN") sIAPData.sCurrentStageData.fBaseSpeed = cfIAP_BASE_STAGE_SPEED_MOD + cfIAP_STAGE_1_ADDITIONAL_SPEED_MOD sIAPData.sCurrentStageData.fBaseY = cfIAP_STAGE_1_BASE_Y - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sCurrentStageData.stStageTextureDictionary = "MPInvPersStage2" sIAPData.sCurrentStageData.stBackgroundSprite = "background" sIAPData.sCurrentStageData.iMaxActiveBackgroundSprites = 3 sIAPData.sCurrentStageData.vBackgroundSpriteScale = INIT_VECTOR_2D(0.658333, 0.500000) sIAPData.sCurrentStageData.fBackgroundYPos = 0.25 - cfIAP_FACADE_TOP_HEIGHT sIAPData.sCurrentStageData.stMidground1Sprite = "midground_3" sIAPData.sCurrentStageData.iMaxActiveMidground1Sprites = 3 sIAPData.sCurrentStageData.vMidground1SpriteScale = INIT_VECTOR_2D(0.658333, 0.437037) sIAPData.sCurrentStageData.fMidground1YPos = 0.2185185 sIAPData.sCurrentStageData.stMidground2Sprite = "midground_2" sIAPData.sCurrentStageData.iMaxActiveMidground2Sprites = 3 sIAPData.sCurrentStageData.vMidground2SpriteScale = INIT_VECTOR_2D(0.604167, 0.466667) sIAPData.sCurrentStageData.fMidground2YPos = 0.290741 sIAPData.sCurrentStageData.stMidground3Sprite = "midground_1" sIAPData.sCurrentStageData.iMaxActiveMidground3Sprites = 4 sIAPData.sCurrentStageData.vMidground3SpriteScale = INIT_VECTOR_2D(0.333333, 0.529630) sIAPData.sCurrentStageData.fMidground3YPos = 0.735185 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sCurrentStageData.stForegroundSprite = "foreground" sIAPData.sCurrentStageData.iMaxActiveForegroundSprites = 6 sIAPData.sCurrentStageData.vForegroundSpriteScale = INIT_VECTOR_2D(0.216667, 0.214815) sIAPData.sCurrentStageData.fForegroundYPos = 0.892593 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 INIT_RGBA_STRUCT(sIAPData.sCurrentStageData.rgbaStageBackground, 192, 135, 135) BREAK CASE IAP_STAGE_CHINA sIAPData.sCurrentStageData.fStageDistance = ciIAP_STAGE_2_LENGTH sIAPData.sCurrentStageData.iRandomSeed = HASH("GREATWALLISTAN") sIAPData.sCurrentStageData.fBaseSpeed = cfIAP_BASE_STAGE_SPEED_MOD + cfIAP_STAGE_2_ADDITIONAL_SPEED_MOD sIAPData.sCurrentStageData.fBaseY = cfIAP_STAGE_2_BASE_Y - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sCurrentStageData.stStageTextureDictionary = "MPInvPersStage1" sIAPData.sCurrentStageData.stBackgroundSprite = "background" sIAPData.sCurrentStageData.iMaxActiveBackgroundSprites = 3 sIAPData.sCurrentStageData.vBackgroundSpriteScale = INIT_VECTOR_2D(0.658333, 1.0) sIAPData.sCurrentStageData.fBackgroundYPos = 0.5 - cfIAP_FACADE_TOP_HEIGHT sIAPData.sCurrentStageData.stMidground1Sprite = "midground_3" sIAPData.sCurrentStageData.iMaxActiveMidground1Sprites = 3 sIAPData.sCurrentStageData.vMidground1SpriteScale = INIT_VECTOR_2D(0.658333, 0.396296) sIAPData.sCurrentStageData.fMidground1YPos = 0.471296 - cfIAP_FACADE_TOP_HEIGHT sIAPData.sCurrentStageData.stMidground2Sprite = "midground_2" sIAPData.sCurrentStageData.iMaxActiveMidground2Sprites = 3 sIAPData.sCurrentStageData.vMidground2SpriteScale = INIT_VECTOR_2D(0.658333, 0.518519) sIAPData.sCurrentStageData.fMidground2YPos = 0.4101845 - cfIAP_FACADE_TOP_HEIGHT sIAPData.sCurrentStageData.stMidground3Sprite = "midground_1" sIAPData.sCurrentStageData.iMaxActiveMidground3Sprites = 4 sIAPData.sCurrentStageData.vMidground3SpriteScale = INIT_VECTOR_2D(0.229167, 0.396296) sIAPData.sCurrentStageData.fMidground3YPos = 0.801852 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sCurrentStageData.stForegroundSprite = "foreground" sIAPData.sCurrentStageData.iMaxActiveForegroundSprites = 5 sIAPData.sCurrentStageData.vForegroundSpriteScale = INIT_VECTOR_2D(0.310416667, 0.211111111) sIAPData.sCurrentStageData.fForegroundYPos = 0.894444444 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 INIT_RGBA_STRUCT(sIAPData.sCurrentStageData.rgbaStageBackground, 207, 160, 154) BREAK CASE IAP_STAGE_CANADA sIAPData.sCurrentStageData.fStageDistance = ciIAP_STAGE_3_LENGTH sIAPData.sCurrentStageData.iRandomSeed = HASH("HOSERSTAN") sIAPData.sCurrentStageData.fBaseSpeed = cfIAP_BASE_STAGE_SPEED_MOD + cfIAP_STAGE_3_ADDITIONAL_SPEED_MOD sIAPData.sCurrentStageData.fBaseY = cfIAP_STAGE_3_BASE_Y - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sCurrentStageData.stStageTextureDictionary = "MPInvPersStage3" sIAPData.sCurrentStageData.stBackgroundSprite = "background" sIAPData.sCurrentStageData.iMaxActiveBackgroundSprites = 3 sIAPData.sCurrentStageData.vBackgroundSpriteScale = INIT_VECTOR_2D(0.547917, 0.444444) sIAPData.sCurrentStageData.fBackgroundYPos = 0.222222 - cfIAP_FACADE_TOP_HEIGHT + 0.018 sIAPData.sCurrentStageData.stMidground1Sprite = "midground_3" sIAPData.sCurrentStageData.iMaxActiveMidground1Sprites = 3 sIAPData.sCurrentStageData.vMidground1SpriteScale = INIT_VECTOR_2D(0.533333, 0.251852) sIAPData.sCurrentStageData.fMidground1YPos = 0.515741 - cfIAP_FACADE_TOP_HEIGHT + 0.018 sIAPData.sCurrentStageData.stMidground2Sprite = "midground_2" sIAPData.sCurrentStageData.iMaxActiveMidground2Sprites = 3 sIAPData.sCurrentStageData.vMidground2SpriteScale = INIT_VECTOR_2D(0.658333, 0.529630) sIAPData.sCurrentStageData.fMidground2YPos = 0.415741 - cfIAP_FACADE_TOP_HEIGHT + 0.052 sIAPData.sCurrentStageData.stMidground3Sprite = "midground_1" sIAPData.sCurrentStageData.iMaxActiveMidground3Sprites = 3 sIAPData.sCurrentStageData.vMidground3SpriteScale = INIT_VECTOR_2D(0.658333, 0.888889) sIAPData.sCurrentStageData.fMidground3YPos = 0.555556 - cfIAP_FACADE_TOP_HEIGHT + 0.043 sIAPData.sCurrentStageData.stForegroundSprite = "foreground" sIAPData.sCurrentStageData.iMaxActiveForegroundSprites = 6 sIAPData.sCurrentStageData.vForegroundSpriteScale = INIT_VECTOR_2D(0.172917, 0.214815) sIAPData.sCurrentStageData.fForegroundYPos = 0.89444 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 INIT_RGBA_STRUCT(sIAPData.sCurrentStageData.rgbaStageBackground, 96, 122, 142) BREAK CASE IAP_STAGE_MOON sIAPData.sCurrentStageData.fStageDistance = ciIAP_STAGE_4_LENGTH sIAPData.sCurrentStageData.iRandomSeed = HASH("MOONISTAN") sIAPData.sCurrentStageData.fBaseSpeed = cfIAP_BASE_STAGE_SPEED_MOD + cfIAP_STAGE_4_ADDITIONAL_SPEED_MOD sIAPData.sCurrentStageData.fBaseY = cfIAP_STAGE_4_BASE_Y - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sCurrentStageData.stStageTextureDictionary = "MPInvPersStage4" sIAPData.sCurrentStageData.stBackgroundSprite = "background" sIAPData.sCurrentStageData.iMaxActiveBackgroundSprites = 3 sIAPData.sCurrentStageData.vBackgroundSpriteScale = INIT_VECTOR_2D(0.658333333, 0.474074074) sIAPData.sCurrentStageData.fBackgroundYPos = 0.25 sIAPData.sCurrentStageData.stMidground1Sprite = "midground_3" sIAPData.sCurrentStageData.iMaxActiveMidground1Sprites = 3 sIAPData.sCurrentStageData.vMidground1SpriteScale = INIT_VECTOR_2D(0.658333333, 0.237037037) sIAPData.sCurrentStageData.fMidground1YPos = 0.471296296296296 - 0.075 + 0.018 sIAPData.sCurrentStageData.stMidground2Sprite = "midground_2" sIAPData.sCurrentStageData.iMaxActiveMidground2Sprites = 3 sIAPData.sCurrentStageData.vMidground2SpriteScale = INIT_VECTOR_2D(0.658333333, 0.474074074) sIAPData.sCurrentStageData.fMidground2YPos = 0.389814814814815 + 0.036 sIAPData.sCurrentStageData.stMidground3Sprite = "midground_1" sIAPData.sCurrentStageData.iMaxActiveMidground3Sprites = 3 sIAPData.sCurrentStageData.vMidground3SpriteScale = INIT_VECTOR_2D(0.658333333, 0.448148148) sIAPData.sCurrentStageData.fMidground3YPos = 0.7092592592 + 0.052 sIAPData.sCurrentStageData.stForegroundSprite = "foreground" sIAPData.sCurrentStageData.iMaxActiveForegroundSprites = 7 sIAPData.sCurrentStageData.vForegroundSpriteScale = INIT_VECTOR_2D(0.168750000, 0.222222222 - 0.011111111) sIAPData.sCurrentStageData.fForegroundYPos = 0.8333324 - (0.011111111 / 2) + 0.023148148 INIT_RGBA_STRUCT(sIAPData.sCurrentStageData.rgbaStageBackground, 0, 0, 0) BREAK ENDSWITCH IAP_INITIALISE_STAGE_OBJECT_SPAWNING_DATA(eCurrentStage) IAP_INITIALISE_STAGE_END_OIL_SPAWNING_DATA(eCurrentStage) ENDPROC /// PURPOSE: /// Helper to initialise iValidStagesBS for an object /// PARAMS: PROC IAP_SET_VALID_STAGE_BITS(IAP_OBJECT eObject, BOOL bStage0 = TRUE, BOOL bStage1 = TRUE, BOOL bStage2 = TRUE, BOOL bStage3 = TRUE, BOOL bStage4 = TRUE) IF bStage0 SET_BIT(sIAPData.sObjectData[ENUM_TO_INT(eObject)].iValidStagesBS, ENUM_TO_INT(IAP_STAGE_IRAQ)) ENDIF IF bStage1 SET_BIT(sIAPData.sObjectData[ENUM_TO_INT(eObject)].iValidStagesBS, ENUM_TO_INT(IAP_STAGE_RUSSIA)) ENDIF IF bStage2 SET_BIT(sIAPData.sObjectData[ENUM_TO_INT(eObject)].iValidStagesBS, ENUM_TO_INT(IAP_STAGE_CHINA)) ENDIF IF bStage3 SET_BIT(sIAPData.sObjectData[ENUM_TO_INT(eObject)].iValidStagesBS, ENUM_TO_INT(IAP_STAGE_CANADA)) ENDIF IF bStage4 SET_BIT(sIAPData.sObjectData[ENUM_TO_INT(eObject)].iValidStagesBS, ENUM_TO_INT(IAP_STAGE_MOON)) ENDIF ENDPROC /// PURPOSE: /// Initialises sIAPData.sObjectData to the values for each object PROC IAP_INITIALISE_OBJECT_DATA() CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_INITIALISE_OBJECT_DATA - Initialising Object Data") //Enemy Camel sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].eObjectType = IAP_OBJECT_TYPE_GROUND_ENEMY sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].stSpritePrefix = "camel_idle" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].iAnimationFrames = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].fBaseYOffset = -0.075926 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].vSpriteScale = INIT_VECTOR_2D(0.108333, 0.151852) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].vShotOffset = INIT_VECTOR_2D(-0.017708, -0.043) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].iShotInterval = 950 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].iShotDamage = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].iMaxHealth = 16 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].iScoreValue = 2000 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.003, 0.069) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.054, -0.019) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].vCollisionBounds[2] = INIT_VECTOR_2D(0.027, -0.074) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].vCollisionBounds[3] = INIT_VECTOR_2D(0.051, 0.047) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].iShootingAnimationFrames = 2 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].stShootingSpritePrefix = "camel_fire" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_ENEMY_CAMEL, TRUE, FALSE, FALSE, FALSE, TRUE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].stHelpText = "IAP_H_SHOOT" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_CAMEL)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Enemy Panda sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].eObjectType = IAP_OBJECT_TYPE_GROUND_ENEMY sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].stSpritePrefix = "panda_idle" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].iAnimationFrames = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].fBaseYOffset = -0.094444 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].vSpriteScale = INIT_VECTOR_2D(0.089583, 0.185185) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].vShotOffset = INIT_VECTOR_2D(-0.026042, -0.020370) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].iShotInterval = 950 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].iShotDamage = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].iMaxHealth = 16 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].iScoreValue = 2000 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.031250, 0.080556) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].vCollisionBounds[1] = INIT_VECTOR_2D(0.000000, -0.08) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].vCollisionBounds[2] = INIT_VECTOR_2D(0.035938, -0.08) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].vCollisionBounds[3] = INIT_VECTOR_2D(0.035938, 0.080556) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].iShootingAnimationFrames = 2 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].stShootingSpritePrefix = "panda_fire" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_ENEMY_PANDA, FALSE, FALSE, TRUE, FALSE, TRUE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_PANDA)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Enemy Bear sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].eObjectType = IAP_OBJECT_TYPE_GROUND_ENEMY sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].stSpritePrefix = "bear_idle" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].iAnimationFrames = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].fBaseYOffset = -0.070370 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].vSpriteScale = INIT_VECTOR_2D(0.104167, 0.144444) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].vShotOffset = INIT_VECTOR_2D(-0.032813, -0.050926) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].iShotInterval = 950 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].iShotDamage = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].iMaxHealth = 16 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].iScoreValue = 2000 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.046875, 0.003704) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].vCollisionBounds[1] = INIT_VECTOR_2D(0.005208, -0.072222) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].vCollisionBounds[2] = INIT_VECTOR_2D(0.056250, 0.020370) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].vCollisionBounds[3] = INIT_VECTOR_2D(-0.029167, 0.070370) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].iShootingAnimationFrames = 2 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].stShootingSpritePrefix = "bear_fire" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_ENEMY_BEAR, FALSE, TRUE, FALSE, FALSE, TRUE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_BEAR)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Enemy Moose sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].eObjectType = IAP_OBJECT_TYPE_GROUND_ENEMY sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].stSpritePrefix = "moose_idle" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].iAnimationFrames = 3 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].fBaseYOffset = -0.092593 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].vSpriteScale = INIT_VECTOR_2D(0.108333, 0.185185) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].vShotOffset = INIT_VECTOR_2D(-0.025521, -0.020370) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].iShotInterval = 950 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].iShotDamage = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].iMaxHealth = 16 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].iScoreValue = 2000 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.053646, -0.017593) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.020313, -0.092593) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].vCollisionBounds[2] = INIT_VECTOR_2D(0.053646, 0.013889) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].vCollisionBounds[3] = INIT_VECTOR_2D(-0.020313, 0.092593) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].iShootingAnimationFrames = 2 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].stShootingSpritePrefix = "moose_fire" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_ENEMY_MOOSE, FALSE, FALSE, FALSE, TRUE, TRUE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_MOOSE)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Enemy Jet sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].eObjectType = IAP_OBJECT_TYPE_JET sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].stSpritePrefix = "jet_idle" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].iAnimationFrames = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].fBaseScrollSpeed = 0.25 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].fBaseYOffset = 0.15 + cfIAP_FACADE_TOP_HEIGHT sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].vSpriteScale = INIT_VECTOR_2D(0.168750, 0.111111) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].vShotOffset = INIT_VECTOR_2D(0.05, 0.05) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].iShotInterval = 350 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].iShotDamage = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].iMaxHealth = 8 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].iScoreValue = 2500 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.082, 0.021) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.040, -0.022) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].vCollisionBounds[2] = INIT_VECTOR_2D(0.089, 0.003) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].vCollisionBounds[3] = INIT_VECTOR_2D(0.038, 0.049) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_ENEMY_JET) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_JET)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Enemy Drone sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].eObjectType = IAP_OBJECT_TYPE_DRONE sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].stSpritePrefix = "pod_idle" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].iAnimationFrames = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].fBaseScrollSpeed = 0.175 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].fBaseYOffset = 0.0 + cfIAP_FACADE_TOP_HEIGHT sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].vSpriteScale = INIT_VECTOR_2D(0.089583, 0.100000) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].vShotOffset = INIT_VECTOR_2D(-0.025000, 0.035185) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].iShotInterval = 700 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].iShotDamage = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].iMaxHealth = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].iScoreValue = 1250 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.168750/5, 0.111111/4) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.168750/5, -0.111111/3) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].vCollisionBounds[2] = INIT_VECTOR_2D(0.168750/6, -0.111111/3) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].vCollisionBounds[3] = INIT_VECTOR_2D(0.168750/6, 0.111111/4) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].iShootingAnimationFrames = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].stShootingSpritePrefix = "pod_fire" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_ENEMY_DRONE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].stHelpText = "IAP_H_ROT" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_ENEMY_DRONE)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - Flamethrower sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].stSpritePrefix = "pickup_flame" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_FLAMETHROWER) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_FLAMETHROWER)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - Rockets sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].stSpritePrefix = "pickup_rocket" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_ROCKETS) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ROCKETS)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - Health sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].stSpritePrefix = "pickup_health" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_HEALTH) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_HEALTH)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - Life sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].stSpritePrefix = "pickup_life" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_LIFE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_LIFE)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - Score sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].stSpritePrefix = "pickup_score" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_SCORE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].stHelpText = "IAP_H_PICKUP" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SCORE)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - Shield sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].stSpritePrefix = "pickup_shield" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_SHIELD) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_SHIELD)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - Enemy sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].stSpritePrefix = "pickup_enemy" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_ENEMY) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_ENEMY)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - Plasma sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].stSpritePrefix = "pickup_plasma" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_PLASMA) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_PLASMA)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - Triple Shot sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].stSpritePrefix = "pickup_triple" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_TRIPLE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_TRIPLE)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - NUKE sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].stSpritePrefix = "pickup_nuke" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_NUKE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_NUKE)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Pickup - Random sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].eObjectType = IAP_OBJECT_TYPE_PICKUP sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].stSpritePrefix = "pickup_random" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].fBaseYOffset = -0.031 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].vSpriteScale = INIT_VECTOR_2D(0.043750, 0.066667) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].vCollisionBounds[2] = INIT_VECTOR_2D(0.0238, -0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].vCollisionBounds[3] = INIT_VECTOR_2D(0.0238, 0.035) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_PICKUP_RANDOM) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_PICKUP_RANDOM)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Crashed Jet sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].eObjectType = IAP_OBJECT_TYPE_DESTRUCTABLE_HAZARD sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].stSpritePrefix = "jet_crash" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].fBaseYOffset = -0.100000 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].vSpriteScale = INIT_VECTOR_2D(0.131250, 0.207407) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].iMaxHealth = 12 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].iScoreValue = 1000 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.062500, 0.097222) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.005208, -0.014815) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].vCollisionBounds[2] = INIT_VECTOR_2D(0.028646, -0.101852) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].vCollisionBounds[3] = INIT_VECTOR_2D(0.056771, 0.037037) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_CRASHED_JET) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_CRASHED_JET)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Crashed Tank sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].eObjectType = IAP_OBJECT_TYPE_DESTRUCTABLE_HAZARD sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].stSpritePrefix = "crashed_tank" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].fBaseYOffset = -0.07 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].vSpriteScale = INIT_VECTOR_2D(0.106250000, 0.144444444) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].iMaxHealth = 12 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].iScoreValue = 1000 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.053125000, 0.072222222) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].vCollisionBounds[1] = INIT_VECTOR_2D(0.00, -0.072222222) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].vCollisionBounds[2] = INIT_VECTOR_2D(0.038020833, -0.072222222) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].vCollisionBounds[3] = INIT_VECTOR_2D(0.053125000, 0.072222222) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_CRASHED_TANK, FALSE, FALSE, FALSE, FALSE, FALSE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_CRASHED_TANK)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Anti-Tank Barrier sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].eObjectType = IAP_OBJECT_TYPE_INDESTRUCTABLE_HAZARD sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].stSpritePrefix = "anti_tank_barrier" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].fBaseYOffset = -0.055556 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].vSpriteScale = INIT_VECTOR_2D(0.066667, 0.122222) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.03, 0.055) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.03, -0.05) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].vCollisionBounds[2] = INIT_VECTOR_2D(0.03, -0.05) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].vCollisionBounds[3] = INIT_VECTOR_2D(0.03, 0.055) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_BARRIER) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].stHelpText = "IAP_H_JUMP" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_BARRIER)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Pitfall (Iraq) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].eObjectType = IAP_OBJECT_TYPE_PITFALL sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].stSpritePrefix = "pitfall" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].fBaseYOffset = 0.89444 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].vSpriteScale = INIT_VECTOR_2D(0.422917, 0.211111) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.015, -0.075) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.015, -0.14) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].vCollisionBounds[2] = INIT_VECTOR_2D(0.015, -0.14) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].vCollisionBounds[3] = INIT_VECTOR_2D(0.015, -0.075) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_PITFALL_IRAQ, TRUE, FALSE, FALSE, FALSE, FALSE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Pitfall (Russia) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].eObjectType = IAP_OBJECT_TYPE_PITFALL sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].stSpritePrefix = "pitfall" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].fBaseYOffset = 0.892592 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].vSpriteScale = INIT_VECTOR_2D(0.308333, 0.214815) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.015, -0.075) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.015, -0.14) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].vCollisionBounds[2] = INIT_VECTOR_2D(0.015, -0.14) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].vCollisionBounds[3] = INIT_VECTOR_2D(0.015, -0.075) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_PITFALL_RUSSIA, FALSE, TRUE, FALSE, FALSE, FALSE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_RUSSIA)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Pitfall (China) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].eObjectType = IAP_OBJECT_TYPE_PITFALL sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].stSpritePrefix = "pitfall" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].fBaseYOffset = 0.89444 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].vSpriteScale = INIT_VECTOR_2D(0.308333, 0.211111) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.015, -0.075) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.015, -0.14) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].vCollisionBounds[2] = INIT_VECTOR_2D(0.015, -0.14) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].vCollisionBounds[3] = INIT_VECTOR_2D(0.015, -0.075) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_PITFALL_CHINA, FALSE, FALSE, TRUE, FALSE, FALSE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CHINA)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Pitfall (Canada) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].eObjectType = IAP_OBJECT_TYPE_PITFALL sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].stSpritePrefix = "pitfall" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].fBaseYOffset = 0.892592 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].vSpriteScale = INIT_VECTOR_2D(0.306250, 0.214815) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.015, -0.075) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.015, -0.14) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].vCollisionBounds[2] = INIT_VECTOR_2D(0.015, -0.14) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].vCollisionBounds[3] = INIT_VECTOR_2D(0.015, -0.075) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_PITFALL_CANADA, FALSE, FALSE, FALSE, TRUE, FALSE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_CANADA)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Pitfall (Moon) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].eObjectType = IAP_OBJECT_TYPE_PITFALL sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].stSpritePrefix = "pitfall" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].fBaseYOffset = 0.8333324 - (0.011111111 / 2) + 0.023148148 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].vSpriteScale = INIT_VECTOR_2D(0.306250000, 0.222222222 - 0.011111111) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.015, -0.075) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.015, -0.14) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].vCollisionBounds[2] = INIT_VECTOR_2D(0.015, -0.14) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].vCollisionBounds[3] = INIT_VECTOR_2D(0.015, -0.075) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_PITFALL_MOON, FALSE, FALSE, FALSE, FALSE, TRUE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_MOON)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Ledge (Iraq) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ)].eObjectType = IAP_OBJECT_TYPE_LEDGE sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ)].stSpritePrefix = "ledge" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ)].fBaseYOffset = 0.812962963 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ)].vSpriteScale = INIT_VECTOR_2D(0.422917, 0.374074) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_LEDGE_IRAQ, TRUE, FALSE, FALSE, FALSE, FALSE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Ledge (Russia) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_RUSSIA)].eObjectType = IAP_OBJECT_TYPE_LEDGE sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_RUSSIA)].stSpritePrefix = "ledge" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_RUSSIA)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_RUSSIA)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_RUSSIA)].fBaseYOffset = 0.812962963 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_RUSSIA)].vSpriteScale = INIT_VECTOR_2D(0.308333, 0.374074) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_RUSSIA)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_RUSSIA)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_LEDGE_RUSSIA, FALSE, TRUE, FALSE, FALSE, FALSE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_RUSSIA)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_RUSSIA)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Ledge (China) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CHINA)].eObjectType = IAP_OBJECT_TYPE_LEDGE sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CHINA)].stSpritePrefix = "ledge" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CHINA)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CHINA)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CHINA)].fBaseYOffset = 0.812962963 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CHINA)].vSpriteScale = INIT_VECTOR_2D(0.308333, 0.374074) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CHINA)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CHINA)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_LEDGE_CHINA, FALSE, FALSE, TRUE, FALSE, FALSE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CHINA)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CHINA)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Ledge (Canada) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CANADA)].eObjectType = IAP_OBJECT_TYPE_LEDGE sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CANADA)].stSpritePrefix = "ledge" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CANADA)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CANADA)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CANADA)].fBaseYOffset = 0.812962963 - cfIAP_FACADE_TOP_HEIGHT + 0.023148148 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CANADA)].vSpriteScale = INIT_VECTOR_2D(0.306250, 0.374074) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CANADA)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CANADA)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_LEDGE_CANADA, FALSE, FALSE, FALSE, TRUE, FALSE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CANADA)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_CANADA)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Hazard - Ledge (Moon) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_MOON)].eObjectType = IAP_OBJECT_TYPE_LEDGE sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_MOON)].stSpritePrefix = "ledge" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_MOON)].iAnimationFrames = 0 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_MOON)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_MOON)].fBaseYOffset = 0.7574074 - (0.011111111 / 2) + 0.023148148 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_MOON)].vSpriteScale = INIT_VECTOR_2D(0.306250000, 0.374074074 - 0.011111111) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_MOON)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_MOON)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_HAZARD_LEDGE_MOON, FALSE, FALSE, FALSE, FALSE, TRUE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_MOON)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_MOON)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Oil Drums - Small sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].eObjectType = IAP_OBJECT_TYPE_OIL sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].stSpritePrefix = "oil_drum_1" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].iAnimationFrames = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].fBaseYOffset = -0.075926 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].vSpriteScale = INIT_VECTOR_2D(0.054167, 0.151852) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].iScoreValue = 5000 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.054167 / 2, 0.151852 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.054167 / 2, -0.151852 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].vCollisionBounds[2] = INIT_VECTOR_2D(0.054167 / 2, -0.151852 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].vCollisionBounds[3] = INIT_VECTOR_2D(0.054167 / 2, 0.151852 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_OIL_SMALL) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].stHelpText = "IAP_H_OIL" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_SMALL)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Oil Drums - Medium Light sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].eObjectType = IAP_OBJECT_TYPE_OIL sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].stSpritePrefix = "stock_pile1" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].iAnimationFrames = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].fBaseYOffset = -0.122222 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].vSpriteScale = INIT_VECTOR_2D(0.116667, 0.244444) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].iScoreValue = 12500 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.116667 / 2, 0.244444 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.116667 / 2, -0.244444 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].vCollisionBounds[2] = INIT_VECTOR_2D(0.116667 / 2, -0.244444 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].vCollisionBounds[3] = INIT_VECTOR_2D(0.116667 / 2, 0.244444 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_OIL_MED_LIGHT) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_LIGHT)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Oil Drums - Medium Dark sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].eObjectType = IAP_OBJECT_TYPE_OIL sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].stSpritePrefix = "stock_pile2" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].iAnimationFrames = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].fBaseYOffset = -0.122222 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].vSpriteScale = INIT_VECTOR_2D(0.116667, 0.244444) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].iScoreValue = 12500 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.116667 / 2, 0.244444 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.116667 / 2, -0.244444 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].vCollisionBounds[2] = INIT_VECTOR_2D(0.116667 / 2, -0.244444 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].vCollisionBounds[3] = INIT_VECTOR_2D(0.116667 / 2, 0.244444 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_OIL_MED_DARK, FALSE, FALSE, FALSE, FALSE, FALSE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_MED_DARK)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME //Oil Drums - Large sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].eObjectType = IAP_OBJECT_TYPE_OIL sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].stSpritePrefix = "stock_pile3" sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].iAnimationFrames = 4 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].fBaseScrollSpeed = 0.15 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].fBaseYOffset = -0.087037 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].vSpriteScale = INIT_VECTOR_2D(0.160417, 0.174074) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].iMaxHealth = 1 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].iScoreValue = 25000 sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].vCollisionBounds[0] = INIT_VECTOR_2D(-0.160417 / 2, 0.174074 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].vCollisionBounds[1] = INIT_VECTOR_2D(-0.160417 / 2, -0.174074 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].vCollisionBounds[2] = INIT_VECTOR_2D(0.160417 / 2, -0.174074 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].vCollisionBounds[3] = INIT_VECTOR_2D(0.160417 / 2, 0.174074 / 2) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].iRandomGenerationObjectGroup = ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE IAP_SET_VALID_STAGE_BITS(IAP_OBJECT_OIL_LARGE) sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].stHelpText = ARCADE_GET_NULL_STRING() sIAPData.sObjectData[ENUM_TO_INT(IAP_OBJECT_OIL_LARGE)].iHelpTextTime = ciIAP_DEFAULT_HELP_TEXT_TIME ENDPROC /// PURPOSE: /// Initialises sIAPData.sRandomGeneration.fMinDistancesBetweenGroups PROC IAP_INITIALISE_RANDOM_DISTANCE_BETWEEN_GROUPS() sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS] = 1.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES] = 1.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE] = 1.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON] = 1.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL] = 1.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM] = 2.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE] = 2.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES] = 0.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS] = 1.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES] = 1.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS] = 0.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES] = 0.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL] = 0.75 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM] = 1.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE] = 2 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES] = 1.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES] = 0.25 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS] = 0.75 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES] = 0.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES] = 0.75 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS] = 0.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES] = 0.6 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS] = 0.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES] = 1 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE] = 40 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON] = 20 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL] = 1 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM] = 1.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE] = 2 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES] = 0.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS] = 0.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES] = 1 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE] = 20 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON] = 20 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL] = 1 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM] = 1.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE] = 2 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES] = 0.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS] = 1.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES] = 1 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE] = 2.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON] = 2.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL] = 50 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM] = 50 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE] = 50 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES] = 0.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS] = 1.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES] = 2 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE] = 2.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON] = 2.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL] = 50 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM] = 50 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE] = 50 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES] = 1.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS] = 1.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES] = 2 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE] = 2.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON] = 2.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL] = 40 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM] = 50 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE] = 60 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES] = 1.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PITFALLS] = 0.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_GROUND_ENEMIES] = 1.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_JETS] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_DRONES] = 0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_RARE] = 0.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_PICKUPS_COMMON] = 0.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_SMALL] = 1.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_MEDIUM] = 1.5 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_OIL_LARGE] = 2.0 sIAPData.sRandomGeneration.fMinDistancesBetweenGroups[ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES][ciIAP_RANDOM_GENERATION_OBJECT_GROUP_LEDGES] = 1.5 ENDPROC /// PURPOSE: /// Initialises sIAPData.sProjectileData with the values for each projectile type PROC IAP_INITIALISE_PROJECTILE_TYPES() sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_BULLET)].iMaxAnimFrames = ciIAP_BULLET_ANIM_FRAMES sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_BULLET)].iSpeed = ciIAP_BULLET_PROJECTILE_SPEED sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_BULLET)].stSprite = "tank_fire_blast" sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_BULLET)].vSpriteScale = INIT_VECTOR_2D(cfIAP_BULLET_PROJECTILE_SPRITE_SCALE_X, cfIAP_BULLET_PROJECTILE_SPRITE_SCALE_Y) sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_FALLING_BARREL)].iMaxAnimFrames = ciIAP_FALLING_BARREL_ANIM_FRAMES sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_FALLING_BARREL)].iSpeed = ciIAP_FALLING_BARREL_PROJECTILE_SPEED sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_FALLING_BARREL)].stSprite = "oil_drum" sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_FALLING_BARREL)].vSpriteScale = INIT_VECTOR_2D(cfIAP_FALLING_BARREL_PROJECTILE_SPRITE_SCALE_X, cfIAP_FALLING_BARREL_PROJECTILE_SPRITE_SCALE_Y) sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_ENEMY)].iMaxAnimFrames = ciIAP_ENEMY_ANIM_FRAMES sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_ENEMY)].iSpeed = ciIAP_ENEMY_PROJECTILE_SPEED sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_ENEMY)].stSprite = "enemy_blast" sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_ENEMY)].vSpriteScale = INIT_VECTOR_2D(cfIAP_ENEMY_PROJECTILE_SPRITE_SCALE_X, cfIAP_ENEMY_PROJECTILE_SPRITE_SCALE_Y) sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_FLAME)].iMaxAnimFrames = ciIAP_FLAME_ANIM_FRAMES sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_FLAME)].iSpeed = ciIAP_FLAME_PROJECTILE_SPEED sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_FLAME)].stSprite = "fire_ball" sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_FLAME)].vSpriteScale = INIT_VECTOR_2D(cfIAP_FLAME_PROJECTILE_SPRITE_SCALE_X, cfIAP_FLAME_PROJECTILE_SPRITE_SCALE_Y) sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_HOMING_ROCKET)].iMaxAnimFrames = ciIAP_HOMING_ROCKET_ANIM_FRAMES sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_HOMING_ROCKET)].iSpeed = ciIAP_HOMING_ROCKET_PROJECTILE_SPEED sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_HOMING_ROCKET)].stSprite = "homing_rocket" sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_HOMING_ROCKET)].vSpriteScale = INIT_VECTOR_2D(cfIAP_HOMING_ROCKET_PROJECTILE_SPRITE_SCALE_X, cfIAP_HOMING_ROCKET_PROJECTILE_SPRITE_SCALE_Y) sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_PLASMA)].iMaxAnimFrames = ciIAP_PLASMA_ANIM_FRAMES sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_PLASMA)].iSpeed = ciIAP_PLASMA_PROJECTILE_SPEED sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_PLASMA)].stSprite = "plasma" sIAPData.sProjectileData[ENUM_TO_INT(IAP_PROJECTILE_TYPE_PLASMA)].vSpriteScale = INIT_VECTOR_2D(cfIAP_PLASMA_PROJECTILE_SPRITE_SCALE_X, cfIAP_PLASMA_PROJECTILE_SPRITE_SCALE_Y) ENDPROC /// PURPOSE: /// Initialises common colours used in the game PROC IAP_INITIALISE_COLOURS() //Default sprite colour INIT_RGBA_STRUCT(sIAPData.sColours.rgbaSprite, 255, 255, 255, 255) INIT_RGBA_STRUCT(sIAPData.sColours.rgbaBlack, 0, 0, 0, 255) INIT_RGBA_STRUCT(sIAPData.sColours.rgbaHeal, 0, 255, 0, 255) INIT_RGBA_STRUCT(sIAPData.sColours.rgbaDamage, 255, 0, 0, 255) INIT_RGBA_STRUCT(sIAPData.sColours.rgbaPlasma, 24, 203, 247, 255) INIT_RGBA_STRUCT(sIAPData.sColours.rgbaScoringBg, 27, 37, 27, 255) INIT_RGBA_STRUCT(sIAPData.sColours.rgbaScoringBorder, 255, 240, 127, 255) INIT_RGBA_STRUCT(sIAPData.sColours.rgbaScoringText, 103, 115, 87, 255) INIT_RGBA_STRUCT(sIAPData.sColours.rgbaHudText, 154, 255, 0, 255) ENDPROC /// PURPOSE: /// Returns true if weather effects are used on the current stage FUNC BOOL IAP_DOES_CURRENT_STAGE_HAVE_WEATHER_EFFECTS() IF sIAPData.eCurrentStage = IAP_STAGE_CANADA RETURN TRUE ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// Returns true if the player's tank is not driving on the ground FUNC BOOL IAP_IS_PLAYER_TANK_IN_AIR() RETURN sIAPData.sPlayerTank.eTankState = IAP_PLAYER_TANK_STATE_JUMPING OR sIAPData.sPlayerTank.eTankState = IAP_PLAYER_TANK_STATE_FALLING OR sIAPData.sPlayerTank.eTankState = IAP_PLAYER_TANK_STATE_RESPAWNING ENDFUNC /// PURPOSE: /// Returns the players calculated score /// RETURNS: /// FUNC INT IAP_GET_CURRENT_SCORE() INT iScore = 0 iScore += sIAPData.sScoreTracking.iScoreFromPickups iScore += sIAPData.sScoreTracking.iScoreFromEnemies iScore += sIAPData.sScoreTracking.iScoreFromOil iScore += sIAPData.sScoreTracking.iScoreFromDistance iScore += sIAPData.sScoreTracking.iScoreFromArmour iScore += sIAPData.sScoreTracking.iScoreFromLives RETURN iScore ENDFUNC /// PURPOSE: /// Returns true if no part of the rect is visible in the playable area of the screen FUNC BOOL IAP_IS_RECT_COMPLETELY_OUTSIDE_OF_GAME_AREA(VECTOR_2D vCenter, VECTOR_2D vScale) FLOAT fMinX = vCenter.x - (vScale.x / 2) IF fMinX > (1.0 - cfIAP_FACADE_WIDTH) //Obscured by right facade RETURN TRUE ENDIF FLOAT fMaxX = vCenter.x + (vScale.x / 2) IF fMaxX < cfIAP_FACADE_WIDTH //Obscured by left facade RETURN TRUE ENDIF FLOAT fMinY = vCenter.y - (vScale.y / 2) IF fMinY > 1.0 - cfIAP_FACADE_TOP_HEIGHT //Below the bottom of the screen RETURN TRUE ENDIF FLOAT fMaxY = vCenter.y + (vScale.y / 2) IF fMaxY < 0.0 + cfIAP_FACADE_TOP_HEIGHT //Above the top of the screen RETURN TRUE ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// Returns the type of pitfall used in the current stage FUNC IAP_OBJECT IAP_GET_CURRENT_STAGE_PITFALL_INDEX() RETURN INT_TO_ENUM(IAP_OBJECT, ENUM_TO_INT(IAP_OBJECT_HAZARD_PITFALL_IRAQ) + ENUM_TO_INT(sIAPData.eCurrentStage)) ENDFUNC /// PURPOSE: /// Returns the type of ledge used in the current stage FUNC IAP_OBJECT IAP_GET_CURRENT_STAGE_LEDGE_INDEX() RETURN INT_TO_ENUM(IAP_OBJECT, ENUM_TO_INT(IAP_OBJECT_HAZARD_LEDGE_IRAQ) + ENUM_TO_INT(sIAPData.eCurrentStage)) ENDFUNC /// PURPOSE: /// Returns the width of the ground on the left of this stage's pitfall FUNC FLOAT IAP_GET_CURRENT_STAGE_PITFALL_GROUND_WIDTH_LEFT() SWITCH IAP_GET_CURRENT_STAGE_PITFALL_INDEX() CASE IAP_OBJECT_HAZARD_PITFALL_IRAQ RETURN cfIAP_STAGE_0_PITFALL_GROUND_WIDTH_LEFT CASE IAP_OBJECT_HAZARD_PITFALL_RUSSIA RETURN cfIAP_STAGE_1_PITFALL_GROUND_WIDTH_LEFT CASE IAP_OBJECT_HAZARD_PITFALL_CHINA RETURN cfIAP_STAGE_2_PITFALL_GROUND_WIDTH_LEFT CASE IAP_OBJECT_HAZARD_PITFALL_CANADA RETURN cfIAP_STAGE_3_PITFALL_GROUND_WIDTH_LEFT CASE IAP_OBJECT_HAZARD_PITFALL_MOON RETURN cfIAP_STAGE_4_PITFALL_GROUND_WIDTH_LEFT ENDSWITCH RETURN 0.0 ENDFUNC /// PURPOSE: /// Returns the width of the ground on the right of this stage's pitfall FUNC FLOAT IAP_GET_CURRENT_STAGE_PITFALL_GROUND_WIDTH_RIGHT() SWITCH IAP_GET_CURRENT_STAGE_PITFALL_INDEX() CASE IAP_OBJECT_HAZARD_PITFALL_IRAQ RETURN cfIAP_STAGE_0_PITFALL_GROUND_WIDTH_RIGHT CASE IAP_OBJECT_HAZARD_PITFALL_RUSSIA RETURN cfIAP_STAGE_1_PITFALL_GROUND_WIDTH_RIGHT CASE IAP_OBJECT_HAZARD_PITFALL_CHINA RETURN cfIAP_STAGE_2_PITFALL_GROUND_WIDTH_RIGHT CASE IAP_OBJECT_HAZARD_PITFALL_CANADA RETURN cfIAP_STAGE_3_PITFALL_GROUND_WIDTH_RIGHT CASE IAP_OBJECT_HAZARD_PITFALL_MOON RETURN cfIAP_STAGE_4_PITFALL_GROUND_WIDTH_RIGHT ENDSWITCH RETURN 0.0 ENDFUNC /// PURPOSE: /// Returns the offset for the current stage's pitfall crumble effect FUNC VECTOR_2D IAP_GET_CURRENT_STAGE_PITFALL_CRUMBLE_OFFSET() SWITCH IAP_GET_CURRENT_STAGE_PITFALL_INDEX() CASE IAP_OBJECT_HAZARD_PITFALL_IRAQ RETURN INIT_VECTOR_2D(cfIAP_STAGE_0_PITFALL_CRUMBLE_OFFSET_X, cfIAP_STAGE_0_PITFALL_CRUMBLE_OFFSET_Y) CASE IAP_OBJECT_HAZARD_PITFALL_RUSSIA RETURN INIT_VECTOR_2D(cfIAP_STAGE_1_PITFALL_CRUMBLE_OFFSET_X, cfIAP_STAGE_1_PITFALL_CRUMBLE_OFFSET_Y) CASE IAP_OBJECT_HAZARD_PITFALL_CHINA RETURN INIT_VECTOR_2D(cfIAP_STAGE_2_PITFALL_CRUMBLE_OFFSET_X, cfIAP_STAGE_2_PITFALL_CRUMBLE_OFFSET_Y) CASE IAP_OBJECT_HAZARD_PITFALL_CANADA RETURN INIT_VECTOR_2D(cfIAP_STAGE_3_PITFALL_CRUMBLE_OFFSET_X, cfIAP_STAGE_3_PITFALL_CRUMBLE_OFFSET_Y) CASE IAP_OBJECT_HAZARD_PITFALL_MOON RETURN INIT_VECTOR_2D(cfIAP_STAGE_4_PITFALL_CRUMBLE_OFFSET_X, cfIAP_STAGE_4_PITFALL_CRUMBLE_OFFSET_Y) ENDSWITCH RETURN INIT_VECTOR_2D(0,0) ENDFUNC /// PURPOSE: /// Returns the scale of the current stage's pitfall crumble effect FUNC VECTOR_2D IAP_GET_CURRENT_STAGE_PITFALL_CRUMBLE_SCALE() SWITCH IAP_GET_CURRENT_STAGE_PITFALL_INDEX() CASE IAP_OBJECT_HAZARD_PITFALL_IRAQ RETURN INIT_VECTOR_2D(cfIAP_STAGE_0_PITFALL_CRUMBLE_SCALE_X, cfIAP_STAGE_0_PITFALL_CRUMBLE_SCALE_Y) CASE IAP_OBJECT_HAZARD_PITFALL_RUSSIA RETURN INIT_VECTOR_2D(cfIAP_STAGE_1_PITFALL_CRUMBLE_SCALE_X, cfIAP_STAGE_1_PITFALL_CRUMBLE_SCALE_Y) CASE IAP_OBJECT_HAZARD_PITFALL_CHINA RETURN INIT_VECTOR_2D(cfIAP_STAGE_2_PITFALL_CRUMBLE_SCALE_X, cfIAP_STAGE_2_PITFALL_CRUMBLE_SCALE_Y) CASE IAP_OBJECT_HAZARD_PITFALL_CANADA RETURN INIT_VECTOR_2D(cfIAP_STAGE_3_PITFALL_CRUMBLE_SCALE_X, cfIAP_STAGE_3_PITFALL_CRUMBLE_SCALE_Y) CASE IAP_OBJECT_HAZARD_PITFALL_MOON RETURN INIT_VECTOR_2D(cfIAP_STAGE_4_PITFALL_CRUMBLE_SCALE_X, cfIAP_STAGE_4_PITFALL_CRUMBLE_SCALE_Y) ENDSWITCH RETURN INIT_VECTOR_2D(0,0) ENDFUNC /// PURPOSE: /// RETURNS TRUE IF A NUCLEAR STRIKE IS IN PROGRESS FUNC BOOL IAP_IS_NUKE_ACTIVE() IF HAS_NET_TIMER_STARTED(sIAPData.tdNukeTimer) IF NOT HAS_NET_TIMER_EXPIRED(sIAPData.tdNukeTimer, ciIAP_PICKUP_NUKE_DURATION) RETURN TRUE ENDIF RESET_NET_TIMER(sIAPData.tdNukeTimer) ENDIF RETURN FALSE ENDFUNC FUNC FLOAT IAP_GET_STAGE_WEAPON_SPEED_MOD() IF sIAPData.eCurrentStage = IAP_STAGE_MOON RETURN 0.75 ENDIF RETURN 1.0 ENDFUNC PROC IAP_CLEAN_UP_BINKS() IF (sIAPData.binkDegenIntro != NULL) STOP_BINK_MOVIE(sIAPData.binkDegenIntro) RELEASE_BINK_MOVIE(sIAPData.binkDegenIntro) ENDIF IF (sIAPData.binkIntroLoop != NULL) STOP_BINK_MOVIE(sIAPData.binkIntroLoop) RELEASE_BINK_MOVIE(sIAPData.binkIntroLoop) ENDIF IF (sIAPData.binkLeaderboard != NULL) STOP_BINK_MOVIE(sIAPData.binkLeaderboard) RELEASE_BINK_MOVIE(sIAPData.binkLeaderboard) ENDIF ENDPROC /// PURPOSE: /// Returns true if the golden tank was unlocked whne the game started FUNC BOOL IAP_IS_GOLDEN_TANK_UNLOCKED() RETURN IS_BIT_SET(sIAPData.iChallengeBitSet, ciIAP_CHALLENGEBS_GOLDEN_TANK_UNLOCKED) ENDFUNC /// PURPOSE: /// Returns the texture dictionary for the player tank sprites FUNC STRING IAP_GET_PLAYER_TEXTURE_DICT() IF IAP_IS_GOLDEN_TANK_UNLOCKED() RETURN "MPInvPersPlayerGold" ENDIF RETURN "MPInvPersPlayer" ENDFUNC /// PURPOSE: /// Returns whether triple fire rate is active FUNC BOOL IAP_IS_TRIPLE_FIRE_ACTIVE() IF IAP_IS_GOLDEN_TANK_UNLOCKED() RETURN TRUE ENDIF RETURN IS_BIT_SET(sIAPData.sPlayerTank.iPlayerTankBitset, ciIAP_PLAYER_TANK_BS_TRIPLE_SHOT_ACTIVE) ENDFUNC // ------------------------------ SOUND EFFECTS ------------------------------ /// PURPOSE: /// Returns true if a death sound can be played from the object FUNC BOOL IAP_DOES_OBJECT_HAVE_DEATH_SOUND(INT iObjectIndex) IF sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_BEAR OR sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_CAMEL OR sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_MOOSE OR sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_PANDA OR sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_DRONE OR sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_JET RETURN TRUE ENDIF IF sIAPData.sObjectData[ENUM_TO_INT(sIAPData.sObjectInstances[iObjectIndex].eObjectType)].eObjectType = IAP_OBJECT_TYPE_DESTRUCTABLE_HAZARD RETURN TRUE ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// Returns the sound to be played when the object dies /// Check IAP_DOES_OBJECT_HAVE_DEATH_SOUND before calling FUNC STRING IAP_GET_OBJECT_DEATH_SOUND(INT iObjectIndex) SWITCH sIAPData.sObjectInstances[iObjectIndex].eObjectType CASE IAP_OBJECT_ENEMY_BEAR RETURN "Enemy_Bear_Die" CASE IAP_OBJECT_ENEMY_CAMEL RETURN "Enemy_Camel_Die" CASE IAP_OBJECT_ENEMY_MOOSE RETURN "Enemy_Moose_Die" CASE IAP_OBJECT_ENEMY_PANDA RETURN "Enemy_Panda_Die" CASE IAP_OBJECT_ENEMY_DRONE RETURN "Enemy_Drone_Destroyed" CASE IAP_OBJECT_ENEMY_JET RETURN "Enemy_Jet_Explode" ENDSWITCH IF sIAPData.sObjectData[ENUM_TO_INT(sIAPData.sObjectInstances[iObjectIndex].eObjectType)].eObjectType = IAP_OBJECT_TYPE_DESTRUCTABLE_HAZARD RETURN "Enemy_Drone_Destroyed" ENDIF ASSERTLN("[IAP] [JS] IAP_GET_OBJECT_DEATH_SOUND - Object ", iObjectIndex, " has no death sound!") RETURN "" ENDFUNC /// PURPOSE: /// Returns true if a shoot sound can be played from the object FUNC BOOL IAP_DOES_OBJECT_HAVE_SHOOT_SOUND(INT iObjectIndex) IF sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_BEAR OR sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_CAMEL OR sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_MOOSE OR sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_PANDA OR sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_DRONE OR sIAPData.sObjectInstances[iObjectIndex].eObjectType = IAP_OBJECT_ENEMY_JET RETURN TRUE ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// Returns the sound to be played when the object shoots /// Check IAP_DOES_OBJECT_HAVE_SHOOT_SOUND before calling FUNC STRING IAP_GET_OBJECT_SHOOT_SOUND(INT iObjectIndex) SWITCH sIAPData.sObjectInstances[iObjectIndex].eObjectType CASE IAP_OBJECT_ENEMY_BEAR RETURN "Enemy_Bear_Fire" CASE IAP_OBJECT_ENEMY_CAMEL RETURN "Enemy_Camel_Fire" CASE IAP_OBJECT_ENEMY_MOOSE RETURN "Enemy_Moose_Fire" CASE IAP_OBJECT_ENEMY_PANDA RETURN "Enemy_Panda_Fire" CASE IAP_OBJECT_ENEMY_DRONE RETURN "Enemy_Drone_Fire" CASE IAP_OBJECT_ENEMY_JET RETURN "Enemy_Jet_Bomb_Barrel_Drop" ENDSWITCH ASSERTLN("[IAP] [JS] IAP_GET_OBJECT_SHOOT_SOUND - Object ", iObjectIndex, " has no shoot sound!") RETURN "" ENDFUNC /// PURPOSE: /// Returns true if a spawn sound can be played from the object FUNC BOOL IAP_DOES_OBJECT_HAVE_SPAWN_SOUND(INT iObjectIndex) SWITCH sIAPData.sObjectData[ENUM_TO_INT(sIAPData.sObjectInstances[iObjectIndex].eObjectType)].eObjectType CASE IAP_OBJECT_TYPE_GROUND_ENEMY CASE IAP_OBJECT_TYPE_PICKUP RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC /// PURPOSE: /// Returns the sound to be played when the object spawns /// Check IAP_DOES_OBJECT_HAVE_SPAWN_SOUND before calling FUNC STRING IAP_GET_OBJECT_SPAWN_SOUND(INT iObjectIndex) SWITCH sIAPData.sObjectInstances[iObjectIndex].eObjectType CASE IAP_OBJECT_ENEMY_BEAR RETURN "Enemy_Bear_Spawn" CASE IAP_OBJECT_ENEMY_CAMEL RETURN "Enemy_Camel_Spawn" CASE IAP_OBJECT_ENEMY_MOOSE RETURN "Enemy_Moose_Spawn" CASE IAP_OBJECT_ENEMY_PANDA RETURN "Enemy_Panda_Spawn" ENDSWITCH IF sIAPData.sObjectData[ENUM_TO_INT(sIAPData.sObjectInstances[iObjectIndex].eObjectType)].eObjectType = IAP_OBJECT_TYPE_PICKUP RETURN "Powerup_Crate_Parachute_Open" ENDIF ASSERTLN("[IAP] [JS] IAP_GET_OBJECT_SPAWN_SOUND - Object ", iObjectIndex, " has no spawn sound!") RETURN "" ENDFUNC /// PURPOSE: /// Returns the sound name for a collected pickup /// PARAMS: FUNC STRING IAP_GET_PICKUP_COLLECTION_SOUND(IAP_OBJECT ePickupType) SWITCH ePickupType CASE IAP_OBJECT_PICKUP_FLAMETHROWER RETURN "Powerup_Crate_Collect_Flamethrower" CASE IAP_OBJECT_PICKUP_ROCKETS RETURN "Powerup_Crate_Collect_Rockets" CASE IAP_OBJECT_PICKUP_PLASMA RETURN "Powerup_Crate_Collect_Beam" CASE IAP_OBJECT_PICKUP_TRIPLE RETURN "Powerup_Crate_Collect_Triple_Shot" CASE IAP_OBJECT_PICKUP_HEALTH CASE IAP_OBJECT_PICKUP_LIFE RETURN "Powerup_Crate_Collect_Armour" CASE IAP_OBJECT_PICKUP_ENEMY RETURN "Powerup_Crate_Collect_Negative" CASE IAP_OBJECT_PICKUP_NUKE RETURN "Powerup_Crate_Collect_Nuke" CASE IAP_OBJECT_PICKUP_SHIELD RETURN "Powerup_Crate_Collect_Shield" CASE IAP_OBJECT_PICKUP_SCORE CASE IAP_OBJECT_PICKUP_RANDOM RETURN "Powerup_Crate_Collect_Other" ENDSWITCH RETURN "" ENDFUNC /// PURPOSE: /// Returns the soundset the object's effects are in FUNC STRING IAP_GET_SOUND_SET_FOR_OBJECT(INT iObjectIndex) SWITCH sIAPData.sObjectData[ENUM_TO_INT(sIAPData.sObjectInstances[iObjectIndex].eObjectType)].eObjectType CASE IAP_OBJECT_TYPE_GROUND_ENEMY CASE IAP_OBJECT_TYPE_JET CASE IAP_OBJECT_TYPE_DRONE CASE IAP_OBJECT_TYPE_DESTRUCTABLE_HAZARD RETURN "dlc_vw_am_ip_enemy_sounds" CASE IAP_OBJECT_TYPE_PICKUP RETURN "dlc_vw_am_ip_powerup_sounds" ENDSWITCH ASSERTLN("[IAP] [JS] IAP_GET_SOUND_SET_FOR_OBJECT - Object ", iObjectIndex, " has no soundset!") RETURN "" ENDFUNC /// PURPOSE: /// Returns true if the player's weapon needs a looping sound effect FUNC BOOL IAP_IS_PLAYER_WEAPON_SOUND_LOOPING() SWITCH sIAPData.sPlayerTank.eWeaponType CASE IAP_PLAYER_WEAPON_FLAMETHROWER CASE IAP_PLAYER_WEAPON_PLASMA RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC /// PURPOSE: /// Returns the shooting sound for the player's current weapon FUNC STRING IAP_GET_SHOOT_SOUND_FOR_CURRENT_PLAYER_WEAPON() SWITCH sIAPData.sPlayerTank.eWeaponType CASE IAP_PLAYER_WEAPON_DEFAULT RETURN "Tank_Weapon_Main_Cannon_Fire" CASE IAP_PLAYER_WEAPON_FLAMETHROWER RETURN "Tank_Weapon_Flamethrower_Fire_Loop" CASE IAP_PLAYER_WEAPON_ROCKET_LAUNCHER RETURN "Tank_Weapon_Rocket_Fire" CASE IAP_PLAYER_WEAPON_PLASMA RETURN "Tank_Weapon_Lightning_Gun_Fire_Loop" ENDSWITCH ASSERTLN("[IAP] [JS] IAP_GET_SHOOT_SOUND_FOR_CURRENT_PLAYER_WEAPON - ", IAP_DEBUG_GET_IAP_PLAYER_WEAPON_AS_STRING(sIAPData.sPlayerTank.eWeaponType), " has no sound!") RETURN "" ENDFUNC /// PURPOSE: /// Returns the hit sound for a player projectile FUNC STRING IAP_GET_HIT_SOUND_FOR_PLAYER_PROJECTILE(IAP_PROJECTILE_TYPE eProjectileType) SWITCH eProjectileType CASE IAP_PROJECTILE_TYPE_BULLET RETURN "Tank_Weapon_Main_Cannon_Hit" CASE IAP_PROJECTILE_TYPE_FLAME RETURN "Tank_Weapon_Flamethrower_Fire_Hit" CASE IAP_PROJECTILE_TYPE_HOMING_ROCKET RETURN "Tank_Weapon_Rocket_Hit" ENDSWITCH ASSERTLN("[IAP] [JS] IAP_GET_HIT_SOUND_FOR_PLAYER_PROJECTILE - ", IAP_DEBUG_GET_IAP_PROJECTILE_TYPE_AS_STRING(eProjectileType), " has no sound!") RETURN "" ENDFUNC /// PURPOSE: /// Returns the position for the "Screen_Position" variable based on the play area FUNC FLOAT IAP_GET_SOUND_SCREEN_POSITION_FROM_COORDS(VECTOR_2D vCoords) RETURN CLAMP((vCoords.x - cfIAP_FACADE_WIDTH) / cfIAP_PLAY_AREA_WIDTH, 0.0, 1.0) ENDFUNC /// PURPOSE: /// Plays a sound from the "dlc_vw_am_ip_frontend_sounds" Soundset PROC IAP_PLAY_FIRE_AND_FORGET_FRONTEND_SOUND(STRING stSoundName) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_FIRE_AND_FORGET_FRONTEND_SOUND - Playing: ", stSoundName) #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableSFX EXIT ENDIF #ENDIF PLAY_SOUND_FRONTEND(-1, stSoundName, "dlc_vw_am_ip_frontend_sounds", FALSE) ENDPROC /// PURPOSE: /// Starts a looping sound from the "dlc_vw_am_ip_frontend_sounds" Soundset PROC IAP_START_LOOPING_FRONTEND_SOUND(STRING stSoundName, INT &iSoundId) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_START_LOOPING_FRONTEND_SOUND - Playing: ", stSoundName) #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableSFX EXIT ENDIF #ENDIF IF iSoundId = -1 iSoundId = GET_SOUND_ID() ENDIF IF HAS_SOUND_FINISHED(iSoundId) PLAY_SOUND_FRONTEND(iSoundId, stSoundName, "dlc_vw_am_ip_frontend_sounds", FALSE) ENDIF ENDPROC /// PURPOSE: /// Stops a looping sound and releases its sound ID PROC IAP_STOP_LOOPING_FRONTEND_SOUND(INT &iSoundId) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_STOP_LOOPING_FRONTEND_SOUND - Stopping: ", iSoundId) #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableSFX EXIT ENDIF #ENDIF IF NOT HAS_SOUND_FINISHED(iSoundId) STOP_SOUND(iSoundId) ENDIF RELEASE_SOUND_ID(iSoundId) iSoundId = -1 ENDPROC /// PURPOSE: /// Plays sound from an object /// Sets the "Screen_Position" variable based on the objects position in the playable area /// Uses a unique Sound ID for each object PROC IAP_PLAY_FIRE_AND_FORGET_SOUND_FROM_OBJECT(STRING stSoundName, STRING stSoundSet, INT iObjectIndex) INT iSoundId = sIAPData.sObjectInstances[iObjectIndex].iOneShotSoundId IF iSoundId = -1 ASSERTLN("[IAP] [JS] IAP_PLAY_FIRE_AND_FORGET_SOUND_FROM_OBJECT - Object ", iObjectIndex, "'s Sound ID not initialised!") EXIT ENDIF FLOAT fScreenPos = IAP_GET_SOUND_SCREEN_POSITION_FROM_COORDS(sIAPData.sObjectInstances[iObjectIndex].vPosition) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_FIRE_AND_FORGET_SOUND_FROM_OBJECT - Playing: ", stSoundName, " from ObjectIndex: ", iObjectIndex, " Screen Pos: ", fScreenPos, " SoundID: ", iSoundId) #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableSFX EXIT ENDIF #ENDIF PLAY_SOUND_FRONTEND(iSoundId, stSoundName, stSoundSet, FALSE) SET_VARIABLE_ON_SOUND(iSoundId, "Screen_Position", fScreenPos) ENDPROC /// PURPOSE: /// Plays a sound from a position on screen PROC IAP_PLAY_FIRE_AND_FORGET_SOUND_FROM_POSITION(STRING stSoundName, STRING stSoundSet, VECTOR_2D vPosition) FLOAT fScreenPos = IAP_GET_SOUND_SCREEN_POSITION_FROM_COORDS(vPosition) IF fScreenPos > 1.0 OR fScreenPos <0.0 CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_FIRE_AND_FORGET_SOUND_FROM_POSITION - not on screen NOT Playing: ", stSoundName, "Screen Pos: ", fScreenPos) ENDIF CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_FIRE_AND_FORGET_SOUND_FROM_POSITION - Playing: ", stSoundName, "Screen Pos: ", fScreenPos) #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableSFX EXIT ENDIF #ENDIF INT iSoundId = GET_SOUND_ID() PLAY_SOUND_FRONTEND(iSoundId, stSoundName, stSoundSet, FALSE) SET_VARIABLE_ON_SOUND(iSoundId, "Screen_Position", fScreenPos) RELEASE_SOUND_ID(iSoundId) ENDPROC /// PURPOSE: /// Plays the plasma hit sound from a position on screen /// Sets the targetsHit variable PROC IAP_PLAY_PLASMA_HIT_AT_POSITION(VECTOR_2D vPosition, INT iTargetsHit) FLOAT fScreenPos = IAP_GET_SOUND_SCREEN_POSITION_FROM_COORDS(vPosition) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_PLASMA_HIT_AT_POSITION - Playing Screen Pos: ", fScreenPos) #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableSFX EXIT ENDIF #ENDIF IF HAS_SOUND_FINISHED(sIAPData.sPlayerTank.iWeaponSoundId) PLAY_SOUND_FRONTEND(sIAPData.sPlayerTank.iWeaponSoundId, "Tank_Weapon_Lightning_Gun_Fire_Hit", "dlc_vw_am_ip_tank_sounds", FALSE) ENDIF SET_VARIABLE_ON_SOUND(sIAPData.sPlayerTank.iWeaponSoundId, "Screen_Position", fScreenPos) SET_VARIABLE_ON_SOUND(sIAPData.sPlayerTank.iWeaponSoundId, "TargetsHit", TO_FLOAT(iTargetsHit)) ENDPROC /// PURPOSE: /// Plays looping sound from the "dlc_vw_am_ip_enemy_sounds" Soundset /// Call every frame while the entity is alive /// Sets the "Screen_Position" variable based on the objects position in the playable area /// Uses a unique Sound ID for each object PROC IAP_PLAY_LOOPING_SOUND_FROM_OBJECT(STRING stSoundName, INT iObjectIndex) INT iSoundId = sIAPData.sObjectInstances[iObjectIndex].iLoopingSoundId IF iSoundId = -1 ASSERTLN("[IAP] [JS] IAP_PLAY_LOOPING_SOUND_FROM_OBJECT - Object ", iObjectIndex, "'s Sound ID not initialised!") EXIT ENDIF FLOAT fScreenPos = IAP_GET_SOUND_SCREEN_POSITION_FROM_COORDS(sIAPData.sObjectInstances[iObjectIndex].vPosition) #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableSFX EXIT ENDIF #ENDIF IF HAS_SOUND_FINISHED(iSoundId) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_LOOPING_SOUND_FROM_OBJECT - Playing: ", stSoundName, " from ObjectIndex: ", iObjectIndex, " Screen Pos: ", fScreenPos, " SoundID: ", iSoundId) PLAY_SOUND_FRONTEND(iSoundId, stSoundName, "dlc_vw_am_ip_enemy_sounds", FALSE) ENDIF SET_VARIABLE_ON_SOUND(iSoundId, "Screen_Position", fScreenPos) ENDPROC /// PURPOSE: /// Call every frame to play the tank engine loop PROC IAP_PLAY_TANK_LOOP() #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableSFX EXIT ENDIF #ENDIF IF sIAPData.sPlayerTank.iEngineLoopSoundId = -1 sIAPData.sPlayerTank.iEngineLoopSoundId = GET_SOUND_ID() ENDIF BOOL bOutOfArea = IAP_IS_RECT_COMPLETELY_OUTSIDE_OF_GAME_AREA(sIAPData.sPlayerTank.vPosition, INIT_VECTOR_2D(cfIAP_PLAYER_TANK_EXPLOSION_SCALE_X, cfIAP_PLAYER_TANK_EXPLOSION_SCALE_Y)) BOOL bExploding = (sIAPData.sPlayerTank.eTankState = IAP_PLAYER_TANK_STATE_EXPLODING) IF NOT HAS_SOUND_FINISHED(sIAPData.sPlayerTank.iEngineLoopSoundId) AND (bOutOfArea OR bExploding) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_TANK_LOOP - Stopping loop") STOP_SOUND(sIAPData.sPlayerTank.iEngineLoopSoundId) IF sIAPData.sPlayerTank.iDamageLoopSoundId > -1 AND NOT HAS_SOUND_FINISHED(sIAPData.sPlayerTank.iDamageLoopSoundId) STOP_SOUND(sIAPData.sPlayerTank.iDamageLoopSoundId) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_TANK_LOOP - Stopping damage loop (offscreen)") ENDIF EXIT ENDIF IF bOutOfArea OR bExploding EXIT ENDIF IF HAS_SOUND_FINISHED(sIAPData.sPlayerTank.iEngineLoopSoundId) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_TANK_LOOP - Starting loop") PLAY_SOUND_FRONTEND(sIAPData.sPlayerTank.iEngineLoopSoundId, "Tank_Engine_Loop", "dlc_vw_am_ip_tank_sounds", FALSE) ENDIF //Screen Position FLOAT fScreenPos = IAP_GET_SOUND_SCREEN_POSITION_FROM_COORDS(sIAPData.sPlayerTank.vPosition) SET_VARIABLE_ON_SOUND(sIAPData.sPlayerTank.iEngineLoopSoundId, "Screen_Position", fScreenPos) //IsJumping FLOAT fIsJumping = PICK_FLOAT(IAP_IS_PLAYER_TANK_IN_AIR(), 1.0, 0.0) SET_VARIABLE_ON_SOUND(sIAPData.sPlayerTank.iEngineLoopSoundId, "IsJumping", fIsJumping) //DamageLevel FLOAT fDamageLevel = TO_FLOAT(sIAPData.sPlayerTank.iHealth) / TO_FLOAT(ciIAP_MAX_HEALTH) SET_VARIABLE_ON_SOUND(sIAPData.sPlayerTank.iEngineLoopSoundId, "DamageLevel", fDamageLevel) //Tank Speed is set in input processing //Critical Damage Loop IF sIAPData.sPlayerTank.iHealth = 1 IF sIAPData.sPlayerTank.iDamageLoopSoundId = -1 sIAPData.sPlayerTank.iDamageLoopSoundId = GET_SOUND_ID() ENDIF IF HAS_SOUND_FINISHED(sIAPData.sPlayerTank.iDamageLoopSoundId) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_TANK_LOOP - Damage loop") PLAY_SOUND_FRONTEND(sIAPData.sPlayerTank.iDamageLoopSoundId, "Tank_Critical_Damage_Loop", "dlc_vw_am_ip_tank_sounds", FALSE) ENDIF SET_VARIABLE_ON_SOUND(sIAPData.sPlayerTank.iDamageLoopSoundId, "Screen_Position", fScreenPos) ELIF sIAPData.sPlayerTank.iDamageLoopSoundId > -1 AND NOT HAS_SOUND_FINISHED(sIAPData.sPlayerTank.iDamageLoopSoundId) STOP_SOUND(sIAPData.sPlayerTank.iDamageLoopSoundId) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_TANK_LOOP - Stopping damage loop") ENDIF ENDPROC /// PURPOSE: /// Plays sound from the player's tank /// Sets the "Screen_Position" variable based on the objects position in the playable area PROC IAP_PLAY_FIRE_AND_FORGET_SOUND_FROM_TANK(STRING stSoundName, INT &iSoundId) IF iSoundId = -1 iSoundId = GET_SOUND_ID() ENDIF FLOAT fScreenPos = IAP_GET_SOUND_SCREEN_POSITION_FROM_COORDS(sIAPData.sPlayerTank.vPosition) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_FIRE_AND_FORGET_SOUND_FROM_TANK - Playing: ", stSoundName, " Screen Pos: ", fScreenPos, " SoundID: ", iSoundId) #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableSFX EXIT ENDIF #ENDIF PLAY_SOUND_FRONTEND(iSoundId, stSoundName, "dlc_vw_am_ip_tank_sounds", FALSE) SET_VARIABLE_ON_SOUND(iSoundId, "Screen_Position", fScreenPos) ENDPROC /// PURPOSE: /// Call every frame to play the current tank weapon loop PROC IAP_PLAY_TANK_WEAPON_LOOP() IF NOT IAP_IS_PLAYER_WEAPON_SOUND_LOOPING() IF NOT HAS_SOUND_FINISHED(sIAPData.sPlayerTank.iWeaponLoopSoundId) STOP_SOUND(sIAPData.sPlayerTank.iWeaponLoopSoundId) RELEASE_SOUND_ID(sIAPData.sPlayerTank.iWeaponLoopSoundId) sIAPData.sPlayerTank.iWeaponLoopSoundId = -1 ENDIF EXIT ENDIF #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableSFX EXIT ENDIF #ENDIF IF sIAPData.sPlayerTank.iWeaponLoopSoundId = -1 sIAPData.sPlayerTank.iWeaponLoopSoundId = GET_SOUND_ID() ENDIF IF HAS_SOUND_FINISHED(sIAPData.sPlayerTank.iWeaponLoopSoundId) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_PLAY_TANK_WEAPON_LOOP - Starting loop") PLAY_SOUND_FRONTEND(sIAPData.sPlayerTank.iWeaponLoopSoundId, IAP_GET_SHOOT_SOUND_FOR_CURRENT_PLAYER_WEAPON(), "dlc_vw_am_ip_tank_sounds", FALSE) ENDIF //Screen Position FLOAT fScreenPos = IAP_GET_SOUND_SCREEN_POSITION_FROM_COORDS(sIAPData.sPlayerTank.vPosition) SET_VARIABLE_ON_SOUND(sIAPData.sPlayerTank.iWeaponLoopSoundId, "Screen_Position", fScreenPos) ENDPROC PROC IAP_STOP_TANK_WEAPON_LOOP() IF sIAPData.sPlayerTank.iWeaponLoopSoundId > -1 IF NOT HAS_SOUND_FINISHED(sIAPData.sPlayerTank.iWeaponLoopSoundId) STOP_SOUND(sIAPData.sPlayerTank.iWeaponLoopSoundId) RELEASE_SOUND_ID(sIAPData.sPlayerTank.iWeaponLoopSoundId) sIAPData.sPlayerTank.iWeaponLoopSoundId = -1 ENDIF ENDIF ENDPROC /// PURPOSE: /// Stops all player tank sounds and resets the sound IDs PROC IAP_RESET_PLAYER_TANK_SOUNDS() IF sIAPData.sPlayerTank.iWeaponLoopSoundId > -1 STOP_SOUND(sIAPData.sPlayerTank.iWeaponLoopSoundId) RELEASE_SOUND_ID(sIAPData.sPlayerTank.iWeaponLoopSoundId) sIAPData.sPlayerTank.iWeaponLoopSoundId = -1 ENDIF IF sIAPData.sPlayerTank.iEngineLoopSoundId > -1 STOP_SOUND(sIAPData.sPlayerTank.iEngineLoopSoundId) RELEASE_SOUND_ID(sIAPData.sPlayerTank.iEngineLoopSoundId) sIAPData.sPlayerTank.iEngineLoopSoundId = -1 ENDIF IF sIAPData.sPlayerTank.iDamageLoopSoundId > -1 STOP_SOUND(sIAPData.sPlayerTank.iDamageLoopSoundId) RELEASE_SOUND_ID(sIAPData.sPlayerTank.iDamageLoopSoundId) sIAPData.sPlayerTank.iDamageLoopSoundId = -1 ENDIF IF sIAPData.sPlayerTank.iWeaponSoundId > -1 STOP_SOUND(sIAPData.sPlayerTank.iWeaponSoundId) RELEASE_SOUND_ID(sIAPData.sPlayerTank.iWeaponSoundId) sIAPData.sPlayerTank.iWeaponSoundId = -1 ENDIF IF sIAPData.sPlayerTank.iTurretSoundId > -1 STOP_SOUND(sIAPData.sPlayerTank.iTurretSoundId) RELEASE_SOUND_ID(sIAPData.sPlayerTank.iTurretSoundId) sIAPData.sPlayerTank.iTurretSoundId = -1 ENDIF IF sIAPData.sPlayerTank.iGeneralSoundId > -1 STOP_SOUND(sIAPData.sPlayerTank.iGeneralSoundId) RELEASE_SOUND_ID(sIAPData.sPlayerTank.iGeneralSoundId) sIAPData.sPlayerTank.iGeneralSoundId = -1 ENDIF ENDPROC // ------------------------------ MUSIC ------------------------------ /// PURPOSE: /// Returns the music event string for the type of event passed in FUNC STRING IAP_GET_MUSIC_EVENT_STRING(IAP_MUSIC_EVENT eEvent) SWITCH eEvent CASE IAP_MUSIC_EVENT_TITLE_SCREEN RETURN "CASINO_IAP_THEME_START" CASE IAP_MUSIC_EVENT_LEVEL_BRIEF SWITCH(sIAPData.eCurrentStage) CASE IAP_STAGE_IRAQ RETURN "CASINO_IAP_LEVEL1_BRIEF" CASE IAP_STAGE_RUSSIA RETURN "CASINO_IAP_LEVEL2_BRIEF" CASE IAP_STAGE_CHINA RETURN "CASINO_IAP_LEVEL3_BRIEF" CASE IAP_STAGE_CANADA RETURN "CASINO_IAP_LEVEL4_BRIEF" CASE IAP_STAGE_MOON RETURN "CASINO_IAP_LEVEL5_BRIEF" ENDSWITCH BREAK CASE IAP_MUSIC_EVENT_LEVEL_PLAY SWITCH(sIAPData.eCurrentStage) CASE IAP_STAGE_IRAQ RETURN "CASINO_IAP_LEVEL1_PLAY" CASE IAP_STAGE_RUSSIA RETURN "CASINO_IAP_LEVEL2_PLAY" CASE IAP_STAGE_CHINA RETURN "CASINO_IAP_LEVEL3_PLAY" CASE IAP_STAGE_CANADA RETURN "CASINO_IAP_LEVEL4_PLAY" CASE IAP_STAGE_MOON RETURN "CASINO_IAP_LEVEL5_PLAY" ENDSWITCH BREAK CASE IAP_MUSIC_EVENT_LEVEL_END RETURN "CASINO_LEVEL_END" CASE IAP_MUSIC_EVENT_LEADERBOARD_START RETURN "CASINO_IAP_LEADERBOARD_START" CASE IAP_MUSIC_EVENT_STAGE_CLEAR RETURN "CASINO_IAP_STAGE_CLEAR" CASE IAP_MUSIC_EVENT_STOP_MUSIC RETURN "CASINO_STOP_MUSIC" CASE IAP_MUSIC_EVENT_STOP_MUSIC_NO_FADE RETURN "CASINO_STOP_NO_FADE" ENDSWITCH RETURN "INVALID MUSIC EVENT" ENDFUNC /// PURPOSE: /// Triggers a music event PROC IAP_TRIGGER_MUSIC_EVENT(STRING stEvent) CDEBUG1LN(DEBUG_MINIGAME, "[IAP] [JS] IAP_TRIGGER_MUSIC_EVENT - Triggering ", stEvent) #IF IS_DEBUG_BUILD IF sIAPData.sDebugStruct.bDisableMusic EXIT ENDIF #ENDIF TRIGGER_MUSIC_EVENT(stEvent) ENDPROC // ------------------------------ LEADERBOARD ------------------------------ FUNC INT IAP_GET_PLAYER_LEADERBOARD_POSITION() IF sIAPData.iLocalLbdPos != -1 RETURN sIAPData.iLocalLbdPos ENDIF INT i FOR i = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1 IF sIAPData.sLeaderboard[i].bPlayer sIAPData.iLocalLbdPos = i RETURN i ENDIF ENDFOR RETURN ciIAP_LBD_DEFAULT_RANK ENDFUNC