Files
gtav-src/script/dev_ng/shared/include/public/invade_persuade_using.sch
T
2025-09-29 00:52:08 +02:00

4594 lines
266 KiB
XML
Executable File

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